OSDN Git Service

fixed up setup ui
[mikumikustudio/libgdx-mikumikustudio.git] / extensions / gdx-setup-ui / src / aurelienribon / gdxsetupui / ui / panels / AdvancedSettingsPanel.java
1 /*******************************************************************************
2  * Copyright 2011 See AUTHORS file.
3  * 
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  * 
8  *   http://www.apache.org/licenses/LICENSE-2.0
9  * 
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  ******************************************************************************/
16 package aurelienribon.gdxsetupui.ui.panels;
17
18 import aurelienribon.gdxsetupui.ui.Ctx;
19 import aurelienribon.ui.css.Style;
20 import aurelienribon.utils.SwingUtils;
21 import java.awt.event.KeyAdapter;
22 import java.awt.event.KeyEvent;
23 import java.awt.event.KeyListener;
24 import java.util.regex.Pattern;
25 import javax.swing.JOptionPane;
26 import javax.swing.JTextField;
27
28 /**
29  * @author Aurelien Ribon | http://www.aurelienribon.com/
30  */
31 public class AdvancedSettingsPanel extends javax.swing.JPanel {
32     public AdvancedSettingsPanel() {
33         initComponents();
34
35                 coreSuffixField.setText(Ctx.cfgSetup.suffixCommon);
36                 desktopSuffixField.setText(Ctx.cfgSetup.suffixDesktop);
37                 androidSuffixField.setText(Ctx.cfgSetup.suffixAndroid);
38                 htmlSuffixField.setText(Ctx.cfgSetup.suffixHtml);
39       iosSuffixField.setText(Ctx.cfgSetup.suffixRobovm);
40                 androidMinSdkField.setText(Ctx.cfgSetup.androidMinSdkVersion);
41                 androidTargetSdkField.setText(Ctx.cfgSetup.androidTargetSdkVersion);
42                 androidMaxSdkField.setText(Ctx.cfgSetup.androidMaxSdkVersion);
43
44                 coreSuffixField.addKeyListener(updateOnTypeKeyListener);
45                 desktopSuffixField.addKeyListener(updateOnTypeKeyListener);
46                 androidSuffixField.addKeyListener(updateOnTypeKeyListener);
47                 htmlSuffixField.addKeyListener(updateOnTypeKeyListener);
48                 iosSuffixField.addKeyListener(updateOnTypeKeyListener);
49                 androidMinSdkField.addKeyListener(updateOnTypeKeyListener);
50                 androidTargetSdkField.addKeyListener(updateOnTypeKeyListener);
51                 androidMaxSdkField.addKeyListener(updateOnTypeKeyListener);
52
53                 androidMinSdkField.addKeyListener(numbersOnlyKeyListener);
54                 androidTargetSdkField.addKeyListener(numbersOnlyKeyListener);
55                 androidMaxSdkField.addKeyListener(numbersOnlyKeyListener);
56
57                 Style.registerCssClasses(paintedPanel1, ".optionGroupPanel");
58                 Style.registerCssClasses(paintedPanel2, ".optionGroupPanel");
59     }
60
61         private void update() {
62                 Ctx.cfgSetup.suffixCommon = coreSuffixField.getText();
63                 Ctx.cfgSetup.suffixDesktop = desktopSuffixField.getText();
64                 Ctx.cfgSetup.suffixAndroid = androidSuffixField.getText();
65                 Ctx.cfgSetup.suffixRobovm = iosSuffixField.getText();
66                 Ctx.cfgSetup.androidMinSdkVersion = androidMinSdkField.getText();
67                 Ctx.cfgSetup.androidMaxSdkVersion = androidMaxSdkField.getText();
68                 Ctx.cfgSetup.androidTargetSdkVersion = androidTargetSdkField.getText();
69                 Ctx.fireCfgSetupChanged();
70                 Ctx.cfgUpdate.suffixCommon = coreSuffixField.getText();
71                 Ctx.cfgUpdate.suffixDesktop = desktopSuffixField.getText();
72                 Ctx.cfgUpdate.suffixAndroid = androidSuffixField.getText();
73       Ctx.cfgUpdate.suffixRobovm = iosSuffixField.getText();
74                 Ctx.fireCfgSetupChanged();
75         }
76
77         private final KeyListener updateOnTypeKeyListener = new KeyAdapter() {
78                 @Override
79                 public void keyReleased(KeyEvent e) {
80                         update();
81                 }
82         };
83
84         private final KeyListener numbersOnlyKeyListener = new KeyAdapter() {
85                 private String backup;
86
87                 @Override
88                 public void keyPressed(KeyEvent e) {
89                         JTextField field = (JTextField) e.getSource();
90                         backup = field.getText();
91                 }
92
93                 @Override
94                 public void keyReleased(KeyEvent e) {
95                         JTextField field = (JTextField) e.getSource();
96                         if (!Pattern.compile("[0-9]*").matcher(field.getText()).matches()) {
97                                 String msg = "Only numbers are allowed.";
98                                 JOptionPane.showMessageDialog(SwingUtils.getJFrame(AdvancedSettingsPanel.this), msg);
99                                 field.setText(backup);
100                                 update();
101                         }
102                 }
103         };
104
105         // -------------------------------------------------------------------------
106         // Generated stuff
107         // -------------------------------------------------------------------------
108
109     @SuppressWarnings("unchecked")
110     // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
111     private void initComponents() {
112
113         paintedPanel1 = new aurelienribon.ui.components.PaintedPanel();
114         jLabel7 = new javax.swing.JLabel();
115         androidMaxSdkField = new javax.swing.JTextField();
116         jLabel6 = new javax.swing.JLabel();
117         jLabel5 = new javax.swing.JLabel();
118         androidTargetSdkField = new javax.swing.JTextField();
119         androidMinSdkField = new javax.swing.JTextField();
120         jLabel8 = new javax.swing.JLabel();
121         jLabel10 = new javax.swing.JLabel();
122         paintedPanel2 = new aurelienribon.ui.components.PaintedPanel();
123         jLabel1 = new javax.swing.JLabel();
124         androidSuffixField = new javax.swing.JTextField();
125         jLabel4 = new javax.swing.JLabel();
126         coreSuffixField = new javax.swing.JTextField();
127         desktopSuffixField = new javax.swing.JTextField();
128         htmlSuffixField = new javax.swing.JTextField();
129         jLabel3 = new javax.swing.JLabel();
130         jLabel2 = new javax.swing.JLabel();
131         jLabel9 = new javax.swing.JLabel();
132         iosSuffixField = new javax.swing.JTextField();
133         jLabel11 = new javax.swing.JLabel();
134
135         jLabel7.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
136         jLabel7.setText("android:maxSdkVersion");
137
138         jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
139         jLabel6.setText("android:targetSdkVersion");
140
141         jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
142         jLabel5.setText("android:minSdkVersion");
143
144         androidTargetSdkField.setText("15");
145
146         androidMinSdkField.setText("5");
147
148         jLabel8.setText("Leave a field blank to unset the value");
149
150         jLabel10.setText("<html>\nThese three values control the SDK parameters of the Android Manifest file. You can change them later by manually editing the AndroidManifest.xml file in your android project.");
151         jLabel10.setVerticalAlignment(javax.swing.SwingConstants.TOP);
152
153         javax.swing.GroupLayout paintedPanel1Layout = new javax.swing.GroupLayout(paintedPanel1);
154         paintedPanel1.setLayout(paintedPanel1Layout);
155         paintedPanel1Layout.setHorizontalGroup(
156             paintedPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
157             .addGroup(paintedPanel1Layout.createSequentialGroup()
158                 .addContainerGap()
159                 .addComponent(jLabel10, javax.swing.GroupLayout.PREFERRED_SIZE, 223, javax.swing.GroupLayout.PREFERRED_SIZE)
160                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
161                 .addGroup(paintedPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
162                     .addComponent(jLabel8, javax.swing.GroupLayout.Alignment.TRAILING)
163                     .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, paintedPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
164                         .addComponent(jLabel6)
165                         .addComponent(jLabel7)
166                         .addGroup(paintedPanel1Layout.createSequentialGroup()
167                             .addComponent(jLabel5)
168                             .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
169                             .addGroup(paintedPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
170                                 .addComponent(androidMaxSdkField)
171                                 .addComponent(androidMinSdkField)
172                                 .addComponent(androidTargetSdkField, javax.swing.GroupLayout.DEFAULT_SIZE, 142, Short.MAX_VALUE)))))
173                 .addContainerGap())
174         );
175
176         paintedPanel1Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel5, jLabel6, jLabel7});
177
178         paintedPanel1Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {androidMaxSdkField, androidMinSdkField, androidTargetSdkField});
179
180         paintedPanel1Layout.setVerticalGroup(
181             paintedPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
182             .addGroup(paintedPanel1Layout.createSequentialGroup()
183                 .addContainerGap()
184                 .addGroup(paintedPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
185                     .addGroup(paintedPanel1Layout.createSequentialGroup()
186                         .addGroup(paintedPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
187                             .addComponent(jLabel5)
188                             .addComponent(androidMinSdkField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
189                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
190                         .addGroup(paintedPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
191                             .addComponent(jLabel6)
192                             .addComponent(androidTargetSdkField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
193                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
194                         .addGroup(paintedPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
195                             .addComponent(jLabel7)
196                             .addComponent(androidMaxSdkField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
197                         .addGap(18, 18, 18)
198                         .addComponent(jLabel8))
199                     .addComponent(jLabel10))
200                 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
201         );
202
203         jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
204         jLabel1.setText("Main project suffix");
205
206         androidSuffixField.setText("-android");
207
208         jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
209         jLabel4.setText("Html project suffix");
210
211         desktopSuffixField.setText("-desktop");
212
213         htmlSuffixField.setText("-html");
214
215         jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
216         jLabel3.setText("Android project suffix");
217
218         jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
219         jLabel2.setText("Desktop project suffix");
220
221         jLabel9.setText("Do not use twice the same suffix to avoid undefined behavior");
222
223         iosSuffixField.setText("-ios");
224         iosSuffixField.setName(""); // NOI18N
225
226         jLabel11.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
227         jLabel11.setText("iOS project suffix");
228
229         javax.swing.GroupLayout paintedPanel2Layout = new javax.swing.GroupLayout(paintedPanel2);
230         paintedPanel2.setLayout(paintedPanel2Layout);
231         paintedPanel2Layout.setHorizontalGroup(
232             paintedPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
233             .addGroup(paintedPanel2Layout.createSequentialGroup()
234                 .addContainerGap()
235                 .addGroup(paintedPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
236                     .addGroup(paintedPanel2Layout.createSequentialGroup()
237                         .addGroup(paintedPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
238                             .addGroup(javax.swing.GroupLayout.Alignment.LEADING, paintedPanel2Layout.createSequentialGroup()
239                                 .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 109, javax.swing.GroupLayout.PREFERRED_SIZE)
240                                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
241                                 .addComponent(desktopSuffixField, javax.swing.GroupLayout.PREFERRED_SIZE, 142, javax.swing.GroupLayout.PREFERRED_SIZE))
242                             .addGroup(javax.swing.GroupLayout.Alignment.LEADING, paintedPanel2Layout.createSequentialGroup()
243                                 .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 106, javax.swing.GroupLayout.PREFERRED_SIZE)
244                                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
245                                 .addComponent(coreSuffixField, javax.swing.GroupLayout.PREFERRED_SIZE, 142, javax.swing.GroupLayout.PREFERRED_SIZE)))
246                         .addGap(18, 18, 18)
247                         .addGroup(paintedPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
248                             .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 107, javax.swing.GroupLayout.PREFERRED_SIZE)
249                             .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 107, javax.swing.GroupLayout.PREFERRED_SIZE))
250                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
251                         .addGroup(paintedPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
252                             .addComponent(htmlSuffixField, javax.swing.GroupLayout.PREFERRED_SIZE, 140, javax.swing.GroupLayout.PREFERRED_SIZE)
253                             .addComponent(androidSuffixField, javax.swing.GroupLayout.PREFERRED_SIZE, 140, javax.swing.GroupLayout.PREFERRED_SIZE)))
254                     .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, paintedPanel2Layout.createSequentialGroup()
255                         .addGap(0, 0, Short.MAX_VALUE)
256                         .addGroup(paintedPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
257                             .addComponent(jLabel9, javax.swing.GroupLayout.Alignment.TRAILING)
258                             .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, paintedPanel2Layout.createSequentialGroup()
259                                 .addComponent(jLabel11, javax.swing.GroupLayout.PREFERRED_SIZE, 107, javax.swing.GroupLayout.PREFERRED_SIZE)
260                                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
261                                 .addComponent(iosSuffixField, javax.swing.GroupLayout.PREFERRED_SIZE, 140, javax.swing.GroupLayout.PREFERRED_SIZE)))))
262                 .addContainerGap())
263         );
264
265         paintedPanel2Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel1, jLabel2, jLabel3, jLabel4});
266
267         paintedPanel2Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {androidSuffixField, coreSuffixField, desktopSuffixField, htmlSuffixField});
268
269         paintedPanel2Layout.setVerticalGroup(
270             paintedPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
271             .addGroup(paintedPanel2Layout.createSequentialGroup()
272                 .addContainerGap()
273                 .addGroup(paintedPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
274                     .addComponent(jLabel1)
275                     .addComponent(coreSuffixField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
276                     .addComponent(jLabel3)
277                     .addComponent(androidSuffixField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
278                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
279                 .addGroup(paintedPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
280                     .addComponent(jLabel4)
281                     .addComponent(htmlSuffixField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
282                     .addComponent(jLabel2)
283                     .addComponent(desktopSuffixField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
284                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
285                 .addGroup(paintedPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
286                     .addComponent(jLabel11)
287                     .addComponent(iosSuffixField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
288                 .addGap(4, 4, 4)
289                 .addComponent(jLabel9)
290                 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
291         );
292
293         javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
294         this.setLayout(layout);
295         layout.setHorizontalGroup(
296             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
297             .addGroup(layout.createSequentialGroup()
298                 .addContainerGap()
299                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
300                     .addComponent(paintedPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
301                     .addComponent(paintedPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
302                 .addContainerGap(59, Short.MAX_VALUE))
303         );
304         layout.setVerticalGroup(
305             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
306             .addGroup(layout.createSequentialGroup()
307                 .addContainerGap()
308                 .addComponent(paintedPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
309                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
310                 .addComponent(paintedPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
311                 .addContainerGap(80, Short.MAX_VALUE))
312         );
313     }// </editor-fold>//GEN-END:initComponents
314
315     // Variables declaration - do not modify//GEN-BEGIN:variables
316     private javax.swing.JTextField androidMaxSdkField;
317     private javax.swing.JTextField androidMinSdkField;
318     private javax.swing.JTextField androidSuffixField;
319     private javax.swing.JTextField androidTargetSdkField;
320     private javax.swing.JTextField coreSuffixField;
321     private javax.swing.JTextField desktopSuffixField;
322     private javax.swing.JTextField htmlSuffixField;
323     private javax.swing.JTextField iosSuffixField;
324     private javax.swing.JLabel jLabel1;
325     private javax.swing.JLabel jLabel10;
326     private javax.swing.JLabel jLabel11;
327     private javax.swing.JLabel jLabel2;
328     private javax.swing.JLabel jLabel3;
329     private javax.swing.JLabel jLabel4;
330     private javax.swing.JLabel jLabel5;
331     private javax.swing.JLabel jLabel6;
332     private javax.swing.JLabel jLabel7;
333     private javax.swing.JLabel jLabel8;
334     private javax.swing.JLabel jLabel9;
335     private aurelienribon.ui.components.PaintedPanel paintedPanel1;
336     private aurelienribon.ui.components.PaintedPanel paintedPanel2;
337     // End of variables declaration//GEN-END:variables
338
339 }