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(org.jdesktop.layout.GroupLayout.TRAILING, 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, 299, Short.MAX_VALUE)
94 .add(org.jdesktop.layout.GroupLayout.LEADING, jTextFieldInput, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 299, Short.MAX_VALUE))
95 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
96 .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false)
97 .add(org.jdesktop.layout.GroupLayout.TRAILING, jButtonInput, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 142, Short.MAX_VALUE)
98 .add(org.jdesktop.layout.GroupLayout.TRAILING, jButtonOutput, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 142, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
101 jPanel1Layout.setVerticalGroup(
102 jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
103 .add(jPanel1Layout.createSequentialGroup()
104 .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
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)
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))
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(2048, 256, 16384, 1));
133 jSpinnerHeight.addChangeListener(new javax.swing.event.ChangeListener() {
134 public void stateChanged(javax.swing.event.ChangeEvent evt) {
135 jSpinnerHeightStateChanged(evt);
139 jSpinnerTextureScale.setModel(new javax.swing.SpinnerNumberModel(1.0d, 0.25d, 16.0d, 0.25d));
141 jLabel4.setText("Texture scale:");
143 jLabel2.setText("Height for white:");
145 jLabel1.setText("Units per pixel:");
147 jCheckBoxVisBlocker.setSelected(true);
148 jCheckBoxVisBlocker.setText("generate visblockers");
150 org.jdesktop.layout.GroupLayout jPanel2Layout = new org.jdesktop.layout.GroupLayout(jPanel2);
151 jPanel2.setLayout(jPanel2Layout);
152 jPanel2Layout.setHorizontalGroup(
153 jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
154 .add(jPanel2Layout.createSequentialGroup()
156 .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
157 .add(jPanel2Layout.createSequentialGroup()
158 .add(jTextFieldTexture, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 447, Short.MAX_VALUE)
160 .add(jPanel2Layout.createSequentialGroup()
161 .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
163 .add(jPanel2Layout.createSequentialGroup()
164 .add(jCheckBoxDetail)
166 .add(jCheckBoxVisBlocker))
167 .add(jPanel2Layout.createSequentialGroup()
168 .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
171 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
172 .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false)
173 .add(jSpinnerHeight, 0, 0, Short.MAX_VALUE)
175 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
177 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
178 .add(jSpinnerTextureScale, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 89, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)))
181 jPanel2Layout.setVerticalGroup(
182 jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
183 .add(jPanel2Layout.createSequentialGroup()
184 .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
185 .add(jSpinnerUnits, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
188 .add(jSpinnerTextureScale, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
189 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
190 .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
192 .add(jSpinnerHeight, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
193 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
194 .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
195 .add(jCheckBoxDetail)
196 .add(jCheckBoxVisBlocker))
199 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
200 .add(jTextFieldTexture, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
201 .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
204 jPanelSky.setBorder(javax.swing.BorderFactory.createTitledBorder("Sky configuration"));
206 jCheckBoxSky.setSelected(true);
207 jCheckBoxSky.setText("generate a skybox");
208 jCheckBoxSky.addActionListener(new java.awt.event.ActionListener() {
209 public void actionPerformed(java.awt.event.ActionEvent evt) {
210 jCheckBoxSkyActionPerformed(evt);
214 jLabel5.setText("Sky height:");
216 jSpinnerSkyHeight.setModel(new javax.swing.SpinnerNumberModel(Integer.valueOf(2048), Integer.valueOf(256), null, Integer.valueOf(1)));
217 jSpinnerSkyHeight.addChangeListener(new javax.swing.event.ChangeListener() {
218 public void stateChanged(javax.swing.event.ChangeEvent evt) {
219 jSpinnerSkyHeightStateChanged(evt);
223 jCheckBoxSkyFill.setSelected(true);
224 jCheckBoxSkyFill.setText("fill alpha-gaps with sky");
226 jLabel6.setText("Sky texture:");
228 jTextFieldSkyTexture.setText("skies/sky1");
230 org.jdesktop.layout.GroupLayout jPanelSkyLayout = new org.jdesktop.layout.GroupLayout(jPanelSky);
231 jPanelSky.setLayout(jPanelSkyLayout);
232 jPanelSkyLayout.setHorizontalGroup(
233 jPanelSkyLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
234 .add(jPanelSkyLayout.createSequentialGroup()
236 .add(jPanelSkyLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
237 .add(jTextFieldSkyTexture, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 447, Short.MAX_VALUE)
238 .add(jPanelSkyLayout.createSequentialGroup()
241 .add(jCheckBoxSkyFill))
242 .add(jPanelSkyLayout.createSequentialGroup()
244 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
245 .add(jSpinnerSkyHeight, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 82, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
249 jPanelSkyLayout.setVerticalGroup(
250 jPanelSkyLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
251 .add(jPanelSkyLayout.createSequentialGroup()
252 .add(jPanelSkyLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
254 .add(jCheckBoxSkyFill))
255 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
256 .add(jPanelSkyLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
258 .add(jSpinnerSkyHeight, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
259 .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
261 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
262 .add(jTextFieldSkyTexture, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
263 .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
266 org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
267 getContentPane().setLayout(layout);
268 layout.setHorizontalGroup(
269 layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
270 .add(layout.createSequentialGroup()
272 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
273 .add(jPanel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
274 .add(jPanel2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
275 .add(jPanelSky, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
279 layout.setVerticalGroup(
280 layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
281 .add(layout.createSequentialGroup()
283 .add(jPanel1, 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(jPanel2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
286 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
287 .add(jPanelSky, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
288 .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
290 .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
294 }// </editor-fold>//GEN-END:initComponents
296 private void jButtonInputActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonInputActionPerformed
297 JFileChooser fc = new JFileChooser();
298 int ret = fc.showOpenDialog(this);
300 if(ret == fc.APPROVE_OPTION) {
301 File f = fc.getSelectedFile();
303 jTextFieldInput.setText(f.getAbsolutePath());
306 }//GEN-LAST:event_jButtonInputActionPerformed
308 private void jButtonOKActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonOKActionPerformed
309 this.setVisible(false);
310 Parameters p = new Parameters();
311 p.infile = jTextFieldInput.getText();
312 p.outfile = jTextFieldOutput.getText();
313 p.texture = jTextFieldTexture.getText();
314 p.skytexture = jTextFieldSkyTexture.getText();
315 p.pixelsize = (Integer)jSpinnerUnits.getValue();
316 p.height = (Integer)jSpinnerHeight.getValue();
317 p.sky = jCheckBoxSky.isSelected();
318 p.skyfill = jCheckBoxSkyFill.isSelected() && p.sky;
319 p.visblockers = jCheckBoxVisBlocker.isSelected();
320 p.skyheight = (Integer)jSpinnerSkyHeight.getValue();
321 p.texturescale = (Double)jSpinnerTextureScale.getValue();
322 p.detail = jCheckBoxDetail.isSelected();
323 int ret = new MapWriter().writeMap(p);
325 JOptionPane.showMessageDialog(this, "Map successfully generated!", "Success!", JOptionPane.INFORMATION_MESSAGE);
327 JOptionPane.showMessageDialog(this, "Error occured! Oh no!", "Error!", JOptionPane.ERROR_MESSAGE);
331 this.setVisible(true);
332 }//GEN-LAST:event_jButtonOKActionPerformed
334 private void jButtonOutputActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonOutputActionPerformed
335 JFileChooser fc = new JFileChooser();
336 int ret = fc.showOpenDialog(this);
338 if(ret == fc.APPROVE_OPTION) {
339 File f = fc.getSelectedFile();
340 jTextFieldOutput.setText(f.getAbsolutePath());
342 }//GEN-LAST:event_jButtonOutputActionPerformed
344 private void jCheckBoxSkyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBoxSkyActionPerformed
345 enableSkyPanel(jCheckBoxSky.isSelected());
346 }//GEN-LAST:event_jCheckBoxSkyActionPerformed
348 private void jSpinnerHeightStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jSpinnerHeightStateChanged
349 int value = (Integer)jSpinnerHeight.getValue();
350 int skyheight = (Integer)jSpinnerSkyHeight.getValue();
351 if(skyheight < value) {
352 jSpinnerSkyHeight.setValue(value);
354 }//GEN-LAST:event_jSpinnerHeightStateChanged
356 private void jSpinnerSkyHeightStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jSpinnerSkyHeightStateChanged
357 int value =(Integer)jSpinnerSkyHeight.getValue();
358 int height = (Integer)jSpinnerHeight.getValue();
360 jSpinnerHeight.setValue(value);
362 }//GEN-LAST:event_jSpinnerSkyHeightStateChanged
364 private void enableSkyPanel(boolean b) {
365 jCheckBoxSkyFill.setEnabled(b);
366 jSpinnerSkyHeight.setEnabled(b);
367 jTextFieldSkyTexture.setEnabled(b);
371 * @param args the command line arguments
373 public static void main(String args[]) {
374 java.awt.EventQueue.invokeLater(new Runnable() {
376 new JFrameMain().setVisible(true);
381 // Variables declaration - do not modify//GEN-BEGIN:variables
382 private javax.swing.JButton jButtonInput;
383 private javax.swing.JButton jButtonOK;
384 private javax.swing.JButton jButtonOutput;
385 private javax.swing.JCheckBox jCheckBoxDetail;
386 private javax.swing.JCheckBox jCheckBoxSky;
387 private javax.swing.JCheckBox jCheckBoxSkyFill;
388 private javax.swing.JCheckBox jCheckBoxVisBlocker;
389 private javax.swing.JLabel jLabel1;
390 private javax.swing.JLabel jLabel2;
391 private javax.swing.JLabel jLabel3;
392 private javax.swing.JLabel jLabel4;
393 private javax.swing.JLabel jLabel5;
394 private javax.swing.JLabel jLabel6;
395 private javax.swing.JPanel jPanel1;
396 private javax.swing.JPanel jPanel2;
397 private javax.swing.JPanel jPanelSky;
398 private javax.swing.JSpinner jSpinnerHeight;
399 private javax.swing.JSpinner jSpinnerSkyHeight;
400 private javax.swing.JSpinner jSpinnerTextureScale;
401 private javax.swing.JSpinner jSpinnerUnits;
402 private javax.swing.JTextField jTextFieldInput;
403 private javax.swing.JTextField jTextFieldOutput;
404 private javax.swing.JTextField jTextFieldSkyTexture;
405 private javax.swing.JTextField jTextFieldTexture;
406 // End of variables declaration//GEN-END:variables