Browse Source

Add new method for invokeAndWait using Callable not ReturnableThread

Change-Id: Ic0edb15c06533c0df5bc78f0f6878ca5ae98d9d0
Reviewed-on: http://gerrit.dmdirc.com/2465
Automatic-Compile: DMDirc Build Manager
Reviewed-by: Chris Smith <chris@dmdirc.com>
tags/0.7rc1
Greg Holmes 12 years ago
parent
commit
2b0dc53a8d

+ 6
- 6
src/com/dmdirc/addons/nickcolours/NickColourPlugin.java View File

@@ -26,7 +26,6 @@ import com.dmdirc.Channel;
26 26
 import com.dmdirc.ChannelClientProperty;
27 27
 import com.dmdirc.actions.ActionManager;
28 28
 import com.dmdirc.actions.CoreActionType;
29
-import com.dmdirc.interfaces.actions.ActionType;
30 29
 import com.dmdirc.addons.ui_swing.SwingController;
31 30
 import com.dmdirc.addons.ui_swing.UIUtilities;
32 31
 import com.dmdirc.config.ConfigManager;
@@ -38,6 +37,7 @@ import com.dmdirc.config.prefs.PreferencesSetting;
38 37
 import com.dmdirc.config.prefs.PreferencesType;
39 38
 import com.dmdirc.interfaces.ActionListener;
40 39
 import com.dmdirc.interfaces.ConfigChangeListener;
40
+import com.dmdirc.interfaces.actions.ActionType;
41 41
 import com.dmdirc.parser.interfaces.ChannelClientInfo;
42 42
 import com.dmdirc.parser.interfaces.ChannelInfo;
43 43
 import com.dmdirc.parser.interfaces.ClientInfo;
@@ -46,11 +46,11 @@ import com.dmdirc.plugins.PluginInfo;
46 46
 import com.dmdirc.plugins.PluginManager;
47 47
 import com.dmdirc.ui.Colour;
48 48
 import com.dmdirc.ui.messages.ColourManager;
49
-import com.dmdirc.util.ReturnableThread;
50 49
 
51 50
 import java.util.ArrayList;
52 51
 import java.util.List;
53 52
 import java.util.Map;
53
+import java.util.concurrent.Callable;
54 54
 
55 55
 /**
56 56
  * Provides various features related to nickname colouring.
@@ -264,15 +264,15 @@ public final class NickColourPlugin extends BasePlugin implements ActionListener
264 264
         final PreferencesCategory colours = new PluginPreferencesCategory(
265 265
                 pluginInfo, "Colours",
266 266
                 "Set colours for specific nicknames.", UIUtilities.invokeAndWait(
267
-                new ReturnableThread<NickColourPanel>() {
267
+                new Callable<NickColourPanel>() {
268 268
 
269 269
                     /** {@inheritDoc} */
270 270
                     @Override
271
-                    public void run() {
272
-                        setObject(new NickColourPanel(
271
+                    public NickColourPanel call() {
272
+                        return new NickColourPanel(
273 273
                                 (SwingController) PluginManager.getPluginManager()
274 274
                                 .getPluginInfoByName("ui_swing").getPlugin(),
275
-                                NickColourPlugin.this));
275
+                                NickColourPlugin.this);
276 276
                     }
277 277
                 }));
278 278
 

+ 6
- 6
src/com/dmdirc/addons/notifications/NotificationsPlugin.java View File

@@ -23,20 +23,20 @@ package com.dmdirc.addons.notifications;
23 23
 
24 24
 import com.dmdirc.actions.ActionManager;
25 25
 import com.dmdirc.actions.CoreActionType;
26
-import com.dmdirc.interfaces.actions.ActionType;
27 26
 import com.dmdirc.addons.ui_swing.UIUtilities;
28 27
 import com.dmdirc.config.IdentityManager;
29 28
 import com.dmdirc.config.prefs.PluginPreferencesCategory;
30 29
 import com.dmdirc.config.prefs.PreferencesCategory;
31 30
 import com.dmdirc.config.prefs.PreferencesDialogModel;
32 31
 import com.dmdirc.interfaces.ActionListener;
32
+import com.dmdirc.interfaces.actions.ActionType;
33 33
 import com.dmdirc.plugins.BasePlugin;
34 34
 import com.dmdirc.plugins.PluginInfo;
35 35
 import com.dmdirc.plugins.PluginManager;
36
-import com.dmdirc.util.ReturnableThread;
37 36
 
38 37
 import java.util.ArrayList;
39 38
 import java.util.List;
39
+import java.util.concurrent.Callable;
40 40
 
41 41
 /**
42 42
  * Notification Manager plugin, aggregates notification sources exposing them
@@ -91,13 +91,13 @@ public class NotificationsPlugin extends BasePlugin implements ActionListener {
91 91
     @Override
92 92
     public void showConfig(final PreferencesDialogModel manager) {
93 93
         final NotificationConfig configPanel = UIUtilities.invokeAndWait(
94
-                new ReturnableThread<NotificationConfig>() {
94
+                new Callable<NotificationConfig>() {
95 95
 
96 96
             /** {@inheritDoc} */
97 97
             @Override
98
-            public void run() {
99
-                setObject(new NotificationConfig(NotificationsPlugin.this,
100
-                        order));
98
+            public NotificationConfig call() {
99
+                return new NotificationConfig(NotificationsPlugin.this,
100
+                        order);
101 101
             }
102 102
         });
103 103
 

+ 4
- 4
src/com/dmdirc/addons/nowplaying/ConfigPanel.java View File

@@ -30,7 +30,6 @@ import com.dmdirc.config.IdentityManager;
30 30
 import com.dmdirc.config.prefs.PreferencesInterface;
31 31
 import com.dmdirc.logger.ErrorLevel;
32 32
 import com.dmdirc.logger.Logger;
33
-import com.dmdirc.util.ReturnableThread;
34 33
 
35 34
 import java.awt.event.KeyEvent;
36 35
 import java.awt.event.KeyListener;
@@ -40,6 +39,7 @@ import java.util.LinkedList;
40 39
 import java.util.List;
41 40
 import java.util.Timer;
42 41
 import java.util.TimerTask;
42
+import java.util.concurrent.Callable;
43 43
 
44 44
 import javax.swing.BorderFactory;
45 45
 import javax.swing.JLabel;
@@ -158,12 +158,12 @@ public class ConfigPanel extends JPanel implements PreferencesInterface,
158 158
         }
159 159
 
160 160
         final String text = plugin.doSubstitution(
161
-                UIUtilities.invokeAndWait(new ReturnableThread<String>() {
161
+                UIUtilities.invokeAndWait(new Callable<String>() {
162 162
 
163 163
             /** {@inheritDoc} */
164 164
             @Override
165
-            public void run() {
166
-                setObject(textfield.getText());
165
+            public String call() {
166
+                return textfield.getText();
167 167
             }
168 168
         }), source);
169 169
         SwingUtilities.invokeLater(new Runnable() {

+ 5
- 5
src/com/dmdirc/addons/nowplaying/NowPlayingPlugin.java View File

@@ -23,7 +23,6 @@
23 23
 package com.dmdirc.addons.nowplaying;
24 24
 
25 25
 import com.dmdirc.actions.CoreActionType;
26
-import com.dmdirc.interfaces.actions.ActionType;
27 26
 import com.dmdirc.addons.ui_swing.UIUtilities;
28 27
 import com.dmdirc.config.IdentityManager;
29 28
 import com.dmdirc.config.prefs.PluginPreferencesCategory;
@@ -31,15 +30,16 @@ import com.dmdirc.config.prefs.PreferencesCategory;
31 30
 import com.dmdirc.config.prefs.PreferencesDialogModel;
32 31
 import com.dmdirc.interfaces.ActionController;
33 32
 import com.dmdirc.interfaces.ActionListener;
33
+import com.dmdirc.interfaces.actions.ActionType;
34 34
 import com.dmdirc.plugins.BasePlugin;
35 35
 import com.dmdirc.plugins.Plugin;
36 36
 import com.dmdirc.plugins.PluginInfo;
37 37
 import com.dmdirc.plugins.PluginManager;
38
-import com.dmdirc.util.ReturnableThread;
39 38
 
40 39
 import java.util.ArrayList;
41 40
 import java.util.Collections;
42 41
 import java.util.List;
42
+import java.util.concurrent.Callable;
43 43
 
44 44
 /**
45 45
  * Plugin that allows users to advertise what they're currently playing or
@@ -107,11 +107,11 @@ public class NowPlayingPlugin extends BasePlugin implements ActionListener  {
107 107
     @Override
108 108
     public void showConfig(final PreferencesDialogModel manager) {
109 109
         final ConfigPanel configPanel = UIUtilities.invokeAndWait(
110
-                new ReturnableThread<ConfigPanel>() {
110
+                new Callable<ConfigPanel>() {
111 111
 
112 112
             @Override
113
-            public void run() {
114
-                setObject(new ConfigPanel(NowPlayingPlugin.this, order));
113
+            public ConfigPanel call() {
114
+                return new ConfigPanel(NowPlayingPlugin.this, order);
115 115
             }
116 116
         });
117 117
 

+ 5
- 5
src/com/dmdirc/addons/osd/OsdManager.java View File

@@ -24,12 +24,12 @@ package com.dmdirc.addons.osd;
24 24
 
25 25
 import com.dmdirc.addons.ui_swing.UIUtilities;
26 26
 import com.dmdirc.config.IdentityManager;
27
-import com.dmdirc.util.ReturnableThread;
28 27
 
29 28
 import java.util.ArrayList;
30 29
 import java.util.LinkedList;
31 30
 import java.util.List;
32 31
 import java.util.Queue;
32
+import java.util.concurrent.Callable;
33 33
 
34 34
 /**
35 35
  * Class to manage OSD Windows.
@@ -99,15 +99,15 @@ public class OsdManager {
99 99
                 .getGlobalConfiguration().getOptionInt(plugin.getDomain(), "locationY");
100 100
 
101 101
         windowList.add(UIUtilities.invokeAndWait(
102
-                new ReturnableThread<OsdWindow>() {
102
+                new Callable<OsdWindow>() {
103 103
 
104 104
             /** {@inheritDoc} */
105 105
             @Override
106
-            public void run() {
107
-                setObject(new OsdWindow(timeout, message, false,
106
+            public OsdWindow call() {
107
+                return new OsdWindow(timeout, message, false,
108 108
                         IdentityManager.getIdentityManager().getGlobalConfiguration().getOptionInt(
109 109
                         plugin.getDomain(), "locationX"), policy.getYPosition(
110
-                        OsdManager.this, startY), plugin, OsdManager.this));
110
+                        OsdManager.this, startY), plugin, OsdManager.this);
111 111
             }
112 112
         }));
113 113
     }

+ 6
- 6
src/com/dmdirc/addons/relaybot/RelayBotPlugin.java View File

@@ -27,7 +27,6 @@ import com.dmdirc.Server;
27 27
 import com.dmdirc.ServerManager;
28 28
 import com.dmdirc.actions.ActionManager;
29 29
 import com.dmdirc.actions.CoreActionType;
30
-import com.dmdirc.interfaces.actions.ActionType;
31 30
 import com.dmdirc.addons.ui_swing.UIUtilities;
32 31
 import com.dmdirc.config.IdentityManager;
33 32
 import com.dmdirc.config.prefs.PluginPreferencesCategory;
@@ -37,18 +36,19 @@ import com.dmdirc.config.prefs.PreferencesSetting;
37 36
 import com.dmdirc.config.prefs.PreferencesType;
38 37
 import com.dmdirc.interfaces.ActionListener;
39 38
 import com.dmdirc.interfaces.ConfigChangeListener;
39
+import com.dmdirc.interfaces.actions.ActionType;
40 40
 import com.dmdirc.parser.interfaces.ChannelClientInfo;
41 41
 import com.dmdirc.parser.interfaces.Parser;
42 42
 import com.dmdirc.parser.irc.IRCParser;
43 43
 import com.dmdirc.plugins.BasePlugin;
44 44
 import com.dmdirc.plugins.PluginInfo;
45 45
 import com.dmdirc.plugins.PluginManager;
46
-import com.dmdirc.util.ReturnableThread;
47 46
 
48 47
 import java.util.ArrayList;
49 48
 import java.util.Date;
50 49
 import java.util.HashMap;
51 50
 import java.util.Map;
51
+import java.util.concurrent.Callable;
52 52
 
53 53
 /**
54 54
  * This plugin makes certain relay bots less obnoxious looking.
@@ -285,14 +285,14 @@ public class RelayBotPlugin extends BasePlugin implements ActionListener, Config
285 285
                 pluginInfo, "Channels",
286 286
                 "Identifies where and who the bot is in channels.",
287 287
                 UIUtilities.invokeAndWait(
288
-                new ReturnableThread<RelayChannelPanel>() {
288
+                new Callable<RelayChannelPanel>() {
289 289
 
290 290
             /** {@inheritDoc} */
291 291
             @Override
292
-            public void run() {
293
-                setObject(new RelayChannelPanel(PluginManager.getPluginManager()
292
+            public RelayChannelPanel call() {
293
+                return new RelayChannelPanel(PluginManager.getPluginManager()
294 294
                         .getPluginInfoByName("ui_swing").getPlugin(),
295
-                        RelayBotPlugin.this));
295
+                        RelayBotPlugin.this);
296 296
             }
297 297
         }));
298 298
         colours.setInline().setInlineAfter();

+ 8
- 8
src/com/dmdirc/addons/ui_swing/MainFrame.java View File

@@ -46,7 +46,6 @@ import com.dmdirc.logger.Logger;
46 46
 import com.dmdirc.ui.Colour;
47 47
 import com.dmdirc.ui.CoreUIUtils;
48 48
 import com.dmdirc.ui.IconManager;
49
-import com.dmdirc.util.ReturnableThread;
50 49
 import com.dmdirc.util.collections.ListenerList;
51 50
 import com.dmdirc.util.collections.QueuedLinkedHashSet;
52 51
 
@@ -56,6 +55,7 @@ import java.awt.event.WindowEvent;
56 55
 import java.awt.event.WindowFocusListener;
57 56
 import java.awt.event.WindowListener;
58 57
 import java.lang.reflect.InvocationTargetException;
58
+import java.util.concurrent.Callable;
59 59
 
60 60
 import javax.swing.ImageIcon;
61 61
 import javax.swing.JFrame;
@@ -188,16 +188,16 @@ public final class MainFrame extends JFrame implements WindowListener,
188 188
      * @return Frame manager size.
189 189
      */
190 190
     public int getFrameManagerSize() {
191
-        return UIUtilities.invokeAndWait(new ReturnableThread<Integer>() {
191
+        return UIUtilities.invokeAndWait(new Callable<Integer>() {
192 192
 
193 193
             /** {@inheritDoc} */
194 194
             @Override
195
-            public void run() {
195
+            public Integer call() {
196 196
                 if (position == FramemanagerPosition.LEFT || position
197 197
                         == FramemanagerPosition.RIGHT) {
198
-                    setObject(frameManagerPanel.getWidth());
198
+                    return frameManagerPanel.getWidth();
199 199
                 } else {
200
-                    setObject(frameManagerPanel.getHeight());
200
+                    return frameManagerPanel.getHeight();
201 201
                 }
202 202
             }
203 203
         });
@@ -209,12 +209,12 @@ public final class MainFrame extends JFrame implements WindowListener,
209 209
      * @return The active window
210 210
      */
211 211
     public TextFrame getActiveFrame() {
212
-        return UIUtilities.invokeAndWait(new ReturnableThread<TextFrame>() {
212
+        return UIUtilities.invokeAndWait(new Callable<TextFrame>() {
213 213
 
214 214
             /** {@inheritDoc} */
215 215
             @Override
216
-            public void run() {
217
-                setObject(activeFrame);
216
+            public TextFrame call() {
217
+                return activeFrame;
218 218
             }
219 219
         });
220 220
     }

+ 5
- 4
src/com/dmdirc/addons/ui_swing/SwingController.java View File

@@ -65,7 +65,6 @@ import com.dmdirc.ui.WindowManager;
65 65
 import com.dmdirc.ui.core.components.StatusBarManager;
66 66
 import com.dmdirc.ui.core.util.URLHandler;
67 67
 import com.dmdirc.updater.Version;
68
-import com.dmdirc.util.ReturnableThread;
69 68
 import com.dmdirc.util.validators.NumericalValidator;
70 69
 
71 70
 import java.awt.Dialog.ModalityType;
@@ -78,6 +77,7 @@ import java.util.ArrayList;
78 77
 import java.util.HashMap;
79 78
 import java.util.List;
80 79
 import java.util.Map;
80
+import java.util.concurrent.Callable;
81 81
 import java.util.concurrent.Semaphore;
82 82
 import java.util.concurrent.atomic.AtomicBoolean;
83 83
 
@@ -88,6 +88,7 @@ import javax.swing.UIManager.LookAndFeelInfo;
88 88
 import javax.swing.UnsupportedLookAndFeelException;
89 89
 
90 90
 import lombok.Getter;
91
+
91 92
 import net.miginfocom.layout.PlatformDefaults;
92 93
 
93 94
 /**
@@ -306,12 +307,12 @@ public class SwingController extends BasePlugin implements UIController {
306 307
      */
307 308
     public void updateComponentTrees() {
308 309
         final int state = UIUtilities.invokeAndWait(
309
-                new ReturnableThread<Integer>() {
310
+                new Callable<Integer>() {
310 311
 
311 312
                     /** {@inheritDoc} */
312 313
                     @Override
313
-                    public void run() {
314
-                        setObject(getMainFrame().getExtendedState());
314
+                    public Integer call() {
315
+                        return getMainFrame().getExtendedState();
315 316
                     }
316 317
                 });
317 318
         UIUtilities.invokeLater(new Runnable() {

+ 37
- 0
src/com/dmdirc/addons/ui_swing/UIUtilities.java View File

@@ -39,6 +39,8 @@ import java.awt.Rectangle;
39 39
 import java.awt.event.KeyEvent;
40 40
 import java.lang.reflect.InvocationTargetException;
41 41
 import java.util.Enumeration;
42
+import java.util.concurrent.Callable;
43
+import java.util.concurrent.FutureTask;
42 44
 
43 45
 import javax.swing.BorderFactory;
44 46
 import javax.swing.JComboBox;
@@ -54,11 +56,14 @@ import javax.swing.plaf.FontUIResource;
54 56
 import javax.swing.text.JTextComponent;
55 57
 import javax.swing.undo.UndoManager;
56 58
 
59
+import lombok.SneakyThrows;
60
+
57 61
 import net.miginfocom.layout.PlatformDefaults;
58 62
 
59 63
 /**
60 64
  * UI constants.
61 65
  */
66
+@SuppressWarnings("PMD.UnusedImports")
62 67
 public final class UIUtilities {
63 68
 
64 69
     /** Not intended to be instantiated. */
@@ -207,13 +212,45 @@ public final class UIUtilities {
207 212
         }
208 213
     }
209 214
 
215
+
216
+
217
+    /**
218
+     * Invokes and waits for the specified callable, executed on the EDT.
219
+     *
220
+     * @param <T> The return type of the returnable thread
221
+     * @param returnable Thread to be executed
222
+     *
223
+     * @return Result from the completed thread or null if an exception occurred
224
+     *
225
+     * @throws Exception This method will re throw any exception thrown in the
226
+     * executed code
227
+     */
228
+    @SneakyThrows
229
+    @SuppressWarnings("PMD.AvoidThrowingRawExceptionTypes")
230
+    public static <T> T invokeAndWait(final Callable<T> returnable) {
231
+        try {
232
+            if (SwingUtilities.isEventDispatchThread()) {
233
+                return returnable.call();
234
+            } else {
235
+                final FutureTask<T> task = new FutureTask<T>(returnable);
236
+                SwingUtilities.invokeAndWait(task);
237
+                return task.get();
238
+            }
239
+        } catch (Exception ex) {
240
+            throw ex;
241
+        }
242
+    }
243
+
210 244
     /**
211 245
      * Invokes and waits for the specified runnable, executed on the EDT.
212 246
      *
213 247
      * @param <T> The return type of the returnable thread
214 248
      * @param returnable Thread to be executed
215 249
      * @return Result from the compelted thread
250
+     *
251
+     * @deprecated In favour of {@link #invokeAndWait(java.util.concurrent.Callable) }
216 252
      */
253
+    @Deprecated
217 254
     public static <T> T invokeAndWait(final ReturnableThread<T> returnable) {
218 255
         if (SwingUtilities.isEventDispatchThread()) {
219 256
             returnable.run();

+ 28
- 28
src/com/dmdirc/addons/ui_swing/components/inputfields/SwingInputField.java View File

@@ -28,7 +28,6 @@ import com.dmdirc.addons.ui_swing.components.colours.ColourPickerDialog;
28 28
 import com.dmdirc.addons.ui_swing.components.frames.InputTextFrame;
29 29
 import com.dmdirc.interfaces.ui.InputField;
30 30
 import com.dmdirc.interfaces.ui.InputValidationListener;
31
-import com.dmdirc.util.ReturnableThread;
32 31
 import com.dmdirc.util.collections.ListenerList;
33 32
 
34 33
 import java.awt.Color;
@@ -41,6 +40,7 @@ import java.awt.event.KeyEvent;
41 40
 import java.awt.event.KeyListener;
42 41
 import java.beans.PropertyChangeEvent;
43 42
 import java.beans.PropertyChangeListener;
43
+import java.util.concurrent.Callable;
44 44
 
45 45
 import javax.swing.JComponent;
46 46
 import javax.swing.JLabel;
@@ -132,12 +132,12 @@ public class SwingInputField extends JComponent implements InputField,
132 132
     /** {@inheritDoc} */
133 133
     @Override
134 134
     public boolean requestFocusInWindow() {
135
-        return UIUtilities.invokeAndWait(new ReturnableThread<Boolean>() {
135
+        return UIUtilities.invokeAndWait(new Callable<Boolean>() {
136 136
 
137 137
             /** {@inheritDoc} */
138 138
             @Override
139
-            public void run() {
140
-                setObject(textField.requestFocusInWindow());
139
+            public Boolean call() {
140
+                return textField.requestFocusInWindow();
141 141
             }
142 142
         });
143 143
     }
@@ -201,12 +201,12 @@ public class SwingInputField extends JComponent implements InputField,
201 201
      * @return JTextField
202 202
      */
203 203
     public JTextField getTextField() {
204
-        return UIUtilities.invokeAndWait(new ReturnableThread<JTextField>() {
204
+        return UIUtilities.invokeAndWait(new Callable<JTextField>() {
205 205
 
206 206
             /** {@inheritDoc} */
207 207
             @Override
208
-            public void run() {
209
-                setObject(textField);
208
+            public JTextField call() {
209
+                return textField;
210 210
             }
211 211
         });
212 212
     }
@@ -266,12 +266,12 @@ public class SwingInputField extends JComponent implements InputField,
266 266
     /** {@inheritDoc} */
267 267
     @Override
268 268
     public String getSelectedText() {
269
-        return UIUtilities.invokeAndWait(new ReturnableThread<String>() {
269
+        return UIUtilities.invokeAndWait(new Callable<String>() {
270 270
 
271 271
             /** {@inheritDoc} */
272 272
             @Override
273
-            public void run() {
274
-                setObject(textField.getSelectedText());
273
+            public String call() {
274
+                return textField.getSelectedText();
275 275
             }
276 276
         });
277 277
     }
@@ -279,12 +279,12 @@ public class SwingInputField extends JComponent implements InputField,
279 279
     /** {@inheritDoc} */
280 280
     @Override
281 281
     public int getSelectionEnd() {
282
-        return UIUtilities.invokeAndWait(new ReturnableThread<Integer>() {
282
+        return UIUtilities.invokeAndWait(new Callable<Integer>() {
283 283
 
284 284
             /** {@inheritDoc} */
285 285
             @Override
286
-            public void run() {
287
-                setObject(textField.getSelectionEnd());
286
+            public Integer call() {
287
+                return textField.getSelectionEnd();
288 288
             }
289 289
         });
290 290
     }
@@ -292,12 +292,12 @@ public class SwingInputField extends JComponent implements InputField,
292 292
     /** {@inheritDoc} */
293 293
     @Override
294 294
     public int getSelectionStart() {
295
-        return UIUtilities.invokeAndWait(new ReturnableThread<Integer>() {
295
+        return UIUtilities.invokeAndWait(new Callable<Integer>() {
296 296
 
297 297
             /** {@inheritDoc} */
298 298
             @Override
299
-            public void run() {
300
-                setObject(textField.getSelectionStart());
299
+            public Integer call() {
300
+                return textField.getSelectionStart();
301 301
             }
302 302
         });
303 303
     }
@@ -305,12 +305,12 @@ public class SwingInputField extends JComponent implements InputField,
305 305
     /** {@inheritDoc} */
306 306
     @Override
307 307
     public String getText() {
308
-        return UIUtilities.invokeAndWait(new ReturnableThread<String>() {
308
+        return UIUtilities.invokeAndWait(new Callable<String>() {
309 309
 
310 310
             /** {@inheritDoc} */
311 311
             @Override
312
-            public void run() {
313
-                setObject(textField.getText());
312
+            public String call() {
313
+                return textField.getText();
314 314
             }
315 315
         });
316 316
     }
@@ -331,12 +331,12 @@ public class SwingInputField extends JComponent implements InputField,
331 331
     /** {@inheritDoc} */
332 332
     @Override
333 333
     public int getCaretPosition() {
334
-        return UIUtilities.invokeAndWait(new ReturnableThread<Integer>() {
334
+        return UIUtilities.invokeAndWait(new Callable<Integer>() {
335 335
 
336 336
             /** {@inheritDoc} */
337 337
             @Override
338
-            public void run() {
339
-                setObject(textField.getCaretPosition());
338
+            public Integer call() {
339
+                return textField.getCaretPosition();
340 340
             }
341 341
         });
342 342
     }
@@ -423,12 +423,12 @@ public class SwingInputField extends JComponent implements InputField,
423 423
     /** {@inheritDoc} */
424 424
     @Override
425 425
     public boolean hasFocus() {
426
-        return UIUtilities.invokeAndWait(new ReturnableThread<Boolean>() {
426
+        return UIUtilities.invokeAndWait(new Callable<Boolean>() {
427 427
 
428 428
             /** {@inheritDoc} */
429 429
             @Override
430
-            public void run() {
431
-                setObject(textField.hasFocus());
430
+            public Boolean call() {
431
+                return textField.hasFocus();
432 432
             }
433 433
         });
434 434
     }
@@ -436,12 +436,12 @@ public class SwingInputField extends JComponent implements InputField,
436 436
     /** {@inheritDoc} */
437 437
     @Override
438 438
     public boolean isFocusOwner() {
439
-        return UIUtilities.invokeAndWait(new ReturnableThread<Boolean>() {
439
+        return UIUtilities.invokeAndWait(new Callable<Boolean>() {
440 440
 
441 441
             /** {@inheritDoc} */
442 442
             @Override
443
-            public void run() {
444
-                setObject(textField.isFocusOwner());
443
+            public Boolean call() {
444
+                return textField.isFocusOwner();
445 445
             }
446 446
         });
447 447
     }

+ 11
- 10
src/com/dmdirc/addons/ui_swing/dialogs/prefs/PrefsCategoryLoader.java View File

@@ -35,9 +35,10 @@ import com.dmdirc.config.prefs.PreferencesSetting;
35 35
 import com.dmdirc.config.prefs.PreferencesType;
36 36
 import com.dmdirc.logger.ErrorLevel;
37 37
 import com.dmdirc.logger.Logger;
38
-import com.dmdirc.util.ReturnableThread;
39 38
 
39
+import java.util.concurrent.Callable;
40 40
 import java.util.concurrent.ExecutionException;
41
+
41 42
 import javax.swing.BorderFactory;
42 43
 import javax.swing.JComponent;
43 44
 import javax.swing.JLabel;
@@ -198,14 +199,14 @@ public class PrefsCategoryLoader extends LoggingSwingWorker<JPanel, Object> {
198 199
 
199 200
 
200 201
         final JComponent option = UIUtilities.invokeAndWait(
201
-                new ReturnableThread<JComponent>() {
202
+                new Callable<JComponent>() {
202 203
 
203 204
             /** {@inheritDoc} */
204 205
             @Override
205
-            public void run() {
206
+            public JComponent call() {
206 207
                 JComponent option = factory.getComponent(setting);
207 208
                 option.setToolTipText(null);
208
-                setObject(option);
209
+                return option;
209 210
             }
210 211
         });
211 212
 
@@ -270,10 +271,10 @@ public class PrefsCategoryLoader extends LoggingSwingWorker<JPanel, Object> {
270 271
     private void addInlineCategory(final PreferencesCategory category,
271 272
             final JPanel parent) {
272 273
         final JPanel panel = UIUtilities.invokeAndWait(
273
-                new ReturnableThread<JPanel>() {
274
+                new Callable<JPanel>() {
274 275
 
275 276
             @Override
276
-            public void run() {
277
+            public JPanel call() {
277 278
                 final JPanel panel =
278 279
                 new NoRemovePanel(new MigLayout("fillx, gap unrel, wrap 2, " +
279 280
                     "hidemode 3, pack, wmax 470-" + leftPadding + "-" +
@@ -281,7 +282,7 @@ public class PrefsCategoryLoader extends LoggingSwingWorker<JPanel, Object> {
281 282
                 panel.setName(category.getPath());
282 283
                 panel.setBorder(BorderFactory.createTitledBorder(UIManager.
283 284
                         getBorder("TitledBorder.border"), category.getTitle()));
284
-                setObject(panel);
285
+                return panel;
285 286
             }
286 287
         });
287 288
 
@@ -299,16 +300,16 @@ public class PrefsCategoryLoader extends LoggingSwingWorker<JPanel, Object> {
299 300
      */
300 301
     private JPanel addCategory(final PreferencesCategory category) {
301 302
         final JPanel panel = UIUtilities.invokeAndWait(
302
-                new ReturnableThread<JPanel>() {
303
+                new Callable<JPanel>() {
303 304
 
304 305
             @Override
305
-            public void run() {
306
+            public JPanel call() {
306 307
                 final JPanel panel = new NoRemovePanel(
307 308
                         new MigLayout("fillx, gap unrel, wrap 2, pack, " +
308 309
                         "hidemode 3, wmax 470-" + leftPadding + "-" +
309 310
                         rightPadding + "-2*" + padding));
310 311
                 panel.setName(category.getPath());
311
-                setObject(panel);
312
+                return panel;
312 313
             }
313 314
         });
314 315
 

+ 23
- 23
src/com/dmdirc/addons/ui_swing/framemanager/windowmenu/WindowMenuFrameManager.java View File

@@ -30,7 +30,6 @@ import com.dmdirc.addons.ui_swing.SwingController;
30 30
 import com.dmdirc.addons.ui_swing.SwingWindowListener;
31 31
 import com.dmdirc.addons.ui_swing.UIUtilities;
32 32
 import com.dmdirc.addons.ui_swing.components.frames.TextFrame;
33
-import com.dmdirc.util.ReturnableThread;
34 33
 
35 34
 import java.awt.Component;
36 35
 import java.awt.event.ActionEvent;
@@ -40,9 +39,10 @@ import java.util.Collection;
40 39
 import java.util.Collections;
41 40
 import java.util.HashMap;
42 41
 import java.util.Map;
42
+import java.util.concurrent.Callable;
43 43
 import java.util.concurrent.atomic.AtomicBoolean;
44
-import javax.swing.AbstractButton;
45 44
 
45
+import javax.swing.AbstractButton;
46 46
 import javax.swing.JMenu;
47 47
 import javax.swing.JMenuItem;
48 48
 import javax.swing.JPopupMenu;
@@ -135,14 +135,14 @@ public final class WindowMenuFrameManager extends JMenu implements
135 135
     public void windowAdded(final TextFrame parent, final TextFrame window) {
136 136
         if (parent == null) {
137 137
             final FrameContainerMenuItem item = UIUtilities.invokeAndWait(
138
-                    new ReturnableThread<FrameContainerMenuItem>() {
138
+                    new Callable<FrameContainerMenuItem>() {
139 139
 
140 140
                         /** {@inheritDoc} */
141 141
                         @Override
142
-                        public void run() {
143
-                            setObject(new FrameContainerMenuItem(controller,
142
+                        public FrameContainerMenuItem call() {
143
+                            return new FrameContainerMenuItem(controller,
144 144
                                     window.getContainer(),
145
-                                    WindowMenuFrameManager.this));
145
+                                    WindowMenuFrameManager.this);
146 146
                         }
147 147
                     });
148 148
             items.put(window.getContainer(), item);
@@ -157,26 +157,26 @@ public final class WindowMenuFrameManager extends JMenu implements
157 157
             });
158 158
         } else {
159 159
             final FrameContainerMenuItem item = UIUtilities.invokeAndWait(
160
-                    new ReturnableThread<FrameContainerMenuItem>() {
160
+                    new Callable<FrameContainerMenuItem>() {
161 161
 
162 162
                         /** {@inheritDoc} */
163 163
                         @Override
164
-                        public void run() {
165
-                            setObject(new FrameContainerMenuItem(controller,
164
+                        public FrameContainerMenuItem call() {
165
+                            return new FrameContainerMenuItem(controller,
166 166
                                     window.getContainer(),
167
-                                    WindowMenuFrameManager.this));
167
+                                    WindowMenuFrameManager.this);
168 168
                         }
169 169
                     });
170 170
             final JMenu parentMenu;
171 171
             if (!menus.containsKey(parent.getContainer())) {
172 172
                 final FrameContainerMenu replacement = UIUtilities.invokeAndWait(
173
-                        new ReturnableThread<FrameContainerMenu>() {
173
+                        new Callable<FrameContainerMenu>() {
174 174
 
175 175
                             /** {@inheritDoc} */
176 176
                             @Override
177
-                            public void run() {
178
-                                setObject(new FrameContainerMenu(parent.
179
-                                        getContainer(), controller));
177
+                            public FrameContainerMenu call() {
178
+                                return new FrameContainerMenu(parent.
179
+                                        getContainer(), controller);
180 180
                             }
181 181
                         });
182 182
                 replaceItemWithMenu(getParentMenu(parent.getContainer()),
@@ -347,22 +347,22 @@ public final class WindowMenuFrameManager extends JMenu implements
347 347
     private int getIndex(final FrameContainer newChild, final JMenu menu) {
348 348
         final int count = menu == this ? itemCount : 0;
349 349
         final int menuItemCount = UIUtilities.invokeAndWait(
350
-                new ReturnableThread<Integer>() {
350
+                new Callable<Integer>() {
351 351
 
352 352
                     /** {@inheritDoc} */
353 353
                     @Override
354
-                    public void run() {
355
-                        setObject(menu.getMenuComponentCount());
354
+                    public Integer call() {
355
+                        return menu.getMenuComponentCount();
356 356
                     }
357 357
                 });
358 358
         for (int i = count; i < menuItemCount; i++) {
359 359
             final int index = i;
360 360
             final Component component = UIUtilities.invokeAndWait(
361
-                    new ReturnableThread<Component>() {
361
+                    new Callable<Component>() {
362 362
 
363 363
                         @Override
364
-                        public void run() {
365
-                            setObject(menu.getMenuComponent(index));
364
+                        public Component call() {
365
+                            return menu.getMenuComponent(index);
366 366
                         }
367 367
                     });
368 368
             if (!(component instanceof FrameContainerMenuInterface)) {
@@ -380,12 +380,12 @@ public final class WindowMenuFrameManager extends JMenu implements
380 380
             }
381 381
         }
382 382
 
383
-        return UIUtilities.invokeAndWait(new ReturnableThread<Integer>() {
383
+        return UIUtilities.invokeAndWait(new Callable<Integer>() {
384 384
 
385 385
             /** {@inheritDoc} */
386 386
             @Override
387
-            public void run() {
388
-                setObject(menu.getMenuComponentCount());
387
+            public Integer call() {
388
+                return menu.getMenuComponentCount();
389 389
             }
390 390
         });
391 391
     }

+ 4
- 4
src/com/dmdirc/addons/windowstatus/WindowStatusPlugin.java View File

@@ -43,11 +43,11 @@ import com.dmdirc.parser.interfaces.ClientInfo;
43 43
 import com.dmdirc.plugins.BasePlugin;
44 44
 import com.dmdirc.plugins.PluginInfo;
45 45
 import com.dmdirc.plugins.PluginManager;
46
-import com.dmdirc.util.ReturnableThread;
47 46
 
48 47
 import java.util.HashMap;
49 48
 import java.util.Map;
50 49
 import java.util.Map.Entry;
50
+import java.util.concurrent.Callable;
51 51
 
52 52
 /**
53 53
  * Displays information related to the current window in the status bar.
@@ -78,12 +78,12 @@ public final class WindowStatusPlugin extends BasePlugin
78 78
         this.pluginInfo = pluginInfo;
79 79
 
80 80
         panel = UIUtilities.invokeAndWait(
81
-                new ReturnableThread<WindowStatusPanel>() {
81
+                new Callable<WindowStatusPanel>() {
82 82
 
83 83
             /** {@inheritDoc} */
84 84
             @Override
85
-            public void run() {
86
-                setObject(new WindowStatusPanel());
85
+            public WindowStatusPanel call() {
86
+                return new WindowStatusPanel();
87 87
             }
88 88
         });
89 89
     }

Loading…
Cancel
Save