Procházet zdrojové kódy

Abstract look and feel fixes from MapEntryRenderer.

Change-Id: Icafa0120b789de2fcbe6abdc47db17896ec4b5ca
Reviewed-on: http://gerrit.dmdirc.com/2621
Automatic-Compile: DMDirc Build Manager
Reviewed-by: Chris Smith <chris@dmdirc.com>
tags/0.8
Greg Holmes před 11 roky
rodič
revize
786644a845
23 změnil soubory, kde provedl 305 přidání a 247 odebrání
  1. 1
    1
      src/com/dmdirc/addons/ui_swing/components/FontPicker.java
  2. 2
    1
      src/com/dmdirc/addons/ui_swing/components/expandingsettings/AddOptionPanel.java
  3. 21
    21
      src/com/dmdirc/addons/ui_swing/components/renderers/ActionCellRenderer.java
  4. 17
    17
      src/com/dmdirc/addons/ui_swing/components/renderers/ActionComparisonCellRenderer.java
  5. 17
    18
      src/com/dmdirc/addons/ui_swing/components/renderers/ActionGroupListCellRenderer.java
  6. 16
    15
      src/com/dmdirc/addons/ui_swing/components/renderers/ActionSubstititionRenderer.java
  7. 19
    18
      src/com/dmdirc/addons/ui_swing/components/renderers/ActionTypeRenderer.java
  8. 12
    22
      src/com/dmdirc/addons/ui_swing/components/renderers/AddOptionCellRenderer.java
  9. 12
    15
      src/com/dmdirc/addons/ui_swing/components/renderers/CertificateChainEntryCellRenderer.java
  10. 85
    0
      src/com/dmdirc/addons/ui_swing/components/renderers/DMDircListCellRenderer.java
  11. 18
    19
      src/com/dmdirc/addons/ui_swing/components/renderers/FontListCellRenderer.java
  12. 18
    17
      src/com/dmdirc/addons/ui_swing/components/renderers/ListModeCellRenderer.java
  13. 8
    35
      src/com/dmdirc/addons/ui_swing/components/renderers/MapEntryRenderer.java
  14. 17
    15
      src/com/dmdirc/addons/ui_swing/components/renderers/PerformRenderer.java
  15. 17
    17
      src/com/dmdirc/addons/ui_swing/components/renderers/ProfileListCellRenderer.java
  16. 3
    3
      src/com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionConditionEditorPanel.java
  17. 2
    2
      src/com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionTriggersPanel.java
  18. 2
    1
      src/com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionsManagerDialog.java
  19. 2
    1
      src/com/dmdirc/addons/ui_swing/dialogs/aliases/AliasPanel.java
  20. 10
    5
      src/com/dmdirc/addons/ui_swing/dialogs/channelsetting/ChannelListModesPane.java
  21. 2
    1
      src/com/dmdirc/addons/ui_swing/dialogs/profiles/ProfileManagerDialog.java
  22. 2
    2
      src/com/dmdirc/addons/ui_swing/dialogs/serversetting/PerformTab.java
  23. 2
    1
      src/com/dmdirc/addons/ui_swing/dialogs/sslcertificate/CertificateChainPanel.java

+ 1
- 1
src/com/dmdirc/addons/ui_swing/components/FontPicker.java Zobrazit soubor

@@ -58,7 +58,7 @@ public class FontPicker extends JComboBox {
58 58
         setPrototypeDisplayValue("test");
59 59
         this.fontFamily = fontFamily;
60 60
 
61
-        setRenderer(new FontListCellRenderer());
61
+        setRenderer(new FontListCellRenderer(getRenderer()));
62 62
         new LoggingSwingWorker<String[], String[]>() {
63 63
 
64 64
             /** {@inheritDoc} */

+ 2
- 1
src/com/dmdirc/addons/ui_swing/components/expandingsettings/AddOptionPanel.java Zobrazit soubor

@@ -84,7 +84,8 @@ public class AddOptionPanel extends JPanel implements ActionListener {
84 84
         addOptionComboBox = new JComboBox(new DefaultComboBoxModel());
85 85
         addOptionButton = new JButton("Add");
86 86
 
87
-        addOptionComboBox.setRenderer(new AddOptionCellRenderer(parent));
87
+        addOptionComboBox.setRenderer(new AddOptionCellRenderer(parent,
88
+                addOptionComboBox.getRenderer()));
88 89
 
89 90
         addInputNone = new JLabel("");
90 91
         addInputCurrent = addInputNone;

+ 21
- 21
src/com/dmdirc/addons/ui_swing/components/renderers/ActionCellRenderer.java Zobrazit soubor

@@ -26,46 +26,46 @@ import com.dmdirc.interfaces.actions.ActionComparison;
26 26
 import com.dmdirc.interfaces.actions.ActionComponent;
27 27
 import com.dmdirc.interfaces.actions.ActionType;
28 28
 
29
-import java.awt.Component;
30
-
31
-import javax.swing.DefaultListCellRenderer;
32
-import javax.swing.JList;
29
+import javax.swing.JLabel;
30
+import javax.swing.ListCellRenderer;
33 31
 
34 32
 /**
35 33
  * Displays actions using getName not toString.
36 34
  */
37
-public class ActionCellRenderer extends DefaultListCellRenderer {
35
+public class ActionCellRenderer extends DMDircListCellRenderer {
38 36
 
39 37
     /**
40
-     * A version number for this class. It should be changed whenever the class
41
-     * structure is changed (or anything else that would prevent serialized
42
-     * objects being unserialized with the new class).
38
+     * A version number for this class.
43 39
      */
44 40
     private static final long serialVersionUID = 1;
45 41
 
42
+    /**
43
+     * Creates a new instance of this renderer.
44
+     *
45
+     * @param renderer RendereParent renderer
46
+     */
47
+    public ActionCellRenderer(final ListCellRenderer renderer) {
48
+        super(renderer);
49
+    }
50
+
46 51
     /** {@inheritDoc} */
47 52
     @Override
48
-    public Component getListCellRendererComponent(final JList list,
49
-            final Object value, final int index, final boolean isSelected,
53
+    protected void renderValue(final JLabel label, final Object value,
54
+            final int index, final boolean isSelected,
50 55
             final boolean cellHasFocus) {
51
-        super.getListCellRendererComponent(list, value, index, isSelected,
52
-                cellHasFocus);
53
-
54 56
         if (value instanceof ActionComparison) {
55
-            setText(((ActionComparison) value).getName());
57
+            label.setText(((ActionComparison) value).getName());
56 58
         } else if (value instanceof ActionComponent) {
57
-            setText(((ActionComponent) value).getName());
59
+            label.setText(((ActionComponent) value).getName());
58 60
         } else if (value instanceof ActionType) {
59
-            setText(((ActionType) value).getName());
61
+            label.setText(((ActionType) value).getName());
60 62
         } else if (value instanceof Class<?>) {
61
-            setText(((Class<?>) value).getSimpleName());
63
+            label.setText(((Class<?>) value).getSimpleName());
62 64
         } else if (value == null) {
63
-            setText("");
65
+            label.setText("");
64 66
         } else {
65
-            setText(value.toString());
67
+            label.setText(value.toString());
66 68
         }
67
-
68
-        return this;
69 69
     }
70 70
 
71 71
 }

+ 17
- 17
src/com/dmdirc/addons/ui_swing/components/renderers/ActionComparisonCellRenderer.java Zobrazit soubor

@@ -24,38 +24,38 @@ package com.dmdirc.addons.ui_swing.components.renderers;
24 24
 
25 25
 import com.dmdirc.interfaces.actions.ActionComparison;
26 26
 
27
-import java.awt.Component;
28
-
29
-import javax.swing.DefaultListCellRenderer;
30
-import javax.swing.JList;
27
+import javax.swing.JLabel;
28
+import javax.swing.ListCellRenderer;
31 29
 
32 30
 /**
33 31
  * Renders an action comparison in plain english.
34 32
  */
35
-public final class ActionComparisonCellRenderer extends DefaultListCellRenderer {
33
+public final class ActionComparisonCellRenderer extends DMDircListCellRenderer {
36 34
 
37 35
     /**
38
-     * A version number for this class. It should be changed whenever the class
39
-     * structure is changed (or anything else that would prevent serialized
40
-     * objects being unserialized with the new class).
36
+     * A version number for this class.
41 37
      */
42 38
     private static final long serialVersionUID = 1;
43 39
 
40
+    /**
41
+     * Creates a new instance of this renderer.
42
+     *
43
+     * @param renderer RendereParent renderer
44
+     */
45
+    public ActionComparisonCellRenderer(final ListCellRenderer renderer) {
46
+        super(renderer);
47
+    }
48
+
44 49
     /** {@inheritDoc} */
45 50
     @Override
46
-    public Component getListCellRendererComponent(final JList list,
47
-            final Object value, final int index, final boolean isSelected,
51
+    protected void renderValue(final JLabel label, final Object value,
52
+            final int index, final boolean isSelected,
48 53
             final boolean cellHasFocus) {
49
-
50
-        super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
51
-
52 54
         if (value == null) {
53
-            setText("Any");
55
+            label.setText("Any");
54 56
         } else {
55
-            setText(((ActionComparison) value).getName());
57
+            label.setText(((ActionComparison) value).getName());
56 58
         }
57
-
58
-        return this;
59 59
     }
60 60
 
61 61
 }

+ 17
- 18
src/com/dmdirc/addons/ui_swing/components/renderers/ActionGroupListCellRenderer.java Zobrazit soubor

@@ -24,38 +24,37 @@ package com.dmdirc.addons.ui_swing.components.renderers;
24 24
 
25 25
 import com.dmdirc.actions.ActionGroup;
26 26
 
27
-import java.awt.Component;
28
-
29
-import javax.swing.DefaultListCellRenderer;
30
-import javax.swing.JList;
27
+import javax.swing.JLabel;
28
+import javax.swing.ListCellRenderer;
31 29
 
32 30
 /**
33 31
  * Action group list cell renderer.
34 32
  */
35
-public class ActionGroupListCellRenderer extends DefaultListCellRenderer {
33
+public class ActionGroupListCellRenderer extends DMDircListCellRenderer {
36 34
 
37 35
     /**
38
-     * A version number for this class. It should be changed whenever the class
39
-     * structure is changed (or anything else that would prevent serialized
40
-     * objects being unserialized with the new class).
36
+     * A version number for this class.
41 37
      */
42 38
     private static final long serialVersionUID = 1;
43 39
 
40
+    /**
41
+     * Creates a new instance of this renderer.
42
+     *
43
+     * @param renderer RendereParent renderer
44
+     */
45
+    public ActionGroupListCellRenderer(final ListCellRenderer renderer) {
46
+        super(renderer);
47
+    }
48
+
44 49
     /** {@inheritDoc} */
45 50
     @Override
46
-    public Component getListCellRendererComponent(final JList list,
47
-            final Object value, final int index, final boolean isSelected,
51
+    protected void renderValue(final JLabel label, final Object value,
52
+            final int index, final boolean isSelected,
48 53
             final boolean cellHasFocus) {
49
-
50
-        super.getListCellRendererComponent(list, value, index, isSelected,
51
-                cellHasFocus);
52
-
53 54
         if (value instanceof ActionGroup) {
54
-            setText(((ActionGroup) value).getName());
55
+            label.setText(((ActionGroup) value).getName());
55 56
         } else {
56
-            setText(value.toString());
57
+            label.setText(value.toString());
57 58
         }
58
-
59
-        return this;
60 59
     }
61 60
 }

+ 16
- 15
src/com/dmdirc/addons/ui_swing/components/renderers/ActionSubstititionRenderer.java Zobrazit soubor

@@ -25,33 +25,34 @@ package com.dmdirc.addons.ui_swing.components.renderers;
25 25
 
26 26
 import com.dmdirc.addons.ui_swing.components.substitutions.Substitution;
27 27
 
28
-import java.awt.Component;
29
-
30
-import javax.swing.DefaultListCellRenderer;
31
-import javax.swing.JList;
28
+import javax.swing.JLabel;
29
+import javax.swing.ListCellRenderer;
32 30
 
33 31
 /**
34 32
  * Displays actions using getName not toString.
35 33
  */
36
-public final class ActionSubstititionRenderer extends DefaultListCellRenderer {
34
+public final class ActionSubstititionRenderer extends DMDircListCellRenderer {
37 35
 
38 36
     /**
39
-     * A version number for this class. It should be changed whenever the class
40
-     * structure is changed (or anything else that would prevent serialized
41
-     * objects being unserialized with the new class).
37
+     * A version number for this class.
42 38
      */
43 39
     private static final long serialVersionUID = 1;
44 40
 
41
+    /**
42
+     * Creates a new instance of this renderer.
43
+     *
44
+     * @param renderer RendereParent renderer
45
+     */
46
+    public ActionSubstititionRenderer(final ListCellRenderer renderer) {
47
+        super(renderer);
48
+    }
49
+
45 50
     /** {@inheritDoc} */
46 51
     @Override
47
-    public Component getListCellRendererComponent(final JList list,
48
-            final Object value, final int index, final boolean isSelected,
52
+    protected void renderValue(final JLabel label, final Object value,
53
+            final int index, final boolean isSelected,
49 54
             final boolean cellHasFocus) {
50
-        super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
51
-
52
-        setText(((Substitution) value).getValue());
53
-
54
-        return this;
55
+        label.setText(((Substitution) value).getValue());
55 56
     }
56 57
 
57 58
 }

+ 19
- 18
src/com/dmdirc/addons/ui_swing/components/renderers/ActionTypeRenderer.java Zobrazit soubor

@@ -24,41 +24,42 @@ package com.dmdirc.addons.ui_swing.components.renderers;
24 24
 
25 25
 import com.dmdirc.interfaces.actions.ActionType;
26 26
 
27
-import java.awt.Component;
28
-
29
-import javax.swing.DefaultListCellRenderer;
30
-import javax.swing.JList;
27
+import javax.swing.JLabel;
28
+import javax.swing.ListCellRenderer;
31 29
 
32 30
 /**
33 31
  * Displays actions types and headers in a pretty fashion.
34 32
  */
35
-public final class ActionTypeRenderer extends DefaultListCellRenderer {
33
+public final class ActionTypeRenderer extends DMDircListCellRenderer {
36 34
 
37 35
     /**
38
-     * A version number for this class. It should be changed whenever the class
39
-     * structure is changed (or anything else that would prevent serialized
40
-     * objects being unserialized with the new class).
36
+     * A version number for this class.
41 37
      */
42 38
     private static final long serialVersionUID = 1;
43 39
 
40
+    /**
41
+     * Creates a new instance of this renderer.
42
+     *
43
+     * @param renderer RendereParent renderer
44
+     */
45
+    public ActionTypeRenderer(final ListCellRenderer renderer) {
46
+        super(renderer);
47
+    }
48
+
44 49
     /** {@inheritDoc} */
45 50
     @Override
46
-    public Component getListCellRendererComponent(final JList list,
47
-            final Object value, final int index, final boolean isSelected,
51
+    protected void renderValue(final JLabel label, final Object value,
52
+            final int index, final boolean isSelected,
48 53
             final boolean cellHasFocus) {
49
-        super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
50
-
51 54
         if (value == null) {
52
-            setText("Select a value");
55
+            label.setText("Select a value");
53 56
         } else if (value instanceof String && !((String) value).isEmpty()) {
54
-            setText(value.toString());
57
+            label.setText(value.toString());
55 58
         } else if (value instanceof ActionType) {
56
-            setText(((ActionType) value).getName());
59
+            label.setText(((ActionType) value).getName());
57 60
         } else {
58
-            setText(value.toString());
61
+            label.setText(value.toString());
59 62
         }
60
-
61
-        return this;
62 63
     }
63 64
 
64 65
 }

+ 12
- 22
src/com/dmdirc/addons/ui_swing/components/renderers/AddOptionCellRenderer.java Zobrazit soubor

@@ -25,21 +25,17 @@ package com.dmdirc.addons.ui_swing.components.renderers;
25 25
 import com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel;
26 26
 import com.dmdirc.config.prefs.PreferencesSetting;
27 27
 
28
-import java.awt.Component;
29
-
30
-import javax.swing.DefaultListCellRenderer;
31 28
 import javax.swing.JComponent;
32
-import javax.swing.JList;
29
+import javax.swing.JLabel;
30
+import javax.swing.ListCellRenderer;
33 31
 
34 32
 /**
35 33
  * Add option combo box cell renderer.
36 34
  */
37
-public final class AddOptionCellRenderer extends DefaultListCellRenderer {
35
+public final class AddOptionCellRenderer extends DMDircListCellRenderer {
38 36
 
39 37
     /**
40
-     * A version number for this class. It should be changed whenever the class
41
-     * structure is changed (or anything else that would prevent serialized
42
-     * objects being unserialized with the new class).
38
+     * A version number for this class.
43 39
      */
44 40
     private static final long serialVersionUID = 1;
45 41
     /** Parent settings panel. */
@@ -49,24 +45,20 @@ public final class AddOptionCellRenderer extends DefaultListCellRenderer {
49 45
      * Creates a new add option cell renderer.
50 46
      *
51 47
      * @param settingsPanel Parent settings panel
48
+     * @param renderer Parent renderer
52 49
      */
53
-    public AddOptionCellRenderer(final SettingsPanel settingsPanel) {
54
-        super();
50
+    public AddOptionCellRenderer(final SettingsPanel settingsPanel,
51
+            final ListCellRenderer renderer) {
52
+        super(renderer);
55 53
 
56 54
         this.settingsPanel = settingsPanel;
57 55
     }
58 56
 
59 57
     /** {@inheritDoc} */
60 58
     @Override
61
-    public Component getListCellRendererComponent(
62
-            final JList list,
63
-            final Object value,
64
-            final int index,
65
-            final boolean isSelected,
59
+    protected void renderValue(final JLabel label, final Object value,
60
+            final int index, final boolean isSelected,
66 61
             final boolean cellHasFocus) {
67
-        super.getListCellRendererComponent(list, value, index, isSelected,
68
-                cellHasFocus);
69
-
70 62
         final PreferencesSetting setting;
71 63
         if (value instanceof JComponent) {
72 64
             setting = settingsPanel.getSettingForComponent((JComponent) value);
@@ -74,11 +66,9 @@ public final class AddOptionCellRenderer extends DefaultListCellRenderer {
74 66
             setting = null;
75 67
         }
76 68
         if (setting == null) {
77
-           setText((String) value);
69
+           label.setText((String) value);
78 70
         } else {
79
-            setText(setting.getTitle());
71
+            label.setText(setting.getTitle());
80 72
         }
81
-
82
-        return this;
83 73
     }
84 74
 }

+ 12
- 15
src/com/dmdirc/addons/ui_swing/components/renderers/CertificateChainEntryCellRenderer.java Zobrazit soubor

@@ -25,16 +25,14 @@ package com.dmdirc.addons.ui_swing.components.renderers;
25 25
 import com.dmdirc.ui.IconManager;
26 26
 import com.dmdirc.ui.core.dialogs.sslcertificate.CertificateChainEntry;
27 27
 
28
-import java.awt.Component;
29
-
30
-import javax.swing.DefaultListCellRenderer;
31 28
 import javax.swing.Icon;
32
-import javax.swing.JList;
29
+import javax.swing.JLabel;
30
+import javax.swing.ListCellRenderer;
33 31
 
34 32
 /**
35 33
  * Renderer for Certificate chain entries, shows the verified icon and name.
36 34
  */
37
-public class CertificateChainEntryCellRenderer extends DefaultListCellRenderer {
35
+public class CertificateChainEntryCellRenderer extends DMDircListCellRenderer {
38 36
 
39 37
     /** Serial version UID. */
40 38
     private static final long serialVersionUID = 1;
@@ -50,7 +48,9 @@ public class CertificateChainEntryCellRenderer extends DefaultListCellRenderer {
50 48
      *
51 49
      * @param iconManager Icon manager
52 50
      */
53
-    public CertificateChainEntryCellRenderer(final IconManager iconManager) {
51
+    public CertificateChainEntryCellRenderer(final IconManager iconManager,
52
+            final ListCellRenderer renderer) {
53
+        super(renderer);
54 54
         icon = iconManager.getIcon("nothing");
55 55
         trustedIcon = iconManager.getIcon("tick");
56 56
         invalidIcon = iconManager.getIcon("cross");
@@ -58,23 +58,20 @@ public class CertificateChainEntryCellRenderer extends DefaultListCellRenderer {
58 58
 
59 59
     /** {@inheritDoc} */
60 60
     @Override
61
-    public Component getListCellRendererComponent(final JList list,
62
-            final Object value, final int index, final boolean isSelected,
61
+    protected void renderValue(final JLabel label, final Object value,
62
+            final int index, final boolean isSelected,
63 63
             final boolean cellHasFocus) {
64
-        super.getListCellRendererComponent(list, value, index, isSelected,
65
-                cellHasFocus);
66 64
         if (value instanceof CertificateChainEntry) {
67 65
             final CertificateChainEntry entry = (CertificateChainEntry) value;
68 66
 
69
-            setText(entry.getName());
67
+            label.setText(entry.getName());
70 68
             if (entry.isInvalid()) {
71
-                setIcon(invalidIcon);
69
+                label.setIcon(invalidIcon);
72 70
             } else if (entry.isTrusted()) {
73
-                setIcon(trustedIcon);
71
+                label.setIcon(trustedIcon);
74 72
             } else {
75
-                setIcon(icon);
73
+                label.setIcon(icon);
76 74
             }
77 75
         }
78
-        return this;
79 76
     }
80 77
 }

+ 85
- 0
src/com/dmdirc/addons/ui_swing/components/renderers/DMDircListCellRenderer.java Zobrazit soubor

@@ -0,0 +1,85 @@
1
+/*
2
+ * Copyright (c) 2006-2013 DMDirc Developers
3
+ *
4
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ * of this software and associated documentation files (the "Software"), to deal
6
+ * in the Software without restriction, including without limitation the rights
7
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ * copies of the Software, and to permit persons to whom the Software is
9
+ * furnished to do so, subject to the following conditions:
10
+ *
11
+ * The above copyright notice and this permission notice shall be included in
12
+ * all copies or substantial portions of the Software.
13
+ *
14
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
+ * SOFTWARE.
21
+ */
22
+package com.dmdirc.addons.ui_swing.components.renderers;
23
+
24
+import java.awt.Component;
25
+
26
+import javax.swing.JLabel;
27
+import javax.swing.JList;
28
+import javax.swing.ListCellRenderer;
29
+
30
+import lombok.RequiredArgsConstructor;
31
+
32
+/**
33
+ * Simplifies implementing a cell renderer, works around oddities in look and
34
+ * feels.
35
+ */
36
+@RequiredArgsConstructor(callSuper = false)
37
+public abstract class DMDircListCellRenderer implements ListCellRenderer {
38
+
39
+    /**
40
+     * A version number for this class.
41
+     */
42
+    private static final long serialVersionUID = 1;
43
+    /**
44
+     * Parent cell renderer.
45
+     */
46
+    private final ListCellRenderer parentRenderer;
47
+    /**
48
+     * Label to use if parent doesn't supply one.
49
+     */
50
+    private JLabel label;
51
+
52
+    /**
53
+     * Renders the cell on the given label.
54
+     *
55
+     * @param label Label to render
56
+     * @param value Object to render
57
+     * @param index Index of the cell in the list
58
+     * @param isSelected Is the cell selected
59
+     * @param hasFocus Does the cell have focus
60
+     */
61
+    protected abstract void renderValue(final JLabel label, final Object value,
62
+            final int index, final boolean isSelected, final boolean hasFocus);
63
+
64
+    /**
65
+     * {@inheritDoc}
66
+     */
67
+    @Override
68
+    public Component getListCellRendererComponent(final JList list,
69
+            final Object value, final int index, final boolean isSelected,
70
+            final boolean cellHasFocus) {
71
+        final Component component = parentRenderer.getListCellRendererComponent(
72
+                list, value, index, isSelected,
73
+                cellHasFocus);
74
+        if (component instanceof JLabel) {
75
+            renderValue((JLabel) component, value, index, isSelected, cellHasFocus);
76
+            return component;
77
+        } else {
78
+            if (label == null) {
79
+                label = new JLabel();
80
+            }
81
+            renderValue(label, value, index, isSelected, cellHasFocus);
82
+            return label;
83
+        }
84
+    }
85
+}

+ 18
- 19
src/com/dmdirc/addons/ui_swing/components/renderers/FontListCellRenderer.java Zobrazit soubor

@@ -21,41 +21,40 @@
21 21
  */
22 22
 package com.dmdirc.addons.ui_swing.components.renderers;
23 23
 
24
-import java.awt.Component;
25 24
 import java.awt.Font;
26 25
 
27
-import javax.swing.DefaultListCellRenderer;
28
-import javax.swing.JList;
26
+import javax.swing.JLabel;
27
+import javax.swing.ListCellRenderer;
29 28
 
30 29
 /**
31 30
  * Font list cell renderer.
32 31
  */
33
-public class FontListCellRenderer extends DefaultListCellRenderer {
32
+public class FontListCellRenderer extends DMDircListCellRenderer {
34 33
 
35 34
     /**
36
-     * A version number for this class. It should be changed whenever the class
37
-     * structure is changed (or anything else that would prevent serialized
38
-     * objects being unserialized with the new class).
35
+     * A version number for this class.
36
+
37
+    /**
38
+     * Creates a new instance of this renderer.
39
+     *
40
+     * @param renderer RendereParent renderer
39 41
      */
40
-    private static final long serialVersionUID = -3559254527228184993L;
42
+    public FontListCellRenderer(final ListCellRenderer renderer) {
43
+        super(renderer);
44
+    }
41 45
 
42 46
     /** {@inheritDoc} */
43 47
     @Override
44
-    public Component getListCellRendererComponent(final JList list,
45
-            final Object value, final int index, final boolean isSelected,
48
+    protected void renderValue(final JLabel label, final Object value,
49
+            final int index, final boolean isSelected,
46 50
             final boolean cellHasFocus) {
47
-
48
-        super.getListCellRendererComponent(list, value, index, isSelected,
49
-                cellHasFocus);
50 51
         if (value == null) {
51
-            setText("Default");
52
+            label.setText("Default");
52 53
         } else if (value instanceof Font) {
53
-            setFont((Font) value);
54
-            setText(((Font) value).getFamily());
54
+            label.setFont((Font) value);
55
+            label.setText(((Font) value).getFamily());
55 56
         } else {
56
-            setText(value.toString());
57
+            label.setText(value.toString());
57 58
         }
58
-
59
-        return this;
60 59
     }
61 60
 }

+ 18
- 17
src/com/dmdirc/addons/ui_swing/components/renderers/ListModeCellRenderer.java Zobrazit soubor

@@ -24,36 +24,37 @@ package com.dmdirc.addons.ui_swing.components.renderers;
24 24
 
25 25
 import com.dmdirc.parser.common.ChannelListModeItem;
26 26
 
27
-import java.awt.Component;
28
-
29
-import javax.swing.DefaultListCellRenderer;
30
-import javax.swing.JList;
27
+import javax.swing.JLabel;
28
+import javax.swing.ListCellRenderer;
31 29
 
32 30
 /** List mode cell renderer. */
33
-public class ListModeCellRenderer extends DefaultListCellRenderer {
31
+public class ListModeCellRenderer extends DMDircListCellRenderer {
34 32
 
35 33
     /**
36
-     * A version number for this class. It should be changed whenever the class
37
-     * structure is changed (or anything else that would prevent serialized
38
-     * objects being unserialized with the new class).
34
+     * A version number for this class.
39 35
      */
40 36
     private static final long serialVersionUID = 1;
41 37
 
38
+    /**
39
+     * Creates a new instance of this renderer.
40
+     *
41
+     * @param renderer RendereParent renderer
42
+     */
43
+    public ListModeCellRenderer(final ListCellRenderer renderer) {
44
+        super(renderer);
45
+    }
46
+
42 47
     /** {@inheritDoc} */
43 48
     @Override
44
-    public Component getListCellRendererComponent(final JList list,
45
-            final Object value, final int index, final boolean isSelected,
49
+    protected void renderValue(final JLabel label, final Object value,
50
+            final int index, final boolean isSelected,
46 51
             final boolean cellHasFocus) {
47
-        super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
48
-
49 52
         if (value == null) {
50
-            setText("");
53
+            label.setText("");
51 54
         } else if (value instanceof ChannelListModeItem) {
52
-            setText(((ChannelListModeItem) value).getItem());
55
+            label.setText(((ChannelListModeItem) value).getItem());
53 56
         } else {
54
-            setText(value.toString());
57
+            label.setText(value.toString());
55 58
         }
56
-
57
-        return this;
58 59
     }
59 60
 }

+ 8
- 35
src/com/dmdirc/addons/ui_swing/components/renderers/MapEntryRenderer.java Zobrazit soubor

@@ -22,60 +22,35 @@
22 22
 
23 23
 package com.dmdirc.addons.ui_swing.components.renderers;
24 24
 
25
-import java.awt.Component;
26 25
 import java.util.Map.Entry;
27 26
 
28
-import javax.swing.DefaultListCellRenderer;
29 27
 import javax.swing.JLabel;
30
-import javax.swing.JList;
31 28
 import javax.swing.ListCellRenderer;
32 29
 
33 30
 /**
34
- * Map entry renderer.
31
+ *  Renders a map entry as its value.
35 32
  */
36
-public final class MapEntryRenderer extends DefaultListCellRenderer {
33
+public final class MapEntryRenderer extends DMDircListCellRenderer {
37 34
 
38 35
     /**
39
-     * A version number for this class. It should be changed whenever the class
40
-     * structure is changed (or anything else that would prevent serialized
41
-     * objects being unserialized with the new class).
36
+     * A version number for this class.
42 37
      */
43 38
     private static final long serialVersionUID = 1;
44
-    /** Current list cell renderer. */
45
-    private final ListCellRenderer renderer;
46
-    /** Renderer cast to JLabel. */
47
-    private final JLabel label;
48 39
 
49 40
     /**
50
-     * Creates a new map entry renderer. Renders a map entry as its value.
41
+     * Creates a new instance of this renderer.
51 42
      *
52
-     * @param renderer Renderer
43
+     * @param renderer RendereParent renderer
53 44
      */
54 45
     public MapEntryRenderer(final ListCellRenderer renderer) {
55
-        /*
56
-         * All List cell renderers in Swing are JLabels, as checked by asserts
57
-         * in odd UI delegates.  Check and cast here to access nice convenience
58
-         * methods of a jabel, if not create a jabel and return that as the
59
-         * component.  This is mainly a workaround for look and feel's based on
60
-         * synth and add their own rendering.
61
-         */
62
-        if (renderer instanceof JLabel) {
63
-            this.label = (JLabel) renderer;
64
-        } else {
65
-            this.label = new JLabel();
66
-        }
67
-        this.renderer = renderer;
46
+        super(renderer);
68 47
     }
69 48
 
70 49
     /** {@inheritDoc} */
71 50
     @Override
72
-    public Component getListCellRendererComponent(final JList list,
73
-            final Object value, final int index, final boolean isSelected,
51
+    protected void renderValue(final JLabel label, final Object value,
52
+            final int index, final boolean isSelected,
74 53
             final boolean cellHasFocus) {
75
-
76
-        renderer.getListCellRendererComponent(
77
-                list, value, index, isSelected,
78
-                cellHasFocus);
79 54
         if (value == null) {
80 55
             label.setText("Any");
81 56
         } else if (value instanceof Entry) {
@@ -83,7 +58,5 @@ public final class MapEntryRenderer extends DefaultListCellRenderer {
83 58
         } else {
84 59
             label.setText(value.toString());
85 60
         }
86
-
87
-        return label;
88 61
     }
89 62
 }

src/com/dmdirc/addons/ui_swing/components/performpanel/PerformRenderer.java → src/com/dmdirc/addons/ui_swing/components/renderers/PerformRenderer.java Zobrazit soubor

@@ -20,36 +20,40 @@
20 20
  * SOFTWARE.
21 21
  */
22 22
 
23
-package com.dmdirc.addons.ui_swing.components.performpanel;
23
+package com.dmdirc.addons.ui_swing.components.renderers;
24 24
 
25 25
 import com.dmdirc.actions.wrappers.PerformWrapper.PerformDescription;
26 26
 
27
-import java.awt.Component;
28 27
 
29
-import javax.swing.DefaultListCellRenderer;
30
-import javax.swing.JList;
28
+import javax.swing.JLabel;
29
+import javax.swing.ListCellRenderer;
31 30
 
32 31
 /**
33 32
  * Custom renderer for PerformDescriptions.
34 33
  *
35
- * @author Simon Mott
36 34
  * @since 0.6.4
37 35
  */
38
-public class PerformRenderer extends DefaultListCellRenderer {
36
+public class PerformRenderer extends DMDircListCellRenderer {
39 37
 
40 38
     /**
41
-     * A version number for this class. It should be changed whenever the class
42
-     * structure is changed (or anything else that would prevent serialized
43
-     * objects being unserialized with the new class).
39
+     * A version number for this class.
44 40
      */
45 41
     private static final long serialVersionUID = 1;
46 42
 
43
+    /**
44
+     * Creates a new instance of this renderer.
45
+     *
46
+     * @param renderer RendereParent renderer
47
+     */
48
+    public PerformRenderer(final ListCellRenderer renderer) {
49
+        super(renderer);
50
+    }
51
+
47 52
     /** {@inheritDoc} */
48 53
     @Override
49
-    public Component getListCellRendererComponent(final JList list,
50
-            final Object value, final int index, final boolean isSelected,
54
+    protected void renderValue(final JLabel label, final Object value,
55
+            final int index, final boolean isSelected,
51 56
             final boolean cellHasFocus) {
52
-
53 57
         final PerformDescription perform = (PerformDescription) value;
54 58
         final String target = perform.getTarget();
55 59
         final String profile = perform.getProfile();
@@ -61,9 +65,7 @@ public class PerformRenderer extends DefaultListCellRenderer {
61 65
         } else {
62 66
             friendlyText += "Any profile";
63 67
         }
64
-
65
-        return super.getListCellRendererComponent(list, friendlyText, index,
66
-                isSelected, cellHasFocus);
68
+        label.setText(friendlyText);
67 69
     }
68 70
 
69 71
 }

+ 17
- 17
src/com/dmdirc/addons/ui_swing/components/renderers/ProfileListCellRenderer.java Zobrazit soubor

@@ -24,35 +24,35 @@ package com.dmdirc.addons.ui_swing.components.renderers;
24 24
 
25 25
 import com.dmdirc.addons.ui_swing.dialogs.profiles.Profile;
26 26
 
27
-import java.awt.Component;
28
-
29
-import javax.swing.DefaultListCellRenderer;
30
-import javax.swing.JList;
27
+import javax.swing.JLabel;
28
+import javax.swing.ListCellRenderer;
31 29
 
32 30
 /** Profile list renderer. */
33
-public class ProfileListCellRenderer extends DefaultListCellRenderer {
31
+public class ProfileListCellRenderer extends DMDircListCellRenderer {
34 32
 
35 33
     /**
36
-     * A version number for this class. It should be changed whenever the class
37
-     * structure is changed (or anything else that would prevent serialized
38
-     * objects being unserialized with the new class).
34
+     * A version number for this class.
39 35
      */
40 36
     private static final long serialVersionUID = 1;
41 37
 
38
+    /**
39
+     * Creates a new instance of this renderer.
40
+     *
41
+     * @param renderer RendereParent renderer
42
+     */
43
+    public ProfileListCellRenderer(final ListCellRenderer renderer) {
44
+        super(renderer);
45
+    }
46
+
42 47
     /** {@inheritDoc} */
43 48
     @Override
44
-    public Component getListCellRendererComponent(final JList list,
45
-            final Object value, final int index, final boolean isSelected,
49
+    protected void renderValue(final JLabel label, final Object value,
50
+            final int index, final boolean isSelected,
46 51
             final boolean cellHasFocus) {
47
-        super.getListCellRendererComponent(list, value, index, isSelected,
48
-                cellHasFocus);
49
-
50 52
         if (!(value instanceof Profile)) {
51
-            setText("");
53
+            label.setText("");
52 54
         } else {
53
-            setText(((Profile) value).getName());
55
+            label.setText(((Profile) value).getName());
54 56
         }
55
-
56
-        return this;
57 57
     }
58 58
 }

+ 3
- 3
src/com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionConditionEditorPanel.java Zobrazit soubor

@@ -133,9 +133,9 @@ public class ActionConditionEditorPanel extends JPanel implements
133 133
             }
134 134
         };
135 135
 
136
-        arguments.setRenderer(new ActionCellRenderer());
137
-        components.setRenderer(new ActionCellRenderer());
138
-        comparisons.setRenderer(new ActionCellRenderer());
136
+        arguments.setRenderer(new ActionCellRenderer(arguments.getRenderer()));
137
+        components.setRenderer(new ActionCellRenderer(components.getRenderer()));
138
+        comparisons.setRenderer(new ActionCellRenderer(comparisons.getRenderer()));
139 139
 
140 140
         components.setEnabled(false);
141 141
         comparisons.setEnabled(false);

+ 2
- 2
src/com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionTriggersPanel.java Zobrazit soubor

@@ -99,14 +99,14 @@ public class ActionTriggersPanel extends JPanel implements ActionListener,
99 99
         // Only fire events on selection not on highlight
100 100
         triggerGroup.putClientProperty("JComboBox.isTableCellEditor",
101 101
                 Boolean.TRUE);
102
-        triggerGroup.setRenderer(new ActionTypeRenderer());
102
+        triggerGroup.setRenderer(new ActionTypeRenderer(triggerGroup.getRenderer()));
103 103
         triggerGroup.addPopupMenuListener(new ComboBoxWidthModifier());
104 104
 
105 105
         triggerItem = new JComboBox(new DefaultComboBoxModel());
106 106
         // Only fire events on selection not on highlight
107 107
         triggerItem.putClientProperty("JComboBox.isTableCellEditor",
108 108
                 Boolean.TRUE);
109
-        triggerItem.setRenderer(new ActionTypeRenderer());
109
+        triggerItem.setRenderer(new ActionTypeRenderer(triggerItem.getRenderer()));
110 110
         triggerItem.addPopupMenuListener(new ComboBoxWidthModifier());
111 111
 
112 112
         triggerList = new ActionTriggersListPanel(iconManager);

+ 2
- 1
src/com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionsManagerDialog.java Zobrazit soubor

@@ -152,7 +152,8 @@ public final class ActionsManagerDialog extends StandardDialog implements
152 152
         actions.setBorder(BorderFactory.createTitledBorder(UIManager.getBorder(
153 153
                 "TitledBorder.border"), "Actions"));
154 154
 
155
-        groups.setCellRenderer(new ActionGroupListCellRenderer());
155
+        groups.setCellRenderer(new ActionGroupListCellRenderer(
156
+                groups.getCellRenderer()));
156 157
         groups.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
157 158
         edit.setEnabled(false);
158 159
         delete.setEnabled(false);

+ 2
- 1
src/com/dmdirc/addons/ui_swing/dialogs/aliases/AliasPanel.java Zobrazit soubor

@@ -99,7 +99,8 @@ public final class AliasPanel extends JPanel implements ActionListener {
99 99
         argumentNumber.setEnabled(false);
100 100
         response.setRows(5);
101 101
 
102
-        argumentComponent.setRenderer(new ActionComparisonCellRenderer());
102
+        argumentComponent.setRenderer(new ActionComparisonCellRenderer(
103
+                argumentComponent.getRenderer()));
103 104
         argumentComponent.putClientProperty("JComboBox.isTableCellEditor",
104 105
                 Boolean.TRUE);
105 106
         argumentComponent.addActionListener(this);

+ 10
- 5
src/com/dmdirc/addons/ui_swing/dialogs/channelsetting/ChannelListModesPane.java Zobrazit soubor

@@ -94,8 +94,12 @@ public final class ChannelListModesPane extends JPanel implements ActionListener
94 94
     private final Window parentWindow;
95 95
     /** Swing controller. */
96 96
     private final SwingController controller;
97
+    /** Native cell renderer. */
98
+    private final ListCellRenderer nativeRenderer;
97 99
     /** Cell renderer. */
98 100
     private ListCellRenderer renderer;
101
+    /** Mode list. */
102
+    private JList list;
99 103
 
100 104
     /**
101 105
      * Creates a new instance of ChannelListModePane.
@@ -113,11 +117,13 @@ public final class ChannelListModesPane extends JPanel implements ActionListener
113 117
         this.channel = channel;
114 118
         this.parentWindow = parentWindow;
115 119
 
120
+        list = new JList();
121
+        nativeRenderer = list.getCellRenderer();
116 122
         if (channel.getConfigManager().getOptionBool("general",
117 123
                 "extendedListModes")) {
118 124
             renderer = new ExtendedListModeCellRenderer();
119 125
         } else {
120
-            renderer = new ListModeCellRenderer();
126
+            renderer = new ListModeCellRenderer(nativeRenderer);
121 127
         }
122 128
         listModesPanel = new JScrollPane();
123 129
         listModesPanels = new ArrayList<JList>();
@@ -185,8 +191,7 @@ public final class ChannelListModesPane extends JPanel implements ActionListener
185 191
             }
186 192
             model.addElement(modeText);
187 193
 
188
-            final JList list =
189
-                    new JList(new DefaultListModel());
194
+            list = new JList(new DefaultListModel());
190 195
             list.setCellRenderer(renderer);
191 196
             list.setVisibleRowCount(8);
192 197
             list.addListSelectionListener(this);
@@ -351,7 +356,7 @@ public final class ChannelListModesPane extends JPanel implements ActionListener
351 356
             if (toggle.isSelected()) {
352 357
                 renderer = new ExtendedListModeCellRenderer();
353 358
             } else {
354
-                renderer = new ListModeCellRenderer();
359
+                renderer = new ListModeCellRenderer(nativeRenderer);
355 360
             }
356 361
             for (JList list : listModesPanels) {
357 362
                 list.setCellRenderer(renderer);
@@ -403,7 +408,7 @@ public final class ChannelListModesPane extends JPanel implements ActionListener
403 408
     public void configChanged(final String domain, final String key) {
404 409
         if (controller.getGlobalConfig().getOptionBool("general",
405 410
                 "extendedListModes")) {
406
-            renderer = new ListModeCellRenderer();
411
+            renderer = new ListModeCellRenderer(nativeRenderer);
407 412
         } else {
408 413
             renderer = new ExtendedListModeCellRenderer();
409 414
         }

+ 2
- 1
src/com/dmdirc/addons/ui_swing/dialogs/profiles/ProfileManagerDialog.java Zobrazit soubor

@@ -143,7 +143,8 @@ public class ProfileManagerDialog extends StandardDialog {
143 143
     private void initComponents() {
144 144
         profileList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
145 145
         nicknames.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
146
-        profileList.setCellRenderer(new ProfileListCellRenderer());
146
+        profileList.setCellRenderer(new ProfileListCellRenderer(
147
+                profileList.getCellRenderer()));
147 148
 
148 149
         setLayout(new MigLayout("fill, wmin 700, wmax 700, flowy"));
149 150
 

+ 2
- 2
src/com/dmdirc/addons/ui_swing/dialogs/serversetting/PerformTab.java Zobrazit soubor

@@ -28,7 +28,7 @@ import com.dmdirc.actions.wrappers.PerformWrapper.PerformDescription;
28 28
 import com.dmdirc.addons.ui_swing.SwingController;
29 29
 import com.dmdirc.addons.ui_swing.UIUtilities;
30 30
 import com.dmdirc.addons.ui_swing.components.performpanel.PerformPanel;
31
-import com.dmdirc.addons.ui_swing.components.performpanel.PerformRenderer;
31
+import com.dmdirc.addons.ui_swing.components.renderers.PerformRenderer;
32 32
 
33 33
 import java.awt.event.ActionEvent;
34 34
 import java.awt.event.ActionListener;
@@ -100,7 +100,7 @@ public final class PerformTab extends JPanel implements ActionListener {
100 100
         model.addElement(serverPerform);
101 101
         model.addElement(serverProfilePerform);
102 102
 
103
-        target.setRenderer(new PerformRenderer());
103
+        target.setRenderer(new PerformRenderer(target.getRenderer()));
104 104
 
105 105
         performList.add(networkPerform);
106 106
         performList.add(networkProfilePerform);

+ 2
- 1
src/com/dmdirc/addons/ui_swing/dialogs/sslcertificate/CertificateChainPanel.java Zobrazit soubor

@@ -69,7 +69,8 @@ public class CertificateChainPanel extends JPanel {
69 69
     private void initComponents() {
70 70
         model = new DefaultListModel();
71 71
         list = new JList(model);
72
-        list.setCellRenderer(new CertificateChainEntryCellRenderer(iconManager));
72
+        list.setCellRenderer(new CertificateChainEntryCellRenderer(iconManager,
73
+                list.getCellRenderer()));
73 74
         list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
74 75
         ListScroller.register(list);
75 76
     }

Načítá se…
Zrušit
Uložit