/* * 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; } }