/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ /* * WFSFormTester.java * * Created on 25. Juli 2006, 17:38 */ package de.cismet.cismap.commons.wfsforms; import com.jgoodies.looks.plastic.PlasticXPLookAndFeel; import java.awt.BorderLayout; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.util.ArrayList; import java.util.Vector; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JTextField; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import de.cismet.cismap.commons.BoundingBox; import de.cismet.cismap.commons.XBoundingBox; import de.cismet.cismap.commons.gui.MappingComponent; import de.cismet.cismap.commons.interaction.CismapBroker; import de.cismet.tools.gui.StaticSwingTools; import de.cismet.tools.gui.log4jquickconfig.Log4JQuickConfig; /** * TODO:remove temporary bullshit variables panNr and panStr which are a temporary fix to compile Belis. * * @author thorsten.hell@cismet.de * @version $Revision$, $Date$ */ public class WFSFormAdress extends AbstractWFSForm { //~ Instance fields -------------------------------------------------------- private final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(this.getClass()); private WFSFormFeature strasse = null; private WFSFormFeature nr = null; private final ArrayList<WFSFormAdressListener> listeners = new ArrayList<WFSFormAdressListener>(); // Variables declaration - do not modify//GEN-BEGIN:variables protected javax.swing.JComboBox cboNr; protected javax.swing.JComboBox cboStreets; protected javax.swing.JCheckBox chkLockScale; protected javax.swing.JCheckBox chkVisualize; protected javax.swing.JButton cmdOk; protected javax.swing.JLabel jLabel1; protected javax.swing.JLabel jLabel2; protected javax.swing.JPanel panEmpty; protected javax.swing.JProgressBar prbNr; protected javax.swing.JProgressBar prbStreets; // End of variables declaration//GEN-END:variables //~ Constructors ----------------------------------------------------------- /** * Creates new form WFSFormTester. */ public WFSFormAdress() { if (log.isDebugEnabled()) { log.debug("new WFSFormAddress"); // NOI18N } try { initComponents(); // cboStreets.setEditable(true); // cboNr.setEditable(true); StaticSwingTools.decorateWithFixedAutoCompleteDecorator(cboStreets); StaticSwingTools.decorateWithFixedAutoCompleteDecorator(cboNr); prbStreets.setPreferredSize(new java.awt.Dimension(1, 5)); prbNr.setPreferredSize(new java.awt.Dimension(1, 5)); listComponents.put("cboAllStreets", cboStreets); // NOI18N listComponents.put("cboAllStreetsProgress", prbStreets); // NOI18N listComponents.put("cboNumbersOfAStreet", cboNr); // NOI18N listComponents.put("cboNumbersOfAStreetProgress", prbNr); // NOI18N pMark.setVisible(false); final JTextField nrEditor = (JTextField)cboNr.getEditor().getEditorComponent(); nrEditor.getDocument().addDocumentListener(new DocumentListener() { @Override public void insertUpdate(final DocumentEvent e) { checkCboCorrectness(cboNr); } @Override public void removeUpdate(final DocumentEvent e) { checkCboCorrectness(cboNr); } @Override public void changedUpdate(final DocumentEvent e) { checkCboCorrectness(cboNr); } }); // CismapBroker.getInstance().getMappingComponent().getHighlightingLayer().addChild(pMark); } catch (Exception e) { log.error("Could not Create WFForm", e); // NOI18N } } //~ 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. */ // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { java.awt.GridBagConstraints gridBagConstraints; cmdOk = new javax.swing.JButton(); chkVisualize = new javax.swing.JCheckBox(); jLabel1 = new javax.swing.JLabel(); chkLockScale = new javax.swing.JCheckBox(); jLabel2 = new javax.swing.JLabel(); panEmpty = new javax.swing.JPanel(); cboNr = new javax.swing.JComboBox(); prbNr = new javax.swing.JProgressBar(); cboStreets = new javax.swing.JComboBox(); prbStreets = new javax.swing.JProgressBar(); setBorder(javax.swing.BorderFactory.createEmptyBorder(2, 2, 2, 2)); setMaximumSize(new java.awt.Dimension(498, 35)); setMinimumSize(new java.awt.Dimension(498, 35)); setLayout(new java.awt.GridBagLayout()); cmdOk.setMnemonic('P'); cmdOk.setText(org.openide.util.NbBundle.getMessage(WFSFormAdress.class, "WFSFormAdress.cmdOk.text")); // NOI18N cmdOk.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { cmdOkActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 0; gridBagConstraints.gridheight = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.insets = new java.awt.Insets(0, 2, 0, 0); add(cmdOk, gridBagConstraints); chkVisualize.setSelected(true); chkVisualize.setToolTipText(org.openide.util.NbBundle.getMessage( WFSFormAdress.class, "WFSFormAdress.chkVisualize.toolTipText")); // NOI18N chkVisualize.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { chkVisualizeActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 3; gridBagConstraints.gridy = 0; gridBagConstraints.gridheight = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.insets = new java.awt.Insets(3, 7, 0, 0); add(chkVisualize, gridBagConstraints); jLabel1.setIcon(new javax.swing.ImageIcon( getClass().getResource("/de/cismet/cismap/commons/gui/res/markPoint.png"))); // NOI18N jLabel1.setToolTipText(org.openide.util.NbBundle.getMessage( WFSFormAdress.class, "WFSFormAdress.jLabel1.toolTipText")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 4; gridBagConstraints.gridy = 0; gridBagConstraints.gridheight = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.insets = new java.awt.Insets(3, 7, 0, 0); add(jLabel1, gridBagConstraints); chkLockScale.setSelected(true); chkLockScale.setToolTipText(org.openide.util.NbBundle.getMessage( WFSFormAdress.class, "WFSFormAdress.chkLockScale.toolTipText")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 5; gridBagConstraints.gridy = 0; gridBagConstraints.gridheight = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.insets = new java.awt.Insets(3, 14, 0, 0); add(chkLockScale, gridBagConstraints); jLabel2.setIcon(new javax.swing.ImageIcon( getClass().getResource("/de/cismet/cismap/commons/gui/res/fixMapScale.png"))); // NOI18N jLabel2.setToolTipText(org.openide.util.NbBundle.getMessage( WFSFormAdress.class, "WFSFormAdress.jLabel2.toolTipText")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 6; gridBagConstraints.gridy = 0; gridBagConstraints.gridheight = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.insets = new java.awt.Insets(1, 7, 4, 0); add(jLabel2, gridBagConstraints); panEmpty.setMinimumSize(new java.awt.Dimension(1, 1)); panEmpty.setPreferredSize(new java.awt.Dimension(1, 1)); final org.jdesktop.layout.GroupLayout panEmptyLayout = new org.jdesktop.layout.GroupLayout(panEmpty); panEmpty.setLayout(panEmptyLayout); panEmptyLayout.setHorizontalGroup( panEmptyLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(0, 8, Short.MAX_VALUE)); panEmptyLayout.setVerticalGroup( panEmptyLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(0, 33, Short.MAX_VALUE)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 7; gridBagConstraints.gridy = 0; gridBagConstraints.gridheight = 2; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weightx = 10.0; gridBagConstraints.weighty = 1.0; add(panEmpty, gridBagConstraints); cboNr.setEditable(true); cboNr.setEnabled(false); cboNr.setMaximumSize(new java.awt.Dimension(70, 19)); cboNr.setMinimumSize(new java.awt.Dimension(70, 19)); cboNr.setPreferredSize(new java.awt.Dimension(70, 19)); cboNr.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { cboNrActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 0; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 30.0; gridBagConstraints.insets = new java.awt.Insets(2, 3, 0, 0); add(cboNr, gridBagConstraints); prbNr.setBorderPainted(false); prbNr.setMaximumSize(new java.awt.Dimension(100, 5)); prbNr.setMinimumSize(new java.awt.Dimension(100, 5)); prbNr.setPreferredSize(new java.awt.Dimension(100, 5)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 1; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.insets = new java.awt.Insets(0, 3, 0, 10); add(prbNr, gridBagConstraints); cboStreets.setEnabled(false); cboStreets.setMaximumSize(new java.awt.Dimension(200, 19)); cboStreets.setMinimumSize(new java.awt.Dimension(200, 19)); cboStreets.setPreferredSize(new java.awt.Dimension(200, 19)); cboStreets.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { cboStreetsActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 60.0; gridBagConstraints.insets = new java.awt.Insets(2, 0, 0, 0); add(cboStreets, gridBagConstraints); prbStreets.setBorderPainted(false); prbStreets.setMaximumSize(new java.awt.Dimension(100, 5)); prbStreets.setMinimumSize(new java.awt.Dimension(100, 5)); prbStreets.setPreferredSize(new java.awt.Dimension(100, 5)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 9); add(prbStreets, gridBagConstraints); } // </editor-fold>//GEN-END:initComponents /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void chkVisualizeActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_chkVisualizeActionPerformed if (mappingComponent == null) { mappingComponent = CismapBroker.getInstance().getMappingComponent(); } if (nr != null) { visualizePosition(nr, chkVisualize.isSelected()); } else if (strasse != null) { visualizePosition(strasse, chkVisualize.isSelected()); } } //GEN-LAST:event_chkVisualizeActionPerformed /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void cboStreetsActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_cboStreetsActionPerformed if (log.isDebugEnabled()) { log.debug("cboStreetsActionPerformed()"); // NOI18N } if (cboStreets.getSelectedItem() instanceof WFSFormFeature) { strasse = (WFSFormFeature)cboStreets.getSelectedItem(); nr = null; requestRefresh("cboNumbersOfAStreet", (WFSFormFeature)cboStreets.getSelectedItem()); // NOI18N fireWfsFormAddressStreetSelected(); } } //GEN-LAST:event_cboStreetsActionPerformed /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void cmdOkActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_cmdOkActionPerformed final boolean history = true; MappingComponent mc = getMappingComponent(); if (mc == null) { mc = CismapBroker.getInstance().getMappingComponent(); } final boolean scaling = !(mc.isFixedMapScale()) && !(chkLockScale.isSelected()); XBoundingBox bb = null; final int animation = mc.getAnimationDuration(); if (nr != null) { if (scaling) { bb = new XBoundingBox(nr.getJTSGeometry()); } else { bb = new XBoundingBox(nr.getPosition().buffer(AbstractWFSForm.FEATURE_BORDER)); } } else if (strasse != null) { if (scaling) { bb = new XBoundingBox(strasse.getJTSGeometry()); } else { bb = new XBoundingBox(strasse.getPosition().buffer(AbstractWFSForm.FEATURE_BORDER)); } } else { return; } mc.gotoBoundingBox(bb, history, scaling, animation); chkVisualizeActionPerformed(null); fireWfsFormAddressPositioned(bb); } //GEN-LAST:event_cmdOkActionPerformed @Override public void garbageDuringAutoCompletion(final JComboBox box) { nr = null; } /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void cboNrActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_cboNrActionPerformed if (log.isDebugEnabled()) { log.debug("cboNrActionPerformed()"); // NOI18N } if (cboNr.getSelectedItem() instanceof WFSFormFeature) { nr = (WFSFormFeature)cboNr.getSelectedItem(); fireWfsFormAddressNrSelected(); } } //GEN-LAST:event_cboNrActionPerformed /** * DOCUMENT ME! * * @param args DOCUMENT ME! * * @throws Exception DOCUMENT ME! */ public static void main(final String[] args) throws Exception { try { // javax.swing.UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()) ; // javax.swing.UIManager.setLookAndFeel(new Plastic3DLookAndFeel()); // javax.swing.UIManager.setLookAndFeel(new PlasticLookAndFeel()); javax.swing.UIManager.setLookAndFeel(new PlasticXPLookAndFeel()); // javax.swing.UIManager.setLookAndFeel(new com.sun.java.swing.plaf.windows.WindowsLookAndFeel()); // UIManager.setLookAndFeel(new PlasticLookAndFeel()); javax.swing.UIManager.setLookAndFeel(new // PlasticXPLookAndFeel()); } catch (Exception e) { e.printStackTrace(); } final WFSFormQuery allStreets = new WFSFormQuery(); allStreets.setComponentName("cboAllStreets"); // NOI18N allStreets.setServerUrl("http://s103bdc-a1/deegreewfs/wfs"); // NOI18N allStreets.setDisplayTextProperty("geographicIdentifier"); // NOI18N allStreets.setExtentProperty("geographicExtent"); // NOI18N allStreets.setFilename("/request_all_streets.xml"); // NOI18N allStreets.setId("all_streets"); // NOI18N allStreets.setIdProperty("identifier"); // NOI18N allStreets.setTitle("Strassen"); // NOI18N allStreets.setType(WFSFormQuery.INITIAL); allStreets.setWfsQueryString(readFileAsString(new File("C:\\request_alle_strassen_extent.xml"))); // NOI18N final WFSFormQuery numbers = new WFSFormQuery(); numbers.setComponentName("cboNumbersOfAStreet"); // NOI18N numbers.setServerUrl("http://s103bdc-a1/deegreewfs/wfs"); // NOI18N numbers.setDisplayTextProperty("geographicIdentifier"); // NOI18N numbers.setExtentProperty("geographicExtent"); // NOI18N numbers.setFilename("/request_all_numbers.xml"); // NOI18N numbers.setId("numbers"); // NOI18N numbers.setIdProperty("identifier"); // NOI18N numbers.setTitle("Nr"); // NOI18N numbers.setType(WFSFormQuery.FOLLOWUP); numbers.setQueryPlaceholder("@@strasse_id@@"); // NOI18N numbers.setWfsQueryString(readFileAsString(new File("C:\\request_hausnummern_from_strasse_extent.xml"))); // NOI18N final Vector<WFSFormQuery> v = new Vector<WFSFormQuery>(); v.add(allStreets); v.add(numbers); final WFSFormAdress tester = new WFSFormAdress(); tester.setQueries(v); java.awt.EventQueue.invokeLater(new Runnable() { @Override public void run() { final JFrame f = new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.getContentPane().setLayout(new BorderLayout()); f.getContentPane().add(tester, BorderLayout.CENTER); f.setVisible(true); f.setSize(365, 65); } }); } /** * DOCUMENT ME! */ private void fireWfsFormAddressStreetSelected() { for (final WFSFormAdressListener curListener : listeners) { curListener.wfsFormAdressStreetSelected(); } } /** * DOCUMENT ME! */ private void fireWfsFormAddressNrSelected() { for (final WFSFormAdressListener curListener : listeners) { curListener.wfsFormAdressNrSelected(); } } /** * DOCUMENT ME! * * @param addressBB DOCUMENT ME! */ private void fireWfsFormAddressPositioned(final BoundingBox addressBB) { for (final WFSFormAdressListener curListener : listeners) { curListener.wfsFormAddressPositioned(addressBB); } } /** * DOCUMENT ME! * * @param listener DOCUMENT ME! */ public void addWFSFormAddressListner(final WFSFormAdressListener listener) { if (listener != null) { listeners.add(listener); } } /** * DOCUMENT ME! * * @param listener DOCUMENT ME! */ public void removeWFSFormAddressListner(final WFSFormAdressListener listener) { if (listener != null) { listeners.remove(listener); } } /** * DOCUMENT ME! * * @param file DOCUMENT ME! * * @return DOCUMENT ME! * * @throws java.io.IOException DOCUMENT ME! */ private static String readFileAsString(final File file) throws java.io.IOException { Log4JQuickConfig.configure4LumbermillOnLocalhost(); final StringBuffer fileData = new StringBuffer(1000); final BufferedReader reader = new BufferedReader( new FileReader(file)); char[] buf = new char[1024]; int numRead = 0; while ((numRead = reader.read(buf)) != -1) { final String readData = String.valueOf(buf, 0, numRead); fileData.append(readData); buf = new char[1024]; } reader.close(); return fileData.toString(); } }