Browse Source

Fixes issue 3626: Sort modes in SSD/CSD

Change-Id: Ibd79387e1a34e782fdd95f4e9f5fbe3739aafb82
Reviewed-on: http://gerrit.dmdirc.com/719
Automatic-Compile: DMDirc Local Commits <dmdirc@googlemail.com>
Reviewed-by: Chris Smith <chris@dmdirc.com>
tags/0.6.3
Gregory Holmes 14 years ago
parent
commit
ce02cbd4d3

+ 24
- 20
src/com/dmdirc/addons/ui_swing/dialogs/channelsetting/ChannelModesPane.java View File

30
 import java.awt.Insets;
30
 import java.awt.Insets;
31
 import java.util.Hashtable;
31
 import java.util.Hashtable;
32
 import java.util.Map;
32
 import java.util.Map;
33
+import java.util.TreeSet;
33
 
34
 
34
 import javax.swing.BorderFactory;
35
 import javax.swing.BorderFactory;
35
 import javax.swing.JCheckBox;
36
 import javax.swing.JCheckBox;
93
                 new Hashtable<String, JCheckBox>();
94
                 new Hashtable<String, JCheckBox>();
94
 
95
 
95
         // Lay out all the boolean mode checkboxes
96
         // Lay out all the boolean mode checkboxes
96
-        for (int i = 0; i < booleanModes.length();
97
-                i++) {
97
+        for (int i = 0; i < booleanModes.length(); i++) {
98
             final String mode = booleanModes.substring(i, i + 1);
98
             final String mode = booleanModes.substring(i, i + 1);
99
             final char modeChar = mode.toCharArray()[0];
99
             final char modeChar = mode.toCharArray()[0];
100
             final boolean state =
100
             final boolean state =
106
             if (channel.getConfigManager().hasOptionString("server",
106
             if (channel.getConfigManager().hasOptionString("server",
107
                     "mode" + mode)) {
107
                     "mode" + mode)) {
108
                 text = channel.getConfigManager().
108
                 text = channel.getConfigManager().
109
-                        getOption("server", "mode" + mode) + " [+"+mode+"]";
109
+                        getOption("server", "mode" + mode) + " [+" + mode + "]";
110
             } else {
110
             } else {
111
                 text = "Mode " + mode;
111
                 text = "Mode " + mode;
112
             }
112
             }
113
 
113
 
114
-            if (channel.getConfigManager().hasOptionString("server", "mode" +
115
-                    mode)) {
114
+            if (channel.getConfigManager().hasOptionString("server", "mode"
115
+                    + mode)) {
116
                 tooltip =
116
                 tooltip =
117
-                        "Mode " + mode + ": " +
118
-                        channel.getConfigManager().
117
+                        "Mode " + mode + ": " + channel.getConfigManager().
119
                         getOption("server", "mode" + mode);
118
                         getOption("server", "mode" + mode);
120
             } else {
119
             } else {
121
                 tooltip = "Mode " + mode + ": Unknown";
120
                 tooltip = "Mode " + mode + ": Unknown";
139
         }
138
         }
140
 
139
 
141
         // Lay out all the parameter-requiring modes
140
         // Lay out all the parameter-requiring modes
142
-        modeInputs =
143
-                new Hashtable<String, ParamModePanel>();
141
+        modeInputs = new Hashtable<String, ParamModePanel>();
144
 
142
 
145
-        for (int i = 0; i < paramModes.length();
146
-                i++) {
143
+        for (int i = 0; i < paramModes.length(); i++) {
147
             final String mode = paramModes.substring(i, i + 1);
144
             final String mode = paramModes.substring(i, i + 1);
148
             final String value =
145
             final String value =
149
                     channel.getChannelInfo().getMode(mode.charAt(0));
146
                     channel.getChannelInfo().getMode(mode.charAt(0));
163
     private void layoutComponents() {
160
     private void layoutComponents() {
164
         final JPanel booleanModes =
161
         final JPanel booleanModes =
165
                 new JPanel(new MigLayout("wrap 2, fillx"));
162
                 new JPanel(new MigLayout("wrap 2, fillx"));
166
-        for (JCheckBox checkBox : modeCheckBoxes.values()) {
167
-            booleanModes.add(checkBox);
168
-        }
169
-
170
         final JPanel paramModes =
163
         final JPanel paramModes =
171
                 new JPanel(new MigLayout("wrap 2, fillx"));
164
                 new JPanel(new MigLayout("wrap 2, fillx"));
172
-        for (ParamModePanel modePanel : modeInputs.values()) {
165
+
166
+        final TreeSet<String> modes = new TreeSet<String>(String.CASE_INSENSITIVE_ORDER);
167
+
168
+        modes.addAll(modeCheckBoxes.keySet());
169
+        for(String mode : modes) {
170
+            booleanModes.add(modeCheckBoxes.get(mode));
171
+        }
172
+        modes.clear();
173
+
174
+        modes.addAll(modeInputs.keySet());
175
+        for(String mode : modes) {
176
+            final ParamModePanel modePanel = modeInputs.get(mode);
173
             paramModes.add(modePanel.getCheckboxComponent());
177
             paramModes.add(modePanel.getCheckboxComponent());
174
             paramModes.add(modePanel.getValueComponent(), "growx, pushx");
178
             paramModes.add(modePanel.getValueComponent(), "growx, pushx");
175
         }
179
         }
207
                     ourBooleanModes.split(" ")[0].contains(
211
                     ourBooleanModes.split(" ")[0].contains(
208
                     mode.subSequence(0, 1));
212
                     mode.subSequence(0, 1));
209
 
213
 
210
-            if (modeCheckBoxes.get(mode) != null &&
211
-                    state != modeCheckBoxes.get(mode).isSelected()) {
214
+            if (modeCheckBoxes.get(mode) != null && state != modeCheckBoxes.get(
215
+                    mode).isSelected()) {
212
                 changed = true;
216
                 changed = true;
213
                 channel.getChannelInfo().
217
                 channel.getChannelInfo().
214
                         alterMode(modeCheckBoxes.get(mode).isSelected(),
218
                         alterMode(modeCheckBoxes.get(mode).isSelected(),
226
                     mode.subSequence(0, 1));
230
                     mode.subSequence(0, 1));
227
             final ParamModePanel paramModePanel = modeInputs.get(mode);
231
             final ParamModePanel paramModePanel = modeInputs.get(mode);
228
 
232
 
229
-            if (state != paramModePanel.getState() ||
230
-                    !value.equals(paramModePanel.getValue())) {
233
+            if (state != paramModePanel.getState() || !value.equals(paramModePanel.
234
+                    getValue())) {
231
                 changed = true;
235
                 changed = true;
232
                 channel.getChannelInfo().
236
                 channel.getChannelInfo().
233
                         alterMode(paramModePanel.getState(),
237
                         alterMode(paramModePanel.getState(),

+ 10
- 8
src/com/dmdirc/addons/ui_swing/dialogs/serversetting/UserModesPane.java View File

1
+
1
 /*
2
 /*
2
  * Copyright (c) 2006-2010 Chris Smith, Shane Mc Cormack, Gregory Holmes
3
  * Copyright (c) 2006-2010 Chris Smith, Shane Mc Cormack, Gregory Holmes
3
  *
4
  *
29
 import java.awt.Insets;
30
 import java.awt.Insets;
30
 import java.util.Hashtable;
31
 import java.util.Hashtable;
31
 import java.util.Map;
32
 import java.util.Map;
33
+import java.util.TreeSet;
32
 
34
 
33
 import javax.swing.BorderFactory;
35
 import javax.swing.BorderFactory;
34
 import javax.swing.JCheckBox;
36
 import javax.swing.JCheckBox;
83
         final String userModes = parser.getUserModes();
85
         final String userModes = parser.getUserModes();
84
         final String ourUserModes = parser.getLocalClient().getModes();
86
         final String ourUserModes = parser.getLocalClient().getModes();
85
 
87
 
86
-        modeCheckBoxes =
87
-                new Hashtable<String, JCheckBox>();
88
+        modeCheckBoxes = new Hashtable<String, JCheckBox>();
88
 
89
 
89
         // Lay out all the boolean mode checkboxes
90
         // Lay out all the boolean mode checkboxes
90
-        for (int i = 0; i < userModes.length();
91
-                i++) {
91
+        for (int i = 0; i < userModes.length(); i++) {
92
             final String mode = userModes.substring(i, i + 1);
92
             final String mode = userModes.substring(i, i + 1);
93
             final boolean state =
93
             final boolean state =
94
                     ourUserModes.split(" ")[0].contains(mode.subSequence(0, 1));
94
                     ourUserModes.split(" ")[0].contains(mode.subSequence(0, 1));
122
 
122
 
123
     /** Lays out the components. */
123
     /** Lays out the components. */
124
     private void layoutComponents() {
124
     private void layoutComponents() {
125
-        final JPanel userModes =
126
-                new JPanel(new MigLayout("wrap 2, fillx"));
127
-        for (JCheckBox checkBox : modeCheckBoxes.values()) {
128
-            userModes.add(checkBox);
125
+        final JPanel userModes = new JPanel(new MigLayout("wrap 2, fillx"));
126
+        final TreeSet<String> modes = new TreeSet<String>(String.CASE_INSENSITIVE_ORDER);
127
+
128
+        modes.addAll(modeCheckBoxes.keySet());
129
+        for(String mode : modes) {
130
+            userModes.add(modeCheckBoxes.get(mode));
129
         }
131
         }
130
 
132
 
131
         userModes.setBorder(BorderFactory.createTitledBorder(UIManager.getBorder(
133
         userModes.setBorder(BorderFactory.createTitledBorder(UIManager.getBorder(

Loading…
Cancel
Save