소스 검색

Use active window frame manager.

Change-Id: I9b37249813c03941cdd410a5b225f3d710a72244
Reviewed-on: http://gerrit.dmdirc.com/3323
Automatic-Compile: DMDirc Build Manager
Reviewed-by: Chris Smith <chris@dmdirc.com>
changes/23/3323/2
Greg Holmes 10 년 전
부모
커밋
a801f8a3eb
24개의 변경된 파일227개의 추가작업 그리고 219개의 파일을 삭제
  1. 9
    8
      src/com/dmdirc/addons/activewindow/ActiveCommand.java
  2. 7
    7
      src/com/dmdirc/addons/activewindow/ActiveWindowMessageSink.java
  3. 8
    9
      src/com/dmdirc/addons/lagdisplay/LagDisplayManager.java
  4. 7
    12
      src/com/dmdirc/addons/lagdisplay/PingHistoryPanel.java
  5. 5
    5
      src/com/dmdirc/addons/ui_swing/SwingLinkHandler.java
  6. 7
    6
      src/com/dmdirc/addons/ui_swing/SwingWindowFactory.java
  7. 14
    14
      src/com/dmdirc/addons/ui_swing/components/MDIBar.java
  8. 12
    14
      src/com/dmdirc/addons/ui_swing/components/frames/TextFrame.java
  9. 9
    8
      src/com/dmdirc/addons/ui_swing/components/menubar/ChannelMenu.java
  10. 18
    12
      src/com/dmdirc/addons/ui_swing/components/menubar/ServerMenu.java
  11. 7
    4
      src/com/dmdirc/addons/ui_swing/dialogs/ChannelJoinDialog.java
  12. 9
    6
      src/com/dmdirc/addons/ui_swing/dialogs/NewServerDialog.java
  13. 4
    2
      src/com/dmdirc/addons/ui_swing/dialogs/channellist/ChannelListDialog.java
  14. 10
    11
      src/com/dmdirc/addons/ui_swing/framemanager/buttonbar/ButtonBar.java
  15. 10
    11
      src/com/dmdirc/addons/ui_swing/framemanager/buttonbar/ButtonPanel.java
  16. 7
    4
      src/com/dmdirc/addons/ui_swing/framemanager/ctrltab/CtrlTabWindowManager.java
  17. 8
    9
      src/com/dmdirc/addons/ui_swing/framemanager/tree/Tree.java
  18. 15
    17
      src/com/dmdirc/addons/ui_swing/framemanager/tree/TreeFrameManager.java
  19. 7
    8
      src/com/dmdirc/addons/ui_swing/framemanager/tree/TreeTreeScroller.java
  20. 11
    12
      src/com/dmdirc/addons/ui_swing/framemanager/windowmenu/FrameContainerMenu.java
  21. 10
    11
      src/com/dmdirc/addons/ui_swing/framemanager/windowmenu/FrameContainerMenuItem.java
  22. 17
    21
      src/com/dmdirc/addons/ui_swing/framemanager/windowmenu/WindowMenuFrameManager.java
  23. 7
    0
      src/com/dmdirc/addons/ui_swing/injection/SwingModule.java
  24. 9
    8
      src/com/dmdirc/addons/windowstatus/WindowStatusManager.java

+ 9
- 8
src/com/dmdirc/addons/activewindow/ActiveCommand.java 파일 보기

@@ -24,8 +24,8 @@ package com.dmdirc.addons.activewindow;
24 24
 
25 25
 import com.dmdirc.FrameContainer;
26 26
 import com.dmdirc.WritableFrameContainer;
27
-import com.dmdirc.addons.ui_swing.MainFrame;
28 27
 import com.dmdirc.addons.ui_swing.components.frames.TextFrame;
28
+import com.dmdirc.addons.ui_swing.interfaces.ActiveFrameManager;
29 29
 import com.dmdirc.commandparser.BaseCommandInfo;
30 30
 import com.dmdirc.commandparser.CommandArguments;
31 31
 import com.dmdirc.commandparser.CommandInfo;
@@ -48,26 +48,27 @@ public class ActiveCommand extends Command implements IntelligentCommand {
48 48
     public static final CommandInfo INFO = new BaseCommandInfo("active",
49 49
             "active <command> - executes the command as though it had been "
50 50
             + "executed in the active window", CommandType.TYPE_GLOBAL);
51
-    /** Parent MainFrame. */
52
-    private final MainFrame mainFrame;
51
+    /** Active frame manager. */
52
+    private final ActiveFrameManager activeFrameManager;
53 53
 
54 54
     /**
55 55
      * Creates a new active command.
56 56
      *
57
-     * @param controller The controller to use for command information.
58
-     * @param mainFrame  Parent MainFrame
57
+     * @param controller          The controller to use for command information.
58
+     * @param activeFrameManager The active window manager
59 59
      */
60 60
     @Inject
61
-    public ActiveCommand(final CommandController controller, final MainFrame mainFrame) {
61
+    public ActiveCommand(final CommandController controller,
62
+            final ActiveFrameManager activeFrameManager) {
62 63
         super(controller);
63 64
 
64
-        this.mainFrame = mainFrame;
65
+        this.activeFrameManager = activeFrameManager;
65 66
     }
66 67
 
67 68
     @Override
68 69
     public void execute(final FrameContainer origin,
69 70
             final CommandArguments args, final CommandContext context) {
70
-        final TextFrame frame = mainFrame.getActiveFrame();
71
+        final TextFrame frame = activeFrameManager.getActiveFrame();
71 72
         if (frame.getContainer() instanceof WritableFrameContainer) {
72 73
             ((WritableFrameContainer) frame.getContainer()).getCommandParser()
73 74
                     .parseCommand(frame.getContainer(),

+ 7
- 7
src/com/dmdirc/addons/activewindow/ActiveWindowMessageSink.java 파일 보기

@@ -23,8 +23,8 @@
23 23
 package com.dmdirc.addons.activewindow;
24 24
 
25 25
 import com.dmdirc.WritableFrameContainer;
26
-import com.dmdirc.addons.ui_swing.MainFrame;
27 26
 import com.dmdirc.addons.ui_swing.components.frames.TextFrame;
27
+import com.dmdirc.addons.ui_swing.interfaces.ActiveFrameManager;
28 28
 import com.dmdirc.messages.MessageSink;
29 29
 import com.dmdirc.messages.MessageSinkManager;
30 30
 
@@ -40,17 +40,17 @@ public class ActiveWindowMessageSink implements MessageSink {
40 40
 
41 41
     /** The pattern to use to match this sink. */
42 42
     private static final Pattern PATTERN = Pattern.compile("active");
43
-    /** The main frame to use to get the currently active frame. */
44
-    private final MainFrame mainFrame;
43
+    /** Active frame manager. */
44
+    private final ActiveFrameManager activeFrameManager;
45 45
 
46 46
     /**
47 47
      * Creates a new ActiveWindowMessageSink for the specified mainframe.
48 48
      *
49
-     * @param mainFrame The mainframe to use to retrieve active windows
49
+     * @param activeFrameManager Active frame manager.
50 50
      */
51 51
     @Inject
52
-    public ActiveWindowMessageSink(final MainFrame mainFrame) {
53
-        this.mainFrame = mainFrame;
52
+    public ActiveWindowMessageSink(final ActiveFrameManager activeFrameManager) {
53
+        this.activeFrameManager = activeFrameManager;
54 54
     }
55 55
 
56 56
     @Override
@@ -62,7 +62,7 @@ public class ActiveWindowMessageSink implements MessageSink {
62 62
     public void handleMessage(final MessageSinkManager despatcher,
63 63
             final WritableFrameContainer source, final String[] patternMatches,
64 64
             final Date date, final String messageType, final Object... args) {
65
-        final TextFrame frame = mainFrame.getActiveFrame();
65
+        final TextFrame frame = activeFrameManager.getActiveFrame();
66 66
         if (frame.getContainer() instanceof WritableFrameContainer) {
67 67
             frame.getContainer().addLine(messageType, date, args);
68 68
         }

+ 8
- 9
src/com/dmdirc/addons/lagdisplay/LagDisplayManager.java 파일 보기

@@ -27,10 +27,10 @@ import com.dmdirc.FrameContainer;
27 27
 import com.dmdirc.ServerState;
28 28
 import com.dmdirc.actions.ActionManager;
29 29
 import com.dmdirc.actions.CoreActionType;
30
-import com.dmdirc.addons.ui_swing.MainFrame;
31 30
 import com.dmdirc.addons.ui_swing.SelectionListener;
32 31
 import com.dmdirc.addons.ui_swing.components.frames.TextFrame;
33 32
 import com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar;
33
+import com.dmdirc.addons.ui_swing.interfaces.ActiveFrameManager;
34 34
 import com.dmdirc.interfaces.ActionListener;
35 35
 import com.dmdirc.interfaces.Connection;
36 36
 import com.dmdirc.interfaces.actions.ActionType;
@@ -54,9 +54,8 @@ import javax.inject.Singleton;
54 54
 @Singleton
55 55
 public class LagDisplayManager implements ActionListener, ConfigChangeListener, SelectionListener {
56 56
 
57
-    /** Frame to listen to selection events on. */
58
-    // TODO: Selection/focus management should be behind an interface
59
-    private final MainFrame mainFrame;
57
+    /** Active frame manager. */
58
+    private final ActiveFrameManager activeFrameManager;
60 59
     /** Status bar to add panels to. */
61 60
     private final SwingStatusBar statusBar;
62 61
     private final Provider<LagDisplayPanel> panelProvider;
@@ -79,12 +78,12 @@ public class LagDisplayManager implements ActionListener, ConfigChangeListener,
79 78
 
80 79
     @Inject
81 80
     public LagDisplayManager(
82
-            final MainFrame mainFrame,
81
+            final ActiveFrameManager activeFrameManager,
83 82
             final SwingStatusBar statusBar,
84 83
             final Provider<LagDisplayPanel> panelProvider,
85 84
             @PluginDomain(LagDisplayPlugin.class) final String domain,
86 85
             @GlobalConfig final AggregateConfigProvider globalConfig) {
87
-        this.mainFrame = mainFrame;
86
+        this.activeFrameManager = activeFrameManager;
88 87
         this.statusBar = statusBar;
89 88
         this.panelProvider = panelProvider;
90 89
         this.domain = domain;
@@ -94,7 +93,7 @@ public class LagDisplayManager implements ActionListener, ConfigChangeListener,
94 93
     public void load() {
95 94
         panel = panelProvider.get();
96 95
         statusBar.addComponent(panel);
97
-        mainFrame.addSelectionListener(this);
96
+        activeFrameManager.addSelectionListener(this);
98 97
         globalConfig.addChangeListener(domain, this);
99 98
         readConfig();
100 99
         ActionManager.getActionManager().registerListener(this,
@@ -105,7 +104,7 @@ public class LagDisplayManager implements ActionListener, ConfigChangeListener,
105 104
 
106 105
     public void unload() {
107 106
         statusBar.removeComponent(panel);
108
-        mainFrame.removeSelectionListener(this);
107
+        activeFrameManager.removeSelectionListener(this);
109 108
         globalConfig.removeListener(this);
110 109
         ActionManager.getActionManager().unregisterListener(this);
111 110
         panel = null;
@@ -179,7 +178,7 @@ public class LagDisplayManager implements ActionListener, ConfigChangeListener,
179 178
             }
180 179
         }
181 180
 
182
-        final TextFrame activeFrame = mainFrame.getActiveFrame();
181
+        final TextFrame activeFrame = activeFrameManager.getActiveFrame();
183 182
         final FrameContainer active = activeFrame == null ? null
184 183
                 : activeFrame.getContainer();
185 184
         final boolean isActive = active != null

+ 7
- 12
src/com/dmdirc/addons/lagdisplay/PingHistoryPanel.java 파일 보기

@@ -22,7 +22,7 @@
22 22
 
23 23
 package com.dmdirc.addons.lagdisplay;
24 24
 
25
-import com.dmdirc.addons.ui_swing.MainFrame;
25
+import com.dmdirc.addons.ui_swing.interfaces.ActiveFrameManager;
26 26
 import com.dmdirc.util.collections.RollingList;
27 27
 
28 28
 import java.awt.Color;
@@ -41,11 +41,7 @@ import javax.swing.JPanel;
41 41
  */
42 42
 public class PingHistoryPanel extends JPanel {
43 43
 
44
-    /**
45
-     * A version number for this class. It should be changed whenever the class structure is changed
46
-     * (or anything else that would prevent serialized objects being unserialized with the new
47
-     * class).
48
-     */
44
+    /** A version number for this class. */
49 45
     private static final long serialVersionUID = 1;
50 46
     /** The manager that this panel is for. */
51 47
     protected final LagDisplayManager manager;
@@ -57,19 +53,18 @@ public class PingHistoryPanel extends JPanel {
57 53
     /**
58 54
      * Creates a new history panel for the specified plugin.
59 55
      *
60
-     * @param manager   The manager that owns this panel
61
-     * @param mainFrame Swing main frame
56
+     * @param manager            The manager that owns this panel
57
+     * @param activeFrameManager Active frame manager.
62 58
      */
63 59
     public PingHistoryPanel(final LagDisplayManager manager,
64
-            final MainFrame mainFrame) {
65
-        super();
66
-
60
+            final ActiveFrameManager activeFrameManager) {
67 61
         setMinimumSize(new Dimension(50, 100));
68 62
         setMaximumSize(new Dimension(Integer.MAX_VALUE, 100));
69 63
         setOpaque(false);
70 64
 
71 65
         this.manager = manager;
72
-        history = manager.getHistory(mainFrame.getActiveFrame().getContainer().getConnection());
66
+        history = manager.getHistory(activeFrameManager.getActiveFrame().getContainer().
67
+                getConnection());
73 68
 
74 69
         for (Long value : history.getList()) {
75 70
             maximum = Math.max(value, maximum);

+ 5
- 5
src/com/dmdirc/addons/ui_swing/SwingLinkHandler.java 파일 보기

@@ -23,6 +23,7 @@
23 23
 package com.dmdirc.addons.ui_swing;
24 24
 
25 25
 import com.dmdirc.FrameContainer;
26
+import com.dmdirc.addons.ui_swing.interfaces.ActiveFrameManager;
26 27
 import com.dmdirc.events.LinkChannelClickedEvent;
27 28
 import com.dmdirc.events.LinkNicknameClickedEvent;
28 29
 import com.dmdirc.events.LinkUrlClickedEvent;
@@ -33,7 +34,6 @@ import com.dmdirc.ui.core.util.URLHandler;
33 34
 import com.google.common.eventbus.Subscribe;
34 35
 
35 36
 import javax.inject.Inject;
36
-import javax.inject.Provider;
37 37
 import javax.inject.Singleton;
38 38
 
39 39
 /**
@@ -43,16 +43,16 @@ import javax.inject.Singleton;
43 43
 public class SwingLinkHandler {
44 44
 
45 45
     private final URLHandler urlHandler;
46
-    private final Provider<MainFrame> mainFrame;
46
+    private final ActiveFrameManager activeFrameManager;
47 47
     private final SwingWindowFactory windowFactory;
48 48
 
49 49
     @Inject
50 50
     public SwingLinkHandler(
51
-            final Provider<MainFrame> mainFrame,
51
+            final ActiveFrameManager activeFrameManager,
52 52
             final URLHandler urlHandler,
53 53
             final SwingWindowFactory windowFactory) {
54 54
         this.urlHandler = urlHandler;
55
-        this.mainFrame = mainFrame;
55
+        this.activeFrameManager = activeFrameManager;
56 56
         this.windowFactory = windowFactory;
57 57
     }
58 58
 
@@ -75,7 +75,7 @@ public class SwingLinkHandler {
75 75
         final FrameContainer container = event.getWindow().getContainer();
76 76
         final Connection connection = container.getConnection();
77 77
         if (connection != null) {
78
-            mainFrame.get().setActiveFrame(
78
+            activeFrameManager.setActiveFrame(
79 79
                     windowFactory.getSwingWindow(connection.getQuery(event.getTarget())));
80 80
         }
81 81
     }

+ 7
- 6
src/com/dmdirc/addons/ui_swing/SwingWindowFactory.java 파일 보기

@@ -31,6 +31,7 @@ import com.dmdirc.addons.ui_swing.components.frames.CustomFrameFactory;
31 31
 import com.dmdirc.addons.ui_swing.components.frames.CustomInputFrameFactory;
32 32
 import com.dmdirc.addons.ui_swing.components.frames.ServerFrameFactory;
33 33
 import com.dmdirc.addons.ui_swing.components.frames.TextFrame;
34
+import com.dmdirc.addons.ui_swing.interfaces.ActiveFrameManager;
34 35
 import com.dmdirc.commandparser.parsers.GlobalCommandParser;
35 36
 import com.dmdirc.interfaces.ui.FrameListener;
36 37
 import com.dmdirc.logger.ErrorLevel;
@@ -61,15 +62,15 @@ public class SwingWindowFactory implements FrameListener {
61 62
     private final Map<Collection<String>, WindowProvider> implementations = new HashMap<>();
62 63
     /** A map of frame containers to their Swing windows. */
63 64
     private final Map<FrameContainer, TextFrame> windows = new HashMap<>();
64
-    /** The provider to get the main frame to focus frames. */
65
-    private final Provider<MainFrame> mainFrameProvider;
65
+    /** Active window manager. */
66
+    private final Provider<ActiveFrameManager> activeFrameManager;
66 67
     /** Our list of listeners. */
67 68
     private final ListenerList listeners = new ListenerList();
68 69
 
69 70
     /**
70 71
      * Creates a new window factory for the specified controller.
71 72
      *
72
-     * @param mainFrameProvider       The provider to get the main frame to focus frames.
73
+     * @param activeFrameManager      The provider for the active frame manager.
73 74
      * @param customFrameFactory      The factory to use to produce custom frames.
74 75
      * @param customInputFrameFactory The factory to use to produce custom input frames.
75 76
      * @param serverFrameFactory      The factory to use to produce server frames.
@@ -78,13 +79,13 @@ public class SwingWindowFactory implements FrameListener {
78 79
      */
79 80
     @Inject
80 81
     public SwingWindowFactory(
81
-            final Provider<MainFrame> mainFrameProvider,
82
+            final Provider<ActiveFrameManager> activeFrameManager,
82 83
             final CustomFrameFactory customFrameFactory,
83 84
             final CustomInputFrameFactory customInputFrameFactory,
84 85
             final ServerFrameFactory serverFrameFactory,
85 86
             final ChannelFrameFactory channelFrameFactory,
86 87
             final GlobalCommandParser commandParser) {
87
-        this.mainFrameProvider = mainFrameProvider;
88
+        this.activeFrameManager = activeFrameManager;
88 89
 
89 90
         // TODO: Allow auto-factories to implement an interface and simplify this a bit.
90 91
         registerImplementation(
@@ -229,7 +230,7 @@ public class SwingWindowFactory implements FrameListener {
229 230
                 }
230 231
 
231 232
                 if (focus) {
232
-                    mainFrameProvider.get().setActiveFrame(childWindow);
233
+                    activeFrameManager.get().setActiveFrame(childWindow);
233 234
                 }
234 235
             }
235 236
         });

+ 14
- 14
src/com/dmdirc/addons/ui_swing/components/MDIBar.java 파일 보기

@@ -23,12 +23,12 @@
23 23
 package com.dmdirc.addons.ui_swing.components;
24 24
 
25 25
 import com.dmdirc.ClientModule.GlobalConfig;
26
-import com.dmdirc.addons.ui_swing.MainFrame;
27 26
 import com.dmdirc.addons.ui_swing.SelectionListener;
28 27
 import com.dmdirc.addons.ui_swing.SwingController;
29 28
 import com.dmdirc.addons.ui_swing.SwingWindowFactory;
30 29
 import com.dmdirc.addons.ui_swing.SwingWindowListener;
31 30
 import com.dmdirc.addons.ui_swing.components.frames.TextFrame;
31
+import com.dmdirc.addons.ui_swing.interfaces.ActiveFrameManager;
32 32
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
33 33
 import com.dmdirc.interfaces.config.ConfigChangeListener;
34 34
 import com.dmdirc.plugins.PluginDomain;
@@ -61,8 +61,8 @@ public class MDIBar extends JPanel implements SwingWindowListener,
61 61
     private static final int ICON_SIZE = 12;
62 62
     /** Button to close frames. */
63 63
     private final NoFocusButton closeButton;
64
-    /** Main frame component bieng shown in. */
65
-    private final MainFrame mainFrame;
64
+    /** Active frame manager. */
65
+    private final ActiveFrameManager activeFrameManager;
66 66
     /** Config manager to get settings from. */
67 67
     private final AggregateConfigProvider config;
68 68
     /** Option domain. */
@@ -73,11 +73,11 @@ public class MDIBar extends JPanel implements SwingWindowListener,
73 73
     /**
74 74
      * Instantiates a new MDI bar.
75 75
      *
76
-     * @param globalConfig  The config to read settings from.
77
-     * @param iconManager   The manager to use to retrieve icons.
78
-     * @param domain        The domain to read settings from under.
79
-     * @param windowFactory The window factory to use to create and listen for windows.
80
-     * @param mainFrame     Main frame instance
76
+     * @param globalConfig       The config to read settings from.
77
+     * @param iconManager        The manager to use to retrieve icons.
78
+     * @param domain             The domain to read settings from under.
79
+     * @param windowFactory      The window factory to use to create and listen for windows.
80
+     * @param activeFrameManager Active frame manager.
81 81
      */
82 82
     @Inject
83 83
     public MDIBar(
@@ -85,10 +85,10 @@ public class MDIBar extends JPanel implements SwingWindowListener,
85 85
             @GlobalConfig final IconManager iconManager,
86 86
             @PluginDomain(SwingController.class) final String domain,
87 87
             final SwingWindowFactory windowFactory,
88
-            final MainFrame mainFrame) {
88
+            final ActiveFrameManager activeFrameManager) {
89 89
         super();
90 90
 
91
-        this.mainFrame = mainFrame;
91
+        this.activeFrameManager = activeFrameManager;
92 92
         this.config = globalConfig;
93 93
         this.configDomain = domain;
94 94
         visibility = config.getOptionBool(configDomain, "mdiBarVisibility");
@@ -101,7 +101,7 @@ public class MDIBar extends JPanel implements SwingWindowListener,
101 101
 
102 102
         windowFactory.addWindowListener(this);
103 103
 
104
-        mainFrame.addSelectionListener(this);
104
+        activeFrameManager.addSelectionListener(this);
105 105
         closeButton.addActionListener(this);
106 106
         config.addChangeListener(configDomain, "mdiBarVisibility", this);
107 107
 
@@ -121,7 +121,7 @@ public class MDIBar extends JPanel implements SwingWindowListener,
121 121
             @Override
122 122
             public void run() {
123 123
                 setVisible(visibility);
124
-                setEnabled(mainFrame.getActiveFrame() != null);
124
+                setEnabled(activeFrameManager.getActiveFrame() != null);
125 125
             }
126 126
         });
127 127
     }
@@ -143,11 +143,11 @@ public class MDIBar extends JPanel implements SwingWindowListener,
143 143
      */
144 144
     @Override
145 145
     public void actionPerformed(final ActionEvent e) {
146
-        if (mainFrame.getActiveFrame() == null) {
146
+        if (activeFrameManager.getActiveFrame() == null) {
147 147
             return;
148 148
         }
149 149
         if (closeButton.equals(e.getSource())) {
150
-            mainFrame.getActiveFrame().getContainer().close();
150
+            activeFrameManager.getActiveFrame().getContainer().close();
151 151
         }
152 152
     }
153 153
 

+ 12
- 14
src/com/dmdirc/addons/ui_swing/components/frames/TextFrame.java 파일 보기

@@ -35,6 +35,7 @@ import com.dmdirc.addons.ui_swing.actions.NicknameCopyAction;
35 35
 import com.dmdirc.addons.ui_swing.actions.SearchAction;
36 36
 import com.dmdirc.addons.ui_swing.components.SwingSearchBar;
37 37
 import com.dmdirc.addons.ui_swing.dialogs.paste.PasteDialogFactory;
38
+import com.dmdirc.addons.ui_swing.interfaces.ActiveFrameManager;
38 39
 import com.dmdirc.addons.ui_swing.textpane.ClickTypeValue;
39 40
 import com.dmdirc.addons.ui_swing.textpane.MouseEventType;
40 41
 import com.dmdirc.addons.ui_swing.textpane.TextPane;
@@ -87,11 +88,7 @@ import net.miginfocom.swing.MigLayout;
87 88
 public abstract class TextFrame extends JPanel implements Window,
88 89
         ConfigChangeListener, TextPaneListener, FrameCloseListener {
89 90
 
90
-    /**
91
-     * A version number for this class. It should be changed whenever the class structure is changed
92
-     * (or anything else that would prevent serialized objects being unserialized with the new
93
-     * class).
94
-     */
91
+    /** A version number for this class. */
95 92
     private static final long serialVersionUID = 5;
96 93
     /** The channel object that owns this frame. */
97 94
     protected final FrameContainer frameParent;
@@ -101,17 +98,15 @@ public abstract class TextFrame extends JPanel implements Window,
101 98
     private SwingSearchBar searchBar;
102 99
     /** Command parser for popup commands. */
103 100
     private final CommandParser commandParser;
104
-    /** Main frame to use to activate/deactivate windows. */
105
-    private final Provider<MainFrame> mainFrame;
101
+    /** Manager used to activate/deactivate windows. */
102
+    private final ActiveFrameManager activeFrameManager;
106 103
     /** Manager to use for building popups. */
107 104
     private final PopupManager popupManager;
108 105
     /** Bus to despatch events on. */
109 106
     private final EventBus eventBus;
110 107
     /** Boolean to determine if this frame should be popped out of main client. */
111 108
     private boolean popout;
112
-    /**
113
-     * DesktopWindowFrame to use for this TextFrame if it is to be popped out of the client.
114
-     */
109
+    /** DesktopWindowFrame to use for this TextFrame if it is to be popped out of the client. */
115 110
     private DesktopWindowFrame popoutFrame;
116 111
     /** Desktop place holder object used if this frame is popped out. */
117 112
     private DesktopPlaceHolderFrame popoutPlaceholder;
@@ -129,7 +124,7 @@ public abstract class TextFrame extends JPanel implements Window,
129 124
             final FrameContainer owner,
130 125
             final CommandParser commandParser,
131 126
             final TextFrameDependencies deps) {
132
-        this.mainFrame = deps.mainFrame;
127
+        this.activeFrameManager = deps.activeFrameManager;
133 128
         this.popupManager = deps.popupManager;
134 129
         this.frameParent = owner;
135 130
         this.iconManager = deps.iconManager;
@@ -175,8 +170,8 @@ public abstract class TextFrame extends JPanel implements Window,
175 170
             popoutFrame = null;
176 171
         }
177 172
         // Call setActiveFrame again so the contents of the frame manager are updated.
178
-        if (equals(mainFrame.get().getActiveFrame())) {
179
-            mainFrame.get().setActiveFrame(this);
173
+        if (equals(activeFrameManager.getActiveFrame())) {
174
+            activeFrameManager.setActiveFrame(this);
180 175
         }
181 176
     }
182 177
 
@@ -544,6 +539,7 @@ public abstract class TextFrame extends JPanel implements Window,
544 539
         final PasteDialogFactory pasteDialog;
545 540
         final PluginManager pluginManager;
546 541
         final IconManager iconManager;
542
+        final ActiveFrameManager activeFrameManager;
547 543
 
548 544
         @Inject
549 545
         public TextFrameDependencies(
@@ -555,7 +551,8 @@ public abstract class TextFrame extends JPanel implements Window,
555 551
                 final PasteDialogFactory pasteDialog,
556 552
                 final PluginManager pluginManager,
557 553
                 @GlobalConfig final IconManager iconManager,
558
-                @GlobalConfig final AggregateConfigProvider globalConfig) {
554
+                @GlobalConfig final AggregateConfigProvider globalConfig,
555
+                final ActiveFrameManager activeFrameManager) {
559 556
             this.textPaneFactory = textPaneFactory;
560 557
             this.controller = controller;
561 558
             this.mainFrame = mainFrame;
@@ -565,6 +562,7 @@ public abstract class TextFrame extends JPanel implements Window,
565 562
             this.pasteDialog = pasteDialog;
566 563
             this.pluginManager = pluginManager;
567 564
             this.iconManager = iconManager;
565
+            this.activeFrameManager = activeFrameManager;
568 566
         }
569 567
 
570 568
     }

+ 9
- 8
src/com/dmdirc/addons/ui_swing/components/menubar/ChannelMenu.java 파일 보기

@@ -25,13 +25,13 @@ package com.dmdirc.addons.ui_swing.components.menubar;
25 25
 import com.dmdirc.Channel;
26 26
 import com.dmdirc.FrameContainer;
27 27
 import com.dmdirc.ServerState;
28
-import com.dmdirc.addons.ui_swing.MainFrame;
29 28
 import com.dmdirc.addons.ui_swing.components.frames.TextFrame;
30 29
 import com.dmdirc.addons.ui_swing.dialogs.ChannelJoinDialogFactory;
31 30
 import com.dmdirc.addons.ui_swing.dialogs.channellist.ChannelListDialog;
32 31
 import com.dmdirc.addons.ui_swing.dialogs.channelsetting.ChannelSettingsDialog;
33 32
 import com.dmdirc.addons.ui_swing.injection.DialogProvider;
34 33
 import com.dmdirc.addons.ui_swing.injection.KeyedDialogProvider;
34
+import com.dmdirc.addons.ui_swing.interfaces.ActiveFrameManager;
35 35
 
36 36
 import java.awt.event.ActionEvent;
37 37
 import java.awt.event.ActionListener;
@@ -58,8 +58,8 @@ public class ChannelMenu extends JMenu implements ActionListener,
58 58
     private final DialogProvider<ChannelListDialog> channelListDialogProvider;
59 59
     /** Channel join dialog factory. */
60 60
     private final ChannelJoinDialogFactory channelJoinDialogFactory;
61
-    /** Main frame. */
62
-    private final MainFrame mainFrame;
61
+    /** Active frame manager. */
62
+    private final ActiveFrameManager activeFrameManager;
63 63
     /** Menu items to be disabled/enabled. */
64 64
     private JMenuItem csd;
65 65
     private JMenuItem join;
@@ -68,19 +68,19 @@ public class ChannelMenu extends JMenu implements ActionListener,
68 68
     /**
69 69
      * Creates a new channel menu.
70 70
      *
71
-     * @param mainFrame                 Parent mainframe
71
+     * @param activeFrameManager        Active frame manager.
72 72
      * @param dialogProvider            Channel settings dialog provider
73 73
      * @param channelJoinDialogFactory  Channel join dialog factory
74 74
      * @param channelListDialogProvider Channel list dialog provider
75 75
      */
76 76
     @Inject
77 77
     public ChannelMenu(
78
-            final MainFrame mainFrame,
78
+            final ActiveFrameManager activeFrameManager,
79 79
             final KeyedDialogProvider<Channel, ChannelSettingsDialog> dialogProvider,
80 80
             final ChannelJoinDialogFactory channelJoinDialogFactory,
81 81
             final DialogProvider<ChannelListDialog> channelListDialogProvider) {
82 82
         super("Channel");
83
-        this.mainFrame = mainFrame;
83
+        this.activeFrameManager = activeFrameManager;
84 84
         this.dialogProvider = dialogProvider;
85 85
         this.channelJoinDialogFactory = channelJoinDialogFactory;
86 86
         this.channelListDialogProvider = channelListDialogProvider;
@@ -124,7 +124,8 @@ public class ChannelMenu extends JMenu implements ActionListener,
124 124
                         "Enter the name of the channel to join.").displayOrRequestFocus();
125 125
                 break;
126 126
             case "ChannelSettings":
127
-                final FrameContainer activeWindow = mainFrame.getActiveFrame().getContainer();
127
+                final FrameContainer activeWindow = activeFrameManager.getActiveFrame().
128
+                        getContainer();
128 129
                 if (activeWindow instanceof Channel) {
129 130
                     dialogProvider.displayOrRequestFocus(((Channel) activeWindow));
130 131
                 }
@@ -137,7 +138,7 @@ public class ChannelMenu extends JMenu implements ActionListener,
137 138
 
138 139
     @Override
139 140
     public final void menuSelected(final MenuEvent e) {
140
-        final TextFrame activeFrame = mainFrame.getActiveFrame();
141
+        final TextFrame activeFrame = activeFrameManager.getActiveFrame();
141 142
         final FrameContainer activeWindow = activeFrame == null ? null
142 143
                 : activeFrame.getContainer();
143 144
 

+ 18
- 12
src/com/dmdirc/addons/ui_swing/components/menubar/ServerMenu.java 파일 보기

@@ -26,12 +26,13 @@ import com.dmdirc.FrameContainer;
26 26
 import com.dmdirc.Server;
27 27
 import com.dmdirc.ServerState;
28 28
 import com.dmdirc.addons.ui_swing.Apple;
29
-import com.dmdirc.addons.ui_swing.MainFrame;
30 29
 import com.dmdirc.addons.ui_swing.components.frames.TextFrame;
31 30
 import com.dmdirc.addons.ui_swing.dialogs.NewServerDialog;
32 31
 import com.dmdirc.addons.ui_swing.dialogs.serversetting.ServerSettingsDialog;
33 32
 import com.dmdirc.addons.ui_swing.injection.DialogProvider;
34 33
 import com.dmdirc.addons.ui_swing.injection.KeyedDialogProvider;
34
+import com.dmdirc.addons.ui_swing.interfaces.ActiveFrameManager;
35
+import com.dmdirc.interfaces.LifecycleController;
35 36
 
36 37
 import java.awt.event.ActionEvent;
37 38
 import java.awt.event.ActionListener;
@@ -52,8 +53,10 @@ public class ServerMenu extends JMenu implements ActionListener,
52 53
 
53 54
     /** A version number for this class. */
54 55
     private static final long serialVersionUID = 1;
55
-    /** Main frame. */
56
-    private final MainFrame mainFrame;
56
+    /** Active frame manager. */
57
+    private final ActiveFrameManager activeFrameManager;
58
+    /** Lifecycle controller. */
59
+    private final LifecycleController lifecycleController;
57 60
     /** Menu items which can be enabled/disabled. */
58 61
     private JMenuItem ssd;
59 62
     private JMenuItem disconnect;
@@ -65,17 +68,20 @@ public class ServerMenu extends JMenu implements ActionListener,
65 68
     /**
66 69
      * Creates a new Server menu.
67 70
      *
68
-     * @param mainFrame         Parent main frame
69
-     * @param newServerProvider Provider to use to retrieve NSD instances.
70
-     * @param ssdProvider       Provider to get SSD instances
71
+     * @param activeFrameManager  Active frame manager.
72
+     * @param lifecycleController Lifecycle controller
73
+     * @param newServerProvider   Provider to use to retrieve NSD instances.
74
+     * @param ssdProvider         Provider to get SSD instances
71 75
      */
72 76
     @Inject
73 77
     public ServerMenu(
74
-            final MainFrame mainFrame,
78
+            final ActiveFrameManager activeFrameManager,
79
+            final LifecycleController lifecycleController,
75 80
             final DialogProvider<NewServerDialog> newServerProvider,
76 81
             final KeyedDialogProvider<Server, ServerSettingsDialog> ssdProvider) {
77 82
         super("Server");
78
-        this.mainFrame = mainFrame;
83
+        this.activeFrameManager = activeFrameManager;
84
+        this.lifecycleController = lifecycleController;
79 85
         this.newServerProvider = newServerProvider;
80 86
         this.ssdProvider = ssdProvider;
81 87
 
@@ -127,21 +133,21 @@ public class ServerMenu extends JMenu implements ActionListener,
127 133
                 newServerProvider.displayOrRequestFocus();
128 134
                 break;
129 135
             case "Exit":
130
-                mainFrame.quit();
136
+                lifecycleController.quit();
131 137
                 break;
132 138
             case "ServerSettings":
133 139
                 ssdProvider.displayOrRequestFocus(
134
-                        (Server) mainFrame.getActiveFrame().getContainer().getConnection());
140
+                        (Server) activeFrameManager.getActiveFrame().getContainer().getConnection());
135 141
                 break;
136 142
             case "Disconnect":
137
-                mainFrame.getActiveFrame().getContainer().getConnection().disconnect();
143
+                activeFrameManager.getActiveFrame().getContainer().getConnection().disconnect();
138 144
                 break;
139 145
         }
140 146
     }
141 147
 
142 148
     @Override
143 149
     public final void menuSelected(final MenuEvent e) {
144
-        final TextFrame activeFrame = mainFrame.getActiveFrame();
150
+        final TextFrame activeFrame = activeFrameManager.getActiveFrame();
145 151
         final FrameContainer activeWindow = activeFrame == null ? null
146 152
                 : activeFrame.getContainer();
147 153
 

+ 7
- 4
src/com/dmdirc/addons/ui_swing/dialogs/ChannelJoinDialog.java 파일 보기

@@ -24,6 +24,7 @@ package com.dmdirc.addons.ui_swing.dialogs;
24 24
 
25 25
 import com.dmdirc.ClientModule.GlobalConfig;
26 26
 import com.dmdirc.addons.ui_swing.MainFrame;
27
+import com.dmdirc.addons.ui_swing.interfaces.ActiveFrameManager;
27 28
 import com.dmdirc.parser.common.ChannelJoinRequest;
28 29
 import com.dmdirc.ui.IconManager;
29 30
 import com.dmdirc.util.annotations.factory.Factory;
@@ -37,30 +38,32 @@ public class ChannelJoinDialog extends StandardInputDialog {
37 38
 
38 39
     /** Serial version UID. */
39 40
     private static final long serialVersionUID = 1;
40
-    /** The main frame that owns this dialog. */
41
-    private final MainFrame mainFrame;
41
+    /** Active frame manager. */
42
+    private final ActiveFrameManager activeFrameManager;
42 43
 
43 44
     /**
44 45
      * Creates a new dialog which prompts a user and then joins the channel they specify.
45 46
      *
46 47
      * @param mainFrame   Main frame
48
+     * @param activeFrameManager The active window manager
47 49
      * @param iconManager The icon manager to use for validating text fields.
48 50
      * @param title       Window title
49 51
      * @param message     Window message
50 52
      */
51 53
     public ChannelJoinDialog(
52 54
             final MainFrame mainFrame,
55
+            final ActiveFrameManager activeFrameManager,
53 56
             @SuppressWarnings("qualifiers") @GlobalConfig final IconManager iconManager,
54 57
             @Unbound final String title,
55 58
             @Unbound final String message) {
56 59
         super(mainFrame, ModalityType.APPLICATION_MODAL, iconManager, title, message);
57 60
 
58
-        this.mainFrame = mainFrame;
61
+        this.activeFrameManager = activeFrameManager;
59 62
     }
60 63
 
61 64
     @Override
62 65
     public boolean save() {
63
-        mainFrame.getActiveFrame().getContainer().getConnection()
66
+        activeFrameManager.getActiveFrame().getContainer().getConnection()
64 67
                 .join(new ChannelJoinRequest(getText()));
65 68
         return true;
66 69
     }

+ 9
- 6
src/com/dmdirc/addons/ui_swing/dialogs/NewServerDialog.java 파일 보기

@@ -33,6 +33,7 @@ import com.dmdirc.addons.ui_swing.components.vetoable.VetoableComboBoxModel;
33 33
 import com.dmdirc.addons.ui_swing.components.vetoable.VetoableComboBoxSelectionListener;
34 34
 import com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileManagerDialog;
35 35
 import com.dmdirc.addons.ui_swing.injection.DialogProvider;
36
+import com.dmdirc.addons.ui_swing.interfaces.ActiveFrameManager;
36 37
 import com.dmdirc.interfaces.Connection;
37 38
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
38 39
 import com.dmdirc.interfaces.config.ConfigProvider;
@@ -81,8 +82,8 @@ public class NewServerDialog extends StandardDialog implements
81 82
     private final IconManager iconManager;
82 83
     /** Config. */
83 84
     private final AggregateConfigProvider config;
84
-    /** Main frame. */
85
-    private final MainFrame mainFrame;
85
+    /** Active frame manager. */
86
+    private final ActiveFrameManager activeFrameManager;
86 87
     /** checkbox. */
87 88
     private JCheckBox newServerWindowCheck;
88 89
     /** checkbox. */
@@ -106,6 +107,7 @@ public class NewServerDialog extends StandardDialog implements
106 107
      * Creates a new instance of the dialog.
107 108
      *
108 109
      * @param mainFrame             Main frame
110
+     * @param activeFrameManager    The active window manager
109 111
      * @param config                Config
110 112
      * @param iconManager           Icon manager
111 113
      * @param identityController    Identity controller
@@ -115,6 +117,7 @@ public class NewServerDialog extends StandardDialog implements
115 117
     @Inject
116 118
     public NewServerDialog(
117 119
             final MainFrame mainFrame,
120
+            final ActiveFrameManager activeFrameManager,
118 121
             @GlobalConfig final AggregateConfigProvider config,
119 122
             @GlobalConfig final IconManager iconManager,
120 123
             final IdentityController identityController,
@@ -123,7 +126,7 @@ public class NewServerDialog extends StandardDialog implements
123 126
         super(mainFrame, ModalityType.MODELESS);
124 127
         this.identityController = identityController;
125 128
         this.serverManager = serverManager;
126
-        this.mainFrame = mainFrame;
129
+        this.activeFrameManager = activeFrameManager;
127 130
         this.iconManager = iconManager;
128 131
         this.config = config;
129 132
         this.profileDialogProvider = profileDialogProvider;
@@ -155,7 +158,7 @@ public class NewServerDialog extends StandardDialog implements
155 158
 
156 159
         serverField.requestFocusInWindow();
157 160
 
158
-        if (serverManager.numServers() == 0 || mainFrame.getActiveFrame() == null) {
161
+        if (serverManager.numServers() == 0 || activeFrameManager.getActiveFrame() == null) {
159 162
             newServerWindowCheck.setSelected(true);
160 163
             newServerWindowCheck.setEnabled(false);
161 164
         } else {
@@ -275,7 +278,7 @@ public class NewServerDialog extends StandardDialog implements
275 278
             // Open in a new window?
276 279
             if (newServerWindowCheck.isSelected()
277 280
                     || serverManager.numServers() == 0
278
-                    || mainFrame.getActiveFrame() == null) {
281
+                    || activeFrameManager.getActiveFrame() == null) {
279 282
 
280 283
                 new LoggingSwingWorker<Void, Void>() {
281 284
                     @Override
@@ -285,7 +288,7 @@ public class NewServerDialog extends StandardDialog implements
285 288
                     }
286 289
                 }.executeInExecutor();
287 290
             } else {
288
-                final Connection connection = mainFrame.getActiveFrame().getContainer().
291
+                final Connection connection = activeFrameManager.getActiveFrame().getContainer().
289 292
                         getConnection();
290 293
 
291 294
                 new LoggingSwingWorker<Void, Void>() {

+ 4
- 2
src/com/dmdirc/addons/ui_swing/dialogs/channellist/ChannelListDialog.java 파일 보기

@@ -25,6 +25,7 @@ package com.dmdirc.addons.ui_swing.dialogs.channellist;
25 25
 import com.dmdirc.Server;
26 26
 import com.dmdirc.addons.ui_swing.MainFrame;
27 27
 import com.dmdirc.addons.ui_swing.dialogs.StandardDialog;
28
+import com.dmdirc.addons.ui_swing.interfaces.ActiveFrameManager;
28 29
 
29 30
 import java.awt.event.ActionEvent;
30 31
 import java.awt.event.ActionListener;
@@ -47,11 +48,12 @@ public class ChannelListDialog extends StandardDialog implements ActionListener
47 48
     private final JLabel total;
48 49
 
49 50
     @Inject
50
-    public ChannelListDialog(final MainFrame mainFrame) {
51
+    public ChannelListDialog(final MainFrame mainFrame,
52
+            final ActiveFrameManager activeFrameManager) {
51 53
         super(mainFrame, ModalityType.MODELESS);
52 54
         setTitle("Channel List");
53 55
         total = new JLabel("No results.");
54
-        list = new ChannelListPanel((Server) mainFrame.getActiveFrame().getContainer()
56
+        list = new ChannelListPanel((Server) activeFrameManager.getActiveFrame().getContainer()
55 57
                 .getConnection(), total);
56 58
         layoutComponents();
57 59
         getCancelButton().setText("Close");

+ 10
- 11
src/com/dmdirc/addons/ui_swing/framemanager/buttonbar/ButtonBar.java 파일 보기

@@ -25,13 +25,13 @@ package com.dmdirc.addons.ui_swing.framemanager.buttonbar;
25 25
 import com.dmdirc.ClientModule.GlobalConfig;
26 26
 import com.dmdirc.FrameContainer;
27 27
 import com.dmdirc.FrameContainerComparator;
28
-import com.dmdirc.addons.ui_swing.MainFrame;
29 28
 import com.dmdirc.addons.ui_swing.SwingWindowFactory;
30 29
 import com.dmdirc.addons.ui_swing.UIUtilities;
31 30
 import com.dmdirc.addons.ui_swing.actions.CloseFrameContainerAction;
32 31
 import com.dmdirc.addons.ui_swing.components.frames.TextFrame;
33 32
 import com.dmdirc.addons.ui_swing.framemanager.FrameManager;
34 33
 import com.dmdirc.addons.ui_swing.framemanager.FramemanagerPosition;
34
+import com.dmdirc.addons.ui_swing.interfaces.ActiveFrameManager;
35 35
 import com.dmdirc.interfaces.FrameInfoListener;
36 36
 import com.dmdirc.interfaces.NotificationListener;
37 37
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
@@ -56,7 +56,6 @@ import java.util.HashMap;
56 56
 import java.util.Map;
57 57
 
58 58
 import javax.inject.Inject;
59
-import javax.inject.Provider;
60 59
 import javax.swing.JComponent;
61 60
 import javax.swing.JMenuItem;
62 61
 import javax.swing.JPopupMenu;
@@ -107,8 +106,8 @@ public final class ButtonBar implements FrameManager, ActionListener,
107 106
     private final WindowManager windowManager;
108 107
     /** Global configuration to read settings from. */
109 108
     private final AggregateConfigProvider globalConfig;
110
-    /** Provider to use to retrieve the current main frame. */
111
-    private final Provider<MainFrame> mainFrameProvider;
109
+    /** Active frame manager. */
110
+    private final ActiveFrameManager activeFrameManager;
112 111
 
113 112
     /**
114 113
      * Creates a new instance of ButtonBar.
@@ -116,18 +115,18 @@ public final class ButtonBar implements FrameManager, ActionListener,
116 115
      * @param windowFactory     The factory to use to retrieve window information.
117 116
      * @param windowManager     The window manager to use to read window state.
118 117
      * @param globalConfig      Global configuration to read settings from.
119
-     * @param mainFrameProvider The provider to use to retrieve the current main frame.
118
+     * @param activeFrameManager The active window manager
120 119
      */
121 120
     @Inject
122 121
     public ButtonBar(
123 122
             final SwingWindowFactory windowFactory,
124 123
             @GlobalConfig final AggregateConfigProvider globalConfig,
125 124
             final WindowManager windowManager,
126
-            final Provider<MainFrame> mainFrameProvider) {
125
+            final ActiveFrameManager activeFrameManager) {
127 126
         this.windowFactory = windowFactory;
128 127
         this.globalConfig = globalConfig;
129 128
         this.windowManager = windowManager;
130
-        this.mainFrameProvider = mainFrameProvider;
129
+        this.activeFrameManager = activeFrameManager;
131 130
 
132 131
         scrollPane = new JScrollPane();
133 132
         scrollPane.setBorder(null);
@@ -141,10 +140,10 @@ public final class ButtonBar implements FrameManager, ActionListener,
141 140
                 globalConfig.getOption("ui", "framemanagerPosition"));
142 141
 
143 142
         if (position.isHorizontal()) {
144
-            buttonPanel = new ButtonPanel(mainFrameProvider,
143
+            buttonPanel = new ButtonPanel(activeFrameManager,
145 144
                     new MigLayout("ins rel, fill, flowx"), this);
146 145
         } else {
147
-            buttonPanel = new ButtonPanel(mainFrameProvider,
146
+            buttonPanel = new ButtonPanel(activeFrameManager,
148 147
                     new MigLayout("ins rel, fill, flowy"), this);
149 148
         }
150 149
         scrollPane.getViewport().addMouseWheelListener(buttonPanel);
@@ -195,7 +194,7 @@ public final class ButtonBar implements FrameManager, ActionListener,
195 194
                         ? 150 : (parent.getWidth() / NUM_CELLS);
196 195
                 initButtons(windowManager.getRootWindows());
197 196
 
198
-                final TextFrame activeFrame = mainFrameProvider.get().getActiveFrame();
197
+                final TextFrame activeFrame = activeFrameManager.getActiveFrame();
199 198
                 if (activeFrame != null) {
200 199
                     selectionChanged(activeFrame);
201 200
                 }
@@ -371,7 +370,7 @@ public final class ButtonBar implements FrameManager, ActionListener,
371 370
             button.setSelected(true);
372 371
         }
373 372
 
374
-        mainFrameProvider.get().setActiveFrame(frame);
373
+        activeFrameManager.setActiveFrame(frame);
375 374
     }
376 375
 
377 376
     /**

+ 10
- 11
src/com/dmdirc/addons/ui_swing/framemanager/buttonbar/ButtonPanel.java 파일 보기

@@ -22,7 +22,7 @@
22 22
 
23 23
 package com.dmdirc.addons.ui_swing.framemanager.buttonbar;
24 24
 
25
-import com.dmdirc.addons.ui_swing.MainFrame;
25
+import com.dmdirc.addons.ui_swing.interfaces.ActiveFrameManager;
26 26
 
27 27
 import java.awt.Component;
28 28
 import java.awt.Dimension;
@@ -30,7 +30,6 @@ import java.awt.Rectangle;
30 30
 import java.awt.event.MouseWheelEvent;
31 31
 import java.awt.event.MouseWheelListener;
32 32
 
33
-import javax.inject.Provider;
34 33
 import javax.swing.JPanel;
35 34
 import javax.swing.Scrollable;
36 35
 
@@ -44,23 +43,23 @@ public class ButtonPanel extends JPanel implements Scrollable,
44 43
 
45 44
     /** A version number for this class. */
46 45
     private static final long serialVersionUID = 1;
47
-    /** The provider to get the main frame to set the active frame. */
48
-    private final Provider<MainFrame> mainFrameProvider;
46
+    /** Active frame manager. */
47
+    private final ActiveFrameManager activeFrameManager;
49 48
     /** The ButtonBar that created this Panel. */
50 49
     private final ButtonBar buttonBar;
51 50
 
52 51
     /**
53 52
      * Constructor for ButtonPanel.
54 53
      *
55
-     * @param mainFrameProvider The provider to get the main frame to set the active frame.
56
-     * @param layout            Layout settings for this ButtonPanel
57
-     * @param buttonBar         the buttonBar that created this Panel
54
+     * @param activeFrameManager The active window manager
55
+     * @param layout             Layout settings for this ButtonPanel
56
+     * @param buttonBar          the buttonBar that created this Panel
58 57
      */
59
-    public ButtonPanel(final Provider<MainFrame> mainFrameProvider, final MigLayout layout,
58
+    public ButtonPanel(final ActiveFrameManager activeFrameManager, final MigLayout layout,
60 59
             final ButtonBar buttonBar) {
61 60
         super(layout);
62 61
 
63
-        this.mainFrameProvider = mainFrameProvider;
62
+        this.activeFrameManager = activeFrameManager;
64 63
         this.buttonBar = buttonBar;
65 64
     }
66 65
 
@@ -105,8 +104,8 @@ public class ButtonPanel extends JPanel implements Scrollable,
105 104
             newIndex = (selectedIndex + 1) % getComponentCount();
106 105
         }
107 106
 
108
-        mainFrameProvider.get().setActiveFrame(
109
-                ((FrameToggleButton) getComponent(newIndex)).getTextFrame());
107
+        activeFrameManager.setActiveFrame(((FrameToggleButton) getComponent(newIndex)).
108
+                getTextFrame());
110 109
     }
111 110
 
112 111
     /**

+ 7
- 4
src/com/dmdirc/addons/ui_swing/framemanager/ctrltab/CtrlTabWindowManager.java 파일 보기

@@ -34,6 +34,7 @@ import com.dmdirc.addons.ui_swing.components.TreeScroller;
34 34
 import com.dmdirc.addons.ui_swing.components.frames.TextFrame;
35 35
 import com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewModel;
36 36
 import com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewNode;
37
+import com.dmdirc.addons.ui_swing.interfaces.ActiveFrameManager;
37 38
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
38 39
 import com.dmdirc.interfaces.ui.Window;
39 40
 import com.dmdirc.logger.ErrorLevel;
@@ -71,14 +72,16 @@ public class CtrlTabWindowManager implements SwingWindowListener,
71 72
     /**
72 73
      * Creates a new ctrl tab window manager.
73 74
      *
74
-     * @param globalConfig  The configuration to read settings from.
75
-     * @param windowFactory The window factory to use to create and listen for windows.
75
+     * @param globalConfig       The configuration to read settings from.
76
+     * @param windowFactory      The window factory to use to create and listen for windows.
76 77
      * @param mainFrame     The main frame that owns this window manager
78
+     * @param activeFrameManager Active frame manager.
77 79
      */
78 80
     @Inject
79 81
     public CtrlTabWindowManager(
80 82
             @GlobalConfig final AggregateConfigProvider globalConfig,
81 83
             final SwingWindowFactory windowFactory,
84
+            final ActiveFrameManager activeFrameManager,
82 85
             final MainFrame mainFrame) {
83 86
         nodes = new HashMap<>();
84 87
         model = new TreeViewModel(globalConfig, new TreeViewNode(null, null));
@@ -88,13 +91,13 @@ public class CtrlTabWindowManager implements SwingWindowListener,
88 91
             @Override
89 92
             protected void setPath(final TreePath path) {
90 93
                 super.setPath(path);
91
-                mainFrame.setActiveFrame(windowFactory.getSwingWindow(
94
+                activeFrameManager.setActiveFrame(windowFactory.getSwingWindow(
92 95
                         ((TreeViewNode) path.getLastPathComponent()).getWindow()));
93 96
             }
94 97
         };
95 98
 
96 99
         windowFactory.addWindowListener(this);
97
-        mainFrame.addSelectionListener(this);
100
+        activeFrameManager.addSelectionListener(this);
98 101
 
99 102
         mainFrame.getRootPane().getActionMap().put("prevFrameAction",
100 103
                 new PreviousFrameAction(treeScroller));

+ 8
- 9
src/com/dmdirc/addons/ui_swing/framemanager/tree/Tree.java 파일 보기

@@ -22,11 +22,11 @@
22 22
 
23 23
 package com.dmdirc.addons.ui_swing.framemanager.tree;
24 24
 
25
-import com.dmdirc.addons.ui_swing.MainFrame;
26 25
 import com.dmdirc.addons.ui_swing.SwingWindowFactory;
27 26
 import com.dmdirc.addons.ui_swing.UIUtilities;
28 27
 import com.dmdirc.addons.ui_swing.actions.CloseFrameContainerAction;
29 28
 import com.dmdirc.addons.ui_swing.components.frames.TextFrame;
29
+import com.dmdirc.addons.ui_swing.interfaces.ActiveFrameManager;
30 30
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
31 31
 import com.dmdirc.interfaces.config.ConfigChangeListener;
32 32
 
@@ -37,7 +37,6 @@ import java.awt.event.MouseEvent;
37 37
 import java.awt.event.MouseListener;
38 38
 import java.awt.event.MouseMotionListener;
39 39
 
40
-import javax.inject.Provider;
41 40
 import javax.swing.BorderFactory;
42 41
 import javax.swing.JComponent;
43 42
 import javax.swing.JMenuItem;
@@ -60,8 +59,8 @@ public class Tree extends JTree implements MouseMotionListener,
60 59
     private static final long serialVersionUID = 1;
61 60
     /** Tree frame manager. */
62 61
     private final TreeFrameManager manager;
63
-    /** The provider to use to retrieve the current main frame.. */
64
-    private final Provider<MainFrame> mainFrameProvider;
62
+    /** Active frame manager. */
63
+    private final ActiveFrameManager activeFrameManager;
65 64
     /** Config manager. */
66 65
     private final AggregateConfigProvider config;
67 66
     /** Drag selection enabled? */
@@ -78,7 +77,7 @@ public class Tree extends JTree implements MouseMotionListener,
78 77
      *
79 78
      * @param manager           Frame manager
80 79
      * @param model             tree model.
81
-     * @param mainFrameProvider The provider to use to retrieve the current main frame.
80
+     * @param activeFrameManager The active window manager
82 81
      * @param globalConfig      The config to read settings from.
83 82
      * @param domain            The domain to read settings from.
84 83
      * @param windowFactory     The factory to use to get swing windows.
@@ -86,7 +85,7 @@ public class Tree extends JTree implements MouseMotionListener,
86 85
     public Tree(
87 86
             final TreeFrameManager manager,
88 87
             final TreeModel model,
89
-            final Provider<MainFrame> mainFrameProvider,
88
+            final ActiveFrameManager activeFrameManager,
90 89
             final AggregateConfigProvider globalConfig,
91 90
             final SwingWindowFactory windowFactory,
92 91
             final String domain) {
@@ -95,7 +94,7 @@ public class Tree extends JTree implements MouseMotionListener,
95 94
         this.manager = manager;
96 95
         this.config = globalConfig;
97 96
         this.windowFactory = windowFactory;
98
-        this.mainFrameProvider = mainFrameProvider;
97
+        this.activeFrameManager = activeFrameManager;
99 98
 
100 99
         putClientProperty("JTree.lineStyle", "Angled");
101 100
         getInputMap().setParent(null);
@@ -188,7 +187,7 @@ public class Tree extends JTree implements MouseMotionListener,
188 187
         if (dragSelect && dragButton) {
189 188
             final TreeViewNode node = getNodeForLocation(e.getX(), e.getY());
190 189
             if (node != null) {
191
-                mainFrameProvider.get().setActiveFrame(windowFactory.getSwingWindow(
190
+                activeFrameManager.setActiveFrame(windowFactory.getSwingWindow(
192 191
                         ((TreeViewNode) new TreePath(node.getPath()).getLastPathComponent())
193 192
                         .getWindow()));
194 193
             }
@@ -228,7 +227,7 @@ public class Tree extends JTree implements MouseMotionListener,
228 227
             final TreePath selectedPath = getPathForLocation(e.getX(),
229 228
                     e.getY());
230 229
             if (selectedPath != null) {
231
-                mainFrameProvider.get().setActiveFrame(windowFactory.getSwingWindow(
230
+                activeFrameManager.setActiveFrame(windowFactory.getSwingWindow(
232 231
                         ((TreeViewNode) selectedPath.getLastPathComponent()).getWindow()));
233 232
             }
234 233
         }

+ 15
- 17
src/com/dmdirc/addons/ui_swing/framemanager/tree/TreeFrameManager.java 파일 보기

@@ -24,13 +24,13 @@ package com.dmdirc.addons.ui_swing.framemanager.tree;
24 24
 
25 25
 import com.dmdirc.ClientModule.GlobalConfig;
26 26
 import com.dmdirc.FrameContainer;
27
-import com.dmdirc.addons.ui_swing.MainFrame;
28 27
 import com.dmdirc.addons.ui_swing.SwingController;
29 28
 import com.dmdirc.addons.ui_swing.SwingWindowFactory;
30 29
 import com.dmdirc.addons.ui_swing.UIUtilities;
31 30
 import com.dmdirc.addons.ui_swing.components.TreeScroller;
32 31
 import com.dmdirc.addons.ui_swing.components.frames.TextFrame;
33 32
 import com.dmdirc.addons.ui_swing.framemanager.FrameManager;
33
+import com.dmdirc.addons.ui_swing.interfaces.ActiveFrameManager;
34 34
 import com.dmdirc.interfaces.FrameInfoListener;
35 35
 import com.dmdirc.interfaces.NotificationListener;
36 36
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
@@ -51,7 +51,6 @@ import java.util.HashMap;
51 51
 import java.util.Map;
52 52
 
53 53
 import javax.inject.Inject;
54
-import javax.inject.Provider;
55 54
 import javax.swing.JComponent;
56 55
 import javax.swing.JScrollPane;
57 56
 import javax.swing.JTree;
@@ -88,25 +87,25 @@ public class TreeFrameManager implements FrameManager,
88 87
     private final SwingWindowFactory windowFactory;
89 88
     /** Window manage. */
90 89
     private final WindowManager windowManager;
91
-    /** Provider to use to retrieve the current main frame. */
92
-    private final Provider<MainFrame> mainFrameProvider;
90
+    /** Active frame manager. */
91
+    private final ActiveFrameManager activeFrameManager;
93 92
 
94 93
     /**
95 94
      * Creates a new instance of the TreeFrameManager.
96 95
      *
97
-     * @param windowManager     The window manager to use to read window state.
98
-     * @param globalConfig      The provider to read config settings from.
99
-     * @param colourManager     The colour manager to use to retrieve colours.
100
-     * @param mainFrameProvider The provider to use to retrieve the current main frame.
101
-     * @param windowFactory     The factory to use to retrieve swing windows.
102
-     * @param domain            The domain to read settings from.
96
+     * @param windowManager      The window manager to use to read window state.
97
+     * @param globalConfig       The provider to read config settings from.
98
+     * @param colourManager      The colour manager to use to retrieve colours.
99
+     * @param activeFrameManager The active window manager
100
+     * @param windowFactory      The factory to use to retrieve swing windows.
101
+     * @param domain             The domain to read settings from.
103 102
      */
104 103
     @Inject
105 104
     public TreeFrameManager(
106 105
             final WindowManager windowManager,
107 106
             @GlobalConfig final AggregateConfigProvider globalConfig,
108 107
             final ColourManager colourManager,
109
-            final Provider<MainFrame> mainFrameProvider,
108
+            final ActiveFrameManager activeFrameManager,
110 109
             final SwingWindowFactory windowFactory,
111 110
             @PluginDomain(SwingController.class) final String domain) {
112 111
         this.windowFactory = windowFactory;
@@ -114,12 +113,13 @@ public class TreeFrameManager implements FrameManager,
114 113
         this.nodes = new HashMap<>();
115 114
         this.config = globalConfig;
116 115
         this.colourManager = colourManager;
116
+        this.activeFrameManager = activeFrameManager;
117 117
 
118 118
         UIUtilities.invokeLater(new Runnable() {
119 119
             @Override
120 120
             public void run() {
121 121
                 model = new TreeViewModel(config, new TreeViewNode(null, null));
122
-                tree = new Tree(TreeFrameManager.this, model, mainFrameProvider, globalConfig,
122
+                tree = new Tree(TreeFrameManager.this, model, activeFrameManager, globalConfig,
123 123
                         windowFactory, domain);
124 124
                 tree.setCellRenderer(new TreeViewTreeCellRenderer(config, colourManager,
125 125
                         TreeFrameManager.this));
@@ -132,7 +132,6 @@ public class TreeFrameManager implements FrameManager,
132 132
                 config.addChangeListener("ui", "foregroundcolour", TreeFrameManager.this);
133 133
             }
134 134
         });
135
-        this.mainFrameProvider = mainFrameProvider;
136 135
     }
137 136
 
138 137
     @Override
@@ -317,7 +316,7 @@ public class TreeFrameManager implements FrameManager,
317 316
                 if (scroller != null) {
318 317
                     scroller.unregister();
319 318
                 }
320
-                scroller = new TreeTreeScroller(mainFrameProvider, windowFactory, tree);
319
+                scroller = new TreeTreeScroller(activeFrameManager, windowFactory, tree);
321 320
 
322 321
                 for (FrameContainer window : windowManager.getRootWindows()) {
323 322
                     addWindow(null, window);
@@ -328,9 +327,8 @@ public class TreeFrameManager implements FrameManager,
328 327
                     }
329 328
                 }
330 329
 
331
-                final MainFrame mainFrame = mainFrameProvider.get();
332
-                if (mainFrame != null && mainFrame.getActiveFrame() != null) {
333
-                    selectionChanged(mainFrame.getActiveFrame());
330
+                if (activeFrameManager.getActiveFrame() != null) {
331
+                    selectionChanged(activeFrameManager.getActiveFrame());
334 332
                 }
335 333
             }
336 334
         });

+ 7
- 8
src/com/dmdirc/addons/ui_swing/framemanager/tree/TreeTreeScroller.java 파일 보기

@@ -22,13 +22,12 @@
22 22
 
23 23
 package com.dmdirc.addons.ui_swing.framemanager.tree;
24 24
 
25
-import com.dmdirc.addons.ui_swing.MainFrame;
26 25
 import com.dmdirc.addons.ui_swing.SwingWindowFactory;
27 26
 import com.dmdirc.addons.ui_swing.components.TreeScroller;
27
+import com.dmdirc.addons.ui_swing.interfaces.ActiveFrameManager;
28 28
 import com.dmdirc.logger.ErrorLevel;
29 29
 import com.dmdirc.logger.Logger;
30 30
 
31
-import javax.inject.Provider;
32 31
 import javax.swing.tree.TreePath;
33 32
 
34 33
 /**
@@ -36,25 +35,25 @@ import javax.swing.tree.TreePath;
36 35
  */
37 36
 public class TreeTreeScroller extends TreeScroller {
38 37
 
39
-    /** Main frame provider. */
40
-    private final Provider<MainFrame> mainFrameProvider;
38
+    /** Active frame manager. */
39
+    private final ActiveFrameManager activeFrameManager;
41 40
     /** Factory to use to retrieve swing windows. */
42 41
     private final SwingWindowFactory windowFactory;
43 42
 
44 43
     /**
45 44
      * Creates a new Tree scroller for the tree view.
46 45
      *
47
-     * @param mainFrameProvider Main frame provider.
46
+     * @param activeFrameManager The active window manager
48 47
      * @param windowFactory     Factory to use to retrieve swing windows.
49 48
      * @param tree              Tree view tree
50 49
      */
51 50
     public TreeTreeScroller(
52
-            final Provider<MainFrame> mainFrameProvider,
51
+            final ActiveFrameManager activeFrameManager,
53 52
             final SwingWindowFactory windowFactory,
54 53
             final Tree tree) {
55 54
         super(tree);
56 55
 
57
-        this.mainFrameProvider = mainFrameProvider;
56
+        this.activeFrameManager = activeFrameManager;
58 57
         this.windowFactory = windowFactory;
59 58
     }
60 59
 
@@ -77,7 +76,7 @@ public class TreeTreeScroller extends TreeScroller {
77 76
         }
78 77
         super.setPath(path);
79 78
 
80
-        mainFrameProvider.get().setActiveFrame(windowFactory.getSwingWindow(
79
+        activeFrameManager.setActiveFrame(windowFactory.getSwingWindow(
81 80
                 ((TreeViewNode) path.getLastPathComponent()).getWindow()));
82 81
     }
83 82
 

+ 11
- 12
src/com/dmdirc/addons/ui_swing/framemanager/windowmenu/FrameContainerMenu.java 파일 보기

@@ -23,9 +23,9 @@
23 23
 package com.dmdirc.addons.ui_swing.framemanager.windowmenu;
24 24
 
25 25
 import com.dmdirc.FrameContainer;
26
-import com.dmdirc.addons.ui_swing.MainFrame;
27 26
 import com.dmdirc.addons.ui_swing.SelectionListener;
28 27
 import com.dmdirc.addons.ui_swing.components.frames.TextFrame;
28
+import com.dmdirc.addons.ui_swing.interfaces.ActiveFrameManager;
29 29
 import com.dmdirc.interfaces.FrameInfoListener;
30 30
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
31 31
 
@@ -33,7 +33,6 @@ import java.awt.Font;
33 33
 import java.awt.event.ActionEvent;
34 34
 import java.awt.event.ActionListener;
35 35
 
36
-import javax.inject.Provider;
37 36
 import javax.swing.JMenu;
38 37
 import javax.swing.SwingUtilities;
39 38
 
@@ -45,8 +44,8 @@ public class FrameContainerMenu extends JMenu implements FrameInfoListener,
45 44
 
46 45
     /** A version number for this class. */
47 46
     private static final long serialVersionUID = 1;
48
-    /** The provider to get the main frame to set the active frame. */
49
-    private final Provider<MainFrame> mainFrameProvider;
47
+    /** Active frame manager. */
48
+    private final ActiveFrameManager activeFrameManager;
50 49
     /** The swing frame. */
51 50
     private final TextFrame window;
52 51
     /** Wrapped frame. */
@@ -55,21 +54,21 @@ public class FrameContainerMenu extends JMenu implements FrameInfoListener,
55 54
     /**
56 55
      * Instantiates a new FrameContainer menu item wrapping the specified frame.
57 56
      *
58
-     * @param mainFrameProvider   The provider to get the main frame to set the active frame.
59
-     * @param globalConfig The config to read settings from
60
-     * @param domain       The domain to read settings from
61
-     * @param window       The swing window being wrapped
62
-     * @param frame        Wrapped frame
57
+     * @param activeFrameManager The active window manager
58
+     * @param globalConfig       The config to read settings from
59
+     * @param domain             The domain to read settings from
60
+     * @param window             The swing window being wrapped
61
+     * @param frame              Wrapped frame
63 62
      */
64 63
     public FrameContainerMenu(
65
-            final Provider<MainFrame> mainFrameProvider,
64
+            final ActiveFrameManager activeFrameManager,
66 65
             final AggregateConfigProvider globalConfig,
67 66
             final String domain,
68 67
             final TextFrame window,
69 68
             final FrameContainer frame) {
70 69
         super(frame.getName());
71 70
 
72
-        this.mainFrameProvider = mainFrameProvider;
71
+        this.activeFrameManager = activeFrameManager;
73 72
         this.window = window;
74 73
         this.frame = frame;
75 74
 
@@ -118,7 +117,7 @@ public class FrameContainerMenu extends JMenu implements FrameInfoListener,
118 117
      */
119 118
     @Override
120 119
     public void actionPerformed(final ActionEvent e) {
121
-        mainFrameProvider.get().setActiveFrame(window);
120
+        activeFrameManager.setActiveFrame(window);
122 121
     }
123 122
 
124 123
     @Override

+ 10
- 11
src/com/dmdirc/addons/ui_swing/framemanager/windowmenu/FrameContainerMenuItem.java 파일 보기

@@ -23,9 +23,9 @@
23 23
 package com.dmdirc.addons.ui_swing.framemanager.windowmenu;
24 24
 
25 25
 import com.dmdirc.FrameContainer;
26
-import com.dmdirc.addons.ui_swing.MainFrame;
27 26
 import com.dmdirc.addons.ui_swing.SelectionListener;
28 27
 import com.dmdirc.addons.ui_swing.components.frames.TextFrame;
28
+import com.dmdirc.addons.ui_swing.interfaces.ActiveFrameManager;
29 29
 import com.dmdirc.interfaces.FrameInfoListener;
30 30
 import com.dmdirc.ui.messages.Styliser;
31 31
 
@@ -33,7 +33,6 @@ import java.awt.Font;
33 33
 import java.awt.event.ActionEvent;
34 34
 import java.awt.event.ActionListener;
35 35
 
36
-import javax.inject.Provider;
37 36
 import javax.swing.JMenuItem;
38 37
 import javax.swing.SwingUtilities;
39 38
 
@@ -45,8 +44,8 @@ public class FrameContainerMenuItem extends JMenuItem implements FrameInfoListen
45 44
 
46 45
     /** A version number for this class. */
47 46
     private static final long serialVersionUID = 1;
48
-    /** The provider to retrieve the mainframe to set active frames. */
49
-    private final Provider<MainFrame> mainFrameProvider;
47
+    /** Active frame manager. */
48
+    private final ActiveFrameManager activeFrameManager;
50 49
     /** Wrapped frame. */
51 50
     private final FrameContainer frame;
52 51
     /** Swing window. */
@@ -57,19 +56,19 @@ public class FrameContainerMenuItem extends JMenuItem implements FrameInfoListen
57 56
     /**
58 57
      * Instantiates a new FrameContainer menu item wrapping the specified frame.
59 58
      *
60
-     * @param mainFrameProvider The provider to retrieve the mainframe to set active frames.
61
-     * @param frame             Wrapped frame
62
-     * @param window            The window this menu item corresponds to.
63
-     * @param manager           Parent window menu frame manager.
59
+     * @param activeFrameManager The active window manager
60
+     * @param frame              Wrapped frame
61
+     * @param window             The window this menu item corresponds to.
62
+     * @param manager            Parent window menu frame manager.
64 63
      */
65 64
     public FrameContainerMenuItem(
66
-            final Provider<MainFrame> mainFrameProvider,
65
+            final ActiveFrameManager activeFrameManager,
67 66
             final FrameContainer frame,
68 67
             final TextFrame window,
69 68
             final WindowMenuFrameManager manager) {
70 69
         super(frame.getName(), frame.getIconManager().getIcon(frame.getIcon()));
71 70
 
72
-        this.mainFrameProvider = mainFrameProvider;
71
+        this.activeFrameManager = activeFrameManager;
73 72
         this.frame = frame;
74 73
         this.window = window;
75 74
         this.manager = manager;
@@ -111,7 +110,7 @@ public class FrameContainerMenuItem extends JMenuItem implements FrameInfoListen
111 110
 
112 111
     @Override
113 112
     public void actionPerformed(final ActionEvent e) {
114
-        mainFrameProvider.get().setActiveFrame(window);
113
+        activeFrameManager.setActiveFrame(window);
115 114
     }
116 115
 
117 116
     @Override

+ 17
- 21
src/com/dmdirc/addons/ui_swing/framemanager/windowmenu/WindowMenuFrameManager.java 파일 보기

@@ -25,13 +25,13 @@ package com.dmdirc.addons.ui_swing.framemanager.windowmenu;
25 25
 import com.dmdirc.ClientModule.GlobalConfig;
26 26
 import com.dmdirc.FrameContainer;
27 27
 import com.dmdirc.FrameContainerComparator;
28
-import com.dmdirc.addons.ui_swing.MainFrame;
29 28
 import com.dmdirc.addons.ui_swing.SelectionListener;
30 29
 import com.dmdirc.addons.ui_swing.SwingController;
31 30
 import com.dmdirc.addons.ui_swing.SwingWindowFactory;
32 31
 import com.dmdirc.addons.ui_swing.SwingWindowListener;
33 32
 import com.dmdirc.addons.ui_swing.UIUtilities;
34 33
 import com.dmdirc.addons.ui_swing.components.frames.TextFrame;
34
+import com.dmdirc.addons.ui_swing.interfaces.ActiveFrameManager;
35 35
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
36 36
 import com.dmdirc.plugins.PluginDomain;
37 37
 import com.dmdirc.ui.IconManager;
@@ -48,7 +48,6 @@ import java.util.concurrent.Callable;
48 48
 import java.util.concurrent.atomic.AtomicBoolean;
49 49
 
50 50
 import javax.inject.Inject;
51
-import javax.inject.Provider;
52 51
 import javax.inject.Singleton;
53 52
 import javax.swing.AbstractButton;
54 53
 import javax.swing.JMenu;
@@ -75,26 +74,24 @@ public class WindowMenuFrameManager extends JMenu implements
75 74
     private final JSeparator separator;
76 75
     /** Enabled menu items? */
77 76
     private final AtomicBoolean enabledMenuItems = new AtomicBoolean(false);
78
-    /** Swing controller. */
79
-    private final SwingController controller;
80 77
     /** Window to menu map. */
81 78
     private final Map<FrameContainer, FrameContainerMenu> menus;
82 79
     private final Map<FrameContainer, FrameContainerMenuItem> items;
83 80
     private final Map<FrameContainer, FrameContainerMenuItem> menuItems;
84
-
85
-    private final Provider<MainFrame> mainFrame;
81
+    /** Active frame manager. */
82
+    private final ActiveFrameManager activeFrameManager;
86 83
     private final AggregateConfigProvider globalConfig;
87 84
     private final String domain;
88 85
 
89 86
     /**
90 87
      * Creates a new instance of WindowMenuFrameManager.
91 88
      *
92
-     * @param controller    Swing controller
93
-     * @param iconManager   Icon manager to use for window icons.
94
-     * @param globalConfig  Config to read settings from.
95
-     * @param domain        Domain to read settings from.
96
-     * @param windowFactory The window factory to use to create and listen for windows.
97
-     * @param mainFrame     The frame that owns this manager
89
+     * @param controller         Swing controller
90
+     * @param iconManager        Icon manager to use for window icons.
91
+     * @param globalConfig       Config to read settings from.
92
+     * @param domain             Domain to read settings from.
93
+     * @param windowFactory      The window factory to use to create and listen for windows.
94
+     * @param activeFrameManager The active window manager
98 95
      */
99 96
     @Inject
100 97
     public WindowMenuFrameManager(
@@ -103,11 +100,10 @@ public class WindowMenuFrameManager extends JMenu implements
103 100
             @GlobalConfig final AggregateConfigProvider globalConfig,
104 101
             @PluginDomain(SwingController.class) final String domain,
105 102
             final SwingWindowFactory windowFactory,
106
-            final Provider<MainFrame> mainFrame) {
107
-        this.controller = controller;
103
+            final ActiveFrameManager activeFrameManager) {
108 104
         this.globalConfig = globalConfig;
109 105
         this.domain = domain;
110
-        this.mainFrame = mainFrame;
106
+        this.activeFrameManager = activeFrameManager;
111 107
 
112 108
         menus = Collections.synchronizedMap(
113 109
                 new HashMap<FrameContainer, FrameContainerMenu>());
@@ -132,7 +128,7 @@ public class WindowMenuFrameManager extends JMenu implements
132 128
 
133 129
         itemCount = getMenuComponentCount();
134 130
 
135
-        mainFrame.get().addSelectionListener(this);
131
+        activeFrameManager.addSelectionListener(this);
136 132
 
137 133
         new WindowMenuScroller(this, globalConfig, domain, itemCount);
138 134
         checkMenuItems();
@@ -156,7 +152,7 @@ public class WindowMenuFrameManager extends JMenu implements
156 152
                         @Override
157 153
                         public FrameContainerMenuItem call() {
158 154
                             return new FrameContainerMenuItem(
159
-                                    mainFrame,
155
+                                    activeFrameManager,
160 156
                                     window.getContainer(),
161 157
                                     window,
162 158
                                     WindowMenuFrameManager.this);
@@ -178,7 +174,7 @@ public class WindowMenuFrameManager extends JMenu implements
178 174
                         @Override
179 175
                         public FrameContainerMenuItem call() {
180 176
                             return new FrameContainerMenuItem(
181
-                                    mainFrame,
177
+                                    activeFrameManager,
182 178
                                     window.getContainer(),
183 179
                                     window,
184 180
                                     WindowMenuFrameManager.this);
@@ -192,7 +188,7 @@ public class WindowMenuFrameManager extends JMenu implements
192 188
                             @Override
193 189
                             public FrameContainerMenu call() {
194 190
                                 return new FrameContainerMenu(
195
-                                        mainFrame,
191
+                                        activeFrameManager,
196 192
                                         globalConfig,
197 193
                                         domain,
198 194
                                         parent,
@@ -254,7 +250,7 @@ public class WindowMenuFrameManager extends JMenu implements
254 250
                                     getContainer()),
255 251
                                     menus.get(parent.getContainer()),
256 252
                                     new FrameContainerMenuItem(
257
-                                            mainFrame,
253
+                                            activeFrameManager,
258 254
                                             parent.getContainer(),
259 255
                                             parent,
260 256
                                             WindowMenuFrameManager.this));
@@ -311,7 +307,7 @@ public class WindowMenuFrameManager extends JMenu implements
311 307
     @Override
312 308
     public void actionPerformed(final ActionEvent e) {
313 309
         if (enabledMenuItems.get() && e.getActionCommand().equals("Close")) {
314
-            mainFrame.get().getActiveFrame().getContainer().close();
310
+            activeFrameManager.getActiveFrame().getContainer().close();
315 311
         }
316 312
     }
317 313
 

+ 7
- 0
src/com/dmdirc/addons/ui_swing/injection/SwingModule.java 파일 보기

@@ -51,6 +51,7 @@ import com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel;
51 51
 import com.dmdirc.addons.ui_swing.framemanager.FrameManager;
52 52
 import com.dmdirc.addons.ui_swing.framemanager.FrameManagerProvider;
53 53
 import com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManagerProvider;
54
+import com.dmdirc.addons.ui_swing.interfaces.ActiveFrameManager;
54 55
 import com.dmdirc.config.prefs.PreferencesDialogModel;
55 56
 import com.dmdirc.interfaces.LifecycleController;
56 57
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
@@ -138,6 +139,12 @@ public class SwingModule {
138 139
         });
139 140
     }
140 141
 
142
+    @Provides
143
+    @Singleton
144
+    public ActiveFrameManager getActiveFrameManager(final MainFrame mainFrame) {
145
+        return mainFrame;
146
+    }
147
+
141 148
     @Provides
142 149
     @Singleton
143 150
     public SwingStatusBar getSwingStatusBar(

+ 9
- 8
src/com/dmdirc/addons/windowstatus/WindowStatusManager.java 파일 보기

@@ -25,11 +25,11 @@ package com.dmdirc.addons.windowstatus;
25 25
 import com.dmdirc.Channel;
26 26
 import com.dmdirc.FrameContainer;
27 27
 import com.dmdirc.Query;
28
-import com.dmdirc.addons.ui_swing.MainFrame;
29 28
 import com.dmdirc.addons.ui_swing.SelectionListener;
30 29
 import com.dmdirc.addons.ui_swing.UIUtilities;
31 30
 import com.dmdirc.addons.ui_swing.components.frames.TextFrame;
32 31
 import com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar;
32
+import com.dmdirc.addons.ui_swing.interfaces.ActiveFrameManager;
33 33
 import com.dmdirc.interfaces.Connection;
34 34
 import com.dmdirc.interfaces.config.ConfigChangeListener;
35 35
 import com.dmdirc.interfaces.config.IdentityController;
@@ -49,8 +49,8 @@ import javax.inject.Inject;
49 49
  */
50 50
 public class WindowStatusManager implements ConfigChangeListener, SelectionListener {
51 51
 
52
-    /** Main frame. */
53
-    private final MainFrame mainFrame;
52
+    /** Active frame manager. */
53
+    private final ActiveFrameManager activeFrameManager;
54 54
     /** Status bar we're adding to. */
55 55
     private final SwingStatusBar statusBar;
56 56
     /** Identity controller to read settings from. */
@@ -67,11 +67,12 @@ public class WindowStatusManager implements ConfigChangeListener, SelectionListe
67 67
     private String nonePrefix;
68 68
 
69 69
     @Inject
70
-    public WindowStatusManager(final MainFrame mainFrame, final SwingStatusBar statusBar,
70
+    public WindowStatusManager(final ActiveFrameManager activeFrameManager,
71
+            final SwingStatusBar statusBar,
71 72
             final IdentityController identityController,
72 73
             @PluginDomain(WindowStatusPlugin.class) final String domain) {
73 74
         this.domain = domain;
74
-        this.mainFrame = mainFrame;
75
+        this.activeFrameManager = activeFrameManager;
75 76
         this.statusBar = statusBar;
76 77
         this.identityController = identityController;
77 78
     }
@@ -88,7 +89,7 @@ public class WindowStatusManager implements ConfigChangeListener, SelectionListe
88 89
             }
89 90
         });
90 91
         statusBar.addComponent(panel);
91
-        mainFrame.addSelectionListener(this);
92
+        activeFrameManager.addSelectionListener(this);
92 93
         identityController.getGlobalConfiguration().addChangeListener(domain, this);
93 94
         updateCache();
94 95
     }
@@ -97,7 +98,7 @@ public class WindowStatusManager implements ConfigChangeListener, SelectionListe
97 98
      * Unloads the plugin.
98 99
      */
99 100
     public void onUnload() {
100
-        mainFrame.removeSelectionListener(this);
101
+        activeFrameManager.removeSelectionListener(this);
101 102
         statusBar.removeComponent(panel);
102 103
         panel = null;
103 104
     }
@@ -122,7 +123,7 @@ public class WindowStatusManager implements ConfigChangeListener, SelectionListe
122 123
 
123 124
     /** Update the window status using the current active window. */
124 125
     public void updateStatus() {
125
-        final TextFrame active = mainFrame.getActiveFrame();
126
+        final TextFrame active = activeFrameManager.getActiveFrame();
126 127
 
127 128
         if (active != null) {
128 129
             updateStatus(active.getContainer());

Loading…
취소
저장