]> icculus.org git repositories - divverent/nexuiz.git/blob - tools/ImgToMap/src/imgtomap/JFrameMain.java
include additional libraries for Java 5
[divverent/nexuiz.git] / tools / ImgToMap / src / imgtomap / JFrameMain.java
1 /*
2  * JFrameMain.java
3  *
4  * Created on 17. Mai 2008, 15:02
5  */
6
7 package imgtomap;
8
9 import java.io.File;
10 import javax.swing.JFileChooser;
11 import javax.swing.JOptionPane;
12
13 /**
14  *
15  * @author  maik
16  */
17 public class JFrameMain extends javax.swing.JFrame {
18
19     /** Creates new form JFrameMain */
20     public JFrameMain() {
21         initComponents();
22         String testinput = "/mnt/data/nexuizsvn/nexuiz/trunk/tools/ImgToMap/test1.png";
23         String testoutput = "/tmp/test.map";
24         
25         if(new File(testinput).exists()) {
26             jTextFieldInput.setText(testinput);
27             jTextFieldOutput.setText(testoutput);
28         }
29         
30         enableSkyPanel(jCheckBoxSky.isSelected());
31     }
32
33     /** This method is called from within the constructor to
34      * initialize the form.
35      * WARNING: Do NOT modify this code. The content of this method is
36      * always regenerated by the Form Editor.
37      */
38     @SuppressWarnings("unchecked")
39     // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
40     private void initComponents() {
41
42         jPanel1 = new javax.swing.JPanel();
43         jTextFieldInput = new javax.swing.JTextField();
44         jButtonInput = new javax.swing.JButton();
45         jTextFieldOutput = new javax.swing.JTextField();
46         jButtonOutput = new javax.swing.JButton();
47         jButtonOK = new javax.swing.JButton();
48         jPanel2 = new javax.swing.JPanel();
49         jCheckBoxDetail = new javax.swing.JCheckBox();
50         jTextFieldTexture = new javax.swing.JTextField();
51         jLabel3 = new javax.swing.JLabel();
52         jSpinnerUnits = new javax.swing.JSpinner();
53         jSpinnerHeight = new javax.swing.JSpinner();
54         jSpinnerTextureScale = new javax.swing.JSpinner();
55         jLabel4 = new javax.swing.JLabel();
56         jLabel2 = new javax.swing.JLabel();
57         jLabel1 = new javax.swing.JLabel();
58         jPanelSky = new javax.swing.JPanel();
59         jCheckBoxSky = new javax.swing.JCheckBox();
60         jLabel5 = new javax.swing.JLabel();
61         jSpinnerSkyHeight = new javax.swing.JSpinner();
62         jCheckBoxSkyFill = new javax.swing.JCheckBox();
63         jLabel6 = new javax.swing.JLabel();
64         jTextFieldSkyTexture = new javax.swing.JTextField();
65
66         setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
67         setTitle("ImgToMap");
68
69         jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Files"));
70
71         jButtonInput.setText("Select input file");
72         jButtonInput.addActionListener(new java.awt.event.ActionListener() {
73             public void actionPerformed(java.awt.event.ActionEvent evt) {
74                 jButtonInputActionPerformed(evt);
75             }
76         });
77
78         jButtonOutput.setText("Select output file");
79         jButtonOutput.addActionListener(new java.awt.event.ActionListener() {
80             public void actionPerformed(java.awt.event.ActionEvent evt) {
81                 jButtonOutputActionPerformed(evt);
82             }
83         });
84
85         org.jdesktop.layout.GroupLayout jPanel1Layout = new org.jdesktop.layout.GroupLayout(jPanel1);
86         jPanel1.setLayout(jPanel1Layout);
87         jPanel1Layout.setHorizontalGroup(
88             jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
89             .add(jPanel1Layout.createSequentialGroup()
90                 .addContainerGap()
91                 .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
92                     .add(org.jdesktop.layout.GroupLayout.LEADING, jTextFieldOutput, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 278, Short.MAX_VALUE)
93                     .add(org.jdesktop.layout.GroupLayout.LEADING, jTextFieldInput, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 278, Short.MAX_VALUE))
94                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
95                 .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
96                     .add(org.jdesktop.layout.GroupLayout.TRAILING, jButtonInput, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 120, Short.MAX_VALUE)
97                     .add(org.jdesktop.layout.GroupLayout.TRAILING, jButtonOutput, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
98                 .addContainerGap())
99         );
100         jPanel1Layout.setVerticalGroup(
101             jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
102             .add(jPanel1Layout.createSequentialGroup()
103                 .addContainerGap()
104                 .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
105                     .add(jButtonInput)
106                     .add(jTextFieldInput, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 27, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
107                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
108                 .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
109                     .add(jButtonOutput)
110                     .add(jTextFieldOutput, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 26, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
111                 .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
112         );
113
114         jButtonOK.setText("Start conversion!");
115         jButtonOK.addActionListener(new java.awt.event.ActionListener() {
116             public void actionPerformed(java.awt.event.ActionEvent evt) {
117                 jButtonOKActionPerformed(evt);
118             }
119         });
120
121         jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Terrain configuration"));
122
123         jCheckBoxDetail.setSelected(true);
124         jCheckBoxDetail.setText("make detail");
125
126         jTextFieldTexture.setText("terrain/terrain1");
127
128         jLabel3.setText("Cover terrain surface with texture:");
129
130         jSpinnerUnits.setModel(new javax.swing.SpinnerNumberModel(256, 1, 2048, 1));
131
132         jSpinnerHeight.setModel(new javax.swing.SpinnerNumberModel(1024, 256, 16384, 1));
133         jSpinnerHeight.addChangeListener(new javax.swing.event.ChangeListener() {
134             public void stateChanged(javax.swing.event.ChangeEvent evt) {
135                 jSpinnerHeightStateChanged(evt);
136             }
137         });
138
139         jSpinnerTextureScale.setModel(new javax.swing.SpinnerNumberModel(0.5d, 0.25d, 16.0d, 0.25d));
140
141         jLabel4.setText("Texture scale:");
142
143         jLabel2.setText("Height for white:");
144
145         jLabel1.setText("Units per pixel:");
146
147         org.jdesktop.layout.GroupLayout jPanel2Layout = new org.jdesktop.layout.GroupLayout(jPanel2);
148         jPanel2.setLayout(jPanel2Layout);
149         jPanel2Layout.setHorizontalGroup(
150             jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
151             .add(jPanel2Layout.createSequentialGroup()
152                 .addContainerGap()
153                 .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
154                     .add(jPanel2Layout.createSequentialGroup()
155                         .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
156                             .add(jLabel1)
157                             .add(jLabel2))
158                         .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
159                         .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false)
160                             .add(jSpinnerHeight, 0, 0, Short.MAX_VALUE)
161                             .add(jSpinnerUnits))
162                         .add(18, 18, 18)
163                         .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
164                             .add(jPanel2Layout.createSequentialGroup()
165                                 .add(jLabel4)
166                                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
167                                 .add(jSpinnerTextureScale))
168                             .add(jCheckBoxDetail)))
169                     .add(jLabel3)
170                     .add(org.jdesktop.layout.GroupLayout.TRAILING, jTextFieldTexture, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 404, Short.MAX_VALUE))
171                 .addContainerGap())
172         );
173         jPanel2Layout.setVerticalGroup(
174             jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
175             .add(jPanel2Layout.createSequentialGroup()
176                 .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
177                     .add(jSpinnerUnits, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
178                     .add(jLabel1)
179                     .add(jLabel4)
180                     .add(jSpinnerTextureScale, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
181                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
182                 .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
183                     .add(jLabel2)
184                     .add(jSpinnerHeight, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
185                     .add(jCheckBoxDetail))
186                 .add(18, 18, 18)
187                 .add(jLabel3)
188                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
189                 .add(jTextFieldTexture, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
190                 .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
191         );
192
193         jPanelSky.setBorder(javax.swing.BorderFactory.createTitledBorder("Sky configuration"));
194
195         jCheckBoxSky.setSelected(true);
196         jCheckBoxSky.setText("generate a skybox");
197         jCheckBoxSky.addActionListener(new java.awt.event.ActionListener() {
198             public void actionPerformed(java.awt.event.ActionEvent evt) {
199                 jCheckBoxSkyActionPerformed(evt);
200             }
201         });
202
203         jLabel5.setText("Sky height:");
204
205         jSpinnerSkyHeight.setModel(new javax.swing.SpinnerNumberModel(Integer.valueOf(1152), Integer.valueOf(256), null, Integer.valueOf(1)));
206         jSpinnerSkyHeight.addChangeListener(new javax.swing.event.ChangeListener() {
207             public void stateChanged(javax.swing.event.ChangeEvent evt) {
208                 jSpinnerSkyHeightStateChanged(evt);
209             }
210         });
211
212         jCheckBoxSkyFill.setSelected(true);
213         jCheckBoxSkyFill.setText("fill alpha-gaps with sky");
214
215         jLabel6.setText("Sky texture:");
216
217         jTextFieldSkyTexture.setText("skies/sky1");
218
219         org.jdesktop.layout.GroupLayout jPanelSkyLayout = new org.jdesktop.layout.GroupLayout(jPanelSky);
220         jPanelSky.setLayout(jPanelSkyLayout);
221         jPanelSkyLayout.setHorizontalGroup(
222             jPanelSkyLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
223             .add(jPanelSkyLayout.createSequentialGroup()
224                 .addContainerGap()
225                 .add(jPanelSkyLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
226                     .add(jTextFieldSkyTexture, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 404, Short.MAX_VALUE)
227                     .add(jPanelSkyLayout.createSequentialGroup()
228                         .add(jCheckBoxSky)
229                         .add(18, 18, 18)
230                         .add(jCheckBoxSkyFill))
231                     .add(jPanelSkyLayout.createSequentialGroup()
232                         .add(jLabel5)
233                         .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
234                         .add(jSpinnerSkyHeight, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 82, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
235                     .add(jLabel6))
236                 .addContainerGap())
237         );
238         jPanelSkyLayout.setVerticalGroup(
239             jPanelSkyLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
240             .add(jPanelSkyLayout.createSequentialGroup()
241                 .add(jPanelSkyLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
242                     .add(jCheckBoxSky)
243                     .add(jCheckBoxSkyFill))
244                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
245                 .add(jPanelSkyLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
246                     .add(jLabel5)
247                     .add(jSpinnerSkyHeight, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
248                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
249                 .add(jLabel6)
250                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
251                 .add(jTextFieldSkyTexture, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
252                 .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
253         );
254
255         org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
256         getContentPane().setLayout(layout);
257         layout.setHorizontalGroup(
258             layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
259             .add(layout.createSequentialGroup()
260                 .addContainerGap()
261                 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
262                     .add(jPanelSky, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
263                     .add(jPanel2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
264                     .add(jPanel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
265                     .add(jButtonOK))
266                 .addContainerGap())
267         );
268         layout.setVerticalGroup(
269             layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
270             .add(layout.createSequentialGroup()
271                 .addContainerGap()
272                 .add(jPanel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
273                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
274                 .add(jPanel2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
275                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
276                 .add(jPanelSky, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 157, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
277                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
278                 .add(jButtonOK)
279                 .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
280         );
281
282         pack();
283     }// </editor-fold>//GEN-END:initComponents
284
285 private void jButtonInputActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonInputActionPerformed
286     JFileChooser fc = new JFileChooser();
287     int ret = fc.showOpenDialog(this);
288     
289     if(ret == fc.APPROVE_OPTION) {
290         File f = fc.getSelectedFile();
291         if(f.exists()) {
292             jTextFieldInput.setText(f.getAbsolutePath());
293         }
294     }
295 }//GEN-LAST:event_jButtonInputActionPerformed
296
297 private void jButtonOKActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonOKActionPerformed
298     this.setVisible(false);
299     Parameters p = new Parameters();
300     p.infile = jTextFieldInput.getText();
301     p.outfile = jTextFieldOutput.getText();
302     p.texture = jTextFieldTexture.getText();
303     p.skytexture = jTextFieldSkyTexture.getText();
304     p.pixelsize = (Integer)jSpinnerUnits.getValue();
305     p.height = (Integer)jSpinnerHeight.getValue();
306     p.sky = jCheckBoxSky.isSelected();
307     p.skyfill = jCheckBoxSkyFill.isSelected();
308     p.skyheight = (Integer)jSpinnerSkyHeight.getValue();
309     p.texturescale = (Double)jSpinnerTextureScale.getValue();
310     p.detail = jCheckBoxDetail.isSelected();
311     int ret = new MapWriter().writeMap(p);
312     if(ret == 0) {
313         JOptionPane.showMessageDialog(this, "Map successfully generated!", "Success!", JOptionPane.INFORMATION_MESSAGE);
314     } else {
315         JOptionPane.showMessageDialog(this, "Error occured! Oh no!", "Error!", JOptionPane.ERROR_MESSAGE);
316     }
317     
318     
319     this.setVisible(true);
320 }//GEN-LAST:event_jButtonOKActionPerformed
321
322 private void jButtonOutputActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonOutputActionPerformed
323     JFileChooser fc = new JFileChooser();
324     int ret = fc.showOpenDialog(this);
325     
326     if(ret == fc.APPROVE_OPTION) {
327         File f = fc.getSelectedFile();
328         jTextFieldOutput.setText(f.getAbsolutePath());
329     }
330 }//GEN-LAST:event_jButtonOutputActionPerformed
331
332 private void jCheckBoxSkyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBoxSkyActionPerformed
333     enableSkyPanel(jCheckBoxSky.isSelected());
334 }//GEN-LAST:event_jCheckBoxSkyActionPerformed
335
336 private void jSpinnerHeightStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jSpinnerHeightStateChanged
337     int value = (Integer)jSpinnerHeight.getValue();
338     int skyheight = (Integer)jSpinnerSkyHeight.getValue();
339     if(skyheight < value) {
340         jSpinnerSkyHeight.setValue(value);
341     }
342 }//GEN-LAST:event_jSpinnerHeightStateChanged
343
344 private void jSpinnerSkyHeightStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jSpinnerSkyHeightStateChanged
345     int value =(Integer)jSpinnerSkyHeight.getValue();
346     int height = (Integer)jSpinnerHeight.getValue();
347     if(height > value) {
348         jSpinnerHeight.setValue(value);
349     }
350 }//GEN-LAST:event_jSpinnerSkyHeightStateChanged
351
352 private void enableSkyPanel(boolean b) {
353     jCheckBoxSkyFill.setEnabled(b);
354     jSpinnerSkyHeight.setEnabled(b);
355     jTextFieldSkyTexture.setEnabled(b);
356 }
357
358     /**
359     * @param args the command line arguments
360     */
361     public static void main(String args[]) {
362         java.awt.EventQueue.invokeLater(new Runnable() {
363             public void run() {
364                 new JFrameMain().setVisible(true);
365             }
366         });
367     }
368
369     // Variables declaration - do not modify//GEN-BEGIN:variables
370     private javax.swing.JButton jButtonInput;
371     private javax.swing.JButton jButtonOK;
372     private javax.swing.JButton jButtonOutput;
373     private javax.swing.JCheckBox jCheckBoxDetail;
374     private javax.swing.JCheckBox jCheckBoxSky;
375     private javax.swing.JCheckBox jCheckBoxSkyFill;
376     private javax.swing.JLabel jLabel1;
377     private javax.swing.JLabel jLabel2;
378     private javax.swing.JLabel jLabel3;
379     private javax.swing.JLabel jLabel4;
380     private javax.swing.JLabel jLabel5;
381     private javax.swing.JLabel jLabel6;
382     private javax.swing.JPanel jPanel1;
383     private javax.swing.JPanel jPanel2;
384     private javax.swing.JPanel jPanelSky;
385     private javax.swing.JSpinner jSpinnerHeight;
386     private javax.swing.JSpinner jSpinnerSkyHeight;
387     private javax.swing.JSpinner jSpinnerTextureScale;
388     private javax.swing.JSpinner jSpinnerUnits;
389     private javax.swing.JTextField jTextFieldInput;
390     private javax.swing.JTextField jTextFieldOutput;
391     private javax.swing.JTextField jTextFieldSkyTexture;
392     private javax.swing.JTextField jTextFieldTexture;
393     // End of variables declaration//GEN-END:variables
394
395 }