Browse Source

Rollovers are no longer checked if the option is disabled

possible fix for issue 1090

git-svn-id: http://svn.dmdirc.com/trunk@3803 00569f92-eb28-0410-84fd-f71c24880f
tags/0.6
Gregory Holmes 16 years ago
parent
commit
3082d892d6

+ 35
- 9
src/com/dmdirc/ui/swing/components/renderers/TreeViewTreeCellRenderer.java View File

@@ -22,6 +22,8 @@
22 22
 
23 23
 package com.dmdirc.ui.swing.components.renderers;
24 24
 
25
+import com.dmdirc.config.IdentityManager;
26
+import com.dmdirc.interfaces.ConfigChangeListener;
25 27
 import com.dmdirc.ui.swing.framemanager.tree.NodeLabel;
26 28
 import com.dmdirc.ui.swing.framemanager.tree.TreeFrameManager;
27 29
 import com.dmdirc.ui.swing.framemanager.tree.TreeViewModel;
@@ -41,7 +43,7 @@ import javax.swing.tree.TreePath;
41 43
  * Displays a node in a tree according to its type.
42 44
  */
43 45
 public class TreeViewTreeCellRenderer implements TreeCellRenderer,
44
-        MouseMotionListener, MouseListener {
46
+        MouseMotionListener, MouseListener, ConfigChangeListener {
45 47
 
46 48
     /**
47 49
      * A version number for this class. It should be changed whenever the class
@@ -61,8 +63,13 @@ public class TreeViewTreeCellRenderer implements TreeCellRenderer,
61 63
      */
62 64
     public TreeViewTreeCellRenderer(final TreeFrameManager manager) {
63 65
         this.manager = manager;
64
-        manager.getTree().addMouseMotionListener(this);
65
-        manager.getTree().addMouseListener(this);
66
+        if (!IdentityManager.getGlobalConfig().getOption("ui",
67
+                "treeviewRolloverColour", "false").contains("false")) {
68
+            manager.getTree().addMouseMotionListener(this);
69
+            manager.getTree().addMouseListener(this);
70
+        }
71
+        IdentityManager.getGlobalConfig().addChangeListener("ui",
72
+                "treeviewRolloverColour", this);
66 73
     }
67 74
 
68 75
     /**
@@ -84,11 +91,17 @@ public class TreeViewTreeCellRenderer implements TreeCellRenderer,
84 91
             final boolean leaf, final int row, final boolean hasFocus) {
85 92
         final boolean rollover = (oldSelectedPath != null) && (value ==
86 93
                 oldSelectedPath.getLastPathComponent());
87
-        final NodeLabel label = manager.getLabelforNode((DefaultMutableTreeNode) value);
94
+        final NodeLabel label =
95
+                manager.getLabelforNode((DefaultMutableTreeNode) value);
88 96
         label.setRollover(rollover);
89 97
         return label;
90 98
     }
91
-    
99
+
100
+    /**
101
+     * Checks the mouse position and sets the rollover node as required.
102
+     * 
103
+     * @param e Triggering mouse event
104
+     */
92 105
     private void checkMousePosition(final MouseEvent e) {
93 106
         final JTree tree = manager.getTree();
94 107
         final TreeViewModel model = (TreeViewModel) tree.getModel();
@@ -126,7 +139,7 @@ public class TreeViewTreeCellRenderer implements TreeCellRenderer,
126 139
      */
127 140
     @Override
128 141
     public void mouseDragged(final MouseEvent e) {
129
-        //Ignore
142
+    //Ignore
130 143
     }
131 144
 
132 145
     /** 
@@ -136,7 +149,7 @@ public class TreeViewTreeCellRenderer implements TreeCellRenderer,
136 149
      */
137 150
     @Override
138 151
     public void mouseClicked(final MouseEvent e) {
139
-        //Ignore
152
+    //Ignore
140 153
     }
141 154
 
142 155
     /** 
@@ -146,7 +159,7 @@ public class TreeViewTreeCellRenderer implements TreeCellRenderer,
146 159
      */
147 160
     @Override
148 161
     public void mousePressed(final MouseEvent e) {
149
-        //Ignore
162
+    //Ignore
150 163
     }
151 164
 
152 165
     /** 
@@ -156,7 +169,7 @@ public class TreeViewTreeCellRenderer implements TreeCellRenderer,
156 169
      */
157 170
     @Override
158 171
     public void mouseReleased(final MouseEvent e) {
159
-        //Ignore
172
+    //Ignore
160 173
     }
161 174
 
162 175
     /** 
@@ -180,4 +193,17 @@ public class TreeViewTreeCellRenderer implements TreeCellRenderer,
180 193
         oldSelectedPath = null;
181 194
         manager.getTree().repaint();
182 195
     }
196
+
197
+    /** {@inheritDoc} */
198
+    @Override
199
+    public void configChanged(final String domain, final String key) {
200
+        if (IdentityManager.getGlobalConfig().getOption("ui",
201
+                "treeviewRolloverColour", "false").contains("false")) {
202
+            manager.getTree().removeMouseMotionListener(this);
203
+            manager.getTree().removeMouseListener(this);
204
+        } else {
205
+            manager.getTree().addMouseMotionListener(this);
206
+            manager.getTree().addMouseListener(this);
207
+        }
208
+    }
183 209
 }

+ 31
- 26
src/com/dmdirc/ui/swing/framemanager/tree/TreeFrameManager.java View File

@@ -49,7 +49,6 @@ import java.util.Map;
49 49
 
50 50
 import javax.swing.BorderFactory;
51 51
 import javax.swing.JComponent;
52
-import javax.swing.JLabel;
53 52
 import javax.swing.JMenuItem;
54 53
 import javax.swing.JPopupMenu;
55 54
 import javax.swing.JScrollBar;
@@ -191,17 +190,20 @@ public final class TreeFrameManager implements FrameManager, MouseListener,
191 190
     @Override
192 191
     public void delWindow(final FrameContainer window) {
193 192
         if (nodes != null && nodes.get(window) != null) {
194
-            final DefaultMutableTreeNode node = nodes.get(window);
195
-            if (node.getLevel() == 0) {
196
-                Logger.appError(ErrorLevel.MEDIUM,
197
-                        "delServer triggered for root node" + node.toString(),
198
-                        new IllegalArgumentException());
199
-            } else {
200
-                model.removeNodeFromParent(nodes.get(window));
193
+            synchronized (labels) {
194
+                final DefaultMutableTreeNode node = nodes.get(window);
195
+                if (node.getLevel() == 0) {
196
+                    Logger.appError(ErrorLevel.MEDIUM,
197
+                            "delServer triggered for root node" +
198
+                            node.toString(),
199
+                            new IllegalArgumentException());
200
+                } else {
201
+                    model.removeNodeFromParent(nodes.get(window));
202
+                }
203
+                nodes.remove(window);
204
+                labels.remove(node);
205
+                window.removeSelectionListener(this);
201 206
             }
202
-            nodes.remove(window);
203
-            labels.remove(node);
204
-            window.removeSelectionListener(this);
205 207
         }
206 208
     }
207 209
 
@@ -213,20 +215,22 @@ public final class TreeFrameManager implements FrameManager, MouseListener,
213 215
      */
214 216
     public void addWindow(final DefaultMutableTreeNode parent,
215 217
             final FrameContainer window) {
216
-        final DefaultMutableTreeNode node = new DefaultMutableTreeNode();
217
-        nodes.put(window, node);
218
-        labels.put(node, new NodeLabel(this, window.getFrame()));
219
-        node.setUserObject(window);
220
-        if (parent == null) {
221
-            model.insertNodeInto(node, root);
222
-        } else {
223
-            model.insertNodeInto(node, parent);
218
+        synchronized (labels) {
219
+            final DefaultMutableTreeNode node = new DefaultMutableTreeNode();
220
+            nodes.put(window, node);
221
+            labels.put(node, new NodeLabel(this, window.getFrame()));
222
+            node.setUserObject(window);
223
+            if (parent == null) {
224
+                model.insertNodeInto(node, root);
225
+            } else {
226
+                model.insertNodeInto(node, parent);
227
+            }
228
+            tree.expandPath(new TreePath(node.getPath()).getParentPath());
229
+            final Rectangle view =
230
+                    tree.getRowBounds(tree.getRowForPath(new TreePath(node.getPath())));
231
+            tree.scrollRectToVisible(new Rectangle(0, (int) view.getY(), 0, 0));
232
+            window.addSelectionListener(this);
224 233
         }
225
-        tree.expandPath(new TreePath(node.getPath()).getParentPath());
226
-        final Rectangle view =
227
-                tree.getRowBounds(tree.getRowForPath(new TreePath(node.getPath())));
228
-        tree.scrollRectToVisible(new Rectangle(0, (int) view.getY(), 0, 0));
229
-        window.addSelectionListener(this);
230 234
     }
231 235
 
232 236
     /**
@@ -380,7 +384,9 @@ public final class TreeFrameManager implements FrameManager, MouseListener,
380 384
      * @return Label for node
381 385
      */
382 386
     public NodeLabel getLabelforNode(final DefaultMutableTreeNode node) {
383
-        return labels.get(node);
387
+        synchronized (labels) {
388
+            return labels.get(node);
389
+        }
384 390
     }
385 391
 
386 392
     /** Sets treeview colours. */
@@ -434,5 +440,4 @@ public final class TreeFrameManager implements FrameManager, MouseListener,
434 440
             }
435 441
         }
436 442
     }
437
-
438 443
 }

Loading…
Cancel
Save