Browse Source

FrameContainers need UIControllers to be sane... Simple method to provide this.

Change-Id: I1fe08f27693e9fb8134b53c317a8871d93658178
Reviewed-on: http://gerrit.dmdirc.com/1145
Automatic-Compile: Chris Smith <chris@dmdirc.com>
Reviewed-by: Chris Smith <chris@dmdirc.com>
tags/0.6.4
Greboid 14 years ago
parent
commit
7fcb6727aa

+ 6
- 0
src/com/dmdirc/addons/ui_dummy/DummyFrameManager.java View File

@@ -25,6 +25,7 @@ package com.dmdirc.addons.ui_dummy;
25 25
 import com.dmdirc.FrameContainer;
26 26
 import com.dmdirc.Main;
27 27
 import com.dmdirc.ui.interfaces.FrameManager;
28
+import com.dmdirc.ui.interfaces.UIController;
28 29
 
29 30
 import java.awt.Color;
30 31
 
@@ -88,4 +89,9 @@ public class DummyFrameManager implements FrameManager {
88 89
         return true;
89 90
     }
90 91
 
92
+    @Override
93
+    public void setController(UIController controller) {
94
+        throw new UnsupportedOperationException("Not supported yet.");
95
+    }
96
+
91 97
 }

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

@@ -364,6 +364,7 @@ public final class MainFrame extends JFrame implements WindowListener,
364 364
                     // the same way, so we might as well catch Exception
365 365
                     mainFrameManager = new TreeFrameManager();
366 366
                 }
367
+                mainFrameManager.setController(controller);
367 368
 
368 369
                 WindowManager.addFrameListener(mainFrameManager);
369 370
                 mainFrameManager.setParent(frameManagerPanel);

+ 20
- 2
src/com/dmdirc/addons/ui_swing/framemanager/buttonbar/ButtonBar.java View File

@@ -23,7 +23,10 @@ package com.dmdirc.addons.ui_swing.framemanager.buttonbar;
23 23
 
24 24
 import com.dmdirc.FrameContainer;
25 25
 import com.dmdirc.FrameContainerComparator;
26
+import com.dmdirc.addons.ui_swing.SwingController;
27
+import com.dmdirc.addons.ui_swing.SwingWindowFactory;
26 28
 import com.dmdirc.addons.ui_swing.UIUtilities;
29
+import com.dmdirc.addons.ui_swing.components.frames.TextFrame;
27 30
 import com.dmdirc.config.IdentityManager;
28 31
 import com.dmdirc.interfaces.FrameInfoListener;
29 32
 import com.dmdirc.interfaces.NotificationListener;
@@ -31,6 +34,7 @@ import com.dmdirc.interfaces.SelectionListener;
31 34
 import com.dmdirc.ui.IconManager;
32 35
 import com.dmdirc.ui.interfaces.FrameManager;
33 36
 import com.dmdirc.ui.interfaces.FramemanagerPosition;
37
+import com.dmdirc.ui.interfaces.UIController;
34 38
 import com.dmdirc.ui.interfaces.Window;
35 39
 import com.dmdirc.util.MapList;
36 40
 
@@ -96,6 +100,8 @@ public final class ButtonBar implements FrameManager, ActionListener,
96 100
     private int buttonWidth = 0;
97 101
     /** The height of buttons. */
98 102
     private int buttonHeight = 25;
103
+    /** UI Controller. */
104
+    private SwingWindowFactory controller;
99 105
 
100 106
     /** Creates a new instance of DummyFrameManager. */
101 107
     public ButtonBar() {
@@ -140,6 +146,16 @@ public final class ButtonBar implements FrameManager, ActionListener,
140 146
         });
141 147
     }
142 148
 
149
+    /** {@inheritDoc} */
150
+    @Override
151
+    public void setController(final UIController controller) {
152
+        if (!(controller instanceof SwingController)) {
153
+            throw new IllegalArgumentException("Controller must be an instance "
154
+                    + "of SwingController");
155
+        }
156
+        this.controller = ((SwingController) controller).getWindowFactory();
157
+    }
158
+
143 159
     /**
144 160
      * Removes all buttons from the bar and readds them.
145 161
      */
@@ -281,7 +297,9 @@ public final class ButtonBar implements FrameManager, ActionListener,
281 297
     public void actionPerformed(final ActionEvent e) {
282 298
         for (Map.Entry<FrameContainer<?>, JToggleButton> entry : buttons.entrySet()) {
283 299
             if (entry.getValue().equals(e.getSource())) {
284
-                if (entry.getKey().getFrame().equals(activeWindow)) {
300
+                final TextFrame frame = (TextFrame) controller.getSwingWindow(
301
+                        entry.getKey());
302
+                if (frame != null && frame.equals(activeWindow)) {
285 303
                     entry.getValue().setSelected(true);
286 304
                 }
287 305
 
@@ -348,7 +366,7 @@ public final class ButtonBar implements FrameManager, ActionListener,
348 366
     /** {@inheritDoc} */
349 367
     @Override
350 368
     public void selectionChanged(final FrameContainer<?> window) {
351
-        activeWindow = window.getFrame();
369
+        activeWindow = (TextFrame) controller.getSwingWindow(window);
352 370
         if (selected != null && buttons.containsKey(selected)) {
353 371
             buttons.get(selected).setSelected(false);
354 372
         }

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

@@ -22,6 +22,7 @@
22 22
 
23 23
 package com.dmdirc.addons.ui_swing.framemanager.tree;
24 24
 
25
+import com.dmdirc.addons.ui_swing.SwingWindowFactory;
25 26
 import com.dmdirc.addons.ui_swing.UIUtilities;
26 27
 import com.dmdirc.config.IdentityManager;
27 28
 import com.dmdirc.interfaces.ConfigChangeListener;
@@ -30,7 +31,6 @@ import com.dmdirc.addons.ui_swing.components.TreeScroller;
30 31
 import com.dmdirc.addons.ui_swing.components.frames.TextFrame;
31 32
 import com.dmdirc.logger.ErrorLevel;
32 33
 import com.dmdirc.logger.Logger;
33
-import com.dmdirc.ui.interfaces.Window;
34 34
 
35 35
 import java.awt.Rectangle;
36 36
 import java.awt.event.ActionEvent;
@@ -68,17 +68,22 @@ public class Tree extends JTree implements MouseMotionListener,
68 68
     private boolean dragButton;
69 69
     /** Tree frame manager. */
70 70
     private TreeFrameManager manager;
71
+    /** UI Controller. */
72
+    private SwingWindowFactory controller;
71 73
 
72 74
     /**
73 75
      * Specialised JTree for frame manager.
74 76
      *
75 77
      * @param manager Frame manager
76 78
      * @param model tree model.
79
+     * @param controller Swing controller
77 80
      */
78
-    public Tree(final TreeFrameManager manager, final TreeModel model) {
81
+    public Tree(final TreeFrameManager manager, final TreeModel model,
82
+            final SwingWindowFactory controller) {
79 83
         super(model);
80 84
 
81 85
         this.manager = manager;
86
+        this.controller = controller;
82 87
 
83 88
         putClientProperty("JTree.lineStyle", "Angled");
84 89
         getInputMap().setParent(null);
@@ -280,13 +285,8 @@ public class Tree extends JTree implements MouseMotionListener,
280 285
             if (e.isPopupTrigger()) {
281 286
                 TextFrame frame = null;
282 287
 
283
-                for (Window window : ((TreeViewNode) localPath.
284
-                        getLastPathComponent()).getWindow().getWindows()) {
285
-                    if (window instanceof TextFrame) {
286
-                        frame = (TextFrame) window;
287
-                        break;
288
-                    }
289
-                }
288
+                frame = (TextFrame) controller.getSwingWindow(((TreeViewNode)
289
+                        localPath.getLastPathComponent()).getWindow());
290 290
 
291 291
                 if (frame == null) {
292 292
                     return;

+ 37
- 13
src/com/dmdirc/addons/ui_swing/framemanager/tree/TreeFrameManager.java View File

@@ -23,6 +23,7 @@
23 23
 package com.dmdirc.addons.ui_swing.framemanager.tree;
24 24
 
25 25
 import com.dmdirc.FrameContainer;
26
+import com.dmdirc.addons.ui_swing.SwingController;
26 27
 import com.dmdirc.config.IdentityManager;
27 28
 import com.dmdirc.interfaces.ConfigChangeListener;
28 29
 import com.dmdirc.interfaces.FrameInfoListener;
@@ -33,6 +34,7 @@ import com.dmdirc.logger.Logger;
33 34
 import com.dmdirc.ui.interfaces.FrameManager;
34 35
 import com.dmdirc.addons.ui_swing.UIUtilities;
35 36
 import com.dmdirc.ui.WindowManager;
37
+import com.dmdirc.ui.interfaces.UIController;
36 38
 
37 39
 import java.awt.Color;
38 40
 import java.awt.Rectangle;
@@ -68,26 +70,17 @@ public final class TreeFrameManager implements FrameManager,
68 70
      */
69 71
     private static final long serialVersionUID = 5;
70 72
     /** display tree. */
71
-    private final Tree tree;
73
+    private Tree tree;
72 74
     /** data model. */
73
-    private final TreeViewModel model;
75
+    private TreeViewModel model;
74 76
     /** node storage, used for adding and deleting nodes correctly. */
75 77
     private final Map<FrameContainer<?>, TreeViewNode> nodes;
78
+    /** UI Controller. */
79
+    private SwingController controller;
76 80
 
77 81
     /** creates a new instance of the TreeFrameManager. */
78 82
     public TreeFrameManager() {
79 83
         nodes = new HashMap<FrameContainer<?>, TreeViewNode>();
80
-        model = new TreeViewModel(new TreeViewNode(null, null));
81
-        tree = new Tree(this, model);
82
-
83
-        tree.setCellRenderer(new TreeViewTreeCellRenderer(this));
84
-        tree.setVisible(true);
85
-
86
-        IdentityManager.getGlobalConfig().addChangeListener("treeview", this);
87
-        IdentityManager.getGlobalConfig().addChangeListener("ui",
88
-                "backgroundcolour", this);
89
-        IdentityManager.getGlobalConfig().addChangeListener("ui",
90
-                "foregroundcolour", this);
91 84
     }
92 85
 
93 86
     /** {@inheritDoc} */
@@ -124,6 +117,37 @@ public final class TreeFrameManager implements FrameManager,
124 117
         });
125 118
     }
126 119
 
120
+    /** {@inheritDoc} */
121
+    @Override
122
+    public void setController(final UIController controller) {
123
+        if (!(controller instanceof SwingController)) {
124
+            throw new IllegalArgumentException("Controller must be an instance "
125
+                    + "of SwingController");
126
+        }
127
+        this.controller = (SwingController) controller;
128
+
129
+        UIUtilities.invokeLater(new Runnable() {
130
+
131
+            @Override
132
+            public void run() {
133
+                model = new TreeViewModel(new TreeViewNode(null, null));
134
+                tree = new Tree(TreeFrameManager.this, model, 
135
+                        TreeFrameManager.this.controller.getWindowFactory());
136
+
137
+                tree.setCellRenderer(new TreeViewTreeCellRenderer(
138
+                        TreeFrameManager.this));
139
+                tree.setVisible(true);
140
+
141
+                IdentityManager.getGlobalConfig().addChangeListener("treeview",
142
+                        TreeFrameManager.this);
143
+                IdentityManager.getGlobalConfig().addChangeListener("ui",
144
+                        "backgroundcolour", TreeFrameManager.this);
145
+                IdentityManager.getGlobalConfig().addChangeListener("ui",
146
+                        "foregroundcolour", TreeFrameManager.this);
147
+            }
148
+        });
149
+    }
150
+
127 151
     /** {@inheritDoc} */
128 152
     @Override
129 153
     public void addWindow(final FrameContainer<?> window, final boolean focus) {

+ 21
- 6
src/com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode.java View File

@@ -23,11 +23,11 @@
23 23
 package com.dmdirc.addons.ui_swing.framemanager.tree;
24 24
 
25 25
 import com.dmdirc.FrameContainer;
26
-import com.dmdirc.ui.interfaces.Window;
26
+
27 27
 import javax.swing.tree.DefaultMutableTreeNode;
28 28
 
29 29
 /**
30
- *
30
+ * Tree node representing a NodeLabel and a FrameContainer.
31 31
  */
32 32
 public class TreeViewNode extends DefaultMutableTreeNode {
33 33
     
@@ -41,20 +41,35 @@ public class TreeViewNode extends DefaultMutableTreeNode {
41 41
     private NodeLabel label;
42 42
     /** Node's frame container. */
43 43
     private FrameContainer<?> window;
44
-    
44
+
45
+    /**
46
+     * Instantiates a new tree view node.
47
+     *
48
+     * @param label Node label
49
+     * @param window Node window
50
+     */
45 51
     public TreeViewNode(final NodeLabel label, final FrameContainer<?> window) {
46 52
         super();
47 53
         
48 54
         this.label = label;
49 55
         this.window = window;
50 56
     }
51
-    
57
+
58
+    /**
59
+     * Returns the label for this tree node.
60
+     *
61
+     * @return Node label
62
+     */
52 63
     public NodeLabel getLabel() {
53 64
         return label;
54 65
     }
55
-    
66
+
67
+    /**
68
+     * Returns the FrameContainer for this node.
69
+     *
70
+     * @return Node window
71
+     */
56 72
     public FrameContainer<?> getWindow() {
57 73
         return window;
58 74
     }
59
-
60 75
 }

+ 6
- 0
src/com/dmdirc/addons/ui_web/uicomponents/WebFrameManager.java View File

@@ -27,6 +27,7 @@ import com.dmdirc.ui.interfaces.FrameManager;
27 27
 import com.dmdirc.addons.ui_web.DynamicRequestHandler;
28 28
 import com.dmdirc.addons.ui_web.Event;
29 29
 import com.dmdirc.addons.ui_web.WebInterfaceUI;
30
+import com.dmdirc.ui.interfaces.UIController;
30 31
 import javax.swing.JComponent;
31 32
 
32 33
 /**
@@ -87,4 +88,9 @@ public class WebFrameManager implements FrameManager {
87 88
         throw new UnsupportedOperationException("Not supported yet.");
88 89
     }
89 90
 
91
+    @Override
92
+    public void setController(UIController controller) {
93
+        //Ignore
94
+    }
95
+
90 96
 }

Loading…
Cancel
Save