// 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.gui.utils.UniversalListRenderer;
import org.openstreetmap.josm.tools.ImageProvider;
/**
* Dialog for editing a {@link Street}
*
* @author Radomír Černoch radomir.cernoch@gmail.com
*/
public class StreetEditor extends ExtendedDialog {
Street street = null;
AddressElement parent = null;
public StreetEditor(Street street) {
super(Main.parent, "Upravit ulici", new String[] {"OK", "Zrušit"}, true);
initComponents();
this.street = street;
this.parent = street.getParent();
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));
nameField.setText(street.getName());
houseList.setModel(new DefaultComboBoxModel<>(street.getHouses().toArray(new House[0])));
houseList.setCellRenderer(new UniversalListRenderer());
houseEditButton.setIcon(ImageProvider.get("actions", "edit.png"));
houseEditButton.setText("");
houseListChanged(null);
// And finalize initializing the form.
setContent(mainPanel);
this.setButtonIcons(new String[] {"ok.png", "cancel.png"});
setDefaultButton(1);
setCancelButton(2);
setupDialog();
}
public String getStreetName() {
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();
getContentPane().setLayout(new java.awt.GridLayout(1, 0));
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);
}
});
GroupLayout mainPanelLayout = new GroupLayout(mainPanel);
mainPanel.setLayout(mainPanelLayout);
mainPanelLayout.setHorizontalGroup(
mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(mainPanelLayout.createSequentialGroup()
.addGroup(mainPanelLayout.createParallelGroup(GroupLayout.Alignment.TRAILING)
.addComponent(jLabel2)
.addComponent(jLabel3)
.addComponent(jLabel1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(mainPanelLayout.createParallelGroup(GroupLayout.Alignment.TRAILING)
.addComponent(nameField, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, 344, Short.MAX_VALUE)
.addGroup(GroupLayout.Alignment.LEADING, mainPanelLayout.createSequentialGroup()
.addComponent(parentField, GroupLayout.DEFAULT_SIZE, 310, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(parentEditButton))
.addGroup(GroupLayout.Alignment.LEADING, mainPanelLayout.createSequentialGroup()
.addComponent(jScrollPane1, GroupLayout.PREFERRED_SIZE, 308, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(houseEditButton)
.addGap(2, 2, 2))))
);
mainPanelLayout.setVerticalGroup(
mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(mainPanelLayout.createSequentialGroup()
.addGroup(mainPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(parentField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(parentEditButton))
.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(jLabel3)
.addComponent(houseEditButton)
.addComponent(jScrollPane1, GroupLayout.PREFERRED_SIZE, 77, GroupLayout.PREFERRED_SIZE))
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
getContentPane().add(mainPanel);
} // </editor-fold>//GEN-END:initComponents
private House selectedHouse = 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 houseEditButtonActionPerformed(java.awt.event.ActionEvent evt) { //GEN-FIRST:event_houseEditButtonActionPerformed
assert selectedHouse != null;
if (EditorFactory.editHouse(selectedHouse))
houseList.setModel(new DefaultComboBoxModel<>(street.getHouses().toArray(new House[0])));
} //GEN-LAST:event_houseEditButtonActionPerformed
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
// 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.JScrollPane jScrollPane1;
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;
// End of variables declaration//GEN-END:variables
}