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 jCheckBoxVisBlocker = new javax.swing.JCheckBox();
59 jPanelSky = new javax.swing.JPanel();
60 jCheckBoxSky = new javax.swing.JCheckBox();
61 jLabel5 = new javax.swing.JLabel();
62 jSpinnerSkyHeight = new javax.swing.JSpinner();
63 jCheckBoxSkyFill = new javax.swing.JCheckBox();
64 jLabel6 = new javax.swing.JLabel();
65 jTextFieldSkyTexture = new javax.swing.JTextField();
67 setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
70 jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Files"));
72 jButtonInput.setText("Select input file");
73 jButtonInput.addActionListener(new java.awt.event.ActionListener() {
74 public void actionPerformed(java.awt.event.ActionEvent evt) {
75 jButtonInputActionPerformed(evt);
79 jButtonOutput.setText("Select output file");
80 jButtonOutput.addActionListener(new java.awt.event.ActionListener() {
81 public void actionPerformed(java.awt.event.ActionEvent evt) {
82 jButtonOutputActionPerformed(evt);
86 org.jdesktop.layout.GroupLayout jPanel1Layout = new org.jdesktop.layout.GroupLayout(jPanel1);
87 jPanel1.setLayout(jPanel1Layout);
88 jPanel1Layout.setHorizontalGroup(
89 jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
90 .add(jPanel1Layout.createSequentialGroup()
92 .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
93 .add(org.jdesktop.layout.GroupLayout.LEADING, jTextFieldOutput, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 278, Short.MAX_VALUE)
94 .add(org.jdesktop.layout.GroupLayout.LEADING, jTextFieldInput, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 278, Short.MAX_VALUE))
95 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
96 .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
97 .add(org.jdesktop.layout.GroupLayout.TRAILING, jButtonInput, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 120, Short.MAX_VALUE)
98 .add(org.jdesktop.layout.GroupLayout.TRAILING, jButtonOutput, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
101 jPanel1Layout.setVerticalGroup(
102 jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
103 .add(jPanel1Layout.createSequentialGroup()
105 .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
107 .add(jTextFieldInput, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 27, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
108 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
109 .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
111 .add(jTextFieldOutput, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 26, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
112 .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
115 jButtonOK.setText("Start conversion!");
116 jButtonOK.addActionListener(new java.awt.event.ActionListener() {
117 public void actionPerformed(java.awt.event.ActionEvent evt) {
118 jButtonOKActionPerformed(evt);
122 jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Terrain configuration"));
124 jCheckBoxDetail.setSelected(true);
125 jCheckBoxDetail.setText("make detail");
127 jTextFieldTexture.setText("terrain/terrain1");
129 jLabel3.setText("Cover terrain surface with texture:");
131 jSpinnerUnits.setModel(new javax.swing.SpinnerNumberModel(256, 1, 2048, 1));
133 jSpinnerHeight.setModel(new javax.swing.SpinnerNumberModel(1024, 256, 16384, 1));
134 jSpinnerHeight.addChangeListener(new javax.swing.event.ChangeListener() {
135 public void stateChanged(javax.swing.event.ChangeEvent evt) {
136 jSpinnerHeightStateChanged(evt);
140 jSpinnerTextureScale.setModel(new javax.swing.SpinnerNumberModel(0.5d, 0.25d, 16.0d, 0.25d));
142 jLabel4.setText("Texture scale:");
144 jLabel2.setText("Height for white:");
146 jLabel1.setText("Units per pixel:");
148 jCheckBoxVisBlocker.setSelected(true);
149 jCheckBoxVisBlocker.setText("generate visblockers");
151 org.jdesktop.layout.GroupLayout jPanel2Layout = new org.jdesktop.layout.GroupLayout(jPanel2);
152 jPanel2.setLayout(jPanel2Layout);
153 jPanel2Layout.setHorizontalGroup(
154 jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
155 .add(jPanel2Layout.createSequentialGroup()
157 .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
158 .add(jPanel2Layout.createSequentialGroup()
159 .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
162 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
163 .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false)
164 .add(jSpinnerHeight, 0, 0, Short.MAX_VALUE)
166 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
168 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
169 .add(jSpinnerTextureScale, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 96, Short.MAX_VALUE))
171 .add(org.jdesktop.layout.GroupLayout.TRAILING, jTextFieldTexture, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 416, Short.MAX_VALUE)
172 .add(jPanel2Layout.createSequentialGroup()
173 .add(jCheckBoxDetail)
175 .add(jCheckBoxVisBlocker)
176 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)))
179 jPanel2Layout.setVerticalGroup(
180 jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
181 .add(jPanel2Layout.createSequentialGroup()
182 .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
183 .add(jSpinnerUnits, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
186 .add(jSpinnerTextureScale, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
187 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
188 .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
190 .add(jSpinnerHeight, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
191 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
192 .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
193 .add(jCheckBoxDetail)
194 .add(jCheckBoxVisBlocker))
197 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
198 .add(jTextFieldTexture, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
199 .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
202 jPanelSky.setBorder(javax.swing.BorderFactory.createTitledBorder("Sky configuration"));
204 jCheckBoxSky.setSelected(true);
205 jCheckBoxSky.setText("generate a skybox");
206 jCheckBoxSky.addActionListener(new java.awt.event.ActionListener() {
207 public void actionPerformed(java.awt.event.ActionEvent evt) {
208 jCheckBoxSkyActionPerformed(evt);
212 jLabel5.setText("Sky height:");
214 jSpinnerSkyHeight.setModel(new javax.swing.SpinnerNumberModel(Integer.valueOf(1152), Integer.valueOf(256), null, Integer.valueOf(1)));
215 jSpinnerSkyHeight.addChangeListener(new javax.swing.event.ChangeListener() {
216 public void stateChanged(javax.swing.event.ChangeEvent evt) {
217 jSpinnerSkyHeightStateChanged(evt);
221 jCheckBoxSkyFill.setSelected(true);
222 jCheckBoxSkyFill.setText("fill alpha-gaps with sky");
224 jLabel6.setText("Sky texture:");
226 jTextFieldSkyTexture.setText("skies/sky1");
228 org.jdesktop.layout.GroupLayout jPanelSkyLayout = new org.jdesktop.layout.GroupLayout(jPanelSky);
229 jPanelSky.setLayout(jPanelSkyLayout);
230 jPanelSkyLayout.setHorizontalGroup(
231 jPanelSkyLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
232 .add(jPanelSkyLayout.createSequentialGroup()
234 .add(jPanelSkyLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
235 .add(jTextFieldSkyTexture, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 404, Short.MAX_VALUE)
236 .add(jPanelSkyLayout.createSequentialGroup()
239 .add(jCheckBoxSkyFill))
240 .add(jPanelSkyLayout.createSequentialGroup()
242 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
243 .add(jSpinnerSkyHeight, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 82, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
247 jPanelSkyLayout.setVerticalGroup(
248 jPanelSkyLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
249 .add(jPanelSkyLayout.createSequentialGroup()
250 .add(jPanelSkyLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
252 .add(jCheckBoxSkyFill))
253 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
254 .add(jPanelSkyLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
256 .add(jSpinnerSkyHeight, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
257 .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
259 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
260 .add(jTextFieldSkyTexture, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
261 .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
264 org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
265 getContentPane().setLayout(layout);
266 layout.setHorizontalGroup(
267 layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
268 .add(layout.createSequentialGroup()
270 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
271 .add(jPanelSky, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
272 .add(jPanel2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
273 .add(jPanel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
277 layout.setVerticalGroup(
278 layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
279 .add(layout.createSequentialGroup()
281 .add(jPanel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
282 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
283 .add(jPanel2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
284 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
285 .add(jPanelSky, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
286 .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
288 .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
292 }// </editor-fold>//GEN-END:initComponents
294 private void jButtonInputActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonInputActionPerformed
295 JFileChooser fc = new JFileChooser();
296 int ret = fc.showOpenDialog(this);
298 if(ret == fc.APPROVE_OPTION) {
299 File f = fc.getSelectedFile();
301 jTextFieldInput.setText(f.getAbsolutePath());
304 }//GEN-LAST:event_jButtonInputActionPerformed
306 private void jButtonOKActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonOKActionPerformed
307 this.setVisible(false);
308 Parameters p = new Parameters();
309 p.infile = jTextFieldInput.getText();
310 p.outfile = jTextFieldOutput.getText();
311 p.texture = jTextFieldTexture.getText();
312 p.skytexture = jTextFieldSkyTexture.getText();
313 p.pixelsize = (Integer)jSpinnerUnits.getValue();
314 p.height = (Integer)jSpinnerHeight.getValue();
315 p.sky = jCheckBoxSky.isSelected();
316 p.skyfill = jCheckBoxSkyFill.isSelected();
317 p.visblockers = jCheckBoxVisBlocker.isSelected();
318 p.skyheight = (Integer)jSpinnerSkyHeight.getValue();
319 p.texturescale = (Double)jSpinnerTextureScale.getValue();
320 p.detail = jCheckBoxDetail.isSelected();
321 int ret = new MapWriter().writeMap(p);
323 JOptionPane.showMessageDialog(this, "Map successfully generated!", "Success!", JOptionPane.INFORMATION_MESSAGE);
325 JOptionPane.showMessageDialog(this, "Error occured! Oh no!", "Error!", JOptionPane.ERROR_MESSAGE);
329 this.setVisible(true);
330 }//GEN-LAST:event_jButtonOKActionPerformed
332 private void jButtonOutputActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonOutputActionPerformed
333 JFileChooser fc = new JFileChooser();
334 int ret = fc.showOpenDialog(this);
336 if(ret == fc.APPROVE_OPTION) {
337 File f = fc.getSelectedFile();
338 jTextFieldOutput.setText(f.getAbsolutePath());
340 }//GEN-LAST:event_jButtonOutputActionPerformed
342 private void jCheckBoxSkyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBoxSkyActionPerformed
343 enableSkyPanel(jCheckBoxSky.isSelected());
344 }//GEN-LAST:event_jCheckBoxSkyActionPerformed
346 private void jSpinnerHeightStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jSpinnerHeightStateChanged
347 int value = (Integer)jSpinnerHeight.getValue();
348 int skyheight = (Integer)jSpinnerSkyHeight.getValue();
349 if(skyheight < value) {
350 jSpinnerSkyHeight.setValue(value);
352 }//GEN-LAST:event_jSpinnerHeightStateChanged
354 private void jSpinnerSkyHeightStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jSpinnerSkyHeightStateChanged
355 int value =(Integer)jSpinnerSkyHeight.getValue();
356 int height = (Integer)jSpinnerHeight.getValue();
358 jSpinnerHeight.setValue(value);
360 }//GEN-LAST:event_jSpinnerSkyHeightStateChanged
362 private void enableSkyPanel(boolean b) {
363 jCheckBoxSkyFill.setEnabled(b);
364 jSpinnerSkyHeight.setEnabled(b);
365 jTextFieldSkyTexture.setEnabled(b);
369 * @param args the command line arguments
371 public static void main(String args[]) {
372 java.awt.EventQueue.invokeLater(new Runnable() {
374 new JFrameMain().setVisible(true);
379 // Variables declaration - do not modify//GEN-BEGIN:variables
380 private javax.swing.JButton jButtonInput;
381 private javax.swing.JButton jButtonOK;
382 private javax.swing.JButton jButtonOutput;
383 private javax.swing.JCheckBox jCheckBoxDetail;
384 private javax.swing.JCheckBox jCheckBoxSky;
385 private javax.swing.JCheckBox jCheckBoxSkyFill;
386 private javax.swing.JCheckBox jCheckBoxVisBlocker;
387 private javax.swing.JLabel jLabel1;
388 private javax.swing.JLabel jLabel2;
389 private javax.swing.JLabel jLabel3;
390 private javax.swing.JLabel jLabel4;
391 private javax.swing.JLabel jLabel5;
392 private javax.swing.JLabel jLabel6;
393 private javax.swing.JPanel jPanel1;
394 private javax.swing.JPanel jPanel2;
395 private javax.swing.JPanel jPanelSky;
396 private javax.swing.JSpinner jSpinnerHeight;
397 private javax.swing.JSpinner jSpinnerSkyHeight;
398 private javax.swing.JSpinner jSpinnerTextureScale;
399 private javax.swing.JSpinner jSpinnerUnits;
400 private javax.swing.JTextField jTextFieldInput;
401 private javax.swing.JTextField jTextFieldOutput;
402 private javax.swing.JTextField jTextFieldSkyTexture;
403 private javax.swing.JTextField jTextFieldTexture;
404 // End of variables declaration//GEN-END:variables