/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ package de.cismet.cids.custom.switchon.gui; import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.Geometry; import com.vividsolutions.jts.geom.GeometryFactory; import com.vividsolutions.jts.io.WKTReader; import org.apache.log4j.Logger; import java.awt.Component; import java.awt.EventQueue; import java.awt.event.ItemEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.AbstractMap.SimpleEntry; import javax.swing.DefaultComboBoxModel; import javax.swing.JList; import javax.swing.plaf.basic.BasicComboBoxRenderer; import de.cismet.cids.custom.switchon.gui.utils.CismapUtils; import de.cismet.cids.dynamics.CidsBean; import de.cismet.cids.dynamics.CidsBeanStore; import de.cismet.cids.dynamics.Disposable; import de.cismet.cids.editors.DefaultCustomObjectEditor; import de.cismet.cismap.cids.geometryeditor.DefaultCismapGeometryComboBoxEditor; import de.cismet.cismap.commons.features.FeatureCollection; import de.cismet.cismap.commons.features.FeatureCollectionEvent; import de.cismet.cismap.commons.features.FeatureCollectionListener; import de.cismet.cismap.commons.gui.MappingComponent; import de.cismet.cismap.commons.gui.piccolo.eventlistener.CreateGeometryListenerInterface; import de.cismet.cismap.commons.gui.piccolo.eventlistener.CreateNewGeometryListener; /** * DOCUMENT ME! * * @author Gilles Baatz * @version $Revision$, $Date$ */ public class GeometryChooserPanel extends InfoProviderJPanel implements CidsBeanStore, Disposable, FeatureCollectionListener, PropertyChangeListener { //~ Static fields/initializers --------------------------------------------- private static final Logger LOG = Logger.getLogger(GeometryChooserPanel.class); //~ Instance fields -------------------------------------------------------- private CidsBean cidsBean; private final SimpleEntry<String, String>[] countriesModel; // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.ButtonGroup btngMapButtons; private de.cismet.cismap.cids.geometryeditor.DefaultCismapGeometryComboBoxEditor cmbGeometry; private javax.swing.JToggleButton cmdNewPolygon; private javax.swing.JToggleButton cmdPan; private javax.swing.JToggleButton cmdRemoveGeometry; private javax.swing.JToggleButton cmdZoom; private javax.swing.JComboBox countriesComboBox; private javax.swing.Box.Filler filler1; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JPanel jPanel1; private de.cismet.cids.custom.switchon.gui.PreviewMapPanel previewMapPanel; private javax.swing.JTextField txtCoordinates; private org.jdesktop.beansbinding.BindingGroup bindingGroup; // End of variables declaration//GEN-END:variables //~ Constructors ----------------------------------------------------------- /** * Creates new form GeometryChooserPanel. */ public GeometryChooserPanel() { this.countriesModel = new SimpleEntry[] { new SimpleEntry<String, String>("NONE", ""), new SimpleEntry<String, String>("WORLD", "POLYGON((-180 -90,-180 90,180 90,180 -90,-180 -90))"), new SimpleEntry<String, String>( "EUROPE", "POLYGON((-31.266001 27.636311,-31.266001 81.008797,39.869301 81.008797,39.869301 27.636311,-31.266001 27.636311))"), new SimpleEntry<String, String>( "Aland", "POLYGON((19.5131942070001 59.9044863950001,19.5131942070001 60.4807803410001,21.0966903000001 60.4807803410001,21.0966903000001 59.9044863950001,19.5131942070001 59.9044863950001))"), new SimpleEntry<String, String>( "Albania", "POLYGON((19.2720325110001 39.637013245,19.2720325110001 42.6548135380001,21.0366793210001 42.6548135380001,21.0366793210001 39.637013245,19.2720325110001 39.637013245))"), new SimpleEntry<String, String>( "Andorra", "POLYGON((1.4064563390001 42.4286774700001,1.4064563390001 42.649361674,1.76509078000015 42.649361674,1.76509078000015 42.4286774700001,1.4064563390001 42.4286774700001))"), new SimpleEntry<String, String>( "Austria", "POLYGON((9.52115482500011 46.3786430870001,9.52115482500011 49.0097744750001,17.1483378500001 49.0097744750001,17.1483378500001 46.3786430870001,9.52115482500011 46.3786430870001))"), new SimpleEntry<String, String>( "Belarus", "POLYGON((23.165644979 51.2351683560001,23.165644979 56.1568059290001,32.7195321040001 56.1568059290001,32.7195321040001 51.2351683560001,23.165644979 51.2351683560001))"), new SimpleEntry<String, String>( "Belgium", "POLYGON((2.52179992769047 49.495222881,2.52179992769047 51.4962376910001,6.37452518700007 51.4962376910001,6.37452518700007 49.495222881,2.52179992769047 49.495222881))"), new SimpleEntry<String, String>( "Bosnia and Herz.", "POLYGON((15.7160738520001 42.5592121380002,15.7160738520001 45.2845238250002,19.618884725 45.2845238250002,19.618884725 42.5592121380002,15.7160738520001 42.5592121380002))"), new SimpleEntry<String, String>( "Bulgaria", "POLYGON((22.3450232340001 41.2381041470001,22.3450232340001 44.228434539,28.6035262380001 44.228434539,28.6035262380001 41.2381041470001,22.3450232340001 41.2381041470001))"), new SimpleEntry<String, String>( "Croatia", "POLYGON((13.5014754570001 42.4163272160001,13.5014754570001 46.5469790650001,19.4078381750001 46.5469790650001,19.4078381750001 42.4163272160001,13.5014754570001 42.4163272160001))"), new SimpleEntry<String, String>( "Czech Rep.", "POLYGON((12.076140991 48.557915752,12.076140991 51.0400123090001,18.8374337160001 51.0400123090001,18.8374337160001 48.557915752,12.076140991 48.557915752))"), new SimpleEntry<String, String>( "Denmark", "POLYGON((8.09400475400008 54.5685895850001,8.09400475400008 57.7511660830001,15.1513778000001 57.7511660830001,15.1513778000001 54.5685895850001,8.09400475400008 54.5685895850001))"), new SimpleEntry<String, String>( "Estonia", "POLYGON((21.8323673840001 57.5158185830001,21.8323673840001 59.6708845070001,28.1864754640001 59.6708845070001,28.1864754640001 57.5158185830001,21.8323673840001 57.5158185830001))"), new SimpleEntry<String, String>( "Faeroe Is.", "POLYGON((-7.64415442599994 61.3941104190001,-7.64415442599994 62.3989118510001,-6.27578691299991 62.3989118510001,-6.27578691299991 61.3941104190001,-7.64415442599994 61.3941104190001))"), new SimpleEntry<String, String>( "Finland", "POLYGON((20.62316451 59.811224677,20.62316451 70.0753103640001,31.5695247800001 70.0753103640001,31.5695247800001 59.811224677,20.62316451 59.811224677))"), new SimpleEntry<String, String>( "France", "POLYGON((-61.7978409499999 -21.3707821589999,-61.7978409499999 51.0875408834804,55.8545028000001 51.0875408834804,55.8545028000001 -21.3707821589999,-61.7978409499999 -21.3707821589999))"), new SimpleEntry<String, String>( "Germany", "POLYGON((5.85248986800011 47.271120911,5.85248986800011 55.065334377,15.0220593670001 55.065334377,15.0220593670001 47.271120911,5.85248986800011 47.271120911))"), new SimpleEntry<String, String>( "Gibraltar", "POLYGON((-5.35838675876349 36.1105003930001,-5.35838675876349 36.1411196720123,-5.33877348311998 36.1411196720123,-5.33877348311998 36.1105003930001,-5.35838675876349 36.1105003930001))"), new SimpleEntry<String, String>( "Greece", "POLYGON((19.6264754570001 34.8150088560001,19.6264754570001 41.7504759730001,28.2397567070001 41.7504759730001,28.2397567070001 34.8150088560001,19.6264754570001 34.8150088560001))"), new SimpleEntry<String, String>( "Guernsey", "POLYGON((-2.67345130099989 49.4115664730001,-2.67345130099989 49.731390692,-2.17031816299993 49.731390692,-2.17031816299993 49.4115664730001,-2.67345130099989 49.4115664730001))"), new SimpleEntry<String, String>( "Hungary", "POLYGON((16.0940352780001 45.741343486,16.0940352780001 48.5692328900001,22.8776005460001 48.5692328900001,22.8776005460001 45.741343486,16.0940352780001 45.741343486))"), new SimpleEntry<String, String>( "Iceland", "POLYGON((-24.539906379 63.3967145850001,-24.539906379 66.564154364,-13.5029190749999 66.564154364,-13.5029190749999 63.3967145850001,-24.539906379 63.3967145850001))"), new SimpleEntry<String, String>( "Ireland", "POLYGON((-10.4781794909999 51.4457054710001,-10.4781794909999 55.386379299,-5.99351966099994 55.386379299,-5.99351966099994 51.4457054710001,-10.4781794909999 51.4457054710001))"), new SimpleEntry<String, String>( "Isle of Man", "POLYGON((-4.79015051999994 54.0569522160001,-4.79015051999994 54.4190127620001,-4.3119197259999 54.4190127620001,-4.3119197259999 54.0569522160001,-4.79015051999994 54.0569522160001))"), new SimpleEntry<String, String>( "Italy", "POLYGON((6.60272831200007 35.489243882,6.60272831200007 47.085214945,18.5174259770001 47.085214945,18.5174259770001 35.489243882,6.60272831200007 35.489243882))"), new SimpleEntry<String, String>( "Jersey", "POLYGON((-2.24201412699992 49.1713320980001,-2.24201412699992 49.267035223,-2.00829016799992 49.267035223,-2.00829016799992 49.1713320980001,-2.24201412699992 49.1713320980001))"), new SimpleEntry<String, String>( "Kosovo", "POLYGON((20.024751424 41.8440103160001,20.024751424 43.2630709840001,21.7727584220001 43.2630709840001,21.7727584220001 41.8440103160001,20.024751424 41.8440103160001))"), new SimpleEntry<String, String>( "Latvia", "POLYGON((20.9685978520001 55.6669908660001,20.9685978520001 58.0751384490001,28.2172746170001 58.0751384490001,28.2172746170001 55.6669908660001,20.9685978520001 55.6669908660001))"), new SimpleEntry<String, String>( "Liechtenstein", "POLYGON((9.47588627100012 47.0524004120001,9.47588627100012 47.2628010050001,9.61572269700011 47.2628010050001,9.61572269700011 47.0524004120001,9.47588627100012 47.0524004120001))"), new SimpleEntry<String, String>( "Lithuania", "POLYGON((20.9245687005624 53.8868411260001,20.9245687005624 56.4426024370001,26.8007202560001 56.4426024370001,26.8007202560001 53.8868411260001,20.9245687005624 53.8868411260001))"), new SimpleEntry<String, String>( "Luxembourg", "POLYGON((5.71492720500004 49.441324362,5.71492720500004 50.1749746710001,6.50257938700014 50.1749746710001,6.50257938700014 49.441324362,5.71492720500004 49.441324362))"), new SimpleEntry<String, String>( "Macedonia", "POLYGON((20.4441573490001 40.8493940230001,20.4441573490001 42.3703347790001,23.0095821530001 42.3703347790001,23.0095821530001 40.8493940230001,20.4441573490001 40.8493940230001))"), new SimpleEntry<String, String>( "Malta", "POLYGON((14.1836043630001 35.801214911,14.1836043630001 36.0755882830001,14.5671492850001 36.0755882830001,14.5671492850001 35.801214911,14.1836043630001 35.801214911))"), new SimpleEntry<String, String>( "Moldova", "POLYGON((26.617889038 45.461773987,26.617889038 48.4860338340001,30.1315763750001 48.4860338340001,30.1315763750001 45.461773987,26.617889038 45.461773987))"), new SimpleEntry<String, String>( "Monaco", "POLYGON((7.36575020700008 43.7179690770001,7.36575020700008 43.763505554,7.4374540320631 43.763505554,7.4374540320631 43.7179690770001,7.36575020700008 43.7179690770001))"), new SimpleEntry<String, String>( "Montenegro", "POLYGON((18.4335307210001 41.852362372,18.4335307210001 43.5478856410001,20.3551705320001 43.5478856410001,20.3551705320001 41.852362372,18.4335307210001 41.852362372))"), new SimpleEntry<String, String>( "Netherlands", "POLYGON((-68.4173884759999 12.0220401060001,-68.4173884759999 53.5580915390001,7.19850590000004 53.5580915390001,7.19850590000004 12.0220401060001,-68.4173884759999 12.0220401060001))"), new SimpleEntry<String, String>( "Norway", "POLYGON((-9.11742102799991 -54.4624976539999,-9.11742102799991 80.7700869810001,33.6403914720001 80.7700869810001,33.6403914720001 -54.4624976539999,-9.11742102799991 -54.4624976539999))"), new SimpleEntry<String, String>( "Poland", "POLYGON((14.123922973 48.9940131640001,14.123922973 54.8383242860001,24.1431563720001 54.8383242860001,24.1431563720001 48.9940131640001,14.123922973 48.9940131640001))"), new SimpleEntry<String, String>( "Portugal", "POLYGON((-31.2849014959999 30.0292422550001,-31.2849014959999 42.15362966,-6.20594722499993 42.15362966,-6.20594722499993 30.0292422550001,-31.2849014959999 30.0292422550001))"), new SimpleEntry<String, String>( "Romania", "POLYGON((20.2428259690001 43.6500499480001,20.2428259690001 48.2748322560001,29.6995548840001 48.2748322560001,29.6995548840001 43.6500499480001,20.2428259690001 43.6500499480001))"), new SimpleEntry<String, String>( "Russia", "POLYGON((-180 41.1926805620002,-180 81.8587100280001,180 81.8587100280001,180 41.1926805620002,-180 41.1926805620002))"), new SimpleEntry<String, String>( "San Marino", "POLYGON((12.3856287450001 43.892055515,12.3856287450001 43.9825667860001,12.4923922540001 43.9825667860001,12.4923922540001 43.892055515,12.3856287450001 43.892055515))"), new SimpleEntry<String, String>( "Serbia", "POLYGON((18.8449784750001 42.2349425250001,18.8449784750001 46.1738752240001,22.9845707600001 46.1738752240001,22.9845707600001 42.2349425250001,18.8449784750001 42.2349425250001))"), new SimpleEntry<String, String>( "Slovakia", "POLYGON((16.8444804280001 47.7500064090001,16.8444804280001 49.601779684,22.5396366780001 49.601779684,22.5396366780001 47.7500064090001,16.8444804280001 47.7500064090001))"), new SimpleEntry<String, String>( "Slovenia", "POLYGON((13.3652612710001 45.42363678,13.3652612710001 46.863962301,16.5153015540001 46.863962301,16.5153015540001 45.42363678,13.3652612710001 45.42363678))"), new SimpleEntry<String, String>( "Spain", "POLYGON((-18.1672257149999 27.6422386740001,-18.1672257149999 43.793443101,4.3370874360001 43.793443101,4.3370874360001 27.6422386740001,-18.1672257149999 27.6422386740001))"), new SimpleEntry<String, String>( "Sweden", "POLYGON((11.1081649100001 55.3426781270001,11.1081649100001 69.0363556930001,24.1634135340001 69.0363556930001,24.1634135340001 55.3426781270001,11.1081649100001 55.3426781270001))"), new SimpleEntry<String, String>( "Switzerland", "POLYGON((5.95480920400013 45.820718486,5.95480920400013 47.8011660770001,10.466626831 47.8011660770001,10.466626831 45.820718486,5.95480920400013 45.820718486))"), new SimpleEntry<String, String>( "Ukraine", "POLYGON((22.1328398030001 44.381048895,22.1328398030001 52.3689492800001,40.1595430910002 52.3689492800001,40.1595430910002 44.381048895,22.1328398030001 44.381048895))"), new SimpleEntry<String, String>( "United Kingdom", "POLYGON((-13.6913142569999 49.9096133480001,-13.6913142569999 60.84788646,1.77116946700002 60.84788646,1.77116946700002 49.9096133480001,-13.6913142569999 49.9096133480001))") }; initComponents(); this.countriesComboBox.setSelectedIndex(-1); } //~ Methods ---------------------------------------------------------------- /** * 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() { java.awt.GridBagConstraints gridBagConstraints; bindingGroup = new org.jdesktop.beansbinding.BindingGroup(); btngMapButtons = new javax.swing.ButtonGroup(); previewMapPanel = new de.cismet.cids.custom.switchon.gui.PreviewMapPanel(); cmbGeometry = new de.cismet.cismap.cids.geometryeditor.DefaultCismapGeometryComboBoxEditor(); jLabel1 = new javax.swing.JLabel(); txtCoordinates = new javax.swing.JTextField(); jPanel1 = new javax.swing.JPanel(); cmdPan = new javax.swing.JToggleButton(); cmdZoom = new javax.swing.JToggleButton(); cmdNewPolygon = new javax.swing.JToggleButton(); cmdRemoveGeometry = new javax.swing.JToggleButton(); filler1 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 0), new java.awt.Dimension(0, 0), new java.awt.Dimension(32767, 0)); jLabel2 = new javax.swing.JLabel(); countriesComboBox = new javax.swing.JComboBox(); setLayout(new java.awt.GridBagLayout()); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.gridwidth = 4; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10); add(previewMapPanel, gridBagConstraints); previewMapPanel.setGeoFieldPropertyKey("spatialcoverage.geo_field"); previewMapPanel.setPurePreviewMap(false); final org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding( org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, this, org.jdesktop.beansbinding.ELProperty.create("${cidsBean.spatialcoverage}"), cmbGeometry, org.jdesktop.beansbinding.BeanProperty.create("selectedItem")); binding.setSourceNullValue(null); binding.setSourceUnreadableValue(null); binding.setConverter(((DefaultCismapGeometryComboBoxEditor)cmbGeometry).getConverter()); bindingGroup.addBinding(binding); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 2; gridBagConstraints.gridwidth = 4; gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START; gridBagConstraints.insets = new java.awt.Insets(5, 10, 5, 5); add(cmbGeometry, gridBagConstraints); org.openide.awt.Mnemonics.setLocalizedText( jLabel1, org.openide.util.NbBundle.getMessage(GeometryChooserPanel.class, "GeometryChooserPanel.jLabel1.text")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 3; gridBagConstraints.insets = new java.awt.Insets(5, 10, 10, 10); add(jLabel1, gridBagConstraints); txtCoordinates.setText(org.openide.util.NbBundle.getMessage( GeometryChooserPanel.class, "GeometryChooserPanel.txtCoordinates.text")); // NOI18N txtCoordinates.addFocusListener(new java.awt.event.FocusAdapter() { @Override public void focusGained(final java.awt.event.FocusEvent evt) { txtCoordinatesFocusGained(evt); } }); txtCoordinates.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { txtCoordinatesActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 3; gridBagConstraints.gridwidth = 3; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(5, 0, 10, 10); add(txtCoordinates, gridBagConstraints); jPanel1.setLayout(new java.awt.GridBagLayout()); btngMapButtons.add(cmdPan); cmdPan.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/pan.gif"))); // NOI18N cmdPan.setToolTipText(org.openide.util.NbBundle.getMessage( GeometryChooserPanel.class, "GeometryChooserPanel.cmdPan.toolTipText")); // NOI18N cmdPan.setBorderPainted(false); cmdPan.setFocusPainted(false); cmdPan.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { cmdPanActionPerformed(evt); } }); jPanel1.add(cmdPan, new java.awt.GridBagConstraints()); btngMapButtons.add(cmdZoom); cmdZoom.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/zoom.gif"))); // NOI18N cmdZoom.setSelected(true); cmdZoom.setToolTipText(org.openide.util.NbBundle.getMessage( GeometryChooserPanel.class, "GeometryChooserPanel.cmdZoom.toolTipText")); // NOI18N cmdZoom.setBorderPainted(false); cmdZoom.setFocusPainted(false); cmdZoom.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { cmdZoomActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 10); jPanel1.add(cmdZoom, gridBagConstraints); btngMapButtons.add(cmdNewPolygon); cmdNewPolygon.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/newPolygon.png"))); // NOI18N cmdNewPolygon.setToolTipText(org.openide.util.NbBundle.getMessage( GeometryChooserPanel.class, "GeometryChooserPanel.cmdNewPolygon.toolTipText")); // NOI18N cmdNewPolygon.setBorderPainted(false); cmdNewPolygon.setFocusPainted(false); cmdNewPolygon.setMaximumSize(new java.awt.Dimension(58, 34)); cmdNewPolygon.setMinimumSize(new java.awt.Dimension(58, 34)); cmdNewPolygon.setPreferredSize(new java.awt.Dimension(58, 34)); cmdNewPolygon.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { cmdNewPolygonActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridy = 0; jPanel1.add(cmdNewPolygon, gridBagConstraints); btngMapButtons.add(cmdRemoveGeometry); cmdRemoveGeometry.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/remove.png"))); // NOI18N cmdRemoveGeometry.setToolTipText(org.openide.util.NbBundle.getMessage( GeometryChooserPanel.class, "GeometryChooserPanel.cmdRemoveGeometry.toolTipText")); // NOI18N cmdRemoveGeometry.setBorderPainted(false); cmdRemoveGeometry.setFocusPainted(false); cmdRemoveGeometry.setMaximumSize(new java.awt.Dimension(58, 34)); cmdRemoveGeometry.setMinimumSize(new java.awt.Dimension(58, 34)); cmdRemoveGeometry.setPreferredSize(new java.awt.Dimension(58, 34)); cmdRemoveGeometry.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { cmdRemoveGeometryActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridy = 0; jPanel1.add(cmdRemoveGeometry, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridy = 0; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; jPanel1.add(filler1, gridBagConstraints); org.openide.awt.Mnemonics.setLocalizedText( jLabel2, org.openide.util.NbBundle.getMessage(GeometryChooserPanel.class, "GeometryChooserPanel.jLabel2.text")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHEAST; gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 5); jPanel1.add(jLabel2, gridBagConstraints); countriesComboBox.setModel(new DefaultComboBoxModel(this.countriesModel)); countriesComboBox.setMinimumSize(new java.awt.Dimension(150, 20)); countriesComboBox.setPreferredSize(new java.awt.Dimension(150, 20)); countriesComboBox.setRenderer(new CountriesRenderer()); countriesComboBox.addItemListener(new java.awt.event.ItemListener() { @Override public void itemStateChanged(final java.awt.event.ItemEvent evt) { countriesComboBoxItemStateChanged(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHEAST; gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 10); jPanel1.add(countriesComboBox, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; gridBagConstraints.gridwidth = 4; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; add(jPanel1, gridBagConstraints); bindingGroup.bind(); } // </editor-fold>//GEN-END:initComponents /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void cmdPanActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_cmdPanActionPerformed if (getMap() != null) { getMap().setInteractionMode(MappingComponent.PAN); } } //GEN-LAST:event_cmdPanActionPerformed /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void cmdNewPolygonActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_cmdNewPolygonActionPerformed EventQueue.invokeLater(new Runnable() { @Override public void run() { ((CreateNewGeometryListener)getMap().getInputListener(MappingComponent.NEW_POLYGON)).setMode( CreateGeometryListenerInterface.POLYGON); getMap().setInteractionMode(MappingComponent.NEW_POLYGON); countriesComboBox.setSelectedIndex(-1); } }); } //GEN-LAST:event_cmdNewPolygonActionPerformed /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void cmdRemoveGeometryActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_cmdRemoveGeometryActionPerformed EventQueue.invokeLater(new Runnable() { @Override public void run() { getMap().setInteractionMode(MappingComponent.REMOVE_POLYGON); countriesComboBox.setSelectedIndex(-1); } }); } //GEN-LAST:event_cmdRemoveGeometryActionPerformed /** * maxY, maxX, minY, minX. * * @param evt DOCUMENT ME! */ private void txtCoordinatesActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_txtCoordinatesActionPerformed try { final String[] coords = txtCoordinates.getText().split(","); // NOI18N if (coords.length != 4) { throw new Exception("The text field does not contain four values."); // NOI18N } final double maxY = Double.parseDouble(coords[0]); final double maxX = Double.parseDouble(coords[1]); final double minY = Double.parseDouble(coords[2]); final double minX = Double.parseDouble(coords[3]); final Coordinate[] coordinates = new Coordinate[5]; coordinates[0] = new Coordinate(minX, maxY); coordinates[1] = new Coordinate(maxX, maxY); coordinates[2] = new Coordinate(maxX, minY); coordinates[3] = new Coordinate(minX, minY); coordinates[4] = new Coordinate(minX, maxY); final Geometry rectangle = new GeometryFactory().createPolygon(coordinates); previewMapPanel.setGeometry(rectangle); countriesComboBox.setSelectedIndex(-1); } catch (Exception ex) { LOG.warn(ex, ex); provideError(org.openide.util.NbBundle.getMessage( GeometryChooserPanel.class, "GeometryChooserPanel.txtCoordinatesActionPerformed.error")); } } //GEN-LAST:event_txtCoordinatesActionPerformed /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void txtCoordinatesFocusGained(final java.awt.event.FocusEvent evt) { //GEN-FIRST:event_txtCoordinatesFocusGained provideInformation(org.openide.util.NbBundle.getMessage( GeometryChooserPanel.class, "GeometryChooserPanel.txtCoordinatesFocusGained.info")); } //GEN-LAST:event_txtCoordinatesFocusGained /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void cmdZoomActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_cmdZoomActionPerformed if (getMap() != null) { getMap().setInteractionMode(MappingComponent.ZOOM); } } //GEN-LAST:event_cmdZoomActionPerformed /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void countriesComboBoxItemStateChanged(final java.awt.event.ItemEvent evt) { //GEN-FIRST:event_countriesComboBoxItemStateChanged if (evt.getStateChange() == ItemEvent.SELECTED) { final Object item = evt.getItem(); if (item != null) { try { final String WKTString = ((SimpleEntry<String, String>)item).getValue(); final Geometry geometry = new WKTReader().read(WKTString); this.setGeometry(geometry); } catch (Exception ex) { LOG.error(ex.getMessage(), ex); } } } } //GEN-LAST:event_countriesComboBoxItemStateChanged @Override public CidsBean getCidsBean() { return cidsBean; } @Override public void setCidsBean(final CidsBean cidsBean) { bindingGroup.unbind(); if (cidsBean != null) { this.cidsBean = cidsBean; DefaultCustomObjectEditor.setMetaClassInformationToMetaClassStoreComponentsInBindingGroup( bindingGroup, this.cidsBean); cmbGeometry.setCidsMetaObject(cidsBean.getMetaObject()); bindingGroup.bind(); previewMapPanel.setCidsBean(cidsBean); getMap().getFeatureCollection().addFeatureCollectionListener(this); cidsBean.addPropertyChangeListener(this); } } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public Geometry getGeometry() { return previewMapPanel.getGeometry(); } /** * DOCUMENT ME! * * @param geometry DOCUMENT ME! */ public void setGeometry(final Geometry geometry) { previewMapPanel.setGeometry(geometry); showCoordinatesInTextField(geometry); } /** * maxY, maxX, minY, minX. * * @param geometry DOCUMENT ME! */ private void showCoordinatesInTextField(final Geometry geometry) { if (geometry != null) { if (geometry.isRectangle()) { final Coordinate[] coordinates = geometry.getCoordinates(); final Coordinate minXminY = coordinates[0]; final Coordinate maxXmaxY = coordinates[2]; txtCoordinates.setEditable(true); txtCoordinates.setText(maxXmaxY.y + "," + maxXmaxY.x + "," + minXminY.y + "," + minXminY.x); // NOI18N } else { txtCoordinates.setEditable(false); txtCoordinates.setText(geometry.getGeometryType()); } } else { txtCoordinates.setEditable(true); txtCoordinates.setText(""); // NOI18N } } @Override public void dispose() { bindingGroup.unbind(); ((DefaultCismapGeometryComboBoxEditor)cmbGeometry).dispose(); getMap().getFeatureCollection().removeFeatureCollectionListener(this); cidsBean.removePropertyChangeListener(this); } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ private MappingComponent getMap() { return previewMapPanel.getMappingComponent(); } @Override public void propertyChange(final PropertyChangeEvent evt) { if (evt.getPropertyName().equals("spatialcoverage")) { // NOI18N getMap().getFeatureCollection().removeFeatureCollectionListener(this); if (evt.getOldValue() == null) { try { final Geometry geoObj = (Geometry)cidsBean.getProperty("spatialcoverage.geo_field"); // NOI18N setGeometry(geoObj); // this.countriesComboBox.setSelectedIndex(-1); } catch (Exception ex) { throw new RuntimeException("Error when setting geom origin.", ex); // NOI18N } } amountOfFeaturesChanged(); getMap().getFeatureCollection().addFeatureCollectionListener(this); } } /** * DOCUMENT ME! */ private void amountOfFeaturesChanged() { final FeatureCollection featureCollection = getMap().getFeatureCollection(); final int featureAmount = featureCollection.getFeatureCount(); if (featureAmount >= 1) { cmdNewPolygon.setEnabled(false); cmdRemoveGeometry.setEnabled(true); } else { cmdNewPolygon.setEnabled(true); cmdRemoveGeometry.setEnabled(false); } } /** * DOCUMENT ME! * * @param geometry geomCidsBean DOCUMENT ME! */ private void setDrawnGeometryToCidsBean(final Geometry geometry) { cidsBean.removePropertyChangeListener(this); try { cidsBean.setProperty("spatialcoverage", CismapUtils.createGeometryBean(geometry)); // NOI18N showCoordinatesInTextField(geometry); } catch (Exception ex) { LOG.error(ex, ex); } cidsBean.addPropertyChangeListener(this); } /** * DOCUMENT ME! * * @param visible DOCUMENT ME! */ public void setVisibleGeometryComboBox(final boolean visible) { cmbGeometry.setVisible(visible); } @Override public void featuresAdded(final FeatureCollectionEvent fce) { amountOfFeaturesChanged(); setDrawnGeometryToCidsBean(getGeometry()); } @Override public void allFeaturesRemoved(final FeatureCollectionEvent fce) { amountOfFeaturesChanged(); setDrawnGeometryToCidsBean(null); } @Override public void featuresRemoved(final FeatureCollectionEvent fce) { amountOfFeaturesChanged(); setDrawnGeometryToCidsBean(null); } @Override public void featuresChanged(final FeatureCollectionEvent fce) { } @Override public void featureSelectionChanged(final FeatureCollectionEvent fce) { } @Override public void featureReconsiderationRequested(final FeatureCollectionEvent fce) { } @Override public void featureCollectionChanged() { } //~ Inner Classes ---------------------------------------------------------- /** * DOCUMENT ME! * * @version $Revision$, $Date$ */ class CountriesRenderer extends BasicComboBoxRenderer { //~ Methods ------------------------------------------------------------ @Override public Component getListCellRendererComponent(final JList list, final Object value, final int index, final boolean isSelected, final boolean cellHasFocus) { super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); if (value != null) { final SimpleEntry<String, String> entry = (SimpleEntry<String, String>)value; setText(entry.getKey()); } if (index == -1) { setText("NONE"); } return this; } } }