Ver código fonte

Fixes issue 1560


git-svn-id: http://svn.dmdirc.com/trunk@4451 00569f92-eb28-0410-84fd-f71c24880f
tags/0.6
Shane Mc Cormack 16 anos atrás
pai
commit
bdf92a8be4

+ 4
- 3
src/com/dmdirc/addons/mediasource_dcop/DcopMediaSourcePlugin.java Ver arquivo

@@ -24,6 +24,7 @@ package com.dmdirc.addons.mediasource_dcop;
24 24
 
25 25
 import com.dmdirc.addons.nowplaying.MediaSource;
26 26
 import com.dmdirc.addons.nowplaying.MediaSourceManager;
27
+import com.dmdirc.config.prefs.validator.ValidationResponse;
27 28
 import com.dmdirc.plugins.Plugin;
28 29
 import com.dmdirc.plugins.PluginInfo;
29 30
 import com.dmdirc.plugins.PluginManager;
@@ -71,19 +72,19 @@ public class DcopMediaSourcePlugin extends Plugin
71 72
     
72 73
     /** {@inheritDoc} */
73 74
     @Override
74
-    public boolean checkPrerequisites() {
75
+    public ValidationResponse checkPrerequisites() {
75 76
         PluginManager.getPluginManager().addPlugin("dcop.jar");
76 77
         
77 78
         final PluginInfo pi = PluginManager.getPluginManager().getPluginInfoByName("dcop");
78 79
         
79 80
         if (pi == null) {
80
-            return false;
81
+            return new ValidationResponse("DCOP Plugin not found");
81 82
         }
82 83
         
83 84
         if (!pi.isLoaded()) {
84 85
             pi.loadPlugin();
85 86
         }
86 87
 
87
-        return true;
88
+        return new ValidationResponse();
88 89
     }
89 90
 }

+ 7
- 2
src/com/dmdirc/addons/systray/SystrayPlugin.java Ver arquivo

@@ -32,6 +32,7 @@ import com.dmdirc.config.prefs.PreferencesCategory;
32 32
 import com.dmdirc.config.prefs.PreferencesManager;
33 33
 import com.dmdirc.config.prefs.PreferencesSetting;
34 34
 import com.dmdirc.config.prefs.PreferencesType;
35
+import com.dmdirc.config.prefs.validator.ValidationResponse;
35 36
 import com.dmdirc.plugins.Plugin;
36 37
 import com.dmdirc.ui.messages.Styliser;
37 38
 import com.dmdirc.ui.swing.MainFrame;
@@ -111,8 +112,12 @@ public final class SystrayPlugin extends Plugin implements ActionListener,
111 112
     
112 113
     /** {@inheritDoc} */
113 114
     @Override
114
-    public boolean checkPrerequisites() {
115
-        return SystemTray.isSupported();
115
+    public ValidationResponse checkPrerequisites() {
116
+        if (SystemTray.isSupported()) {
117
+            return new ValidationResponse();
118
+        } else {
119
+            return new ValidationResponse("System tray is not supported on this platform.");
120
+        }
116 121
     }
117 122
     
118 123
     /** {@inheritDoc} */

+ 4
- 2
src/com/dmdirc/plugins/Plugin.java Ver arquivo

@@ -25,6 +25,7 @@
25 25
 package com.dmdirc.plugins;
26 26
 
27 27
 import com.dmdirc.config.prefs.PreferencesManager;
28
+import com.dmdirc.config.prefs.validator.ValidationResponse;
28 29
 
29 30
 /**
30 31
  * Defines the standard methods that should be implemented by plugins.
@@ -45,9 +46,10 @@ public abstract class Plugin implements Comparable<Plugin> {
45 46
 	 * Check any further Prerequisites for this plugin to load that can not be
46 47
 	 * checked using metainfo.
47 48
 	 *
48
-	 * @return true if the plugin can be used, else false.
49
+	 * @return ValidationResponse detailign if the plugin passes any extra checks
50
+	 *         that plugin.info can't handle
49 51
 	 */
50
-	public boolean checkPrerequisites() { return true; }
52
+	public ValidationResponse checkPrerequisites() { return new ValidationResponse(); }
51 53
 		
52 54
 	/**
53 55
 	 * Called when the plugin is about to be unloaded.

+ 4
- 2
src/com/dmdirc/plugins/PluginInfo.java Ver arquivo

@@ -26,6 +26,7 @@ package com.dmdirc.plugins;
26 26
 import com.dmdirc.Main;
27 27
 import com.dmdirc.actions.ActionManager;
28 28
 import com.dmdirc.actions.CoreActionType;
29
+import com.dmdirc.config.prefs.validator.ValidationResponse;
29 30
 import com.dmdirc.util.resourcemanager.ResourceManager;
30 31
 import com.dmdirc.logger.Logger;
31 32
 import com.dmdirc.logger.ErrorLevel;
@@ -629,7 +630,8 @@ public class PluginInfo implements Comparable<PluginInfo> {
629 630
 				final Object temp = constructor.newInstance(new Object[] {});
630 631
 	
631 632
 				if (temp instanceof Plugin) {
632
-					if (((Plugin) temp).checkPrerequisites()) {
633
+					final ValidationResponse prerequisites = ((Plugin) temp).checkPrerequisites();
634
+					if (!prerequisites.isFailure()) {
633 635
 						plugin = (Plugin) temp;
634 636
 						if (!tempLoaded) {
635 637
 							try {
@@ -642,7 +644,7 @@ public class PluginInfo implements Comparable<PluginInfo> {
642 644
 						}
643 645
 					} else {
644 646
 						if (!tempLoaded) {
645
-							lastError = "Prerequisites for plugin not met. ('"+filename+":"+getMainClass()+"')";
647
+							lastError = "Prerequisites for plugin not met. ('"+filename+":"+getMainClass()+"' -> '"+prerequisites.getFailureReason()+"') ";
646 648
 							Logger.userError(ErrorLevel.LOW, lastError);
647 649
 						}
648 650
 					}

Carregando…
Cancelar
Salvar