/***************************************************
*
* 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 WFSFormPOISearch 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 poi = null;
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JComboBox cboPois;
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 prbPois;
private javax.swing.JTextField txtSearch;
// End of variables declaration//GEN-END:variables
//~ Constructors -----------------------------------------------------------
/**
* Creates new form WFSFormTester.
*/
public WFSFormPOISearch() {
if (log.isDebugEnabled()) {
log.debug("new WFSFormPOISearch"); // NOI18N
}
try {
initComponents();
// cboStreets.setEditable(true);
// cboNr.setEditable(true);
StaticSwingTools.decorateWithFixedAutoCompleteDecorator(cboPois);
// prbLocationtypes.setPreferredSize(new java.awt.Dimension(1,5));
prbPois.setPreferredSize(new java.awt.Dimension(1, 5));
cboPois.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
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;
}
});
listComponents.put("cboPois", cboPois); // NOI18N
listComponents.put("cboPoisProgress", prbPois); // NOI18N
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() >= 3) {
if (log.isDebugEnabled()) {
log.debug("doSearch"); // NOI18N
}
final HashMap<String, String> hm = new HashMap<String, String>();
hm.put("@@search_text@@", txtSearch.getText()); // NOI18N
requestRefresh("cboPois", hm); // NOI18N
} else {
lblBehind.setText(org.openide.util.NbBundle.getMessage(
WFSFormPOISearch.class,
"WFSFormPOISearch.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();
cboPois = new javax.swing.JComboBox();
prbPois = 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(WFSFormPOISearch.class, "WFSFormPOISearch.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(
WFSFormPOISearch.class,
"WFSFormPOISearch.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(5, 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(
WFSFormPOISearch.class,
"WFSFormPOISearch.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(3, 7, 0, 0);
add(jLabel1, gridBagConstraints);
chkLockScale.setSelected(true);
chkLockScale.setToolTipText(org.openide.util.NbBundle.getMessage(
WFSFormPOISearch.class,
"WFSFormPOISearch.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(5, 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(
WFSFormPOISearch.class,
"WFSFormPOISearch.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(1, 7, 0, 0);
add(jLabel2, gridBagConstraints);
txtSearch.setMaximumSize(new java.awt.Dimension(220, 19));
txtSearch.setMinimumSize(new java.awt.Dimension(220, 19));
txtSearch.setPreferredSize(new java.awt.Dimension(220, 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.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(3, 0, 0, 0);
add(txtSearch, gridBagConstraints);
lblBehind.setText(org.openide.util.NbBundle.getMessage(
WFSFormPOISearch.class,
"WFSFormPOISearch.lblBehind.text")); // NOI18N
lblBehind.setMaximumSize(new java.awt.Dimension(150, 14));
lblBehind.setMinimumSize(new java.awt.Dimension(150, 14));
lblBehind.setPreferredSize(new java.awt.Dimension(150, 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(5, 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, 16, Short.MAX_VALUE));
panFillLayout.setVerticalGroup(
panFillLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(0, 34, 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 = 5.0;
gridBagConstraints.weighty = 1.0;
add(panFill, gridBagConstraints);
cboPois.setEnabled(false);
cboPois.setMaximumSize(new java.awt.Dimension(27, 19));
cboPois.setMinimumSize(new java.awt.Dimension(27, 19));
cboPois.setPreferredSize(new java.awt.Dimension(27, 19));
cboPois.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(final java.awt.event.ActionEvent evt) {
cboPoisActionPerformed(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 = 30.0;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 0, 0);
add(cboPois, gridBagConstraints);
prbPois.setBorderPainted(false);
prbPois.setMaximumSize(new java.awt.Dimension(100, 5));
prbPois.setMinimumSize(new java.awt.Dimension(100, 5));
prbPois.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(prbPois, 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
log.fatal("kik"); // NOI18N
} //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 (poi != null) {
visualizePosition(poi, 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 (poi != null) {
bb = new XBoundingBox(poi.getJTSGeometry());
} else {
return;
}
mc.gotoBoundingBox(bb, history, scaling, animation);
chkVisualizeActionPerformed(null);
} //GEN-LAST:event_cmdOkActionPerformed
/**
* DOCUMENT ME!
*
* @param evt DOCUMENT ME!
*/
private void cboPoisActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_cboPoisActionPerformed
if (log.isDebugEnabled()) {
log.debug("cboPoisActionPerformed()"); // NOI18N
}
if (cboPois.getSelectedItem() instanceof WFSFormFeature) {
poi = (WFSFormFeature)cboPois.getSelectedItem();
}
} //GEN-LAST:event_cboPoisActionPerformed
@Override
public void actionPerformed(final ActionEvent e) {
lblBehind.setText(org.openide.util.NbBundle.getMessage(
WFSFormPOISearch.class,
"WFSFormPOISearch.lblBehind.text2",
new Object[] { cboPois.getItemCount() })); // NOI18N
if (log.isDebugEnabled()) {
log.debug("cboPois.getItemAt(0):" + cboPois.getItemAt(0)); // NOI18N
}
if (cboPois.getItemCount() == 1) {
cboPois.setEditable(false);
cboPois.setSelectedItem(cboPois.getItemAt(0));
cboPois.setEditable(true);
}
}
}