|
@@ -25,7 +25,6 @@ package com.dmdirc.addons.ui_swing;
|
25
|
25
|
import com.dmdirc.addons.ui_swing.components.menubar.MenuBar;
|
26
|
26
|
import com.dmdirc.addons.ui_swing.components.statusbar.FeedbackNag;
|
27
|
27
|
import com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar;
|
28
|
|
-import com.dmdirc.addons.ui_swing.dialogs.DialogKeyListener;
|
29
|
28
|
import com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog;
|
30
|
29
|
import com.dmdirc.addons.ui_swing.dialogs.url.URLDialogFactory;
|
31
|
30
|
import com.dmdirc.addons.ui_swing.framemanager.buttonbar.ButtonBarProvider;
|
|
@@ -34,14 +33,16 @@ import com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManagerProvider;
|
34
|
33
|
import com.dmdirc.addons.ui_swing.injection.DialogProvider;
|
35
|
34
|
import com.dmdirc.addons.ui_swing.wizard.SwingWindowManager;
|
36
|
35
|
import com.dmdirc.addons.ui_swing.wizard.firstrun.FirstRunWizardExecutor;
|
|
36
|
+import com.dmdirc.events.FeedbackNagEvent;
|
|
37
|
+import com.dmdirc.events.FirstRunEvent;
|
|
38
|
+import com.dmdirc.events.UnknownURLEvent;
|
37
|
39
|
import com.dmdirc.logger.ErrorManager;
|
38
|
40
|
import com.dmdirc.ui.WindowManager;
|
39
|
41
|
import com.dmdirc.ui.core.components.StatusBarManager;
|
40
|
42
|
|
41
|
43
|
import com.google.common.eventbus.EventBus;
|
|
44
|
+import com.google.common.eventbus.Subscribe;
|
42
|
45
|
|
43
|
|
-import java.awt.KeyboardFocusManager;
|
44
|
|
-import java.awt.Toolkit;
|
45
|
46
|
import java.awt.Window;
|
46
|
47
|
|
47
|
48
|
import javax.inject.Inject;
|
|
@@ -55,8 +56,6 @@ import javax.swing.SwingUtilities;
|
55
|
56
|
@Singleton
|
56
|
57
|
public class SwingManager {
|
57
|
58
|
|
58
|
|
- /** The event queue to use. */
|
59
|
|
- private final DMDircEventQueue eventQueue;
|
60
|
59
|
/** The window factory in use. */
|
61
|
60
|
private final Provider<SwingWindowFactory> windowFactory;
|
62
|
61
|
/** The status bar manager to register our status bar with. */
|
|
@@ -67,8 +66,6 @@ public class SwingManager {
|
67
|
66
|
/** The window manager to listen on for events. */
|
68
|
67
|
private final WindowManager windowManager;
|
69
|
68
|
private final CtrlTabWindowManager ctrlTabManager;
|
70
|
|
- /** The key listener that supports dialogs. */
|
71
|
|
- private final DialogKeyListener dialogKeyListener;
|
72
|
69
|
/** Provider of first run executors. */
|
73
|
70
|
private final Provider<FirstRunWizardExecutor> firstRunExecutor;
|
74
|
71
|
/** Provider of feedback nags. */
|
|
@@ -97,7 +94,6 @@ public class SwingManager {
|
97
|
94
|
/**
|
98
|
95
|
* Creates a new instance of {@link SwingManager}.
|
99
|
96
|
*
|
100
|
|
- * @param eventQueue The event queue to use.
|
101
|
97
|
* @param windowFactory The window factory in use.
|
102
|
98
|
* @param windowManager The window manager to listen on for events.
|
103
|
99
|
* @param statusBarManager The status bar manager to register our status bar with.
|
|
@@ -105,7 +101,6 @@ public class SwingManager {
|
105
|
101
|
* @param menuBar The menu bar to use for the main frame.
|
106
|
102
|
* @param statusBar The status bar to use in the main frame.
|
107
|
103
|
* @param ctrlTabManager The window manager that handles ctrl+tab behaviour.
|
108
|
|
- * @param dialogKeyListener The key listener that supports dialogs.
|
109
|
104
|
* @param firstRunExecutor A provider of first run executors.
|
110
|
105
|
* @param feedbackNagProvider Provider of feedback nags.
|
111
|
106
|
* @param urlDialogFactory Factory to use to create URL dialogs.
|
|
@@ -119,7 +114,6 @@ public class SwingManager {
|
119
|
114
|
*/
|
120
|
115
|
@Inject
|
121
|
116
|
public SwingManager(
|
122
|
|
- final DMDircEventQueue eventQueue,
|
123
|
117
|
final Provider<SwingWindowFactory> windowFactory,
|
124
|
118
|
final WindowManager windowManager,
|
125
|
119
|
final StatusBarManager statusBarManager,
|
|
@@ -127,7 +121,6 @@ public class SwingManager {
|
127
|
121
|
final Provider<MenuBar> menuBar,
|
128
|
122
|
final Provider<SwingStatusBar> statusBar,
|
129
|
123
|
final CtrlTabWindowManager ctrlTabManager,
|
130
|
|
- final DialogKeyListener dialogKeyListener,
|
131
|
124
|
final Provider<FirstRunWizardExecutor> firstRunExecutor,
|
132
|
125
|
final Provider<FeedbackNag> feedbackNagProvider,
|
133
|
126
|
final URLDialogFactory urlDialogFactory,
|
|
@@ -138,7 +131,6 @@ public class SwingManager {
|
138
|
131
|
final Provider<SwingWindowManager> swingWindowManager,
|
139
|
132
|
final DialogProvider<ErrorListDialog> errorListDialogProvider,
|
140
|
133
|
final SwingUIInitialiser uiInitialiser) {
|
141
|
|
- this.eventQueue = eventQueue;
|
142
|
134
|
this.windowFactory = windowFactory;
|
143
|
135
|
this.windowManager = windowManager;
|
144
|
136
|
this.menuBar = menuBar;
|
|
@@ -146,7 +138,6 @@ public class SwingManager {
|
146
|
138
|
this.statusBarManager = statusBarManager;
|
147
|
139
|
this.mainFrameProvider = mainFrameProvider;
|
148
|
140
|
this.ctrlTabManager = ctrlTabManager;
|
149
|
|
- this.dialogKeyListener = dialogKeyListener;
|
150
|
141
|
this.firstRunExecutor = firstRunExecutor;
|
151
|
142
|
this.feedbackNagProvider = feedbackNagProvider;
|
152
|
143
|
this.urlDialogFactory = urlDialogFactory;
|
|
@@ -170,11 +161,9 @@ public class SwingManager {
|
170
|
161
|
this.mainFrame.setStatusBar(statusBar.get());
|
171
|
162
|
this.mainFrame.initComponents();
|
172
|
163
|
|
173
|
|
- installEventQueue();
|
174
|
|
- installKeyListener();
|
175
|
|
-
|
176
|
164
|
windowManager.addListenerAndSync(windowFactory.get());
|
177
|
165
|
statusBarManager.registerStatusBar(statusBar.get());
|
|
166
|
+ eventBus.register(this);
|
178
|
167
|
eventBus.register(linkHandler);
|
179
|
168
|
SwingUtilities.invokeLater(new Runnable() {
|
180
|
169
|
|
|
@@ -189,9 +178,6 @@ public class SwingManager {
|
189
|
178
|
* Handles unloading of the UI.
|
190
|
179
|
*/
|
191
|
180
|
public void unload() {
|
192
|
|
- uninstallEventQueue();
|
193
|
|
- uninstallKeyListener();
|
194
|
|
-
|
195
|
181
|
for (final Window window : swingWindowManager.get().getTopLevelWindows()) {
|
196
|
182
|
window.dispose();
|
197
|
183
|
}
|
|
@@ -207,35 +193,7 @@ public class SwingManager {
|
207
|
193
|
mainFrame.dispose();
|
208
|
194
|
statusBarManager.unregisterStatusBar(statusBar.get());
|
209
|
195
|
eventBus.unregister(linkHandler);
|
210
|
|
- }
|
211
|
|
-
|
212
|
|
- /**
|
213
|
|
- * Gets a first run wizard executor to use.
|
214
|
|
- *
|
215
|
|
- * @return A first run wizard executor.
|
216
|
|
- */
|
217
|
|
- public FirstRunWizardExecutor getFirstRunExecutor() {
|
218
|
|
- return firstRunExecutor.get();
|
219
|
|
- }
|
220
|
|
-
|
221
|
|
- /**
|
222
|
|
- * @return Feedback nag provider.
|
223
|
|
- *
|
224
|
|
- * @deprecated Should be injected.
|
225
|
|
- */
|
226
|
|
- @Deprecated
|
227
|
|
- public Provider<FeedbackNag> getFeedbackNagProvider() {
|
228
|
|
- return feedbackNagProvider;
|
229
|
|
- }
|
230
|
|
-
|
231
|
|
- /**
|
232
|
|
- * @return URL dialog factory.
|
233
|
|
- *
|
234
|
|
- * @deprecated Should be injected.
|
235
|
|
- */
|
236
|
|
- @Deprecated
|
237
|
|
- public URLDialogFactory getUrlDialogFactory() {
|
238
|
|
- return urlDialogFactory;
|
|
196
|
+ uiInitialiser.unload();
|
239
|
197
|
}
|
240
|
198
|
|
241
|
199
|
/**
|
|
@@ -258,46 +216,37 @@ public class SwingManager {
|
258
|
216
|
return buttonProvider;
|
259
|
217
|
}
|
260
|
218
|
|
261
|
|
- /**
|
262
|
|
- * Installs the DMDirc event queue.
|
263
|
|
- */
|
264
|
|
- private void installEventQueue() {
|
265
|
|
- UIUtilities.invokeAndWait(new Runnable() {
|
266
|
|
-
|
267
|
|
- @Override
|
268
|
|
- public void run() {
|
269
|
|
- Toolkit.getDefaultToolkit().getSystemEventQueue().push(eventQueue);
|
270
|
|
- }
|
271
|
|
- });
|
|
219
|
+ @Subscribe
|
|
220
|
+ public void showFirstRunWizard(final FirstRunEvent event) {
|
|
221
|
+ if (!event.isHandled()) {
|
|
222
|
+ firstRunExecutor.get().showWizardAndWait();
|
|
223
|
+ event.setHandled(true);
|
|
224
|
+ }
|
272
|
225
|
}
|
273
|
226
|
|
274
|
|
- /**
|
275
|
|
- * Removes the DMDirc event queue.
|
276
|
|
- */
|
277
|
|
- private void uninstallEventQueue() {
|
278
|
|
- eventQueue.pop();
|
|
227
|
+ @Subscribe
|
|
228
|
+ public void showURLDialog(final UnknownURLEvent event) {
|
|
229
|
+ if (!event.isHandled()) {
|
|
230
|
+ event.setHandled(true);
|
|
231
|
+ UIUtilities.invokeLater(new Runnable() {
|
|
232
|
+
|
|
233
|
+ @Override
|
|
234
|
+ public void run() {
|
|
235
|
+ urlDialogFactory.getURLDialog(event.getURI()).display();
|
|
236
|
+ }
|
|
237
|
+ });
|
|
238
|
+ }
|
279
|
239
|
}
|
280
|
240
|
|
281
|
|
- /**
|
282
|
|
- * Installs the dialog key listener.
|
283
|
|
- */
|
284
|
|
- private void installKeyListener() {
|
285
|
|
- UIUtilities.invokeAndWait(new Runnable() {
|
|
241
|
+ @Subscribe
|
|
242
|
+ public void showFeedbackNag(final FeedbackNagEvent event) {
|
|
243
|
+ UIUtilities.invokeLater(new Runnable() {
|
286
|
244
|
|
287
|
245
|
@Override
|
288
|
246
|
public void run() {
|
289
|
|
- KeyboardFocusManager.getCurrentKeyboardFocusManager()
|
290
|
|
- .addKeyEventDispatcher(dialogKeyListener);
|
|
247
|
+ feedbackNagProvider.get();
|
291
|
248
|
}
|
292
|
249
|
});
|
293
|
250
|
}
|
294
|
251
|
|
295
|
|
- /**
|
296
|
|
- * Removes the dialog key listener.
|
297
|
|
- */
|
298
|
|
- private void uninstallKeyListener() {
|
299
|
|
- KeyboardFocusManager.getCurrentKeyboardFocusManager()
|
300
|
|
- .removeKeyEventDispatcher(dialogKeyListener);
|
301
|
|
- }
|
302
|
|
-
|
303
|
252
|
}
|