Browse Source

Fixes issue 2688: Expose per-profile performs in SSD

Change-Id: I27a7f70cfbc0dd8e37f3152923cd419c74a76c47
Reviewed-on: http://gerrit.dmdirc.com/655
Automatic-Compile: Chris Smith <chris@dmdirc.com>
Reviewed-by: Chris Smith <chris@dmdirc.com>
tags/0.6.3
Gregory Holmes 14 years ago
parent
commit
e491b1fc51
1 changed files with 125 additions and 53 deletions
  1. 125
    53
      src/com/dmdirc/addons/ui_swing/dialogs/serversetting/PerformPanel.java

+ 125
- 53
src/com/dmdirc/addons/ui_swing/dialogs/serversetting/PerformPanel.java View File

@@ -42,36 +42,41 @@ import net.miginfocom.swing.MigLayout;
42 42
  * Perform panel.
43 43
  */
44 44
 public final class PerformPanel extends JPanel implements ActionListener {
45
-    
45
+
46 46
     /**
47 47
      * A version number for this class. It should be changed whenever the class
48 48
      * structure is changed (or anything else that would prevent serialized
49 49
      * objects being unserialized with the new class).
50 50
      */
51 51
     private static final long serialVersionUID = 1;
52
-    
52
+
53 53
     /** Parent server. */
54 54
     private final Server server;
55
-    
55
+
56 56
     /** The action used for server performs. */
57 57
     private Action serverAction;
58 58
     /** The action used for network performs. */
59 59
     private Action networkAction;
60
-    
60
+    /** The action used for profile server performs. */
61
+    private Action profileServerAction;
62
+    /** The action used for profile network performs. */
63
+    private Action profileNetworkAction;
64
+
61 65
     /** The server perform string. */
62 66
     private String serverPerform;
63 67
     /** The network perform string. */
64 68
     private String networkPerform;
65
-    
66
-    /** Keeps track of which perform we're editing. */
67
-    private boolean isNetworkPerform;
68
-    
69
+    /** The profile's server perform string. */
70
+    private String profileServerPerform;
71
+    /** The profile's network perform string. */
72
+    private String profileNetworkPerform;
73
+
69 74
     /** Network/server combo box. */
70 75
     private JComboBox target;
71
-    
76
+
72 77
     /** Perform text area. */
73 78
     private JTextArea textarea;
74
-    
79
+
75 80
     /**
76 81
      * Creates a new instance of IgnoreList.
77 82
      *
@@ -79,61 +84,81 @@ public final class PerformPanel extends JPanel implements ActionListener {
79 84
      */
80 85
     public PerformPanel(final Server server) {
81 86
         super();
82
-        
87
+
83 88
         this.server = server;
84
-        
89
+
85 90
         this.setOpaque(UIUtilities.getTabbedPaneOpaque());
86 91
         initComponents();
87 92
         addListeners();
88 93
         loadPerforms();
89 94
         populatePerform();
90 95
     }
91
-    
96
+
92 97
     /** Initialises teh components. */
93 98
     private void initComponents() {
94 99
         setLayout(new MigLayout("fill"));
95
-        
100
+
96 101
         final DefaultComboBoxModel model = new DefaultComboBoxModel();
97 102
         target = new JComboBox(model);
98
-        
99
-        if (!server.getNetwork().isEmpty()) {
100
-            model.addElement("Network perform (" + server.getNetwork() + ")");
101
-        }
102
-        if (!server.getName().isEmpty()) {
103
-            model.addElement("Server perform (" + server.getName() + ")");
104
-        }
105
-        
103
+
104
+        model.addElement("Network perform (" + server.getNetwork()
105
+                + ") Any profile");
106
+        model.addElement("Network perform (" + server.getNetwork()
107
+                + ") This profile (" + server.getProfile().getName() + ")");
108
+        model.addElement("Server perform (" + server.getName()
109
+                + ") Any profile");
110
+        model.addElement("Server perform (" + server.getName()
111
+                + ") This profile (" + server.getProfile().getName() + ")");
112
+
106 113
         add(target, "growx, pushx, wrap");
107
-        
114
+
108 115
         textarea = new JTextArea();
109 116
         textarea.setColumns(40);
110
-        
117
+
111 118
         add(new JScrollPane(textarea), "grow, push");
112 119
     }
113
-    
120
+
114 121
     /** Adds listeners to the components. */
115 122
     private void addListeners() {
116 123
         target.addActionListener(this);
117 124
     }
118
-    
125
+
119 126
     /** Loads the perform actions. */
120 127
     private void loadPerforms() {
121
-        serverAction = PerformWrapper.getPerformWrapper().getActionForServer(server.getName());
122
-        networkAction = PerformWrapper.getPerformWrapper().getActionForNetwork(server.getNetwork());
123
-        
128
+        serverAction = PerformWrapper.getPerformWrapper().
129
+                getActionForServer(server.getName());
130
+        networkAction = PerformWrapper.getPerformWrapper().
131
+                getActionForNetwork(server.getNetwork());
132
+        profileServerAction = PerformWrapper.getPerformWrapper().
133
+                getActionForServer(server.getName(), server.getProfile().getName());
134
+        profileNetworkAction = PerformWrapper.getPerformWrapper().
135
+                getActionForNetwork(server.getNetwork(), server.getProfile().getName());
136
+
124 137
         if (serverAction == null) {
125 138
             serverPerform = "";
126 139
         } else {
127 140
             serverPerform = implode(serverAction.getResponse());
128 141
         }
129
-        
142
+
130 143
         if (networkAction == null) {
131 144
             networkPerform = "";
132 145
         } else {
133 146
             networkPerform = implode(networkAction.getResponse());
134 147
         }
148
+
149
+        if (profileServerAction == null) {
150
+            profileServerPerform = "";
151
+        } else {
152
+            profileServerPerform = implode(profileServerAction.getResponse());
153
+        }
154
+
155
+        if (profileNetworkAction == null) {
156
+            profileNetworkPerform = "";
157
+        } else {
158
+            profileNetworkPerform = implode(profileServerAction.getResponse());
159
+        }
135 160
     }
136
-    
161
+
137 162
     /**
138 163
      * Implodes the specified string array, joining each line with a LF.
139 164
      *
@@ -142,60 +167,107 @@ public final class PerformPanel extends JPanel implements ActionListener {
142 167
      */
143 168
     private String implode(final String[] lines) {
144 169
         final StringBuilder res = new StringBuilder();
145
-        
170
+
146 171
         for (String line : lines) {
147 172
             res.append('\n');
148 173
             res.append(line);
149 174
         }
150
-        
175
+
151 176
         return res.length() == 0 ? "" : res.substring(1);
152 177
     }
153
-    
178
+
154 179
     /** Populates the perform text area. */
155 180
     private void populatePerform() {
156
-        if (target.getSelectedIndex() == 0) {
157
-            isNetworkPerform = true;
158
-            textarea.setText(networkPerform);
159
-        } else {
160
-            isNetworkPerform = false;
161
-            textarea.setText(serverPerform);
181
+        switch (target.getSelectedIndex()) {
182
+            case 0:
183
+                textarea.setText(networkPerform);
184
+                break;
185
+            case 1:
186
+                textarea.setText(profileNetworkPerform);
187
+                break;
188
+            case 2:
189
+                textarea.setText(serverPerform);
190
+                break;
191
+            case 3:
192
+                textarea.setText(profileServerPerform);
193
+                break;
194
+            default:
195
+                break;
162 196
         }
163 197
     }
164
-    
198
+
165 199
     /** Stores the text currently in the textarea into the perform strings. */
166 200
     private void storeText() {
167
-        if (isNetworkPerform) {
168
-            networkPerform = textarea.getText();
169
-        } else {
170
-            serverPerform = textarea.getText();
201
+        switch (target.getSelectedIndex()) {
202
+            case 0:
203
+                networkPerform = textarea.getText();
204
+                break;
205
+            case 1:
206
+                profileNetworkPerform = textarea.getText();
207
+                break;
208
+            case 2:
209
+                serverPerform = textarea.getText();
210
+                break;
211
+            case 3:
212
+                profileServerPerform = textarea.getText();
213
+                break;
214
+            default:
215
+                break;
171 216
         }
172 217
     }
173
-    
218
+
174 219
     /** Saves the performs. */
175 220
     public void savePerforms() {
176 221
         storeText();
177
-        
222
+
178 223
         if (!serverPerform.isEmpty() || serverAction != null) {
179 224
             if (serverAction == null) {
180
-                serverAction = PerformWrapper.getPerformWrapper().createActionForServer(server.getName());
225
+                serverAction = PerformWrapper.getPerformWrapper().
226
+                        createActionForServer(server.getName());
181 227
             }
182 228
             serverAction.setResponse(serverPerform.split("\n"));
183 229
             serverAction.save();
184 230
         }
185
-        
231
+
186 232
         if (!networkPerform.isEmpty() || networkAction != null) {
187 233
             if (networkAction == null) {
188
-                networkAction = PerformWrapper.getPerformWrapper().createActionForNetwork(server.getNetwork());
234
+                networkAction = PerformWrapper.getPerformWrapper().
235
+                        createActionForNetwork(server.getNetwork());
189 236
             }
190 237
             networkAction.setResponse(networkPerform.split("\n"));
191 238
             networkAction.save();
192 239
         }
240
+
241
+        if (!profileNetworkPerform.isEmpty() || profileNetworkAction != null) {
242
+            if (profileNetworkAction == null) {
243
+                profileNetworkAction = PerformWrapper.getPerformWrapper().
244
+                        createActionForNetwork(server.getNetwork(),
245
+                        server.getProfile().getName());
246
+            }
247
+            profileNetworkAction.setResponse(profileNetworkPerform.split("\n"));
248
+            profileNetworkAction.save();
249
+        }
250
+
251
+        if (!profileServerPerform.isEmpty() || profileServerAction != null) {
252
+            if (profileServerAction == null) {
253
+                profileServerAction = PerformWrapper.getPerformWrapper().
254
+                        createActionForServer(server.getName(),
255
+                        server.getProfile().getName());
256
+            }
257
+            profileServerAction.setResponse(profileServerPerform.split("\n"));
258
+            profileServerAction.save();
259
+        }
193 260
     }
194
-    
195
-    /** {@inheritDoc} */
261
+
262
+    /**
263
+     * {@inheritDoc}
264
+     *
265
+     * @param e Action event
266
+     */
267
+    @Override
196 268
     public void actionPerformed(final ActionEvent e) {
197 269
         storeText();
198 270
         populatePerform();
199 271
     }
200
-    
272
+
201 273
 }

Loading…
Cancel
Save