/***************************************************
*
* cismet GmbH, Saarbruecken, Germany
*
* ... and it just works.
*
****************************************************/
/*
* WFSFormTester.java
*
* Created on 25. Juli 2006, 17:38
*/
package de.cismet.cismap.commons.wfsforms;
import org.deegree.datatypes.QualifiedName;
import org.deegree.model.feature.DefaultFeature;
import org.deegree.model.feature.FeatureProperty;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URI;
import java.util.HashMap;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.ListCellRenderer;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
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;
/**
* DOCUMENT ME!
*
* @author thorsten.hell@cismet.de
* @version $Revision$, $Date$
*/
public class WFSFormBPlanSearch extends AbstractWFSForm implements ActionListener {
//~ Instance fields --------------------------------------------------------
private final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(this.getClass());
private WFSFormFeature strasse = null;
private WFSFormFeature hit = null;
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JComboBox cboHits;
private javax.swing.JCheckBox chkLockScale;
private javax.swing.JCheckBox chkVisualize;
private javax.swing.JButton cmdOk;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel lblBehind;
private javax.swing.JPanel panFill;
private javax.swing.JProgressBar prbHits;
private javax.swing.JTextField txtSearch;
// End of variables declaration//GEN-END:variables
//~ Constructors -----------------------------------------------------------
/**
* Creates new form WFSFormTester.
*/
public WFSFormBPlanSearch() {
if (log.isDebugEnabled()) {
log.debug("new WFSFormBPlanSearch"); // NOI18N
}
try {
initComponents();
listComponents.put("cboHits", cboHits); // NOI18N
listComponents.put("cboHitsProgress", prbHits); // NOI18N
// cboStreets.setEditable(true);
// cboNr.setEditable(true);
StaticSwingTools.decorateWithFixedAutoCompleteDecorator(cboHits);
// prbLocationtypes.setPreferredSize(new java.awt.Dimension(1,5));
prbHits.setPreferredSize(new java.awt.Dimension(1, 5));
cboHits.setRenderer(new ListCellRenderer() {
@Override
public Component getListCellRendererComponent(final JList list,
final Object value,
final int index,
final boolean isSelected,
final boolean cellHasFocus) {
final DefaultListCellRenderer dlcr = new DefaultListCellRenderer();
final JLabel lbl = (JLabel)(dlcr.getListCellRendererComponent(
list,
value,
index,
isSelected,
cellHasFocus));
String additionalInfo = ""; // NOI18N
try {
final FeatureProperty[] fpa = ((WFSFormFeature)value).getRawFeatureArray(
"app",
"alternativeGeographicIdentifier",
"http://www.deegree.org/app"); // NOI18N
if (fpa != null) {
for (int i = 0; i < fpa.length; ++i) {
if (i > 0) {
additionalInfo += ", "; // NOI18N
}
additionalInfo += ((DefaultFeature)fpa[i].getValue())
.getProperties(
new QualifiedName(
"app",
"alternativeGeographicIdentifier",
new URI("http://www.deegree.org/app")))[0].getValue()
.toString(); // NOI18N
}
}
} catch (Exception ex) {
log.error(ex, ex);
}
if (additionalInfo != null) {
lbl.setToolTipText(additionalInfo);
}
return lbl;
}
});
pMark.setVisible(false);
txtSearch.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void changedUpdate(final DocumentEvent e) {
doSearch();
}
@Override
public void insertUpdate(final DocumentEvent e) {
doSearch();
}
@Override
public void removeUpdate(final DocumentEvent e) {
doSearch();
}
});
lblBehind.setMinimumSize(new Dimension(94, 16));
lblBehind.setMaximumSize(new Dimension(94, 16));
lblBehind.setPreferredSize(new Dimension(94, 16));
super.addActionListener(this);
// CismapBroker.getInstance().getMappingComponent().getHighlightingLayer().addChild(pMark);
} catch (Exception e) {
log.error("Could not Create WFForm", e); // NOI18N
}
}
//~ Methods ----------------------------------------------------------------
@Override
public void garbageDuringAutoCompletion(final JComboBox box) {
}
/**
* DOCUMENT ME!
*/
private void doSearch() {
if (txtSearch.getText().length() >= 2) {
if (log.isDebugEnabled()) {
log.debug("doSearch"); // NOI18N
}
final HashMap<String, String> hm = new HashMap<String, String>();
hm.put("@@search_text@@", txtSearch.getText()); // NOI18N
requestRefresh("cboHits", hm); // NOI18N
} else {
lblBehind.setText(org.openide.util.NbBundle.getMessage(
WFSFormBPlanSearch.class,
"WFSFormBPlanSearch.lblBehind.text")); // NOI18N
}
}
/**
* 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();
txtSearch = new javax.swing.JTextField();
lblBehind = new javax.swing.JLabel();
panFill = new javax.swing.JPanel();
cboHits = new javax.swing.JComboBox();
prbHits = new javax.swing.JProgressBar();
setBorder(javax.swing.BorderFactory.createEmptyBorder(2, 2, 2, 2));
setMinimumSize(new java.awt.Dimension(373, 1));
setLayout(new java.awt.GridBagLayout());
cmdOk.setMnemonic('P');
cmdOk.setText(org.openide.util.NbBundle.getMessage(WFSFormBPlanSearch.class, "WFSFormBPlanSearch.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 = 3;
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(
WFSFormBPlanSearch.class,
"WFSFormBPlanSearch.chkVisualize.toolTipText")); // NOI18N
chkVisualize.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
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 = 4;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridheight = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(7, 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(
WFSFormBPlanSearch.class,
"WFSFormBPlanSearch.jLabel1.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(5, 7, 0, 0);
add(jLabel1, gridBagConstraints);
chkLockScale.setSelected(true);
chkLockScale.setToolTipText(org.openide.util.NbBundle.getMessage(
WFSFormBPlanSearch.class,
"WFSFormBPlanSearch.chkLockScale.toolTipText")); // NOI18N
chkLockScale.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
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(7, 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(
WFSFormBPlanSearch.class,
"WFSFormBPlanSearch.jLabel2.toolTipText")); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 7;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridheight = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(3, 7, 0, 0);
add(jLabel2, gridBagConstraints);
txtSearch.setMaximumSize(new java.awt.Dimension(100, 19));
txtSearch.setMinimumSize(new java.awt.Dimension(100, 19));
txtSearch.setPreferredSize(new java.awt.Dimension(100, 19));
txtSearch.addInputMethodListener(new java.awt.event.InputMethodListener() {
@Override
public void caretPositionChanged(final java.awt.event.InputMethodEvent evt) {
}
@Override
public void inputMethodTextChanged(final java.awt.event.InputMethodEvent evt) {
txtSearchInputMethodTextChanged(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridheight = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(2, 0, 0, 0);
add(txtSearch, gridBagConstraints);
lblBehind.setText(org.openide.util.NbBundle.getMessage(
WFSFormBPlanSearch.class,
"WFSFormBPlanSearch.lblBehind.text")); // NOI18N
lblBehind.setMaximumSize(new java.awt.Dimension(120, 14));
lblBehind.setMinimumSize(new java.awt.Dimension(120, 14));
lblBehind.setPreferredSize(new java.awt.Dimension(120, 14));
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(4, 5, 0, 0);
add(lblBehind, gridBagConstraints);
panFill.setMinimumSize(new java.awt.Dimension(1, 1));
panFill.setPreferredSize(new java.awt.Dimension(1, 1));
final org.jdesktop.layout.GroupLayout panFillLayout = new org.jdesktop.layout.GroupLayout(panFill);
panFill.setLayout(panFillLayout);
panFillLayout.setHorizontalGroup(
panFillLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(0, 131, Short.MAX_VALUE));
panFillLayout.setVerticalGroup(
panFillLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(0, 30, Short.MAX_VALUE));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 8;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridheight = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
add(panFill, gridBagConstraints);
cboHits.setEnabled(false);
cboHits.setMaximumSize(new java.awt.Dimension(100, 19));
cboHits.setMinimumSize(new java.awt.Dimension(100, 19));
cboHits.setPreferredSize(new java.awt.Dimension(100, 19));
cboHits.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(final java.awt.event.ActionEvent evt) {
cboHitsActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 0;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(2, 3, 0, 0);
add(cboHits, gridBagConstraints);
prbHits.setBorderPainted(false);
prbHits.setMaximumSize(new java.awt.Dimension(100, 5));
prbHits.setMinimumSize(new java.awt.Dimension(100, 5));
prbHits.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(prbHits, gridBagConstraints);
} // </editor-fold>//GEN-END:initComponents
/**
* DOCUMENT ME!
*
* @param evt DOCUMENT ME!
*/
private void txtSearchInputMethodTextChanged(final java.awt.event.InputMethodEvent evt) { //GEN-FIRST:event_txtSearchInputMethodTextChanged
} //GEN-LAST:event_txtSearchInputMethodTextChanged
/**
* DOCUMENT ME!
*
* @param evt DOCUMENT ME!
*/
private void chkVisualizeActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_chkVisualizeActionPerformed
MappingComponent mc = getMappingComponent();
if (mc == null) {
mc = CismapBroker.getInstance().getMappingComponent();
}
if (hit != null) {
visualizePosition(hit, chkVisualize.isSelected());
}
} //GEN-LAST:event_chkVisualizeActionPerformed
/**
* 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 (hit != null) {
bb = new XBoundingBox(hit.getJTSGeometry());
} else {
return;
}
mc.gotoBoundingBox(bb, history, scaling, animation);
chkVisualizeActionPerformed(null);
mc.rescaleStickyNodes();
} //GEN-LAST:event_cmdOkActionPerformed
/**
* DOCUMENT ME!
*
* @param evt DOCUMENT ME!
*/
private void cboHitsActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_cboHitsActionPerformed
if (log.isDebugEnabled()) {
log.debug("cboHitssActionPerformed()"); // NOI18N
}
if (cboHits.getSelectedItem() instanceof WFSFormFeature) {
hit = (WFSFormFeature)cboHits.getSelectedItem();
}
} //GEN-LAST:event_cboHitsActionPerformed
@Override
public void actionPerformed(final ActionEvent e) {
lblBehind.setText(org.openide.util.NbBundle.getMessage(
WFSFormBPlanSearch.class,
"WFSFormBPlanSearch.lblBehind.text2",
new Object[] { cboHits.getItemCount() })); // NOI18N
if (log.isDebugEnabled()) {
log.debug("cboPois.getItemAt(0):" + cboHits.getItemAt(0)); // NOI18N
}
if (cboHits.getItemCount() == 1) {
cboHits.setEditable(false);
cboHits.setSelectedItem(cboHits.getItemAt(0));
cboHits.setEditable(true);
}
}
}