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));
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(0.5d, 0.25d, 16.0d, 0.25d));
141 jLabel4.setText("Texture scale:");
143 jLabel2.setText("Height for white:");
145 jLabel1.setText("Units per pixel:");
147 javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
148 jPanel2.setLayout(jPanel2Layout);
149 jPanel2Layout.setHorizontalGroup(
150 jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
151 .addGroup(jPanel2Layout.createSequentialGroup()
153 .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
154 .addGroup(jPanel2Layout.createSequentialGroup()
155 .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
156 .addComponent(jLabel1)
157 .addComponent(jLabel2))
158 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
159 .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
160 .addComponent(jSpinnerHeight, 0, 0, Short.MAX_VALUE)
161 .addComponent(jSpinnerUnits))
163 .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
164 .addGroup(jPanel2Layout.createSequentialGroup()
165 .addComponent(jLabel4)
166 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
167 .addComponent(jSpinnerTextureScale))
168 .addComponent(jCheckBoxDetail)))
169 .addComponent(jLabel3)
170 .addComponent(jTextFieldTexture, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 404, Short.MAX_VALUE))
173 jPanel2Layout.setVerticalGroup(
174 jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
175 .addGroup(jPanel2Layout.createSequentialGroup()
176 .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
177 .addComponent(jSpinnerUnits, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
178 .addComponent(jLabel1)
179 .addComponent(jLabel4)
180 .addComponent(jSpinnerTextureScale, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
181 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
182 .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
183 .addComponent(jLabel2)
184 .addComponent(jSpinnerHeight, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
185 .addComponent(jCheckBoxDetail))
187 .addComponent(jLabel3)
188 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
189 .addComponent(jTextFieldTexture, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
190 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
193 jPanelSky.setBorder(javax.swing.BorderFactory.createTitledBorder("Sky configuration"));
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);
203 jLabel5.setText("Sky height:");
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);
212 jCheckBoxSkyFill.setSelected(true);
213 jCheckBoxSkyFill.setText("fill alpha-gaps with sky");
215 jLabel6.setText("Sky texture:");
217 jTextFieldSkyTexture.setText("skies/sky1");
219 javax.swing.GroupLayout jPanelSkyLayout = new javax.swing.GroupLayout(jPanelSky);
220 jPanelSky.setLayout(jPanelSkyLayout);
221 jPanelSkyLayout.setHorizontalGroup(
222 jPanelSkyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
223 .addGroup(jPanelSkyLayout.createSequentialGroup()
225 .addGroup(jPanelSkyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
226 .addComponent(jTextFieldSkyTexture, javax.swing.GroupLayout.DEFAULT_SIZE, 404, Short.MAX_VALUE)
227 .addGroup(jPanelSkyLayout.createSequentialGroup()
228 .addComponent(jCheckBoxSky)
230 .addComponent(jCheckBoxSkyFill))
231 .addGroup(jPanelSkyLayout.createSequentialGroup()
232 .addComponent(jLabel5)
233 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
234 .addComponent(jSpinnerSkyHeight, javax.swing.GroupLayout.PREFERRED_SIZE, 82, javax.swing.GroupLayout.PREFERRED_SIZE))
235 .addComponent(jLabel6))
238 jPanelSkyLayout.setVerticalGroup(
239 jPanelSkyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
240 .addGroup(jPanelSkyLayout.createSequentialGroup()
241 .addGroup(jPanelSkyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
242 .addComponent(jCheckBoxSky)
243 .addComponent(jCheckBoxSkyFill))
244 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
245 .addGroup(jPanelSkyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
246 .addComponent(jLabel5)
247 .addComponent(jSpinnerSkyHeight, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
248 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
249 .addComponent(jLabel6)
250 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
251 .addComponent(jTextFieldSkyTexture, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
252 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
255 javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
256 getContentPane().setLayout(layout);
257 layout.setHorizontalGroup(
258 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
259 .addGroup(layout.createSequentialGroup()
261 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
262 .addComponent(jPanelSky, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
263 .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
264 .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
265 .addComponent(jButtonOK))
268 layout.setVerticalGroup(
269 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
270 .addGroup(layout.createSequentialGroup()
272 .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
273 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
274 .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
275 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
276 .addComponent(jPanelSky, javax.swing.GroupLayout.PREFERRED_SIZE, 157, javax.swing.GroupLayout.PREFERRED_SIZE)
277 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
278 .addComponent(jButtonOK)
279 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
283 }// </editor-fold>//GEN-END:initComponents
285 private void jButtonInputActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonInputActionPerformed
286 JFileChooser fc = new JFileChooser();
287 int ret = fc.showOpenDialog(this);
289 if(ret == fc.APPROVE_OPTION) {
290 File f = fc.getSelectedFile();
292 jTextFieldInput.setText(f.getAbsolutePath());
295 }//GEN-LAST:event_jButtonInputActionPerformed
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);
313 JOptionPane.showMessageDialog(this, "Map successfully generated!", "Success!", JOptionPane.INFORMATION_MESSAGE);
315 JOptionPane.showMessageDialog(this, "Error occured! Oh no!", "Error!", JOptionPane.ERROR_MESSAGE);
319 this.setVisible(true);
320 }//GEN-LAST:event_jButtonOKActionPerformed
322 private void jButtonOutputActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonOutputActionPerformed
323 JFileChooser fc = new JFileChooser();
324 int ret = fc.showOpenDialog(this);
326 if(ret == fc.APPROVE_OPTION) {
327 File f = fc.getSelectedFile();
328 jTextFieldOutput.setText(f.getAbsolutePath());
330 }//GEN-LAST:event_jButtonOutputActionPerformed
332 private void jCheckBoxSkyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBoxSkyActionPerformed
333 enableSkyPanel(jCheckBoxSky.isSelected());
334 }//GEN-LAST:event_jCheckBoxSkyActionPerformed
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);
342 }//GEN-LAST:event_jSpinnerHeightStateChanged
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();
348 jSpinnerHeight.setValue(value);
350 }//GEN-LAST:event_jSpinnerSkyHeightStateChanged
352 private void enableSkyPanel(boolean b) {
353 jCheckBoxSkyFill.setEnabled(b);
354 jSpinnerSkyHeight.setEnabled(b);
355 jTextFieldSkyTexture.setEnabled(b);
359 * @param args the command line arguments
361 public static void main(String args[]) {
362 java.awt.EventQueue.invokeLater(new Runnable() {
364 new JFrameMain().setVisible(true);
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