4 * Created on 17. Mai 2008, 15:02
10 import javax.swing.JFileChooser;
11 import javax.swing.JOptionPane;
17 public class JFrameMain extends javax.swing.JFrame {
19 /** Creates new form JFrameMain */
22 String testinput = "/mnt/data/nexuizsvn/nexuiz/trunk/tools/ImgToMap/test1.png";
23 String testoutput = "/tmp/test.map";
25 if(new File(testinput).exists()) {
26 jTextFieldInput.setText(testinput);
27 jTextFieldOutput.setText(testoutput);
30 enableSkyPanel(jCheckBoxSky.isSelected());
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.
38 @SuppressWarnings("unchecked")
39 // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
40 private void initComponents() {
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();
66 setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
69 jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Files"));
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);
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);
85 javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
86 jPanel1.setLayout(jPanel1Layout);
87 jPanel1Layout.setHorizontalGroup(
88 jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
89 .addGroup(jPanel1Layout.createSequentialGroup()
91 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
92 .addComponent(jTextFieldOutput, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 278, Short.MAX_VALUE)
93 .addComponent(jTextFieldInput, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 278, Short.MAX_VALUE))
94 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
95 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
96 .addComponent(jButtonInput, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 120, Short.MAX_VALUE)
97 .addComponent(jButtonOutput, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
100 jPanel1Layout.setVerticalGroup(
101 jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
102 .addGroup(jPanel1Layout.createSequentialGroup()
104 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
105 .addComponent(jButtonInput)
106 .addComponent(jTextFieldInput, javax.swing.GroupLayout.PREFERRED_SIZE, 27, javax.swing.GroupLayout.PREFERRED_SIZE))
107 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
108 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
109 .addComponent(jButtonOutput)
110 .addComponent(jTextFieldOutput, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE))
111 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
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);
121 jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Terrain configuration"));
123 jCheckBoxDetail.setSelected(true);
124 jCheckBoxDetail.setText("make detail");
126 jTextFieldTexture.setText("terrain/terrain1");
128 jLabel3.setText("Cover terrain surface with texture:");
130 jSpinnerUnits.setModel(new javax.swing.SpinnerNumberModel(256, 1, 2048, 1));
132 jSpinnerHeight.setModel(new javax.swing.SpinnerNumberModel(1024, 256, 16384, 1));
134 jSpinnerTextureScale.setModel(new javax.swing.SpinnerNumberModel(0.5d, 0.25d, 16.0d, 0.25d));
136 jLabel4.setText("Texture scale:");
138 jLabel2.setText("Height for white:");
140 jLabel1.setText("Units per pixel:");
142 javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
143 jPanel2.setLayout(jPanel2Layout);
144 jPanel2Layout.setHorizontalGroup(
145 jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
146 .addGroup(jPanel2Layout.createSequentialGroup()
148 .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
149 .addGroup(jPanel2Layout.createSequentialGroup()
150 .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
151 .addComponent(jLabel1)
152 .addComponent(jLabel2))
153 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
154 .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
155 .addComponent(jSpinnerHeight, 0, 0, Short.MAX_VALUE)
156 .addComponent(jSpinnerUnits))
158 .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
159 .addGroup(jPanel2Layout.createSequentialGroup()
160 .addComponent(jLabel4)
161 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
162 .addComponent(jSpinnerTextureScale))
163 .addComponent(jCheckBoxDetail)))
164 .addComponent(jLabel3)
165 .addComponent(jTextFieldTexture, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 404, Short.MAX_VALUE))
168 jPanel2Layout.setVerticalGroup(
169 jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
170 .addGroup(jPanel2Layout.createSequentialGroup()
171 .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
172 .addComponent(jSpinnerUnits, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
173 .addComponent(jLabel1)
174 .addComponent(jLabel4)
175 .addComponent(jSpinnerTextureScale, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
176 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
177 .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
178 .addComponent(jLabel2)
179 .addComponent(jSpinnerHeight, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
180 .addComponent(jCheckBoxDetail))
182 .addComponent(jLabel3)
183 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
184 .addComponent(jTextFieldTexture, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
185 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
188 jPanelSky.setBorder(javax.swing.BorderFactory.createTitledBorder("Sky configuration"));
190 jCheckBoxSky.setSelected(true);
191 jCheckBoxSky.setText("generate a skybox");
192 jCheckBoxSky.addActionListener(new java.awt.event.ActionListener() {
193 public void actionPerformed(java.awt.event.ActionEvent evt) {
194 jCheckBoxSkyActionPerformed(evt);
198 jLabel5.setText("Sky height:");
200 jSpinnerSkyHeight.setModel(new javax.swing.SpinnerNumberModel(Integer.valueOf(1152), Integer.valueOf(256), null, Integer.valueOf(1)));
202 jCheckBoxSkyFill.setSelected(true);
203 jCheckBoxSkyFill.setText("fill alpha-gaps with sky");
205 jLabel6.setText("Sky texture:");
207 jTextFieldSkyTexture.setText("skies/sky1");
209 javax.swing.GroupLayout jPanelSkyLayout = new javax.swing.GroupLayout(jPanelSky);
210 jPanelSky.setLayout(jPanelSkyLayout);
211 jPanelSkyLayout.setHorizontalGroup(
212 jPanelSkyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
213 .addGroup(jPanelSkyLayout.createSequentialGroup()
215 .addGroup(jPanelSkyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
216 .addComponent(jTextFieldSkyTexture, javax.swing.GroupLayout.DEFAULT_SIZE, 404, Short.MAX_VALUE)
217 .addGroup(jPanelSkyLayout.createSequentialGroup()
218 .addComponent(jCheckBoxSky)
220 .addComponent(jCheckBoxSkyFill))
221 .addGroup(jPanelSkyLayout.createSequentialGroup()
222 .addComponent(jLabel5)
223 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
224 .addComponent(jSpinnerSkyHeight, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
225 .addComponent(jLabel6))
228 jPanelSkyLayout.setVerticalGroup(
229 jPanelSkyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
230 .addGroup(jPanelSkyLayout.createSequentialGroup()
231 .addGroup(jPanelSkyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
232 .addComponent(jCheckBoxSky)
233 .addComponent(jCheckBoxSkyFill))
234 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
235 .addGroup(jPanelSkyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
236 .addComponent(jLabel5)
237 .addComponent(jSpinnerSkyHeight, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
238 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
239 .addComponent(jLabel6)
240 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
241 .addComponent(jTextFieldSkyTexture, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
242 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
245 javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
246 getContentPane().setLayout(layout);
247 layout.setHorizontalGroup(
248 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
249 .addGroup(layout.createSequentialGroup()
250 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
251 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
252 .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
254 .addComponent(jPanelSky, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
255 .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
257 .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
258 .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
260 .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
261 .addGroup(layout.createSequentialGroup()
263 .addComponent(jButtonOK)))
266 layout.setVerticalGroup(
267 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
268 .addGroup(layout.createSequentialGroup()
270 .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
271 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
272 .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
273 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
274 .addComponent(jPanelSky, javax.swing.GroupLayout.PREFERRED_SIZE, 157, javax.swing.GroupLayout.PREFERRED_SIZE)
275 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
276 .addComponent(jButtonOK)
277 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
281 }// </editor-fold>//GEN-END:initComponents
283 private void jButtonInputActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonInputActionPerformed
284 JFileChooser fc = new JFileChooser();
285 int ret = fc.showOpenDialog(this);
287 if(ret == fc.APPROVE_OPTION) {
288 File f = fc.getSelectedFile();
290 jTextFieldInput.setText(f.getAbsolutePath());
293 }//GEN-LAST:event_jButtonInputActionPerformed
295 private void jButtonOKActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonOKActionPerformed
296 this.setVisible(false);
297 Parameters p = new Parameters();
298 p.infile = jTextFieldInput.getText();
299 p.outfile = jTextFieldOutput.getText();
300 p.texture = jTextFieldTexture.getText();
301 p.skytexture = jTextFieldSkyTexture.getText();
302 p.pixelsize = (Integer)jSpinnerUnits.getValue();
303 p.height = (Integer)jSpinnerHeight.getValue();
304 p.sky = jCheckBoxSky.isSelected();
305 p.skyfill = jCheckBoxSkyFill.isSelected();
306 p.skyheight = (Integer)jSpinnerSkyHeight.getValue();
307 p.texturescale = (Double)jSpinnerTextureScale.getValue();
308 p.detail = jCheckBoxDetail.isSelected();
309 int ret = new MapWriter().writeMap(p);
311 JOptionPane.showMessageDialog(this, "Map successfully generated!", "Success!", JOptionPane.INFORMATION_MESSAGE);
313 JOptionPane.showMessageDialog(this, "Error occured! Oh no!", "Error!", JOptionPane.ERROR_MESSAGE);
317 this.setVisible(true);
318 }//GEN-LAST:event_jButtonOKActionPerformed
320 private void jButtonOutputActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonOutputActionPerformed
321 JFileChooser fc = new JFileChooser();
322 int ret = fc.showOpenDialog(this);
324 if(ret == fc.APPROVE_OPTION) {
325 File f = fc.getSelectedFile();
326 jTextFieldOutput.setText(f.getAbsolutePath());
328 }//GEN-LAST:event_jButtonOutputActionPerformed
330 private void jCheckBoxSkyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBoxSkyActionPerformed
331 enableSkyPanel(jCheckBoxSky.isSelected());
332 }//GEN-LAST:event_jCheckBoxSkyActionPerformed
334 private void enableSkyPanel(boolean b) {
335 jCheckBoxSkyFill.setEnabled(b);
336 jSpinnerSkyHeight.setEnabled(b);
337 jTextFieldSkyTexture.setEnabled(b);
341 * @param args the command line arguments
343 public static void main(String args[]) {
344 java.awt.EventQueue.invokeLater(new Runnable() {
346 new JFrameMain().setVisible(true);
351 // Variables declaration - do not modify//GEN-BEGIN:variables
352 private javax.swing.JButton jButtonInput;
353 private javax.swing.JButton jButtonOK;
354 private javax.swing.JButton jButtonOutput;
355 private javax.swing.JCheckBox jCheckBoxDetail;
356 private javax.swing.JCheckBox jCheckBoxSky;
357 private javax.swing.JCheckBox jCheckBoxSkyFill;
358 private javax.swing.JLabel jLabel1;
359 private javax.swing.JLabel jLabel2;
360 private javax.swing.JLabel jLabel3;
361 private javax.swing.JLabel jLabel4;
362 private javax.swing.JLabel jLabel5;
363 private javax.swing.JLabel jLabel6;
364 private javax.swing.JPanel jPanel1;
365 private javax.swing.JPanel jPanel2;
366 private javax.swing.JPanel jPanelSky;
367 private javax.swing.JSpinner jSpinnerHeight;
368 private javax.swing.JSpinner jSpinnerSkyHeight;
369 private javax.swing.JSpinner jSpinnerTextureScale;
370 private javax.swing.JSpinner jSpinnerUnits;
371 private javax.swing.JTextField jTextFieldInput;
372 private javax.swing.JTextField jTextFieldOutput;
373 private javax.swing.JTextField jTextFieldSkyTexture;
374 private javax.swing.JTextField jTextFieldTexture;
375 // End of variables declaration//GEN-END:variables