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
}