/*
* CustomModeDialog.java
*
* Created on July 30, 2007, 8:27 PM
*/
package editor;
import editor.mapmode.AdvancedCustomCountryMode;
import editor.mapmode.AdvancedCustomMode;
import editor.mapmode.CustomCountryMode;
import editor.mapmode.CustomMode;
import editor.mapmode.MapMode;
import javax.swing.DefaultListModel;
/**
*
* @author Michael Myers
* @since 0.5pre3
*/
public class CustomModeDialog extends javax.swing.JDialog {
private boolean closedOK = false;
/** Creates new form CustomModeDialog */
public CustomModeDialog(java.awt.Frame parent) {
super(parent, true);
initComponents();
setLocationRelativeTo(parent);
}
/** 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.
*/
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
private void initComponents() {
javax.swing.JPanel buttonPanel;
java.awt.GridBagConstraints gridBagConstraints;
javax.swing.JLabel jLabel1;
javax.swing.JLabel jLabel2;
javax.swing.JPanel jPanel1;
javax.swing.JPanel jPanel2;
javax.swing.JPanel jPanel3;
javax.swing.JPanel jPanel4;
javax.swing.JPanel jPanel5;
javax.swing.JPanel jPanel6;
javax.swing.JScrollPane jScrollPane1;
buttonPanel = new javax.swing.JPanel();
okButton = new javax.swing.JButton();
cancelButton = new javax.swing.JButton();
jPanel1 = new javax.swing.JPanel();
jPanel6 = new javax.swing.JPanel();
countriesCheckBox = new javax.swing.JCheckBox();
jPanel3 = new javax.swing.JPanel();
jPanel4 = new javax.swing.JPanel();
jLabel2 = new javax.swing.JLabel();
newValueTextField = new javax.swing.JTextField();
jScrollPane1 = new javax.swing.JScrollPane();
propValueList = new javax.swing.JList();
jPanel5 = new javax.swing.JPanel();
addButton = new javax.swing.JButton();
removeButton = new javax.swing.JButton();
jPanel2 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
propNameField = new javax.swing.JTextField();
FormListener formListener = new FormListener();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("Customize map mode");
okButton.setText("OK");
okButton.addActionListener(formListener);
buttonPanel.add(okButton);
cancelButton.setText("Cancel");
cancelButton.addActionListener(formListener);
buttonPanel.add(cancelButton);
getContentPane().add(buttonPanel, java.awt.BorderLayout.SOUTH);
jPanel6.setLayout(new java.awt.BorderLayout(5, 5));
countriesCheckBox.setText("Countries");
countriesCheckBox.setToolTipText("If selected, the map mode will highlight provinces based on properties of the owning country, rather than of the province itself.");
countriesCheckBox.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
countriesCheckBox.setMargin(new java.awt.Insets(0, 0, 0, 0));
jPanel6.add(countriesCheckBox, java.awt.BorderLayout.SOUTH);
jPanel3.setLayout(new java.awt.BorderLayout(5, 5));
jPanel4.setLayout(new java.awt.GridBagLayout());
jLabel2.setText("Property value(s):");
jPanel4.add(jLabel2, new java.awt.GridBagConstraints());
newValueTextField.addActionListener(formListener);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 0.8;
gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 0);
jPanel4.add(newValueTextField, gridBagConstraints);
jPanel3.add(jPanel4, java.awt.BorderLayout.NORTH);
propValueList.setModel(new DefaultListModel());
jScrollPane1.setViewportView(propValueList);
jPanel3.add(jScrollPane1, java.awt.BorderLayout.CENTER);
jPanel5.setLayout(new java.awt.GridBagLayout());
addButton.setText("Add");
addButton.addActionListener(formListener);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
jPanel5.add(addButton, gridBagConstraints);
removeButton.setText("Remove selected");
removeButton.setMargin(new java.awt.Insets(2, 6, 2, 6));
removeButton.addActionListener(formListener);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
jPanel5.add(removeButton, gridBagConstraints);
jPanel3.add(jPanel5, java.awt.BorderLayout.EAST);
jPanel6.add(jPanel3, java.awt.BorderLayout.CENTER);
jPanel2.setLayout(new java.awt.GridBagLayout());
jLabel1.setText("Property name:");
jPanel2.add(jLabel1, new java.awt.GridBagConstraints());
propNameField.setText(" ");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 0.8;
gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 0);
jPanel2.add(propNameField, gridBagConstraints);
jPanel6.add(jPanel2, java.awt.BorderLayout.NORTH);
jPanel1.add(jPanel6);
getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);
pack();
}
// Code for dispatching events from components to event handlers.
private class FormListener implements java.awt.event.ActionListener {
FormListener() {}
public void actionPerformed(java.awt.event.ActionEvent evt) {
if (evt.getSource() == addButton) {
CustomModeDialog.this.addButtonActionPerformed(evt);
}
else if (evt.getSource() == removeButton) {
CustomModeDialog.this.removeButtonActionPerformed(evt);
}
else if (evt.getSource() == cancelButton) {
CustomModeDialog.this.cancelButtonActionPerformed(evt);
}
else if (evt.getSource() == okButton) {
CustomModeDialog.this.okButtonActionPerformed(evt);
}
else if (evt.getSource() == newValueTextField) {
CustomModeDialog.this.newValueTextFieldActionPerformed(evt);
}
}
}// </editor-fold>//GEN-END:initComponents
private void newValueTextFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_newValueTextFieldActionPerformed
addButton.doClick();
}//GEN-LAST:event_newValueTextFieldActionPerformed
private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed
closedOK = true;
dispose();
}//GEN-LAST:event_okButtonActionPerformed
private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed
dispose();
}//GEN-LAST:event_cancelButtonActionPerformed
private void removeButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_removeButtonActionPerformed
for (Object obj : propValueList.getSelectedValues()) {
((DefaultListModel) propValueList.getModel()).removeElement(obj);
}
}//GEN-LAST:event_removeButtonActionPerformed
private void addButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addButtonActionPerformed
((DefaultListModel) propValueList.getModel()).addElement(newValueTextField.getText());
newValueTextField.requestFocusInWindow();
newValueTextField.selectAll();
}//GEN-LAST:event_addButtonActionPerformed
// /**
// * @param args the command line arguments
// */
// public static void main(String args[]) {
// java.awt.EventQueue.invokeLater(new Runnable() {
// public void run() {
// new CustomModeDialog(new javax.swing.JFrame(), true).setVisible(true);
// }
// });
// }
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton addButton;
private javax.swing.JButton cancelButton;
private javax.swing.JCheckBox countriesCheckBox;
private javax.swing.JTextField newValueTextField;
private javax.swing.JButton okButton;
private javax.swing.JTextField propNameField;
private javax.swing.JList propValueList;
private javax.swing.JButton removeButton;
// End of variables declaration//GEN-END:variables
public MapMode getMapMode() {
final String name = propNameField.getText().trim();
String value = null;
String pattern = null;
if (propValueList.getModel().getSize() == 0) {
if (newValueTextField.getText().length() == 0)
return null;
value = newValueTextField.getText();
} else if (propValueList.getModel().getSize() == 1) {
value = (String) propValueList.getModel().getElementAt(0);
} else {
final StringBuilder patternBuilder = new StringBuilder("(");
final int size = propValueList.getModel().getSize();
for (int i = 0; i < size; i++) {
patternBuilder.append((String) propValueList.getModel().getElementAt(i));
if (i < size-1)
patternBuilder.append('|');
}
pattern = patternBuilder.append(')').toString();
}
if (countriesCheckBox.isSelected()) {
if (value != null)
return new CustomCountryMode(name, value);
else
return new AdvancedCustomCountryMode(name, pattern);
} else {
if (value != null)
return new CustomMode(name, value);
else
return new AdvancedCustomMode(name, pattern);
}
}
public static MapMode showDialog(java.awt.Frame parent) {
CustomModeDialog dialog = new CustomModeDialog(parent);
dialog.setVisible(true);
if (dialog.closedOK)
return dialog.getMapMode();
return null;
}
}