Преглед на файлове

Re-add treescroller after treeview is rebuilt.

Fixes isssue CLIENT-1

Change-Id: Ib0a23179daffa4903a192b627caf0a8d0823bdd6
Reviewed-on: http://gerrit.dmdirc.com/1534
Reviewed-by: Chris Smith <chris@dmdirc.com>
Automatic-Compile: Greg Holmes <greg@dmdirc.com>
tags/0.6.5
Greg Holmes преди 13 години
родител
ревизия
b0f3497fa4

+ 28
- 4
src/com/dmdirc/addons/ui_swing/components/TreeScroller.java Целия файл

21
  */
21
  */
22
 package com.dmdirc.addons.ui_swing.components;
22
 package com.dmdirc.addons.ui_swing.components;
23
 
23
 
24
+import com.dmdirc.addons.ui_swing.UIUtilities;
24
 import java.awt.event.MouseWheelEvent;
25
 import java.awt.event.MouseWheelEvent;
25
 import java.awt.event.MouseWheelListener;
26
 import java.awt.event.MouseWheelListener;
26
 
27
 
70
      * @param rootVisible Is the root node visible
71
      * @param rootVisible Is the root node visible
71
      */
72
      */
72
     public TreeScroller(final DefaultTreeModel model,
73
     public TreeScroller(final DefaultTreeModel model,
73
-            final TreeSelectionModel selectionModel, final boolean rootVisible) {
74
+            final TreeSelectionModel selectionModel,
75
+            final boolean rootVisible) {
74
         this.model = model;
76
         this.model = model;
75
         this.selectionModel = selectionModel;
77
         this.selectionModel = selectionModel;
76
 
78
 
84
      * @param tree Tree to scroll
86
      * @param tree Tree to scroll
85
      */
87
      */
86
     public static void register(final JTree tree) {
88
     public static void register(final JTree tree) {
87
-        new TreeScroller(tree);
89
+        UIUtilities.invokeLater(new Runnable() {
90
+
91
+            /** {@inheritDoc} */
92
+            @Override
93
+            public void run() {
94
+                new TreeScroller(tree);
95
+            }
96
+        });
88
     }
97
     }
89
 
98
 
90
     /**
99
     /**
95
      * @param rootVisible Root visible
104
      * @param rootVisible Root visible
96
      */
105
      */
97
     public static void register(final DefaultTreeModel model,
106
     public static void register(final DefaultTreeModel model,
98
-            final TreeSelectionModel selectionModel, final boolean rootVisible) {
99
-        new TreeScroller(model, selectionModel, rootVisible);
107
+            final TreeSelectionModel selectionModel,
108
+            final boolean rootVisible) {
109
+        UIUtilities.invokeLater(new Runnable() {
110
+
111
+            /** {@inheritDoc} */
112
+            @Override
113
+            public void run() {
114
+                new TreeScroller(model, selectionModel, rootVisible);
115
+            }
116
+        });
117
+    }
118
+
119
+    /**
120
+     * Removes this tree scroller from the tree.
121
+     */
122
+    public void unregister() {
123
+        tree.removeMouseWheelListener(this);
100
     }
124
     }
101
 
125
 
102
     /**
126
     /**

+ 19
- 12
src/com/dmdirc/addons/ui_swing/framemanager/tree/TreeFrameManager.java Целия файл

25
 import com.dmdirc.FrameContainer;
25
 import com.dmdirc.FrameContainer;
26
 import com.dmdirc.addons.ui_swing.SwingController;
26
 import com.dmdirc.addons.ui_swing.SwingController;
27
 import com.dmdirc.addons.ui_swing.UIUtilities;
27
 import com.dmdirc.addons.ui_swing.UIUtilities;
28
+import com.dmdirc.addons.ui_swing.components.TreeScroller;
28
 import com.dmdirc.addons.ui_swing.framemanager.FrameManager;
29
 import com.dmdirc.addons.ui_swing.framemanager.FrameManager;
29
 import com.dmdirc.config.IdentityManager;
30
 import com.dmdirc.config.IdentityManager;
30
 import com.dmdirc.interfaces.ConfigChangeListener;
31
 import com.dmdirc.interfaces.ConfigChangeListener;
78
     private final Map<FrameContainer<?>, TreeViewNode> nodes;
79
     private final Map<FrameContainer<?>, TreeViewNode> nodes;
79
     /** UI Controller. */
80
     /** UI Controller. */
80
     private SwingController controller;
81
     private SwingController controller;
82
+    /** Tree scroller. */
83
+    private TreeScroller scroller;
81
 
84
 
82
     /** creates a new instance of the TreeFrameManager. */
85
     /** creates a new instance of the TreeFrameManager. */
83
     public TreeFrameManager() {
86
     public TreeFrameManager() {
119
                 setColours();
122
                 setColours();
120
 
123
 
121
                 redoTreeView();
124
                 redoTreeView();
122
-                if (controller.getMainFrame().getActiveFrame() != null) {
123
-                    selectionChanged(controller.getMainFrame().getActiveFrame().
124
-                            getContainer());
125
-                }
126
             }
125
             }
127
         });
126
         });
128
     }
127
     }
208
         });
207
         });
209
     }
208
     }
210
 
209
 
211
-    /** 
210
+    /**
212
      * Adds a window to the frame container.
211
      * Adds a window to the frame container.
213
-     * 
212
+     *
214
      * @param parent Parent node
213
      * @param parent Parent node
215
      * @param window Window to add
214
      * @param window Window to add
216
      */
215
      */
260
 
259
 
261
     /**
260
     /**
262
      * Checks for and sets a rollover node.
261
      * Checks for and sets a rollover node.
263
-     * 
264
-     * @param event event to check 
262
+     *
263
+     * @param event event to check
265
      */
264
      */
266
     protected void checkRollover(final MouseEvent event) {
265
     protected void checkRollover(final MouseEvent event) {
267
         NodeLabel node = null;
266
         NodeLabel node = null;
313
                 ((DefaultTreeModel) tree.getModel()).setRoot(null);
312
                 ((DefaultTreeModel) tree.getModel()).setRoot(null);
314
                 ((DefaultTreeModel) tree.getModel()).setRoot(new TreeViewNode(
313
                 ((DefaultTreeModel) tree.getModel()).setRoot(new TreeViewNode(
315
                         null, null));
314
                         null, null));
316
-                new TreeTreeScroller(tree);
315
+                if (scroller != null) {
316
+                    scroller.unregister();
317
+                }
318
+                scroller = new TreeTreeScroller(tree);
317
 
319
 
318
-                for (FrameContainer<?> window : WindowManager.getRootWindows()) {
320
+                for (FrameContainer<?> window
321
+                        : WindowManager.getRootWindows()) {
319
                     addWindow(null, window);
322
                     addWindow(null, window);
320
-                    final Collection<FrameContainer<?>> childWindows = window.
321
-                            getChildren();
323
+                    final Collection<FrameContainer<?>> childWindows = window
324
+                            .getChildren();
322
                     for (FrameContainer childWindow : childWindows) {
325
                     for (FrameContainer childWindow : childWindows) {
323
                         addWindow(nodes.get(window), childWindow);
326
                         addWindow(nodes.get(window), childWindow);
324
                     }
327
                     }
325
                 }
328
                 }
329
+                if (controller.getMainFrame().getActiveFrame() != null) {
330
+                    selectionChanged(controller.getMainFrame().getActiveFrame()
331
+                            .getContainer());
332
+                }
326
             }
333
             }
327
         });
334
         });
328
     }
335
     }

Loading…
Отказ
Запис