package tk.amberide.ide.gui.dialogs; import tk.amberide.Amber; import tk.amberide.engine.data.map.Layer; import tk.amberide.engine.data.map.LevelMap; import tk.amberide.engine.data.map.codec.Codec; import tk.amberide.ide.gui.misc.ErrorHandler; import tk.amberide.ide.swing.Dialogs; import java.io.DataOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import javax.swing.JOptionPane; /** * @author Tudor */ public class NewMapDialog extends javax.swing.JDialog { private File dir; /** * Creates new form NewMapDialog */ public NewMapDialog(java.awt.Frame parent, File dir) { super(parent); initComponents(); this.dir = dir; setTitle("New map..."); } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { createButton = new javax.swing.JButton(); cancelButton = new javax.swing.JButton(); mapSizeGroup = new javax.swing.JPanel(); mapWidthSpinner = new javax.swing.JSpinner(); mapWidthLabel = new javax.swing.JLabel(); mapHeightLabel = new javax.swing.JLabel(); mapHeightSpinner = new javax.swing.JSpinner(); mapGroup = new javax.swing.JPanel(); nameLabel = new javax.swing.JLabel(); nameField = new tk.amberide.ide.swing.textbox.HintTextField(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR)); setModal(true); setResizable(false); createButton.setText("Create"); createButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { createButtonActionPerformed(evt); } }); cancelButton.setText("Cancel"); cancelButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cancelButtonActionPerformed(evt); } }); mapSizeGroup.setBorder(javax.swing.BorderFactory.createTitledBorder("Map size")); mapWidthSpinner.setModel(new javax.swing.SpinnerNumberModel(Integer.valueOf(20), Integer.valueOf(1), null, Integer.valueOf(1))); mapWidthSpinner.setEditor(new javax.swing.JSpinner.NumberEditor(mapWidthSpinner, "")); mapWidthLabel.setText("Width:"); mapHeightLabel.setText("Height:"); mapHeightSpinner.setModel(new javax.swing.SpinnerNumberModel(Integer.valueOf(20), Integer.valueOf(1), null, Integer.valueOf(1))); javax.swing.GroupLayout mapSizeGroupLayout = new javax.swing.GroupLayout(mapSizeGroup); mapSizeGroup.setLayout(mapSizeGroupLayout); mapSizeGroupLayout.setHorizontalGroup( mapSizeGroupLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(mapSizeGroupLayout.createSequentialGroup() .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(mapSizeGroupLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(mapWidthLabel) .addComponent(mapHeightLabel)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(mapSizeGroupLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(mapWidthSpinner) .addComponent(mapHeightSpinner, javax.swing.GroupLayout.DEFAULT_SIZE, 61, Short.MAX_VALUE))) ); mapSizeGroupLayout.setVerticalGroup( mapSizeGroupLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(mapSizeGroupLayout.createSequentialGroup() .addGap(6, 6, 6) .addGroup(mapSizeGroupLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(mapWidthLabel) .addComponent(mapWidthSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(mapSizeGroupLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(mapHeightLabel) .addComponent(mapHeightSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(3, 3, 3)) ); mapGroup.setBorder(javax.swing.BorderFactory.createTitledBorder("Map")); nameLabel.setText("Name:"); nameField.setHint("Type in map name..."); javax.swing.GroupLayout mapGroupLayout = new javax.swing.GroupLayout(mapGroup); mapGroup.setLayout(mapGroupLayout); mapGroupLayout.setHorizontalGroup( mapGroupLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(mapGroupLayout.createSequentialGroup() .addContainerGap() .addComponent(nameLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(nameField, javax.swing.GroupLayout.DEFAULT_SIZE, 112, Short.MAX_VALUE) .addContainerGap()) ); mapGroupLayout.setVerticalGroup( mapGroupLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(mapGroupLayout.createSequentialGroup() .addGap(3, 3, 3) .addGroup(mapGroupLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(nameLabel) .addComponent(nameField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(6, 6, 6)) ); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addGap(0, 0, Short.MAX_VALUE) .addComponent(createButton) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(cancelButton)) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(mapGroup, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(mapSizeGroup, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(0, 0, Short.MAX_VALUE))) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap() .addComponent(mapGroup, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(mapSizeGroup, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 7, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(cancelButton) .addComponent(createButton)) .addGap(6, 6, 6)) ); pack(); setLocationRelativeTo(null); }// </editor-fold>//GEN-END:initComponents private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed dispose(); }//GEN-LAST:event_cancelButtonActionPerformed private void createButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_createButtonActionPerformed File output = new File(dir, nameField.getText() + ".m"); if (output.exists() && Dialogs.confirmDialog() .setTitle("Overwrite map?") .setMessage("Map already exists. Overwrite it?") .setOptionType(JOptionPane.YES_NO_CANCEL_OPTION) .setMessageType(JOptionPane.QUESTION_MESSAGE).show() != JOptionPane.YES_OPTION) { return; } try { if (output.createNewFile()) { LevelMap map = new LevelMap( (Integer) mapWidthSpinner.getValue(), (Integer) mapHeightSpinner.getValue()); map.addLayer(new Layer( "background", map)); FileOutputStream fos = new FileOutputStream(output); Codec.CODECS.get(Codec.CURRENT_VERSION).compileMap(map, new DataOutputStream(fos)); Amber.openFileTab(output); fos.flush(); fos.close(); } else { throw new IOException("could not create file"); } dispose(); } catch (Exception ex) { ErrorHandler.alert(ex); } }//GEN-LAST:event_createButtonActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton cancelButton; private javax.swing.JButton createButton; private javax.swing.JPanel mapGroup; private javax.swing.JLabel mapHeightLabel; private javax.swing.JSpinner mapHeightSpinner; private javax.swing.JPanel mapSizeGroup; private javax.swing.JLabel mapWidthLabel; private javax.swing.JSpinner mapWidthSpinner; private tk.amberide.ide.swing.textbox.HintTextField nameField; private javax.swing.JLabel nameLabel; // End of variables declaration//GEN-END:variables }