Browse Source

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 years ago
parent
commit
a801f8a3eb
24 changed files with 227 additions and 219 deletions
  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 View File

24
 
24
 
25
 import com.dmdirc.FrameContainer;
25
 import com.dmdirc.FrameContainer;
26
 import com.dmdirc.WritableFrameContainer;
26
 import com.dmdirc.WritableFrameContainer;
27
-import com.dmdirc.addons.ui_swing.MainFrame;
28
 import com.dmdirc.addons.ui_swing.components.frames.TextFrame;
27
 import com.dmdirc.addons.ui_swing.components.frames.TextFrame;
28
+import com.dmdirc.addons.ui_swing.interfaces.ActiveFrameManager;
29
 import com.dmdirc.commandparser.BaseCommandInfo;
29
 import com.dmdirc.commandparser.BaseCommandInfo;
30
 import com.dmdirc.commandparser.CommandArguments;
30
 import com.dmdirc.commandparser.CommandArguments;
31
 import com.dmdirc.commandparser.CommandInfo;
31
 import com.dmdirc.commandparser.CommandInfo;
48
     public static final CommandInfo INFO = new BaseCommandInfo("active",
48
     public static final CommandInfo INFO = new BaseCommandInfo("active",
49
             "active <command> - executes the command as though it had been "
49
             "active <command> - executes the command as though it had been "
50
             + "executed in the active window", CommandType.TYPE_GLOBAL);
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
      * Creates a new active command.
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
     @Inject
60
     @Inject
61
-    public ActiveCommand(final CommandController controller, final MainFrame mainFrame) {
61
+    public ActiveCommand(final CommandController controller,
62
+            final ActiveFrameManager activeFrameManager) {
62
         super(controller);
63
         super(controller);
63
 
64
 
64
-        this.mainFrame = mainFrame;
65
+        this.activeFrameManager = activeFrameManager;
65
     }
66
     }
66
 
67
 
67
     @Override
68
     @Override
68
     public void execute(final FrameContainer origin,
69
     public void execute(final FrameContainer origin,
69
             final CommandArguments args, final CommandContext context) {
70
             final CommandArguments args, final CommandContext context) {
70
-        final TextFrame frame = mainFrame.getActiveFrame();
71
+        final TextFrame frame = activeFrameManager.getActiveFrame();
71
         if (frame.getContainer() instanceof WritableFrameContainer) {
72
         if (frame.getContainer() instanceof WritableFrameContainer) {
72
             ((WritableFrameContainer) frame.getContainer()).getCommandParser()
73
             ((WritableFrameContainer) frame.getContainer()).getCommandParser()
73
                     .parseCommand(frame.getContainer(),
74
                     .parseCommand(frame.getContainer(),

+ 7
- 7
src/com/dmdirc/addons/activewindow/ActiveWindowMessageSink.java View File

23
 package com.dmdirc.addons.activewindow;
23
 package com.dmdirc.addons.activewindow;
24
 
24
 
25
 import com.dmdirc.WritableFrameContainer;
25
 import com.dmdirc.WritableFrameContainer;
26
-import com.dmdirc.addons.ui_swing.MainFrame;
27
 import com.dmdirc.addons.ui_swing.components.frames.TextFrame;
26
 import com.dmdirc.addons.ui_swing.components.frames.TextFrame;
27
+import com.dmdirc.addons.ui_swing.interfaces.ActiveFrameManager;
28
 import com.dmdirc.messages.MessageSink;
28
 import com.dmdirc.messages.MessageSink;
29
 import com.dmdirc.messages.MessageSinkManager;
29
 import com.dmdirc.messages.MessageSinkManager;
30
 
30
 
40
 
40
 
41
     /** The pattern to use to match this sink. */
41
     /** The pattern to use to match this sink. */
42
     private static final Pattern PATTERN = Pattern.compile("active");
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
      * Creates a new ActiveWindowMessageSink for the specified mainframe.
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
     @Inject
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
     @Override
56
     @Override
62
     public void handleMessage(final MessageSinkManager despatcher,
62
     public void handleMessage(final MessageSinkManager despatcher,
63
             final WritableFrameContainer source, final String[] patternMatches,
63
             final WritableFrameContainer source, final String[] patternMatches,
64
             final Date date, final String messageType, final Object... args) {
64
             final Date date, final String messageType, final Object... args) {
65
-        final TextFrame frame = mainFrame.getActiveFrame();
65
+        final TextFrame frame = activeFrameManager.getActiveFrame();
66
         if (frame.getContainer() instanceof WritableFrameContainer) {
66
         if (frame.getContainer() instanceof WritableFrameContainer) {
67
             frame.getContainer().addLine(messageType, date, args);
67
             frame.getContainer().addLine(messageType, date, args);
68
         }
68
         }

+ 8
- 9
src/com/dmdirc/addons/lagdisplay/LagDisplayManager.java View File

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

+ 7
- 12
src/com/dmdirc/addons/lagdisplay/PingHistoryPanel.java View File

22
 
22
 
23
 package com.dmdirc.addons.lagdisplay;
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
 import com.dmdirc.util.collections.RollingList;
26
 import com.dmdirc.util.collections.RollingList;
27
 
27
 
28
 import java.awt.Color;
28
 import java.awt.Color;
41
  */
41
  */
42
 public class PingHistoryPanel extends JPanel {
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
     private static final long serialVersionUID = 1;
45
     private static final long serialVersionUID = 1;
50
     /** The manager that this panel is for. */
46
     /** The manager that this panel is for. */
51
     protected final LagDisplayManager manager;
47
     protected final LagDisplayManager manager;
57
     /**
53
     /**
58
      * Creates a new history panel for the specified plugin.
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
     public PingHistoryPanel(final LagDisplayManager manager,
59
     public PingHistoryPanel(final LagDisplayManager manager,
64
-            final MainFrame mainFrame) {
65
-        super();
66
-
60
+            final ActiveFrameManager activeFrameManager) {
67
         setMinimumSize(new Dimension(50, 100));
61
         setMinimumSize(new Dimension(50, 100));
68
         setMaximumSize(new Dimension(Integer.MAX_VALUE, 100));
62
         setMaximumSize(new Dimension(Integer.MAX_VALUE, 100));
69
         setOpaque(false);
63
         setOpaque(false);
70
 
64
 
71
         this.manager = manager;
65
         this.manager = manager;
72
-        history = manager.getHistory(mainFrame.getActiveFrame().getContainer().getConnection());
66
+        history = manager.getHistory(activeFrameManager.getActiveFrame().getContainer().
67
+                getConnection());
73
 
68
 
74
         for (Long value : history.getList()) {
69
         for (Long value : history.getList()) {
75
             maximum = Math.max(value, maximum);
70
             maximum = Math.max(value, maximum);

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

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

+ 7
- 6
src/com/dmdirc/addons/ui_swing/SwingWindowFactory.java View File

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

23
 package com.dmdirc.addons.ui_swing.components;
23
 package com.dmdirc.addons.ui_swing.components;
24
 
24
 
25
 import com.dmdirc.ClientModule.GlobalConfig;
25
 import com.dmdirc.ClientModule.GlobalConfig;
26
-import com.dmdirc.addons.ui_swing.MainFrame;
27
 import com.dmdirc.addons.ui_swing.SelectionListener;
26
 import com.dmdirc.addons.ui_swing.SelectionListener;
28
 import com.dmdirc.addons.ui_swing.SwingController;
27
 import com.dmdirc.addons.ui_swing.SwingController;
29
 import com.dmdirc.addons.ui_swing.SwingWindowFactory;
28
 import com.dmdirc.addons.ui_swing.SwingWindowFactory;
30
 import com.dmdirc.addons.ui_swing.SwingWindowListener;
29
 import com.dmdirc.addons.ui_swing.SwingWindowListener;
31
 import com.dmdirc.addons.ui_swing.components.frames.TextFrame;
30
 import com.dmdirc.addons.ui_swing.components.frames.TextFrame;
31
+import com.dmdirc.addons.ui_swing.interfaces.ActiveFrameManager;
32
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
32
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
33
 import com.dmdirc.interfaces.config.ConfigChangeListener;
33
 import com.dmdirc.interfaces.config.ConfigChangeListener;
34
 import com.dmdirc.plugins.PluginDomain;
34
 import com.dmdirc.plugins.PluginDomain;
61
     private static final int ICON_SIZE = 12;
61
     private static final int ICON_SIZE = 12;
62
     /** Button to close frames. */
62
     /** Button to close frames. */
63
     private final NoFocusButton closeButton;
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
     /** Config manager to get settings from. */
66
     /** Config manager to get settings from. */
67
     private final AggregateConfigProvider config;
67
     private final AggregateConfigProvider config;
68
     /** Option domain. */
68
     /** Option domain. */
73
     /**
73
     /**
74
      * Instantiates a new MDI bar.
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
     @Inject
82
     @Inject
83
     public MDIBar(
83
     public MDIBar(
85
             @GlobalConfig final IconManager iconManager,
85
             @GlobalConfig final IconManager iconManager,
86
             @PluginDomain(SwingController.class) final String domain,
86
             @PluginDomain(SwingController.class) final String domain,
87
             final SwingWindowFactory windowFactory,
87
             final SwingWindowFactory windowFactory,
88
-            final MainFrame mainFrame) {
88
+            final ActiveFrameManager activeFrameManager) {
89
         super();
89
         super();
90
 
90
 
91
-        this.mainFrame = mainFrame;
91
+        this.activeFrameManager = activeFrameManager;
92
         this.config = globalConfig;
92
         this.config = globalConfig;
93
         this.configDomain = domain;
93
         this.configDomain = domain;
94
         visibility = config.getOptionBool(configDomain, "mdiBarVisibility");
94
         visibility = config.getOptionBool(configDomain, "mdiBarVisibility");
101
 
101
 
102
         windowFactory.addWindowListener(this);
102
         windowFactory.addWindowListener(this);
103
 
103
 
104
-        mainFrame.addSelectionListener(this);
104
+        activeFrameManager.addSelectionListener(this);
105
         closeButton.addActionListener(this);
105
         closeButton.addActionListener(this);
106
         config.addChangeListener(configDomain, "mdiBarVisibility", this);
106
         config.addChangeListener(configDomain, "mdiBarVisibility", this);
107
 
107
 
121
             @Override
121
             @Override
122
             public void run() {
122
             public void run() {
123
                 setVisible(visibility);
123
                 setVisible(visibility);
124
-                setEnabled(mainFrame.getActiveFrame() != null);
124
+                setEnabled(activeFrameManager.getActiveFrame() != null);
125
             }
125
             }
126
         });
126
         });
127
     }
127
     }
143
      */
143
      */
144
     @Override
144
     @Override
145
     public void actionPerformed(final ActionEvent e) {
145
     public void actionPerformed(final ActionEvent e) {
146
-        if (mainFrame.getActiveFrame() == null) {
146
+        if (activeFrameManager.getActiveFrame() == null) {
147
             return;
147
             return;
148
         }
148
         }
149
         if (closeButton.equals(e.getSource())) {
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 View File

35
 import com.dmdirc.addons.ui_swing.actions.SearchAction;
35
 import com.dmdirc.addons.ui_swing.actions.SearchAction;
36
 import com.dmdirc.addons.ui_swing.components.SwingSearchBar;
36
 import com.dmdirc.addons.ui_swing.components.SwingSearchBar;
37
 import com.dmdirc.addons.ui_swing.dialogs.paste.PasteDialogFactory;
37
 import com.dmdirc.addons.ui_swing.dialogs.paste.PasteDialogFactory;
38
+import com.dmdirc.addons.ui_swing.interfaces.ActiveFrameManager;
38
 import com.dmdirc.addons.ui_swing.textpane.ClickTypeValue;
39
 import com.dmdirc.addons.ui_swing.textpane.ClickTypeValue;
39
 import com.dmdirc.addons.ui_swing.textpane.MouseEventType;
40
 import com.dmdirc.addons.ui_swing.textpane.MouseEventType;
40
 import com.dmdirc.addons.ui_swing.textpane.TextPane;
41
 import com.dmdirc.addons.ui_swing.textpane.TextPane;
87
 public abstract class TextFrame extends JPanel implements Window,
88
 public abstract class TextFrame extends JPanel implements Window,
88
         ConfigChangeListener, TextPaneListener, FrameCloseListener {
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
     private static final long serialVersionUID = 5;
92
     private static final long serialVersionUID = 5;
96
     /** The channel object that owns this frame. */
93
     /** The channel object that owns this frame. */
97
     protected final FrameContainer frameParent;
94
     protected final FrameContainer frameParent;
101
     private SwingSearchBar searchBar;
98
     private SwingSearchBar searchBar;
102
     /** Command parser for popup commands. */
99
     /** Command parser for popup commands. */
103
     private final CommandParser commandParser;
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
     /** Manager to use for building popups. */
103
     /** Manager to use for building popups. */
107
     private final PopupManager popupManager;
104
     private final PopupManager popupManager;
108
     /** Bus to despatch events on. */
105
     /** Bus to despatch events on. */
109
     private final EventBus eventBus;
106
     private final EventBus eventBus;
110
     /** Boolean to determine if this frame should be popped out of main client. */
107
     /** Boolean to determine if this frame should be popped out of main client. */
111
     private boolean popout;
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
     private DesktopWindowFrame popoutFrame;
110
     private DesktopWindowFrame popoutFrame;
116
     /** Desktop place holder object used if this frame is popped out. */
111
     /** Desktop place holder object used if this frame is popped out. */
117
     private DesktopPlaceHolderFrame popoutPlaceholder;
112
     private DesktopPlaceHolderFrame popoutPlaceholder;
129
             final FrameContainer owner,
124
             final FrameContainer owner,
130
             final CommandParser commandParser,
125
             final CommandParser commandParser,
131
             final TextFrameDependencies deps) {
126
             final TextFrameDependencies deps) {
132
-        this.mainFrame = deps.mainFrame;
127
+        this.activeFrameManager = deps.activeFrameManager;
133
         this.popupManager = deps.popupManager;
128
         this.popupManager = deps.popupManager;
134
         this.frameParent = owner;
129
         this.frameParent = owner;
135
         this.iconManager = deps.iconManager;
130
         this.iconManager = deps.iconManager;
175
             popoutFrame = null;
170
             popoutFrame = null;
176
         }
171
         }
177
         // Call setActiveFrame again so the contents of the frame manager are updated.
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
         final PasteDialogFactory pasteDialog;
539
         final PasteDialogFactory pasteDialog;
545
         final PluginManager pluginManager;
540
         final PluginManager pluginManager;
546
         final IconManager iconManager;
541
         final IconManager iconManager;
542
+        final ActiveFrameManager activeFrameManager;
547
 
543
 
548
         @Inject
544
         @Inject
549
         public TextFrameDependencies(
545
         public TextFrameDependencies(
555
                 final PasteDialogFactory pasteDialog,
551
                 final PasteDialogFactory pasteDialog,
556
                 final PluginManager pluginManager,
552
                 final PluginManager pluginManager,
557
                 @GlobalConfig final IconManager iconManager,
553
                 @GlobalConfig final IconManager iconManager,
558
-                @GlobalConfig final AggregateConfigProvider globalConfig) {
554
+                @GlobalConfig final AggregateConfigProvider globalConfig,
555
+                final ActiveFrameManager activeFrameManager) {
559
             this.textPaneFactory = textPaneFactory;
556
             this.textPaneFactory = textPaneFactory;
560
             this.controller = controller;
557
             this.controller = controller;
561
             this.mainFrame = mainFrame;
558
             this.mainFrame = mainFrame;
565
             this.pasteDialog = pasteDialog;
562
             this.pasteDialog = pasteDialog;
566
             this.pluginManager = pluginManager;
563
             this.pluginManager = pluginManager;
567
             this.iconManager = iconManager;
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 View File

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

+ 18
- 12
src/com/dmdirc/addons/ui_swing/components/menubar/ServerMenu.java View File

26
 import com.dmdirc.Server;
26
 import com.dmdirc.Server;
27
 import com.dmdirc.ServerState;
27
 import com.dmdirc.ServerState;
28
 import com.dmdirc.addons.ui_swing.Apple;
28
 import com.dmdirc.addons.ui_swing.Apple;
29
-import com.dmdirc.addons.ui_swing.MainFrame;
30
 import com.dmdirc.addons.ui_swing.components.frames.TextFrame;
29
 import com.dmdirc.addons.ui_swing.components.frames.TextFrame;
31
 import com.dmdirc.addons.ui_swing.dialogs.NewServerDialog;
30
 import com.dmdirc.addons.ui_swing.dialogs.NewServerDialog;
32
 import com.dmdirc.addons.ui_swing.dialogs.serversetting.ServerSettingsDialog;
31
 import com.dmdirc.addons.ui_swing.dialogs.serversetting.ServerSettingsDialog;
33
 import com.dmdirc.addons.ui_swing.injection.DialogProvider;
32
 import com.dmdirc.addons.ui_swing.injection.DialogProvider;
34
 import com.dmdirc.addons.ui_swing.injection.KeyedDialogProvider;
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
 import java.awt.event.ActionEvent;
37
 import java.awt.event.ActionEvent;
37
 import java.awt.event.ActionListener;
38
 import java.awt.event.ActionListener;
52
 
53
 
53
     /** A version number for this class. */
54
     /** A version number for this class. */
54
     private static final long serialVersionUID = 1;
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
     /** Menu items which can be enabled/disabled. */
60
     /** Menu items which can be enabled/disabled. */
58
     private JMenuItem ssd;
61
     private JMenuItem ssd;
59
     private JMenuItem disconnect;
62
     private JMenuItem disconnect;
65
     /**
68
     /**
66
      * Creates a new Server menu.
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
     @Inject
76
     @Inject
73
     public ServerMenu(
77
     public ServerMenu(
74
-            final MainFrame mainFrame,
78
+            final ActiveFrameManager activeFrameManager,
79
+            final LifecycleController lifecycleController,
75
             final DialogProvider<NewServerDialog> newServerProvider,
80
             final DialogProvider<NewServerDialog> newServerProvider,
76
             final KeyedDialogProvider<Server, ServerSettingsDialog> ssdProvider) {
81
             final KeyedDialogProvider<Server, ServerSettingsDialog> ssdProvider) {
77
         super("Server");
82
         super("Server");
78
-        this.mainFrame = mainFrame;
83
+        this.activeFrameManager = activeFrameManager;
84
+        this.lifecycleController = lifecycleController;
79
         this.newServerProvider = newServerProvider;
85
         this.newServerProvider = newServerProvider;
80
         this.ssdProvider = ssdProvider;
86
         this.ssdProvider = ssdProvider;
81
 
87
 
127
                 newServerProvider.displayOrRequestFocus();
133
                 newServerProvider.displayOrRequestFocus();
128
                 break;
134
                 break;
129
             case "Exit":
135
             case "Exit":
130
-                mainFrame.quit();
136
+                lifecycleController.quit();
131
                 break;
137
                 break;
132
             case "ServerSettings":
138
             case "ServerSettings":
133
                 ssdProvider.displayOrRequestFocus(
139
                 ssdProvider.displayOrRequestFocus(
134
-                        (Server) mainFrame.getActiveFrame().getContainer().getConnection());
140
+                        (Server) activeFrameManager.getActiveFrame().getContainer().getConnection());
135
                 break;
141
                 break;
136
             case "Disconnect":
142
             case "Disconnect":
137
-                mainFrame.getActiveFrame().getContainer().getConnection().disconnect();
143
+                activeFrameManager.getActiveFrame().getContainer().getConnection().disconnect();
138
                 break;
144
                 break;
139
         }
145
         }
140
     }
146
     }
141
 
147
 
142
     @Override
148
     @Override
143
     public final void menuSelected(final MenuEvent e) {
149
     public final void menuSelected(final MenuEvent e) {
144
-        final TextFrame activeFrame = mainFrame.getActiveFrame();
150
+        final TextFrame activeFrame = activeFrameManager.getActiveFrame();
145
         final FrameContainer activeWindow = activeFrame == null ? null
151
         final FrameContainer activeWindow = activeFrame == null ? null
146
                 : activeFrame.getContainer();
152
                 : activeFrame.getContainer();
147
 
153
 

+ 7
- 4
src/com/dmdirc/addons/ui_swing/dialogs/ChannelJoinDialog.java View File

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

+ 9
- 6
src/com/dmdirc/addons/ui_swing/dialogs/NewServerDialog.java View File

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

+ 4
- 2
src/com/dmdirc/addons/ui_swing/dialogs/channellist/ChannelListDialog.java View File

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

+ 10
- 11
src/com/dmdirc/addons/ui_swing/framemanager/buttonbar/ButtonBar.java View File

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

22
 
22
 
23
 package com.dmdirc.addons.ui_swing.framemanager.buttonbar;
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
 import java.awt.Component;
27
 import java.awt.Component;
28
 import java.awt.Dimension;
28
 import java.awt.Dimension;
30
 import java.awt.event.MouseWheelEvent;
30
 import java.awt.event.MouseWheelEvent;
31
 import java.awt.event.MouseWheelListener;
31
 import java.awt.event.MouseWheelListener;
32
 
32
 
33
-import javax.inject.Provider;
34
 import javax.swing.JPanel;
33
 import javax.swing.JPanel;
35
 import javax.swing.Scrollable;
34
 import javax.swing.Scrollable;
36
 
35
 
44
 
43
 
45
     /** A version number for this class. */
44
     /** A version number for this class. */
46
     private static final long serialVersionUID = 1;
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
     /** The ButtonBar that created this Panel. */
48
     /** The ButtonBar that created this Panel. */
50
     private final ButtonBar buttonBar;
49
     private final ButtonBar buttonBar;
51
 
50
 
52
     /**
51
     /**
53
      * Constructor for ButtonPanel.
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
             final ButtonBar buttonBar) {
59
             final ButtonBar buttonBar) {
61
         super(layout);
60
         super(layout);
62
 
61
 
63
-        this.mainFrameProvider = mainFrameProvider;
62
+        this.activeFrameManager = activeFrameManager;
64
         this.buttonBar = buttonBar;
63
         this.buttonBar = buttonBar;
65
     }
64
     }
66
 
65
 
105
             newIndex = (selectedIndex + 1) % getComponentCount();
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 View File

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

+ 8
- 9
src/com/dmdirc/addons/ui_swing/framemanager/tree/Tree.java View File

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

+ 15
- 17
src/com/dmdirc/addons/ui_swing/framemanager/tree/TreeFrameManager.java View File

24
 
24
 
25
 import com.dmdirc.ClientModule.GlobalConfig;
25
 import com.dmdirc.ClientModule.GlobalConfig;
26
 import com.dmdirc.FrameContainer;
26
 import com.dmdirc.FrameContainer;
27
-import com.dmdirc.addons.ui_swing.MainFrame;
28
 import com.dmdirc.addons.ui_swing.SwingController;
27
 import com.dmdirc.addons.ui_swing.SwingController;
29
 import com.dmdirc.addons.ui_swing.SwingWindowFactory;
28
 import com.dmdirc.addons.ui_swing.SwingWindowFactory;
30
 import com.dmdirc.addons.ui_swing.UIUtilities;
29
 import com.dmdirc.addons.ui_swing.UIUtilities;
31
 import com.dmdirc.addons.ui_swing.components.TreeScroller;
30
 import com.dmdirc.addons.ui_swing.components.TreeScroller;
32
 import com.dmdirc.addons.ui_swing.components.frames.TextFrame;
31
 import com.dmdirc.addons.ui_swing.components.frames.TextFrame;
33
 import com.dmdirc.addons.ui_swing.framemanager.FrameManager;
32
 import com.dmdirc.addons.ui_swing.framemanager.FrameManager;
33
+import com.dmdirc.addons.ui_swing.interfaces.ActiveFrameManager;
34
 import com.dmdirc.interfaces.FrameInfoListener;
34
 import com.dmdirc.interfaces.FrameInfoListener;
35
 import com.dmdirc.interfaces.NotificationListener;
35
 import com.dmdirc.interfaces.NotificationListener;
36
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
36
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
51
 import java.util.Map;
51
 import java.util.Map;
52
 
52
 
53
 import javax.inject.Inject;
53
 import javax.inject.Inject;
54
-import javax.inject.Provider;
55
 import javax.swing.JComponent;
54
 import javax.swing.JComponent;
56
 import javax.swing.JScrollPane;
55
 import javax.swing.JScrollPane;
57
 import javax.swing.JTree;
56
 import javax.swing.JTree;
88
     private final SwingWindowFactory windowFactory;
87
     private final SwingWindowFactory windowFactory;
89
     /** Window manage. */
88
     /** Window manage. */
90
     private final WindowManager windowManager;
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
      * Creates a new instance of the TreeFrameManager.
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
     @Inject
103
     @Inject
105
     public TreeFrameManager(
104
     public TreeFrameManager(
106
             final WindowManager windowManager,
105
             final WindowManager windowManager,
107
             @GlobalConfig final AggregateConfigProvider globalConfig,
106
             @GlobalConfig final AggregateConfigProvider globalConfig,
108
             final ColourManager colourManager,
107
             final ColourManager colourManager,
109
-            final Provider<MainFrame> mainFrameProvider,
108
+            final ActiveFrameManager activeFrameManager,
110
             final SwingWindowFactory windowFactory,
109
             final SwingWindowFactory windowFactory,
111
             @PluginDomain(SwingController.class) final String domain) {
110
             @PluginDomain(SwingController.class) final String domain) {
112
         this.windowFactory = windowFactory;
111
         this.windowFactory = windowFactory;
114
         this.nodes = new HashMap<>();
113
         this.nodes = new HashMap<>();
115
         this.config = globalConfig;
114
         this.config = globalConfig;
116
         this.colourManager = colourManager;
115
         this.colourManager = colourManager;
116
+        this.activeFrameManager = activeFrameManager;
117
 
117
 
118
         UIUtilities.invokeLater(new Runnable() {
118
         UIUtilities.invokeLater(new Runnable() {
119
             @Override
119
             @Override
120
             public void run() {
120
             public void run() {
121
                 model = new TreeViewModel(config, new TreeViewNode(null, null));
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
                         windowFactory, domain);
123
                         windowFactory, domain);
124
                 tree.setCellRenderer(new TreeViewTreeCellRenderer(config, colourManager,
124
                 tree.setCellRenderer(new TreeViewTreeCellRenderer(config, colourManager,
125
                         TreeFrameManager.this));
125
                         TreeFrameManager.this));
132
                 config.addChangeListener("ui", "foregroundcolour", TreeFrameManager.this);
132
                 config.addChangeListener("ui", "foregroundcolour", TreeFrameManager.this);
133
             }
133
             }
134
         });
134
         });
135
-        this.mainFrameProvider = mainFrameProvider;
136
     }
135
     }
137
 
136
 
138
     @Override
137
     @Override
317
                 if (scroller != null) {
316
                 if (scroller != null) {
318
                     scroller.unregister();
317
                     scroller.unregister();
319
                 }
318
                 }
320
-                scroller = new TreeTreeScroller(mainFrameProvider, windowFactory, tree);
319
+                scroller = new TreeTreeScroller(activeFrameManager, windowFactory, tree);
321
 
320
 
322
                 for (FrameContainer window : windowManager.getRootWindows()) {
321
                 for (FrameContainer window : windowManager.getRootWindows()) {
323
                     addWindow(null, window);
322
                     addWindow(null, window);
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 View File

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

+ 11
- 12
src/com/dmdirc/addons/ui_swing/framemanager/windowmenu/FrameContainerMenu.java View File

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

+ 10
- 11
src/com/dmdirc/addons/ui_swing/framemanager/windowmenu/FrameContainerMenuItem.java View File

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

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

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

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

+ 9
- 8
src/com/dmdirc/addons/windowstatus/WindowStatusManager.java View File

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

Loading…
Cancel
Save