// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.plugins.czechaddress.gui.databaseeditors; import javax.swing.DefaultComboBoxModel; import javax.swing.GroupLayout; import org.openstreetmap.josm.Main; import org.openstreetmap.josm.gui.ExtendedDialog; import org.openstreetmap.josm.plugins.czechaddress.addressdatabase.AddressElement; import org.openstreetmap.josm.plugins.czechaddress.addressdatabase.House; import org.openstreetmap.josm.plugins.czechaddress.addressdatabase.Street; import org.openstreetmap.josm.plugins.czechaddress.addressdatabase.Suburb; import org.openstreetmap.josm.plugins.czechaddress.gui.utils.UniversalListRenderer; import org.openstreetmap.josm.tools.ImageProvider; /** * * @author radek */ public class SuburbEditor extends ExtendedDialog { private Suburb suburb = null; private AddressElement parent = null; public SuburbEditor(Suburb suburb) { super(Main.parent, "Upravit městskou čtvrť", new String[] {"OK", "Zrušit"}, true); initComponents(); this.suburb = suburb; this.parent = suburb.getParent(); nameField.setText(suburb.getName()); if (parent != null) parentField.setText(parent.getName()); else parentField.setEnabled(false); parentEditButton.setIcon(ImageProvider.get("actions", "edit.png")); parentEditButton.setText(""); parentEditButton.setEnabled(EditorFactory.isEditable(parent)); houseList.setModel(new DefaultComboBoxModel<>(suburb.getHouses().toArray(new House[0]))); houseList.setCellRenderer(new UniversalListRenderer()); houseEditButton.setIcon(ImageProvider.get("actions", "edit.png")); houseEditButton.setText(""); houseListChanged(null); streetList.setModel(new DefaultComboBoxModel<>(suburb.getStreets().toArray(new Street[0]))); streetList.setCellRenderer(new UniversalListRenderer()); streetEditButton.setIcon(ImageProvider.get("actions", "edit.png")); streetEditButton.setText(""); streetListChanged(null); // And finalize initializing the form. setContent(mainPanel); this.setButtonIcons(new String[] {"ok.png", "cancel.png"}); setDefaultButton(1); setCancelButton(2); setupDialog(); } public String getSuburbName() { return nameField.getText(); } /** 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() { mainPanel = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); jTextField1 = new javax.swing.JTextField(); parentField = new javax.swing.JTextField(); jLabel2 = new javax.swing.JLabel(); nameField = new javax.swing.JTextField(); jLabel3 = new javax.swing.JLabel(); jScrollPane1 = new javax.swing.JScrollPane(); houseList = new javax.swing.JList<>(); parentEditButton = new javax.swing.JButton(); houseEditButton = new javax.swing.JButton(); jScrollPane2 = new javax.swing.JScrollPane(); streetList = new javax.swing.JList<>(); streetEditButton = new javax.swing.JButton(); jLabel4 = new javax.swing.JLabel(); setLayout(new java.awt.GridLayout()); jLabel1.setText("Rodič:"); jTextField1.setText("jTextField1"); parentField.setEditable(false); jLabel2.setText("Jméno:"); jLabel3.setText("Domy:"); houseList.addListSelectionListener(new javax.swing.event.ListSelectionListener() { @Override public void valueChanged(javax.swing.event.ListSelectionEvent evt) { houseListChanged(evt); } }); jScrollPane1.setViewportView(houseList); parentEditButton.setText(" "); parentEditButton.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(java.awt.event.ActionEvent evt) { parentEditButtonActionPerformed(evt); } }); houseEditButton.setText(" "); houseEditButton.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(java.awt.event.ActionEvent evt) { houseEditButtonActionPerformed(evt); } }); streetList.addListSelectionListener(new javax.swing.event.ListSelectionListener() { @Override public void valueChanged(javax.swing.event.ListSelectionEvent evt) { streetListChanged(evt); } }); jScrollPane2.setViewportView(streetList); streetEditButton.setText(" "); streetEditButton.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(java.awt.event.ActionEvent evt) { streetEditButtonActionPerformed(evt); } }); jLabel4.setText("Ulice:"); GroupLayout mainPanelLayout = new GroupLayout(mainPanel); mainPanel.setLayout(mainPanelLayout); mainPanelLayout.setHorizontalGroup( mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) .addGroup(mainPanelLayout.createSequentialGroup() .addGroup(mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) .addComponent(jLabel4) .addComponent(jLabel3) .addComponent(jLabel2) .addComponent(jLabel1)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) .addGroup(mainPanelLayout.createSequentialGroup() .addComponent(jScrollPane2, GroupLayout.DEFAULT_SIZE, 330, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(streetEditButton)) .addGroup(mainPanelLayout.createSequentialGroup() .addComponent(parentField, GroupLayout.DEFAULT_SIZE, 330, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(parentEditButton)) .addGroup(GroupLayout.Alignment.TRAILING, mainPanelLayout.createSequentialGroup() .addComponent(jScrollPane1, GroupLayout.DEFAULT_SIZE, 330, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(houseEditButton)) .addComponent(nameField, GroupLayout.Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, 364, Short.MAX_VALUE))) ); mainPanelLayout.setVerticalGroup( mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) .addGroup(mainPanelLayout.createSequentialGroup() .addGroup(mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) .addGroup(mainPanelLayout.createSequentialGroup() .addGroup(mainPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) .addComponent(parentField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addComponent(parentEditButton) .addComponent(jLabel1)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(mainPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) .addComponent(nameField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addComponent(jLabel2)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) .addComponent(houseEditButton) .addComponent(jScrollPane1, GroupLayout.PREFERRED_SIZE, 77, GroupLayout.PREFERRED_SIZE))) .addGroup(mainPanelLayout.createSequentialGroup() .addGap(66, 66, 66) .addComponent(jLabel3))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) .addComponent(jLabel4) .addComponent(streetEditButton) .addComponent(jScrollPane2, GroupLayout.PREFERRED_SIZE, 77, GroupLayout.PREFERRED_SIZE)) .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); add(mainPanel); } // </editor-fold>//GEN-END:initComponents private House selectedHouse = null; private Street selectedStreet = null; private void houseListChanged(javax.swing.event.ListSelectionEvent evt) { //GEN-FIRST:event_houseListChanged selectedHouse = houseList.getSelectedValue(); houseEditButton.setEnabled(EditorFactory.isEditable(selectedHouse)); } //GEN-LAST:event_houseListChanged private void parentEditButtonActionPerformed(java.awt.event.ActionEvent evt) { //GEN-FIRST:event_parentEditButtonActionPerformed assert parent != null; if (EditorFactory.edit(parent)) parentField.setText(parent.getName()); } //GEN-LAST:event_parentEditButtonActionPerformed private void houseEditButtonActionPerformed(java.awt.event.ActionEvent evt) { //GEN-FIRST:event_houseEditButtonActionPerformed assert selectedHouse != null; if (EditorFactory.editHouse(selectedHouse)) houseList.setModel(new DefaultComboBoxModel<>(suburb.getHouses().toArray(new House[0]))); } //GEN-LAST:event_houseEditButtonActionPerformed private void streetListChanged(javax.swing.event.ListSelectionEvent evt) { //GEN-FIRST:event_streetListChanged selectedStreet = streetList.getSelectedValue(); streetEditButton.setEnabled(EditorFactory.isEditable(selectedStreet)); } //GEN-LAST:event_streetListChanged private void streetEditButtonActionPerformed(java.awt.event.ActionEvent evt) { //GEN-FIRST:event_streetEditButtonActionPerformed assert selectedStreet != null; if (EditorFactory.editStreet(selectedStreet)) streetList.setModel(new DefaultComboBoxModel<>(suburb.getStreets().toArray(new Street[0]))); } //GEN-LAST:event_streetEditButtonActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton houseEditButton; private javax.swing.JList<House> houseList; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JTextField jTextField1; private javax.swing.JPanel mainPanel; private javax.swing.JTextField nameField; private javax.swing.JButton parentEditButton; private javax.swing.JTextField parentField; private javax.swing.JButton streetEditButton; private javax.swing.JList<Street> streetList; // End of variables declaration//GEN-END:variables }