|
@@ -30,6 +30,7 @@ import com.dmdirc.parser.interfaces.Parser;
|
30
|
30
|
import java.awt.Insets;
|
31
|
31
|
import java.util.Hashtable;
|
32
|
32
|
import java.util.Map;
|
|
33
|
+import java.util.TreeSet;
|
33
|
34
|
|
34
|
35
|
import javax.swing.BorderFactory;
|
35
|
36
|
import javax.swing.JCheckBox;
|
|
@@ -93,8 +94,7 @@ public final class ChannelModesPane extends JPanel {
|
93
|
94
|
new Hashtable<String, JCheckBox>();
|
94
|
95
|
|
95
|
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
|
98
|
final String mode = booleanModes.substring(i, i + 1);
|
99
|
99
|
final char modeChar = mode.toCharArray()[0];
|
100
|
100
|
final boolean state =
|
|
@@ -106,16 +106,15 @@ public final class ChannelModesPane extends JPanel {
|
106
|
106
|
if (channel.getConfigManager().hasOptionString("server",
|
107
|
107
|
"mode" + mode)) {
|
108
|
108
|
text = channel.getConfigManager().
|
109
|
|
- getOption("server", "mode" + mode) + " [+"+mode+"]";
|
|
109
|
+ getOption("server", "mode" + mode) + " [+" + mode + "]";
|
110
|
110
|
} else {
|
111
|
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
|
116
|
tooltip =
|
117
|
|
- "Mode " + mode + ": " +
|
118
|
|
- channel.getConfigManager().
|
|
117
|
+ "Mode " + mode + ": " + channel.getConfigManager().
|
119
|
118
|
getOption("server", "mode" + mode);
|
120
|
119
|
} else {
|
121
|
120
|
tooltip = "Mode " + mode + ": Unknown";
|
|
@@ -139,11 +138,9 @@ public final class ChannelModesPane extends JPanel {
|
139
|
138
|
}
|
140
|
139
|
|
141
|
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
|
144
|
final String mode = paramModes.substring(i, i + 1);
|
148
|
145
|
final String value =
|
149
|
146
|
channel.getChannelInfo().getMode(mode.charAt(0));
|
|
@@ -163,13 +160,20 @@ public final class ChannelModesPane extends JPanel {
|
163
|
160
|
private void layoutComponents() {
|
164
|
161
|
final JPanel booleanModes =
|
165
|
162
|
new JPanel(new MigLayout("wrap 2, fillx"));
|
166
|
|
- for (JCheckBox checkBox : modeCheckBoxes.values()) {
|
167
|
|
- booleanModes.add(checkBox);
|
168
|
|
- }
|
169
|
|
-
|
170
|
163
|
final JPanel paramModes =
|
171
|
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
|
177
|
paramModes.add(modePanel.getCheckboxComponent());
|
174
|
178
|
paramModes.add(modePanel.getValueComponent(), "growx, pushx");
|
175
|
179
|
}
|
|
@@ -207,8 +211,8 @@ public final class ChannelModesPane extends JPanel {
|
207
|
211
|
ourBooleanModes.split(" ")[0].contains(
|
208
|
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
|
216
|
changed = true;
|
213
|
217
|
channel.getChannelInfo().
|
214
|
218
|
alterMode(modeCheckBoxes.get(mode).isSelected(),
|
|
@@ -226,8 +230,8 @@ public final class ChannelModesPane extends JPanel {
|
226
|
230
|
mode.subSequence(0, 1));
|
227
|
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
|
235
|
changed = true;
|
232
|
236
|
channel.getChannelInfo().
|
233
|
237
|
alterMode(paramModePanel.getState(),
|