/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ /* * StyleDialog.java * * Created on 25. Februar 2008, 10:38 */ package de.cismet.cismap.commons.featureservice.style; import com.jgoodies.looks.plastic.Plastic3DLookAndFeel; import org.apache.commons.io.IOUtils; import org.bounce.text.LineNumberMargin; import org.bounce.text.ScrollableEditorPanel; import org.bounce.text.xml.XMLDocument; import org.bounce.text.xml.XMLEditorKit; import org.bounce.text.xml.XMLStyleConstants; import org.jdom.Document; import org.jdom.output.Format; // import org.jdom.input.SAXBuilder; import org.jdom.output.XMLOutputter; import java.awt.Color; import java.awt.EventQueue; import java.awt.Font; import java.awt.Frame; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.Reader; import java.text.ParseException; import java.util.List; import java.util.Map; import java.util.TreeMap; import java.util.Vector; import javax.swing.ButtonGroup; import javax.swing.DefaultComboBoxModel; import javax.swing.ImageIcon; import javax.swing.JCheckBox; import javax.swing.JColorChooser; import javax.swing.JDialog; import javax.swing.JEditorPane; import javax.swing.JFileChooser; import javax.swing.JLabel; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPopupMenu; import javax.swing.JRadioButton; import javax.swing.JSeparator; import javax.swing.UIManager; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.swing.filechooser.FileFilter; import javax.swing.text.PlainDocument; import de.cismet.cismap.commons.RestrictedFileSystemView; import de.cismet.cismap.commons.featureservice.*; import de.cismet.cismap.commons.gui.piccolo.FeatureAnnotationSymbol; import de.cismet.lookupoptions.gui.OptionsDialog; import de.cismet.tools.CismetThreadPool; import de.cismet.tools.gui.StaticSwingTools; import de.cismet.tools.gui.log4jquickconfig.Log4JQuickConfig; /** * A dialog that lets you alter the FeatureLayers appearance. * * @author nh * @version $Revision$, $Date$ */ public class StyleDialog extends JDialog implements ListSelectionListener { //~ Static fields/initializers --------------------------------------------- // constants: filesystem private static final String CISMAP_FOLDER = ".cismap"; // NOI18N private static final String DEFAULT_HISTORY_NAME = "defaultStyleHistory.xml"; // NOI18N private static final String COLORCHOOSER_TITLE = org.openide.util.NbBundle.getMessage( StyleDialog.class, "StyleDialog.COLORCHOOSER_TITLE"); // NOI18N private static final String FONTCHOOSER_TITLE = org.openide.util.NbBundle.getMessage( StyleDialog.class, "StyleDialog.FONTCHOOSER_TITLE"); // NOI18N private static final String POINTSYMBOL_FOLDER = "/de/cismet/cismap/commons/featureservice/res/pointsymbols/"; // NOI18N // constants: popup // FIXME: I18N private static final String POPUP_SAVE = org.openide.util.NbBundle.getMessage( StyleDialog.class, "StyleDialog.POPUP_SAVE"); // NOI18N private static final String POPUP_LOAD = org.openide.util.NbBundle.getMessage( StyleDialog.class, "StyleDialog.POPUP_LOAD"); // NOI18N private static final String POPUP_CLEAR = org.openide.util.NbBundle.getMessage( StyleDialog.class, "StyleDialog.POPUP_CLEAR"); // NOI18N /** * <editor-fold defaultstate="collapsed" desc="Eventhandling">. * * @param evt DOCUMENT ME! */ private void closeDialog(final java.awt.event.WindowEvent evt) { //GEN-FIRST:event_closeDialog doClose(false); } //GEN-LAST:event_closeDialog /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void cmdOKActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_cmdOKActionPerformed // setLabelAttribute((cbbAttribute.getSelectedItem() == null) ? null : // cbbAttribute.getSelectedItem().toString()); // read content of textfields setMinScale(Integer.parseInt(txtMin.getText())); setMaxScale(Integer.parseInt(txtMax.getText())); try { txtMultiplier.commitEdit(); } catch (ParseException ex) { logger.warn("Could not perform a commitEdit()", ex); // NOI18N } setMultiplier(txtMultiplier.getValue()); // write new history if (defaultHistory != null) { writeHistory(defaultHistory, true); } if (isQueryStringChanged()) { if (logger.isDebugEnabled()) { logger.debug("setting new Query Template"); // NOI18N } // this.layerProperties.setQueryTemplate(this.queryEditor.getText(), this.layerProperties.QUERYTYPE_XML); } // // manipulate the returnfeature if (isStyleFeature) { ((StyledFeature) // feature).setFillingPaint(getStyle().isDrawFill() ? getStyle().getFillColor() : null); ((StyledFeature) // feature).setLinePaint(getStyle().isDrawLine() ? getStyle().getLineColor() : null); ((StyledFeature) // feature).setLineWidth(getStyle().getLineWidth()); ((StyledFeature) feature).setTransparency(getStyle().getAlpha()); // ((StyledFeature) feature).setPointAnnotationSymbol(getPointSymbol() == null ? pointSymbol : getPointSymbol()); // ((StyledFeature) feature).setHighlightingEnabled(getStyle().isHighlightFeature()); } // // if (isAnnotatedFeature) { ((AnnotatedFeature) feature).setPrimaryAnnotationVisible(getStyle().isDrawLabel()); // ((AnnotatedFeature) feature).setAutoScale(getStyle().isAutoscale()); //((AnnotatedFeature) // feature).setMaxScaleDenominator(getStyle().getMaxScale()); ((AnnotatedFeature) // feature).setMinScaleDenominator(getStyle().getMinScale()); ((AnnotatedFeature) // feature).setPrimaryAnnotation(getStyle().getAnnotationAttribute()); ((AnnotatedFeature) // feature).setPrimaryAnnotationJustification(getStyle().getAlignment()); ((AnnotatedFeature) // feature).setPrimaryAnnotationFont(getStyle().getFont()); ((AnnotatedFeature) // feature).setPrimaryAnnotationPaint(getStyle().getFontColor()); ((AnnotatedFeature) // feature).setPrimaryAnnotationScaling(getMultiplier()); } // // if (isIdFeature) { ((FeatureWithId) feature).setIdExpression(getIdExpression()); } doClose(true); } //GEN-LAST:event_cmdOKActionPerformed /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void cmdCancelActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_cmdCancelActionPerformed doClose(false); } //GEN-LAST:event_cmdCancelActionPerformed /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void chkFillPatternItemStateChanged(final java.awt.event.ItemEvent evt) { //GEN-FIRST:event_chkFillPatternItemStateChanged // not supported or shown // cbbFillPattern.setEnabled((evt.getStateChange() == ItemEvent.SELECTED)); // updatePreview(); } //GEN-LAST:event_chkFillPatternItemStateChanged /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void chkFillItemStateChanged(final java.awt.event.ItemEvent evt) { //GEN-FIRST:event_chkFillItemStateChanged cmdFill.setEnabled(chkFill.isSelected()); getStyle().setDrawFill(chkFill.isSelected()); updatePreview(); } //GEN-LAST:event_chkFillItemStateChanged /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void chkLineItemStateChanged(final java.awt.event.ItemEvent evt) { switchLineActive(chkLine.isSelected()); getStyle().setDrawLine(chkLine.isSelected()); updatePreview(); } /** * Enables/disables the components to change the lineproperties. * * @param flag true to enable, false to disable */ private void switchLineActive(final boolean flag) { cmdLine.setEnabled(flag); sldLineWidth.setEnabled(flag); txtLineWidth.setEnabled(flag); lblLineWidth.setEnabled(flag); } /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void chkLinePatternItemStateChanged(final java.awt.event.ItemEvent evt) { // not supported or shown cbbLinePattern.setEnabled((evt.getStateChange() == ItemEvent.SELECTED)); // updatePreview(); } /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void sldLineWidthStateChanged(final javax.swing.event.ChangeEvent evt) { //GEN-FIRST:event_sldLineWidthStateChanged // only permit linewidth > 0 if (sldLineWidth.getValue() == 0) { sldLineWidth.setValue(1); } setLineWidth(sldLineWidth.getValue()); updatePreview(); } //GEN-LAST:event_sldLineWidthStateChanged /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void sldAlphaStateChanged(final javax.swing.event.ChangeEvent evt) { //GEN-FIRST:event_sldAlphaStateChanged setAlpha(sldAlpha.getValue() / 100.0f); updatePreview(); } //GEN-LAST:event_sldAlphaStateChanged /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void cmdFillActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_cmdFillActionPerformed // set current color in the ColorChooser colorChooser.setColor(getStyle().getFillColor()); // show and evaluate ColorChooser (inside Actionlistener) final JDialog colorChooserDialog = JColorChooser.createDialog( this, COLORCHOOSER_TITLE, true, colorChooser, new ActionListener() { @Override public void actionPerformed(final ActionEvent e) { if (logger.isDebugEnabled()) { logger.debug("new filling = " + colorChooser.getColor()); // NOI18N } setFillColor(true, colorChooser.getColor()); if (chkSync.isSelected()) { setLineColor(true, BasicStyle.darken(colorChooser.getColor())); } updatePreview(); } }, new ActionListener() { @Override public void actionPerformed(final ActionEvent e) { if (logger.isDebugEnabled()) { logger.debug("ColorChooser cancelled"); // NOI18N } } }); StaticSwingTools.showDialog(colorChooserDialog); } //GEN-LAST:event_cmdFillActionPerformed /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void cmdLineActionPerformed(final java.awt.event.ActionEvent evt) { // set current color in the colorchooser colorChooser.setColor(getStyle().getLineColor()); // show and evaluate ColorChooser (inside Actionlistener) StaticSwingTools.showDialog(JColorChooser.createDialog( this, COLORCHOOSER_TITLE, true, colorChooser, new ActionListener() { @Override public void actionPerformed(final ActionEvent e) { if (logger.isDebugEnabled()) { logger.debug("new line color = " + colorChooser.getColor()); // NOI18N } StyleDialog.this.setLineColor(true, colorChooser.getColor()); updatePreview(); } }, new ActionListener() { @Override public void actionPerformed(final ActionEvent e) { if (logger.isDebugEnabled()) { logger.debug("ColorChooser cancelled"); // NOI18N } } })); } /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void chkActivateLabelsItemStateChanged(final java.awt.event.ItemEvent evt) { //GEN-FIRST:event_chkActivateLabelsItemStateChanged // enable/disable every labelling-oriented component final boolean flag = chkActivateLabels.isSelected(); setLabelingEnabled(flag); lblAnnotationExpression.setEnabled(flag); cbbAnnotationExpression.setEnabled(flag); lblAlignment.setEnabled(flag); radLeft.setEnabled(flag); radCenter.setEnabled(flag); radRight.setEnabled(flag); lblMultiplier.setEnabled(flag); txtMultiplier.setEnabled(flag); chkAutoscale.setEnabled(flag); lblMin.setEnabled(flag); txtMin.setEnabled(flag); lblMax.setEnabled(flag); txtMax.setEnabled(flag); lblFontname.setEnabled(flag); panLabelButtons.setEnabled(flag); cmdChangeTextColor.setEnabled(flag); cmdChangeFont.setEnabled(flag); updatePreview(); } //GEN-LAST:event_chkActivateLabelsItemStateChanged /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void sldPointSymbolSizeStateChanged(final javax.swing.event.ChangeEvent evt) { //GEN-FIRST:event_sldPointSymbolSizeStateChanged setPointSymbolSize(sldPointSymbolSize.getValue()); updatePreview(); } //GEN-LAST:event_sldPointSymbolSizeStateChanged /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void sldPointSymbolSizeMouseWheelMoved(final java.awt.event.MouseWheelEvent evt) { //GEN-FIRST:event_sldPointSymbolSizeMouseWheelMoved if (sldPointSymbolSize.isEnabled() && sldPointSymbolSize.isFocusOwner()) { sldPointSymbolSize.setValue(sldPointSymbolSize.getValue() - evt.getWheelRotation()); } } //GEN-LAST:event_sldPointSymbolSizeMouseWheelMoved /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void sldAlphaMouseWheelMoved(final java.awt.event.MouseWheelEvent evt) { //GEN-FIRST:event_sldAlphaMouseWheelMoved sldAlpha.setValue(sldAlpha.getValue() - (evt.getWheelRotation() * 5)); } //GEN-LAST:event_sldAlphaMouseWheelMoved /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void cmdChangeTextColorActionPerformed(final java.awt.event.ActionEvent evt) { // set current color in the colorchooser colorChooser.setColor(getStyle().getFontColor()); // show and evaluate ColorChooser (inside Actionlistener) StaticSwingTools.showDialog(JColorChooser.createDialog( this, COLORCHOOSER_TITLE, true, colorChooser, new ActionListener() { @Override public void actionPerformed(final ActionEvent e) { if (logger.isDebugEnabled()) { logger.debug("new font color = " + colorChooser.getColor()); // NOI18N } setFontColor(colorChooser.getColor()); updatePreview(); } }, new ActionListener() { @Override public void actionPerformed(final ActionEvent e) { if (logger.isDebugEnabled()) { logger.debug("ColorChooser cancelled"); // NOI18N } } })); } /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void cmdChangeFontActionPerformed(final java.awt.event.ActionEvent evt) { // show and evaluate FontChooser final Font temp = getStyle().getFont(); fontChooser.setSelectedFont(temp, temp.getSize(), temp.isBold(), temp.isItalic()); StaticSwingTools.showDialog(fontChooser, false); if (fontChooser.getReturnStatus() != null) { setFontType(fontChooser.getReturnStatus()); updatePreview(); } setLineWidth(sldLineWidth.getValue()); updatePreview(); } /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void chkAutoscaleItemStateChanged(final java.awt.event.ItemEvent evt) { //GEN-FIRST:event_chkAutoscaleItemStateChanged setAutoscale(chkAutoscale.isSelected()); } //GEN-LAST:event_chkAutoscaleItemStateChanged /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void cbbPointSymbolItemStateChanged(final java.awt.event.ItemEvent evt) { //GEN-FIRST:event_cbbPointSymbolItemStateChanged // evaluate the selection of the pointsymbol-ComboBox if (evt.getStateChange() == ItemEvent.SELECTED) { final String selectedPointSymbol = evt.getItem().toString(); if (logger.isDebugEnabled()) { logger.debug("select Point Symbol '" + selectedPointSymbol + "'"); // NOI18N } if (pointSymbolHM.containsKey(selectedPointSymbol)) { this.setPointSymbol(selectedPointSymbol); } else { logger.warn("unsupported point symbol '" + selectedPointSymbol + "'"); // NOI18N setPointSymbol(Style.NO_POINTSYMBOL); } } updatePreview(); } //GEN-LAST:event_cbbPointSymbolItemStateChanged /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void chkHighlightableItemStateChanged(final java.awt.event.ItemEvent evt) { //GEN-FIRST:event_chkHighlightableItemStateChanged setHighlighting(chkHighlightable.isSelected()); } //GEN-LAST:event_chkHighlightableItemStateChanged /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void chkSyncItemStateChanged(final java.awt.event.ItemEvent evt) { //GEN-FIRST:event_chkSyncItemStateChanged if (evt.getStateChange() == ItemEvent.SELECTED) { setLineColor(true, BasicStyle.darken(getStyle().getFillColor())); updatePreview(); } } //GEN-LAST:event_chkSyncItemStateChanged /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void chkLinewrapActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_chkLinewrapActionPerformed final XMLEditorKit kit = (XMLEditorKit)queryEditor.getEditorKit(); kit.setLineWrappingEnabled(chkLinewrap.isSelected()); queryEditor.updateUI(); } //GEN-LAST:event_chkLinewrapActionPerformed /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void chkFillActionPerformed(final java.awt.event.ActionEvent evt) //GEN-FIRST:event_chkFillActionPerformed { //GEN-HEADEREND:event_chkFillActionPerformed // TODO add your handling code here: } //GEN-LAST:event_chkFillActionPerformed /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void chkHighlightableActionPerformed(final java.awt.event.ActionEvent evt) //GEN-FIRST:event_chkHighlightableActionPerformed { //GEN-HEADEREND:event_chkHighlightableActionPerformed // TODO add your handling code // here: } //GEN-LAST:event_chkHighlightableActionPerformed /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void cbbPointSymbolActionPerformed(final java.awt.event.ActionEvent evt) //GEN-FIRST:event_cbbPointSymbolActionPerformed { //GEN-HEADEREND:event_cbbPointSymbolActionPerformed // TODO add your handling code // here: } //GEN-LAST:event_cbbPointSymbolActionPerformed /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void cbbAnnotationExpressionItemStateChanged(final java.awt.event.ItemEvent evt) //GEN-FIRST:event_cbbAnnotationExpressionItemStateChanged { //GEN-HEADEREND:event_cbbAnnotationExpressionItemStateChanged if (!this.ignoreSelectionEvent && (evt.getStateChange() == ItemEvent.SELECTED)) { final String annotationExpression = cbbAnnotationExpression.getSelectedItem().toString(); if (this.featureServiceAttributes.containsKey(annotationExpression)) { if (logger.isDebugEnabled()) { logger.debug("setting annotation expression to '" + annotationExpression + "' (EXPRESSIONTYPE_PROPERTYNAME)"); // NOI18N } this.layerProperties.setPrimaryAnnotationExpression( annotationExpression, LayerProperties.EXPRESSIONTYPE_PROPERTYNAME); } else { if (logger.isDebugEnabled()) { logger.debug("setting annotation expression to '" + annotationExpression + "' (EXPRESSIONTYPE_GROOVY)"); // NOI18N } this.layerProperties.setPrimaryAnnotationExpression( annotationExpression, LayerProperties.EXPRESSIONTYPE_GROOVY); } } } //GEN-LAST:event_cbbAnnotationExpressionItemStateChanged /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void cbbIdExpressionItemStateChanged(final java.awt.event.ItemEvent evt) //GEN-FIRST:event_cbbIdExpressionItemStateChanged { //GEN-HEADEREND:event_cbbIdExpressionItemStateChanged if (!this.ignoreSelectionEvent && (evt.getStateChange() == ItemEvent.SELECTED)) { final String idExpression = cbbIdExpression.getSelectedItem().toString(); if (this.featureServiceAttributes.containsKey(idExpression)) { if (logger.isDebugEnabled()) { logger.debug("setting primary key to '" + idExpression + "' (EXPRESSIONTYPE_PROPERTYNAME)"); // NOI18N } this.layerProperties.setIdExpression(idExpression, LayerProperties.EXPRESSIONTYPE_PROPERTYNAME); } else { if (logger.isDebugEnabled()) { logger.debug("setting primary key to '" + idExpression + "' (EXPRESSIONTYPE_GROOVY)"); // NOI18N } this.layerProperties.setIdExpression(idExpression, LayerProperties.EXPRESSIONTYPE_GROOVY); } } } //GEN-LAST:event_cbbIdExpressionItemStateChanged /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void cmdAddActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_cmdAddActionPerformed // TODO add your handling code here: } //GEN-LAST:event_cmdAddActionPerformed /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void chkUseQueryStringActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_chkUseQueryStringActionPerformed // TODO add your handling code here: } //GEN-LAST:event_chkUseQueryStringActionPerformed /** * Changes the style of the StyleDialog if the selection of the historylist has changed. * * @param evt ListSelectionEvent */ @Override public void valueChanged(final ListSelectionEvent evt) { try { final Style restoredStyle = (Style)lstHistory.getSelectedValue(); this.layerProperties.setStyle((Style)restoredStyle.clone()); this.updateDialog(); this.updatePreview(); } catch (Exception ex) { logger.error("Fehler beim Auslesen des Styles", ex); // NOI18N } } /** * Get the value of featureServiceAttributes. * * @return the value of featureServiceAttributes */ public Map<String, FeatureServiceAttribute> getFeatureServiceAttributes() { if (!this.isAccepted()) { logger.warn("supicious call to 'getFeatureServiceAttributes()', changes not accepted"); // NOI18N } return featureServiceAttributes; } /** * Set the value of featureServiceAttributes. * * @param featureServiceAttributes new value of featureServiceAttributes */ public void setFeatureServiceAttributes(final Map<String, FeatureServiceAttribute> featureServiceAttributes) { this.oldFeatureServiceAttributes = featureServiceAttributes; this.featureServiceAttributes = new TreeMap(); for (final FeatureServiceAttribute fsa : featureServiceAttributes.values()) { this.featureServiceAttributes.put(fsa.getName(), fsa.clone()); } } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public boolean isGeoAttributeChanged() { for (final FeatureServiceAttribute oldAttribute : this.oldFeatureServiceAttributes.values()) { if (oldAttribute.isGeometry()) { final FeatureServiceAttribute newAttribute = this.featureServiceAttributes.get(oldAttribute.getName()); if (newAttribute.isSelected() != oldAttribute.isSelected()) { return true; } } } return false; } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public boolean isAttributeSelectionChanged() { for (final FeatureServiceAttribute oldAttribute : this.oldFeatureServiceAttributes.values()) { if (!oldAttribute.isGeometry()) { final FeatureServiceAttribute newAttribute = this.featureServiceAttributes.get(oldAttribute.getName()); if (newAttribute.isSelected() != oldAttribute.isSelected()) { return true; } } } return false; } private final org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(this.getClass()); private final String home = System.getProperty("user.home"); // NOI18N private final String seperator = System.getProperty("file.separator"); // NOI18N private final File fileToCismapFolder = new File(home + seperator + CISMAP_FOLDER); private TreeMap<String, FeatureAnnotationSymbol> pointSymbolHM = new TreeMap(); private TreeMap<String, FeatureServiceAttribute> featureServiceAttributes; private Map<String, FeatureServiceAttribute> oldFeatureServiceAttributes; private FeatureAnnotationSymbol pointSymbol = null; private File defaultHistory; private JColorChooser colorChooser; private FontChooserDialog fontChooser; private JPopupMenu popupMenu; private JEditorPane queryEditor = new JEditorPane(); private LayerProperties layerProperties; private boolean accepted = false; private boolean ignoreSelectionEvent = true; // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.ButtonGroup btgAlignment; private javax.swing.ButtonGroup btgGeom; private javax.swing.JComboBox cbbAnnotationExpression; private javax.swing.JComboBox cbbFillPattern; private javax.swing.JComboBox cbbIdExpression; private javax.swing.JComboBox cbbLinePattern; private javax.swing.JComboBox cbbPointSymbol; private javax.swing.JCheckBox chkActivateLabels; private javax.swing.JCheckBox chkAutoscale; private javax.swing.JCheckBox chkCustomSLD; private javax.swing.JCheckBox chkFill; private javax.swing.JCheckBox chkFillPattern; private javax.swing.JCheckBox chkHighlightable; private javax.swing.JCheckBox chkLine; private javax.swing.JCheckBox chkLinePattern; private javax.swing.JCheckBox chkLinewrap; private javax.swing.JCheckBox chkSync; private javax.swing.JCheckBox chkUseQueryString; private javax.swing.JButton cmdAdd; private javax.swing.JButton cmdCancel; private javax.swing.JButton cmdChangeFont; private javax.swing.JButton cmdChangeTextColor; private javax.swing.JButton cmdFill; private javax.swing.JButton cmdLine; private javax.swing.JButton cmdOK; private javax.swing.JButton cmdRemove; private javax.swing.JEditorPane jEditorPane1; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; private javax.swing.JPanel jPanel4; private javax.swing.JPanel jPanel7; private javax.swing.JPanel jPanel8; private javax.swing.JPanel jPanel9; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JSeparator jSeparator1; private javax.swing.JLabel lblAlignment; private javax.swing.JLabel lblAlpha; private javax.swing.JLabel lblAnnotationExpression; private javax.swing.JLabel lblFontname; private javax.swing.JLabel lblHistory; private javax.swing.JLabel lblIdExpression; private javax.swing.JLabel lblLineWidth; private javax.swing.JLabel lblMax; private javax.swing.JLabel lblMin; private javax.swing.JLabel lblMultiplier; private javax.swing.JLabel lblPointSymbol; private javax.swing.JLabel lblPointSymbolSize; private javax.swing.JLabel lblPreview; private javax.swing.JList lstHistory; private javax.swing.JPanel panAlignment; private javax.swing.JPanel panAttribGeo; private javax.swing.JPanel panAttribNorm; private javax.swing.JPanel panAttribSeparator; private javax.swing.JPanel panDialogButtons; private javax.swing.JPanel panFill; private javax.swing.JPanel panFillColor; private javax.swing.JPanel panFontColor; private javax.swing.JPanel panInfo; private javax.swing.JPanel panInfoComp; private javax.swing.JPanel panLabelButtons; private javax.swing.JPanel panLabeling; private javax.swing.JPanel panLineColor; private javax.swing.JPanel panMain; private javax.swing.JPanel panPreview; private javax.swing.JPanel panQueryCheckbox; private javax.swing.JPanel panRules; private javax.swing.JPanel panRulesButtons; private javax.swing.JPanel panRulesScroll; private javax.swing.JPanel panSLDDefinition; private javax.swing.JPanel panScale; private javax.swing.JPanel panScrollpane; private javax.swing.JPanel panTabAttrib; private javax.swing.JPanel panTabFill; private javax.swing.JPanel panTabLabeling; private javax.swing.JPanel panTabQuery; private javax.swing.JPanel panTabRules; private javax.swing.JPanel panTabs; private javax.swing.JPanel panTransColor; private javax.swing.JPanel panTransWhite; private javax.swing.JRadioButton radCenter; private javax.swing.JRadioButton radLeft; private javax.swing.JRadioButton radRight; private javax.swing.JScrollPane scpQuery; private javax.swing.JScrollPane scrHistory; private javax.swing.JSlider sldAlpha; private javax.swing.JSlider sldLineWidth; private javax.swing.JSlider sldPointSymbolSize; private javax.swing.JTabbedPane tbpTabs; private javax.swing.JTextField txtLineWidth; private javax.swing.JFormattedTextField txtMax; private javax.swing.JFormattedTextField txtMin; private javax.swing.JFormattedTextField txtMultiplier; private javax.swing.JTextField txtPointSymbolSize; private javax.swing.JTextField txtTransparency; private org.jdesktop.beansbinding.BindingGroup bindingGroup; // End of variables declaration//GEN-END:variables /** * Constructor for new StyleDialog-objects. * * @param parent parent-frame of this dialog * @param modal true, if the dialog should block the parent */ public StyleDialog(final Frame parent, final boolean modal) { super(parent, modal); try { logger.info("Erstelle StyleDialog"); // NOI18N this.layerProperties = new DefaultLayerProperties(); createPointSymbols(); initComponents(); createXMLEditor(); setLocationRelativeTo(this.getParent()); colorChooser = new JColorChooser(); fontChooser = new FontChooserDialog(this, FONTCHOOSER_TITLE); // create historylist createHistoryListPopupMenu(); lstHistory.setCellRenderer(new StyleHistoryListCellRenderer()); lstHistory.addListSelectionListener(this); lstHistory.addMouseListener(new MouseAdapter() { @Override public void mouseReleased(final MouseEvent e) { if (e.isPopupTrigger() && !popupMenu.isVisible()) { popupMenu.show(e.getComponent(), e.getX(), e.getY()); } } @Override public void mousePressed(final MouseEvent e) { if (e.isPopupTrigger() && !popupMenu.isVisible()) { popupMenu.show(e.getComponent(), e.getX(), e.getY()); } } }); // load the defaultHistory if available defaultHistory = searchDefaultHistory(); loadHistory(defaultHistory); // create listener for XML-editor queryEditor.getDocument().addDocumentListener(new DocumentListener() { @Override public void insertUpdate(final DocumentEvent e) { chkUseQueryString.setSelected(true); if (logger.isDebugEnabled()) { logger.debug(e.getChange(e.getDocument().getDefaultRootElement())); } } @Override public void removeUpdate(final DocumentEvent e) { chkUseQueryString.setSelected(true); } @Override public void changedUpdate(final DocumentEvent e) { chkUseQueryString.setSelected(true); } }); // hide not implemented functions chkFillPattern.setVisible(false); cbbFillPattern.setVisible(false); chkLinePattern.setVisible(false); cbbLinePattern.setVisible(false); // not yet! // this.updateDialog(); // this.updatePreview(); } catch (Throwable t) { logger.error("could not create StyleDialog: " + t.getMessage(), t); // NOI18N } } /** * DOCUMENT ME! * * @param args the command line arguments */ public static void main(final String[] args) { // Log4J initialisieren Log4JQuickConfig.configure4LumbermillOnLocalhost(); try { // Look&Feel auf das des Navigators setzen UIManager.setLookAndFeel(new Plastic3DLookAndFeel()); } catch (Exception ex) { } EventQueue.invokeLater(new Runnable() { @Override public void run() { final StyleDialog dialog; try { dialog = new StyleDialog(new javax.swing.JFrame(), true); dialog.addWindowListener(new java.awt.event.WindowAdapter() { @Override public void windowClosing(final java.awt.event.WindowEvent e) { System.exit(0); } }); dialog.setVisible(true); } catch (Exception ex) { ex.printStackTrace(); } } }); } /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void sldLineWidthMouseWheelMoved(final java.awt.event.MouseWheelEvent evt) { //GEN-FIRST:event_sldLineWidthMouseWheelMoved if (sldLineWidth.isEnabled() && sldLineWidth.isFocusOwner()) { sldLineWidth.setValue(sldLineWidth.getValue() - evt.getWheelRotation()); } } //GEN-LAST:event_sldLineWidthMouseWheelMoved /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void radRightActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_radRightActionPerformed setAlignment(JLabel.RIGHT_ALIGNMENT); } //GEN-LAST:event_radRightActionPerformed /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void radLeftActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_radLeftActionPerformed setAlignment(JLabel.LEFT_ALIGNMENT); } //GEN-LAST:event_radLeftActionPerformed /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void radCenterActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_radCenterActionPerformed setAlignment(JLabel.CENTER_ALIGNMENT); } //GEN-LAST:event_radCenterActionPerformed /** * 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; bindingGroup = new org.jdesktop.beansbinding.BindingGroup(); panTabRules = new javax.swing.JPanel(); panRulesButtons = new javax.swing.JPanel(); cmdAdd = new javax.swing.JButton(); cmdRemove = new javax.swing.JButton(); panRulesScroll = new javax.swing.JPanel(); jScrollPane1 = new javax.swing.JScrollPane(); panRules = new javax.swing.JPanel(); btgGeom = new javax.swing.ButtonGroup(); btgAlignment = new javax.swing.ButtonGroup(); panTabQuery = new javax.swing.JPanel(); panScrollpane = new javax.swing.JPanel(); scpQuery = new javax.swing.JScrollPane(); panQueryCheckbox = new javax.swing.JPanel(); chkLinewrap = new javax.swing.JCheckBox(); chkUseQueryString = new javax.swing.JCheckBox(); panMain = new javax.swing.JPanel(); panInfo = new javax.swing.JPanel(); panInfoComp = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); jPanel3 = new javax.swing.JPanel(); jPanel1 = new javax.swing.JPanel(); panPreview = new StylePreviewPanel(); lblPreview = new javax.swing.JLabel(); panTabs = new javax.swing.JPanel(); tbpTabs = new javax.swing.JTabbedPane(); panTabFill = new javax.swing.JPanel(); panFill = new javax.swing.JPanel(); chkFill = new javax.swing.JCheckBox(); chkFillPattern = new javax.swing.JCheckBox(); cbbFillPattern = new javax.swing.JComboBox(); chkLine = new javax.swing.JCheckBox(); chkLinePattern = new javax.swing.JCheckBox(); cbbLinePattern = new javax.swing.JComboBox(); chkSync = new javax.swing.JCheckBox(); chkHighlightable = new javax.swing.JCheckBox(); lblLineWidth = new javax.swing.JLabel(); sldLineWidth = new javax.swing.JSlider(); txtLineWidth = new javax.swing.JTextField(); lblAlpha = new javax.swing.JLabel(); txtTransparency = new javax.swing.JTextField(); jPanel7 = new javax.swing.JPanel(); panTransWhite = new javax.swing.JPanel(); sldAlpha = new javax.swing.JSlider(); panTransColor = new javax.swing.JPanel(); jPanel8 = new javax.swing.JPanel(); panFillColor = new javax.swing.JPanel(); cmdFill = new javax.swing.JButton(); jPanel9 = new javax.swing.JPanel(); panLineColor = new javax.swing.JPanel(); cmdLine = new javax.swing.JButton(); scrHistory = new javax.swing.JScrollPane(); lstHistory = new javax.swing.JList(); lblHistory = new javax.swing.JLabel(); lblPointSymbol = new javax.swing.JLabel(); cbbPointSymbol = new javax.swing.JComboBox(); cbbPointSymbol.setModel(new DefaultComboBoxModel(new Vector(this.pointSymbolHM.keySet()))); lblPointSymbolSize = new javax.swing.JLabel(); sldPointSymbolSize = new javax.swing.JSlider(); txtPointSymbolSize = new javax.swing.JTextField(); panTabLabeling = new javax.swing.JPanel(); panLabeling = new javax.swing.JPanel(); chkActivateLabels = new javax.swing.JCheckBox(); lblAnnotationExpression = new javax.swing.JLabel(); cbbAnnotationExpression = new javax.swing.JComboBox(); panLabelButtons = new javax.swing.JPanel(); cmdChangeTextColor = new javax.swing.JButton(); cmdChangeFont = new javax.swing.JButton(); lblFontname = new javax.swing.JLabel(); panFontColor = new javax.swing.JPanel(); panScale = new javax.swing.JPanel(); lblMin = new javax.swing.JLabel(); txtMin = new javax.swing.JFormattedTextField(); lblMax = new javax.swing.JLabel(); txtMax = new javax.swing.JFormattedTextField(); chkAutoscale = new javax.swing.JCheckBox(); panAlignment = new javax.swing.JPanel(); radLeft = new javax.swing.JRadioButton(); radCenter = new javax.swing.JRadioButton(); radRight = new javax.swing.JRadioButton(); lblAlignment = new javax.swing.JLabel(); lblMultiplier = new javax.swing.JLabel(); txtMultiplier = new javax.swing.JFormattedTextField(); panTabAttrib = new javax.swing.JPanel(); jPanel2 = new javax.swing.JPanel(); panAttribGeo = new javax.swing.JPanel(); panAttribSeparator = new javax.swing.JPanel(); jSeparator1 = new javax.swing.JSeparator(); panAttribNorm = new javax.swing.JPanel(); lblIdExpression = new javax.swing.JLabel(); cbbIdExpression = new javax.swing.JComboBox(); panSLDDefinition = new javax.swing.JPanel(); jPanel4 = new javax.swing.JPanel(); jScrollPane2 = new javax.swing.JScrollPane(); jEditorPane1 = new javax.swing.JEditorPane(); chkCustomSLD = new javax.swing.JCheckBox(); panDialogButtons = new javax.swing.JPanel(); cmdOK = new javax.swing.JButton(); cmdCancel = new javax.swing.JButton(); panTabRules.setLayout(new java.awt.BorderLayout()); panRulesButtons.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 5, 5, 5)); panRulesButtons.setLayout(new java.awt.FlowLayout(0)); cmdAdd.setIcon(new javax.swing.ImageIcon( getClass().getResource("/de/cismet/cismap/commons/featureservice/res/rule_add.png"))); // NOI18N cmdAdd.setText(org.openide.util.NbBundle.getMessage(StyleDialog.class, "StyleDialog.cmdAdd.text")); // NOI18N cmdAdd.setMargin(new java.awt.Insets(2, 5, 2, 5)); panRulesButtons.add(cmdAdd); cmdRemove.setIcon(new javax.swing.ImageIcon( getClass().getResource("/de/cismet/cismap/commons/featureservice/res/rule_remove.png"))); // NOI18N cmdRemove.setText(org.openide.util.NbBundle.getMessage(StyleDialog.class, "StyleDialog.cmdRemove.text")); // NOI18N cmdRemove.setMargin(new java.awt.Insets(2, 5, 2, 5)); panRulesButtons.add(cmdRemove); panTabRules.add(panRulesButtons, java.awt.BorderLayout.SOUTH); panRulesScroll.setBorder(javax.swing.BorderFactory.createEmptyBorder(10, 10, 0, 10)); panRulesScroll.setLayout(new java.awt.BorderLayout()); jScrollPane1.setBorder(javax.swing.BorderFactory.createBevelBorder(1)); panRules.setBackground(new java.awt.Color(255, 255, 255)); panRules.setLayout(new java.awt.GridLayout(1, 0)); jScrollPane1.setViewportView(panRules); panRulesScroll.add(jScrollPane1, java.awt.BorderLayout.CENTER); panTabRules.add(panRulesScroll, java.awt.BorderLayout.CENTER); panTabQuery.setBorder(javax.swing.BorderFactory.createCompoundBorder( javax.swing.BorderFactory.createEmptyBorder(10, 10, 10, 10), javax.swing.BorderFactory.createTitledBorder("Query bearbeiten"))); panTabQuery.setLayout(new java.awt.BorderLayout()); panScrollpane.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 5, 0, 5)); panScrollpane.setLayout(new java.awt.BorderLayout()); panScrollpane.add(scpQuery, java.awt.BorderLayout.CENTER); panTabQuery.add(panScrollpane, java.awt.BorderLayout.CENTER); panQueryCheckbox.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 5, 0, 5)); panQueryCheckbox.setLayout(new java.awt.GridLayout(2, 0)); chkLinewrap.setText(org.openide.util.NbBundle.getMessage(StyleDialog.class, "StyleDialog.chkLinewrap.text")); // NOI18N chkLinewrap.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { chkLinewrapActionPerformed(evt); } }); panQueryCheckbox.add(chkLinewrap); chkUseQueryString.setText(org.openide.util.NbBundle.getMessage( StyleDialog.class, "StyleDialog.chkUseQueryString.text")); // NOI18N chkUseQueryString.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { chkUseQueryStringActionPerformed(evt); } }); panQueryCheckbox.add(chkUseQueryString); panTabQuery.add(panQueryCheckbox, java.awt.BorderLayout.SOUTH); setTitle(org.openide.util.NbBundle.getMessage(StyleDialog.class, "StyleDialog.title")); // NOI18N setLocationByPlatform(true); setMinimumSize(new java.awt.Dimension(685, 461)); setModal(true); addWindowListener(new java.awt.event.WindowAdapter() { @Override public void windowClosing(final java.awt.event.WindowEvent evt) { closeDialog(evt); } }); panMain.setMinimumSize(new java.awt.Dimension(620, 433)); panMain.setPreferredSize(new java.awt.Dimension(620, 433)); panMain.setLayout(new java.awt.BorderLayout()); panInfo.setBorder(javax.swing.BorderFactory.createCompoundBorder( javax.swing.BorderFactory.createCompoundBorder( javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5), javax.swing.BorderFactory.createEtchedBorder()), javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5))); panInfo.setLayout(new java.awt.BorderLayout()); panInfoComp.setLayout(new java.awt.GridBagLayout()); jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel1.setIcon(new javax.swing.ImageIcon( getClass().getResource("/de/cismet/cismap/commons/featureservice/res/style.png"))); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; panInfoComp.add(jLabel1, gridBagConstraints); jLabel2.setLabelFor(jLabel1); jLabel2.setText(org.openide.util.NbBundle.getMessage(StyleDialog.class, "StyleDialog.jLabel2.text")); // NOI18N jLabel2.setVerticalAlignment(javax.swing.SwingConstants.TOP); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; panInfoComp.add(jLabel2, gridBagConstraints); panInfo.add(panInfoComp, java.awt.BorderLayout.NORTH); jPanel3.setPreferredSize(new java.awt.Dimension(150, 220)); jPanel3.setLayout(new java.awt.GridBagLayout()); jPanel1.setBorder(javax.swing.BorderFactory.createBevelBorder(1)); jPanel1.setMinimumSize(new java.awt.Dimension(150, 200)); jPanel1.setPreferredSize(new java.awt.Dimension(150, 150)); jPanel1.setLayout(new java.awt.BorderLayout()); panPreview.setBackground(new java.awt.Color(255, 255, 255)); final javax.swing.GroupLayout panPreviewLayout = new javax.swing.GroupLayout(panPreview); panPreview.setLayout(panPreviewLayout); panPreviewLayout.setHorizontalGroup( panPreviewLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap( 0, 146, Short.MAX_VALUE)); panPreviewLayout.setVerticalGroup( panPreviewLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap( 0, 184, Short.MAX_VALUE)); jPanel1.add(panPreview, java.awt.BorderLayout.CENTER); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.gridheight = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weighty = 1.0; jPanel3.add(jPanel1, gridBagConstraints); lblPreview.setLabelFor(panPreview); lblPreview.setText(org.openide.util.NbBundle.getMessage(StyleDialog.class, "StyleDialog.lblPreview.text")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(15, 0, 0, 0); jPanel3.add(lblPreview, gridBagConstraints); panInfo.add(jPanel3, java.awt.BorderLayout.SOUTH); panMain.add(panInfo, java.awt.BorderLayout.WEST); panTabs.setBorder(javax.swing.BorderFactory.createEmptyBorder(2, 0, 5, 5)); panTabs.setLayout(new java.awt.BorderLayout()); tbpTabs.setToolTipText(""); panTabFill.setLayout(new java.awt.BorderLayout()); panFill.setBorder(javax.swing.BorderFactory.createEmptyBorder(20, 20, 20, 20)); panFill.setLayout(new java.awt.GridBagLayout()); chkFill.setSelected(true); chkFill.setText(org.openide.util.NbBundle.getMessage(StyleDialog.class, "StyleDialog.chkFill.text")); // NOI18N chkFill.addItemListener(new java.awt.event.ItemListener() { @Override public void itemStateChanged(final java.awt.event.ItemEvent evt) { chkFillItemStateChanged(evt); } }); chkFill.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { chkFillActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 10); panFill.add(chkFill, gridBagConstraints); chkFillPattern.setText(org.openide.util.NbBundle.getMessage( StyleDialog.class, "StyleDialog.chkFillPattern.text")); // NOI18N chkFillPattern.setEnabled(false); chkFillPattern.addItemListener(new java.awt.event.ItemListener() { @Override public void itemStateChanged(final java.awt.event.ItemEvent evt) { chkFillPatternItemStateChanged(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 10); panFill.add(chkFillPattern, gridBagConstraints); cbbFillPattern.setModel(new javax.swing.DefaultComboBoxModel( new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); cbbFillPattern.setEnabled(false); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 1; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 10); panFill.add(cbbFillPattern, gridBagConstraints); chkLine.setText(org.openide.util.NbBundle.getMessage(StyleDialog.class, "StyleDialog.chkLine.text")); // NOI18N chkLine.addItemListener(new java.awt.event.ItemListener() { @Override public void itemStateChanged(final java.awt.event.ItemEvent evt) { chkLineItemStateChanged(evt); } }); chkLine.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { chkLineActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(10, 0, 5, 10); panFill.add(chkLine, gridBagConstraints); chkLinePattern.setText(org.openide.util.NbBundle.getMessage( StyleDialog.class, "StyleDialog.chkLinePattern.text")); // NOI18N chkLinePattern.setEnabled(false); chkLinePattern.addItemListener(new java.awt.event.ItemListener() { @Override public void itemStateChanged(final java.awt.event.ItemEvent evt) { chkLinePatternItemStateChanged(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 3; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 10); panFill.add(chkLinePattern, gridBagConstraints); cbbLinePattern.setModel(new javax.swing.DefaultComboBoxModel( new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); cbbLinePattern.setEnabled(false); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 3; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 10); panFill.add(cbbLinePattern, gridBagConstraints); chkSync.setText(org.openide.util.NbBundle.getMessage(StyleDialog.class, "StyleDialog.chkLineSync.text")); // NOI18N chkSync.addItemListener(new java.awt.event.ItemListener() { @Override public void itemStateChanged(final java.awt.event.ItemEvent evt) { chkSyncItemStateChanged(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 4; gridBagConstraints.gridwidth = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(10, 0, 5, 10); panFill.add(chkSync, gridBagConstraints); chkHighlightable.setText(org.openide.util.NbBundle.getMessage( StyleDialog.class, "StyleDialog.chkHighlightable.text")); // NOI18N chkHighlightable.addItemListener(new java.awt.event.ItemListener() { @Override public void itemStateChanged(final java.awt.event.ItemEvent evt) { chkHighlightableItemStateChanged(evt); } }); chkHighlightable.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { chkHighlightableActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 5; gridBagConstraints.gridwidth = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 10); panFill.add(chkHighlightable, gridBagConstraints); lblLineWidth.setLabelFor(sldLineWidth); lblLineWidth.setText(org.openide.util.NbBundle.getMessage(StyleDialog.class, "StyleDialog.lblLineWidth.text")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 6; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 10); panFill.add(lblLineWidth, gridBagConstraints); sldLineWidth.setMajorTickSpacing(10); sldLineWidth.setMaximum(20); sldLineWidth.setMinorTickSpacing(1); sldLineWidth.setPaintLabels(true); sldLineWidth.setSnapToTicks(true); sldLineWidth.setValue(1); sldLineWidth.setEnabled(false); sldLineWidth.setMinimumSize(new java.awt.Dimension(130, 37)); sldLineWidth.setPreferredSize(new java.awt.Dimension(130, 37)); sldLineWidth.addMouseWheelListener(new java.awt.event.MouseWheelListener() { @Override public void mouseWheelMoved(final java.awt.event.MouseWheelEvent evt) { sldLineWidthMouseWheelMoved(evt); } }); sldLineWidth.addChangeListener(new javax.swing.event.ChangeListener() { @Override public void stateChanged(final javax.swing.event.ChangeEvent evt) { sldLineWidthStateChanged(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 6; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0); panFill.add(sldLineWidth, gridBagConstraints); txtLineWidth.setColumns(2); txtLineWidth.setEditable(false); txtLineWidth.setHorizontalAlignment(javax.swing.JTextField.RIGHT); txtLineWidth.setText("1"); txtLineWidth.setEnabled(false); txtLineWidth.setFocusable(false); txtLineWidth.setMinimumSize(new java.awt.Dimension(35, 20)); txtLineWidth.setPreferredSize(new java.awt.Dimension(35, 20)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 6; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0); panFill.add(txtLineWidth, gridBagConstraints); lblAlpha.setLabelFor(jPanel7); lblAlpha.setText(org.openide.util.NbBundle.getMessage(StyleDialog.class, "StyleDialog.lblAlpha.text")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 7; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 10); panFill.add(lblAlpha, gridBagConstraints); txtTransparency.setColumns(3); txtTransparency.setEditable(false); txtTransparency.setHorizontalAlignment(javax.swing.JTextField.RIGHT); txtTransparency.setText("100"); txtTransparency.setFocusable(false); txtTransparency.setMinimumSize(new java.awt.Dimension(35, 20)); txtTransparency.setPreferredSize(new java.awt.Dimension(35, 20)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 7; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0); panFill.add(txtTransparency, gridBagConstraints); jPanel7.setLayout(new java.awt.FlowLayout(1, 2, 0)); panTransWhite.setBackground(new java.awt.Color(255, 255, 255)); panTransWhite.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(102, 102, 102))); panTransWhite.setMaximumSize(new java.awt.Dimension(14, 14)); panTransWhite.setMinimumSize(new java.awt.Dimension(14, 14)); panTransWhite.setPreferredSize(new java.awt.Dimension(14, 14)); final javax.swing.GroupLayout panTransWhiteLayout = new javax.swing.GroupLayout(panTransWhite); panTransWhite.setLayout(panTransWhiteLayout); panTransWhiteLayout.setHorizontalGroup( panTransWhiteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap( 0, 12, Short.MAX_VALUE)); panTransWhiteLayout.setVerticalGroup( panTransWhiteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap( 0, 12, Short.MAX_VALUE)); jPanel7.add(panTransWhite); sldAlpha.setMajorTickSpacing(10); sldAlpha.setMinorTickSpacing(1); sldAlpha.setSnapToTicks(true); sldAlpha.setValue(100); sldAlpha.setMinimumSize(new java.awt.Dimension(100, 23)); sldAlpha.setPreferredSize(new java.awt.Dimension(100, 23)); sldAlpha.addMouseWheelListener(new java.awt.event.MouseWheelListener() { @Override public void mouseWheelMoved(final java.awt.event.MouseWheelEvent evt) { sldAlphaMouseWheelMoved(evt); } }); sldAlpha.addChangeListener(new javax.swing.event.ChangeListener() { @Override public void stateChanged(final javax.swing.event.ChangeEvent evt) { sldAlphaStateChanged(evt); } }); jPanel7.add(sldAlpha); panTransColor.setBackground(new java.awt.Color(0, 180, 0)); panTransColor.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(102, 102, 102))); panTransColor.setMaximumSize(new java.awt.Dimension(14, 14)); panTransColor.setMinimumSize(new java.awt.Dimension(14, 14)); panTransColor.setPreferredSize(new java.awt.Dimension(14, 14)); final javax.swing.GroupLayout panTransColorLayout = new javax.swing.GroupLayout(panTransColor); panTransColor.setLayout(panTransColorLayout); panTransColorLayout.setHorizontalGroup( panTransColorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap( 0, 12, Short.MAX_VALUE)); panTransColorLayout.setVerticalGroup( panTransColorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap( 0, 12, Short.MAX_VALUE)); jPanel7.add(panTransColor); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 7; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0); panFill.add(jPanel7, gridBagConstraints); jPanel8.setLayout(new java.awt.FlowLayout(0, 5, 0)); panFillColor.setBackground(new java.awt.Color(0, 180, 0)); panFillColor.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(102, 102, 102))); panFillColor.setMaximumSize(new java.awt.Dimension(35, 15)); panFillColor.setMinimumSize(new java.awt.Dimension(35, 15)); panFillColor.setPreferredSize(new java.awt.Dimension(35, 15)); final javax.swing.GroupLayout panFillColorLayout = new javax.swing.GroupLayout(panFillColor); panFillColor.setLayout(panFillColorLayout); panFillColorLayout.setHorizontalGroup( panFillColorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap( 0, 33, Short.MAX_VALUE)); panFillColorLayout.setVerticalGroup( panFillColorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap( 0, 13, Short.MAX_VALUE)); jPanel8.add(panFillColor); cmdFill.setText("..."); cmdFill.setMaximumSize(new java.awt.Dimension(90, 18)); cmdFill.setMinimumSize(new java.awt.Dimension(30, 18)); cmdFill.setPreferredSize(new java.awt.Dimension(30, 18)); cmdFill.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { cmdFillActionPerformed(evt); } }); jPanel8.add(cmdFill); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 0; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 10); panFill.add(jPanel8, gridBagConstraints); jPanel9.setLayout(new java.awt.FlowLayout(0, 5, 0)); panLineColor.setBackground(new java.awt.Color(0, 125, 0)); panLineColor.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(102, 102, 102))); panLineColor.setMaximumSize(new java.awt.Dimension(35, 15)); panLineColor.setMinimumSize(new java.awt.Dimension(35, 15)); panLineColor.setPreferredSize(new java.awt.Dimension(35, 15)); final javax.swing.GroupLayout panLineColorLayout = new javax.swing.GroupLayout(panLineColor); panLineColor.setLayout(panLineColorLayout); panLineColorLayout.setHorizontalGroup( panLineColorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap( 0, 33, Short.MAX_VALUE)); panLineColorLayout.setVerticalGroup( panLineColorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap( 0, 13, Short.MAX_VALUE)); jPanel9.add(panLineColor); cmdLine.setText("..."); cmdLine.setEnabled(false); cmdLine.setMaximumSize(new java.awt.Dimension(30, 18)); cmdLine.setMinimumSize(new java.awt.Dimension(30, 18)); cmdLine.setPreferredSize(new java.awt.Dimension(30, 18)); cmdLine.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { cmdLineActionPerformed(evt); } }); jPanel9.add(cmdLine); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(10, 0, 5, 10); panFill.add(jPanel9, gridBagConstraints); scrHistory.setMinimumSize(new java.awt.Dimension(80, 50)); scrHistory.setPreferredSize(new java.awt.Dimension(80, 50)); lstHistory.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); scrHistory.setViewportView(lstHistory); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 3; gridBagConstraints.gridy = 0; gridBagConstraints.gridheight = 10; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weighty = 1.0; gridBagConstraints.insets = new java.awt.Insets(0, 30, 0, 30); panFill.add(scrHistory, gridBagConstraints); lblHistory.setFont(new java.awt.Font("Tahoma", 0, 9)); // NOI18N lblHistory.setLabelFor(lstHistory); lblHistory.setText("history.xml"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 3; gridBagConstraints.gridy = 10; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.insets = new java.awt.Insets(0, 30, 0, 0); panFill.add(lblHistory, gridBagConstraints); lblPointSymbol.setLabelFor(cbbPointSymbol); lblPointSymbol.setText(org.openide.util.NbBundle.getMessage( StyleDialog.class, "StyleDialog.lblPointSymbol.text")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 8; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.insets = new java.awt.Insets(10, 0, 10, 10); panFill.add(lblPointSymbol, gridBagConstraints); cbbPointSymbol.setMaximumRowCount(9); cbbPointSymbol.setMinimumSize(new java.awt.Dimension(45, 25)); cbbPointSymbol.setPreferredSize(new java.awt.Dimension(45, 25)); cbbPointSymbol.setRenderer(new PointSymbolListRenderer()); cbbPointSymbol.addItemListener(new java.awt.event.ItemListener() { @Override public void itemStateChanged(final java.awt.event.ItemEvent evt) { cbbPointSymbolItemStateChanged(evt); } }); cbbPointSymbol.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { cbbPointSymbolActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 8; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.insets = new java.awt.Insets(10, 0, 10, 10); panFill.add(cbbPointSymbol, gridBagConstraints); lblPointSymbolSize.setLabelFor(sldPointSymbolSize); lblPointSymbolSize.setText(org.openide.util.NbBundle.getMessage( StyleDialog.class, "StyleDialog.lblPointSymbolSize.text")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 9; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.insets = new java.awt.Insets(5, 0, 5, 10); panFill.add(lblPointSymbolSize, gridBagConstraints); sldPointSymbolSize.setMajorTickSpacing(10); sldPointSymbolSize.setMaximum(Style.MAX_POINTSYMBOLSIZE); sldPointSymbolSize.setMinimum(Style.MIN_POINTSYMBOLSIZE); sldPointSymbolSize.setMinorTickSpacing(1); sldPointSymbolSize.setPaintLabels(true); sldPointSymbolSize.setSnapToTicks(true); sldPointSymbolSize.setValue(Style.MIN_POINTSYMBOLSIZE); sldPointSymbolSize.setMinimumSize(new java.awt.Dimension(130, 37)); sldPointSymbolSize.setPreferredSize(new java.awt.Dimension(130, 37)); sldPointSymbolSize.addMouseWheelListener(new java.awt.event.MouseWheelListener() { @Override public void mouseWheelMoved(final java.awt.event.MouseWheelEvent evt) { sldPointSymbolSizeMouseWheelMoved(evt); } }); sldPointSymbolSize.addChangeListener(new javax.swing.event.ChangeListener() { @Override public void stateChanged(final javax.swing.event.ChangeEvent evt) { sldPointSymbolSizeStateChanged(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 9; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0); panFill.add(sldPointSymbolSize, gridBagConstraints); txtPointSymbolSize.setColumns(2); txtPointSymbolSize.setEditable(false); txtPointSymbolSize.setHorizontalAlignment(javax.swing.JTextField.RIGHT); txtPointSymbolSize.setText("10"); txtPointSymbolSize.setFocusable(false); txtPointSymbolSize.setMinimumSize(new java.awt.Dimension(35, 20)); txtPointSymbolSize.setPreferredSize(new java.awt.Dimension(35, 20)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 9; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0); panFill.add(txtPointSymbolSize, gridBagConstraints); panTabFill.add(panFill, java.awt.BorderLayout.WEST); tbpTabs.addTab(org.openide.util.NbBundle.getMessage(StyleDialog.class, "StyleDialog.tbpTabs.tab1.title"), new javax.swing.ImageIcon( getClass().getResource("/de/cismet/cismap/commons/featureservice/res/style_color.png")), panTabFill); // NOI18N org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding( org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, chkCustomSLD, org.jdesktop.beansbinding.ELProperty.create("${selected}"), panTabLabeling, org.jdesktop.beansbinding.BeanProperty.create("enabled")); bindingGroup.addBinding(binding); panTabLabeling.setLayout(new java.awt.FlowLayout(0, 20, 20)); panLabeling.setLayout(new java.awt.GridBagLayout()); chkActivateLabels.setSelected(true); chkActivateLabels.setText(org.openide.util.NbBundle.getMessage( StyleDialog.class, "StyleDialog.chkActivateLabels.text")); // NOI18N chkActivateLabels.addItemListener(new java.awt.event.ItemListener() { @Override public void itemStateChanged(final java.awt.event.ItemEvent evt) { chkActivateLabelsItemStateChanged(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 0, 20, 0); panLabeling.add(chkActivateLabels, gridBagConstraints); lblAnnotationExpression.setLabelFor(cbbAnnotationExpression); lblAnnotationExpression.setText(org.openide.util.NbBundle.getMessage( StyleDialog.class, "StyleDialog.lblAttrib.text")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 10, 5, 15); panLabeling.add(lblAnnotationExpression, gridBagConstraints); cbbAnnotationExpression.setEditable(true); cbbAnnotationExpression.addItemListener(new java.awt.event.ItemListener() { @Override public void itemStateChanged(final java.awt.event.ItemEvent evt) { cbbAnnotationExpressionItemStateChanged(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 1; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0); panLabeling.add(cbbAnnotationExpression, gridBagConstraints); panLabelButtons.setBorder(javax.swing.BorderFactory.createTitledBorder( org.openide.util.NbBundle.getMessage(StyleDialog.class, "StyleDialog.panLabelButtons.border.title"))); // NOI18N panLabelButtons.setLayout(new java.awt.GridBagLayout()); cmdChangeTextColor.setText(org.openide.util.NbBundle.getMessage( StyleDialog.class, "StyleDialog.cmdChangeColor.text")); // NOI18N cmdChangeTextColor.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { cmdChangeTextColorActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(10, 5, 5, 5); panLabelButtons.add(cmdChangeTextColor, gridBagConstraints); cmdChangeFont.setText(org.openide.util.NbBundle.getMessage( StyleDialog.class, "StyleDialog.cmdChangeFont.text")); // NOI18N cmdChangeFont.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { cmdChangeFontActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(5, 5, 10, 5); panLabelButtons.add(cmdChangeFont, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 1; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(5, 5, 10, 0); panLabelButtons.add(lblFontname, gridBagConstraints); panFontColor.setBackground(new java.awt.Color(0, 0, 0)); panFontColor.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(102, 102, 102))); panFontColor.setMinimumSize(new java.awt.Dimension(20, 20)); panFontColor.setPreferredSize(new java.awt.Dimension(20, 20)); final javax.swing.GroupLayout panFontColorLayout = new javax.swing.GroupLayout(panFontColor); panFontColor.setLayout(panFontColorLayout); panFontColorLayout.setHorizontalGroup( panFontColorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap( 0, 18, Short.MAX_VALUE)); panFontColorLayout.setVerticalGroup( panFontColorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap( 0, 18, Short.MAX_VALUE)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 0; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(10, 5, 5, 0); panLabelButtons.add(panFontColor, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 6; gridBagConstraints.gridwidth = 2; gridBagConstraints.gridheight = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.insets = new java.awt.Insets(15, 0, 0, 0); panLabeling.add(panLabelButtons, gridBagConstraints); panScale.setLayout(new java.awt.FlowLayout(1, 5, 0)); lblMin.setLabelFor(txtMin); lblMin.setText(org.openide.util.NbBundle.getMessage(StyleDialog.class, "StyleDialog.lblMin.text")); // NOI18N panScale.add(lblMin); txtMin.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory( new javax.swing.text.NumberFormatter(new java.text.DecimalFormat("#0")))); txtMin.setText("1"); txtMin.setMinimumSize(new java.awt.Dimension(60, 20)); txtMin.setPreferredSize(new java.awt.Dimension(60, 20)); panScale.add(txtMin); lblMax.setLabelFor(txtMax); lblMax.setText(org.openide.util.NbBundle.getMessage(StyleDialog.class, "StyleDialog.lblMax.text")); // NOI18N panScale.add(lblMax); txtMax.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory( new javax.swing.text.NumberFormatter(new java.text.DecimalFormat("#0")))); txtMax.setText("2500"); txtMax.setMinimumSize(new java.awt.Dimension(60, 20)); txtMax.setPreferredSize(new java.awt.Dimension(60, 20)); panScale.add(txtMax); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 3; gridBagConstraints.gridwidth = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 5, 10, 0); panLabeling.add(panScale, gridBagConstraints); chkAutoscale.setSelected(true); chkAutoscale.setText(org.openide.util.NbBundle.getMessage(StyleDialog.class, "StyleDialog.chkAutoscale.text")); // NOI18N chkAutoscale.addItemListener(new java.awt.event.ItemListener() { @Override public void itemStateChanged(final java.awt.event.ItemEvent evt) { chkAutoscaleItemStateChanged(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 5; gridBagConstraints.gridwidth = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 10, 5, 0); panLabeling.add(chkAutoscale, gridBagConstraints); panAlignment.setLayout(new java.awt.FlowLayout(0, 5, 0)); btgAlignment.add(radLeft); radLeft.setSelected(true); radLeft.setText(org.openide.util.NbBundle.getMessage(StyleDialog.class, "StyleDialog.radleft.text")); // NOI18N radLeft.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { radLeftActionPerformed(evt); } }); panAlignment.add(radLeft); btgAlignment.add(radCenter); radCenter.setText(org.openide.util.NbBundle.getMessage(StyleDialog.class, "StyleDialog.radCenter.text")); // NOI18N radCenter.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { radCenterActionPerformed(evt); } }); panAlignment.add(radCenter); btgAlignment.add(radRight); radRight.setText(org.openide.util.NbBundle.getMessage(StyleDialog.class, "StyleDialog.radRight.text")); // NOI18N radRight.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { radRightActionPerformed(evt); } }); panAlignment.add(radRight); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0); panLabeling.add(panAlignment, gridBagConstraints); lblAlignment.setLabelFor(panAlignment); lblAlignment.setText(org.openide.util.NbBundle.getMessage(StyleDialog.class, "StyleDialog.lblAlignment.text")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 10, 5, 15); panLabeling.add(lblAlignment, gridBagConstraints); lblMultiplier.setLabelFor(txtMultiplier); lblMultiplier.setText(org.openide.util.NbBundle.getMessage( StyleDialog.class, "StyleDialog.lblMultiplier.text")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 4; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 10, 5, 15); panLabeling.add(lblMultiplier, gridBagConstraints); txtMultiplier.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory( new javax.swing.text.NumberFormatter(new java.text.DecimalFormat("#,##0.00")))); txtMultiplier.setText("1,00"); txtMultiplier.setMinimumSize(new java.awt.Dimension(40, 20)); txtMultiplier.setPreferredSize(new java.awt.Dimension(40, 20)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 4; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0); panLabeling.add(txtMultiplier, gridBagConstraints); panTabLabeling.add(panLabeling); tbpTabs.addTab(org.openide.util.NbBundle.getMessage(StyleDialog.class, "StyleDialog.tbpTabs.tab2.title"), new javax.swing.ImageIcon( getClass().getResource("/de/cismet/cismap/commons/featureservice/res/labelling.png")), panTabLabeling); // NOI18N panTabAttrib.setBorder(javax.swing.BorderFactory.createCompoundBorder( javax.swing.BorderFactory.createEmptyBorder(10, 10, 10, 10), javax.swing.BorderFactory.createTitledBorder( org.openide.util.NbBundle.getMessage(StyleDialog.class, "StyleDialog.panTabAttrib.border.title")))); // NOI18N binding = org.jdesktop.beansbinding.Bindings.createAutoBinding( org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, chkCustomSLD, org.jdesktop.beansbinding.ELProperty.create("${selected}"), panTabAttrib, org.jdesktop.beansbinding.BeanProperty.create("enabled")); bindingGroup.addBinding(binding); panTabAttrib.setBorder(javax.swing.BorderFactory.createCompoundBorder( javax.swing.BorderFactory.createEmptyBorder(10, 10, 10, 10), javax.swing.BorderFactory.createTitledBorder( org.openide.util.NbBundle.getMessage(StyleDialog.class, "StyleDialog.panTabAttrib.border.title")))); // NOI18N binding = org.jdesktop.beansbinding.Bindings.createAutoBinding( org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, chkCustomSLD, org.jdesktop.beansbinding.ELProperty.create("${selected}"), panTabAttrib, org.jdesktop.beansbinding.BeanProperty.create("enabled")); bindingGroup.addBinding(binding); panTabAttrib.setBorder(javax.swing.BorderFactory.createCompoundBorder( javax.swing.BorderFactory.createEmptyBorder(10, 10, 10, 10), javax.swing.BorderFactory.createTitledBorder( org.openide.util.NbBundle.getMessage(StyleDialog.class, "StyleDialog.panTabAttrib.border.title")))); // NOI18N binding = org.jdesktop.beansbinding.Bindings.createAutoBinding( org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, chkCustomSLD, org.jdesktop.beansbinding.ELProperty.create("${selected}"), panTabAttrib, org.jdesktop.beansbinding.BeanProperty.create("enabled")); bindingGroup.addBinding(binding); panTabAttrib.setLayout(new java.awt.FlowLayout(1, 5, 0)); jPanel2.setLayout(new java.awt.GridBagLayout()); panAttribGeo.setLayout(new javax.swing.BoxLayout(panAttribGeo, javax.swing.BoxLayout.Y_AXIS)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 3; gridBagConstraints.gridwidth = 2; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 20); jPanel2.add(panAttribGeo, gridBagConstraints); panAttribSeparator.setLayout(new java.awt.BorderLayout()); panAttribSeparator.add(jSeparator1, java.awt.BorderLayout.CENTER); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 2; gridBagConstraints.gridwidth = 2; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(10, 0, 10, 0); jPanel2.add(panAttribSeparator, gridBagConstraints); panAttribNorm.setLayout(new javax.swing.BoxLayout(panAttribNorm, javax.swing.BoxLayout.Y_AXIS)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.gridwidth = 2; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 20); jPanel2.add(panAttribNorm, gridBagConstraints); lblIdExpression.setLabelFor(cbbIdExpression); lblIdExpression.setText(org.openide.util.NbBundle.getMessage(StyleDialog.class, "StyleDialog.lblPrimary.text")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; gridBagConstraints.insets = new java.awt.Insets(0, 0, 20, 10); jPanel2.add(lblIdExpression, gridBagConstraints); cbbIdExpression.addItemListener(new java.awt.event.ItemListener() { @Override public void itemStateChanged(final java.awt.event.ItemEvent evt) { cbbIdExpressionItemStateChanged(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(0, 0, 20, 0); jPanel2.add(cbbIdExpression, gridBagConstraints); panTabAttrib.add(jPanel2); tbpTabs.addTab(org.openide.util.NbBundle.getMessage(StyleDialog.class, "StyleDialog.tbpTabs.tab3.title"), new javax.swing.ImageIcon( getClass().getResource("/de/cismet/cismap/commons/featureservice/res/attributes.png")), panTabAttrib); // NOI18N panTabAttrib.getAccessibleContext().setAccessibleName(null); panSLDDefinition.setBorder(javax.swing.BorderFactory.createCompoundBorder( javax.swing.BorderFactory.createEmptyBorder(10, 10, 10, 10), javax.swing.BorderFactory.createTitledBorder("SLD Definition"))); panSLDDefinition.setLayout(new java.awt.BorderLayout()); jPanel4.setLayout(new java.awt.GridBagLayout()); binding = org.jdesktop.beansbinding.Bindings.createAutoBinding( org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, chkCustomSLD, org.jdesktop.beansbinding.ELProperty.create("${!selected}"), jEditorPane1, org.jdesktop.beansbinding.BeanProperty.create("enabled")); bindingGroup.addBinding(binding); jScrollPane2.setViewportView(jEditorPane1); jEditorPane1.getAccessibleContext().setAccessibleName(""); 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 = 1.0; gridBagConstraints.weighty = 1.0; gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10); jPanel4.add(jScrollPane2, gridBagConstraints); chkCustomSLD.setSelected(true); chkCustomSLD.setText("Expertenmodus"); chkCustomSLD.setToolTipText(""); chkCustomSLD.setDisabledSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/icon-unlock.png"))); // NOI18N chkCustomSLD.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icon-unlock.png"))); // NOI18N chkCustomSLD.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/icon-lock.png"))); // NOI18N chkCustomSLD.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { chkCustomSLDActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(5, 10, 10, 10); jPanel4.add(chkCustomSLD, gridBagConstraints); panSLDDefinition.add(jPanel4, java.awt.BorderLayout.CENTER); tbpTabs.addTab("SLD Definition", panSLDDefinition); panTabs.add(tbpTabs, java.awt.BorderLayout.CENTER); tbpTabs.getAccessibleContext() .setAccessibleName(org.openide.util.NbBundle.getMessage( StyleDialog.class, "StyleDialog.tbpTabs.tab1.title")); // NOI18N panMain.add(panTabs, java.awt.BorderLayout.CENTER); getContentPane().add(panMain, java.awt.BorderLayout.CENTER); panDialogButtons.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 5, -5)); panDialogButtons.setLayout(new java.awt.FlowLayout(2, 10, 0)); cmdOK.setText(org.openide.util.NbBundle.getMessage(StyleDialog.class, "StyleDialog.cmdIOK.text")); // NOI18N cmdOK.setMaximumSize(new java.awt.Dimension(88, 23)); cmdOK.setMinimumSize(new java.awt.Dimension(88, 23)); cmdOK.setPreferredSize(new java.awt.Dimension(88, 23)); cmdOK.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { cmdOKActionPerformed(evt); } }); panDialogButtons.add(cmdOK); cmdCancel.setText(org.openide.util.NbBundle.getMessage(StyleDialog.class, "StyleDialog.cmdCancel.text")); // NOI18N cmdCancel.setMaximumSize(new java.awt.Dimension(88, 23)); cmdCancel.setMinimumSize(new java.awt.Dimension(88, 23)); cmdCancel.setPreferredSize(new java.awt.Dimension(88, 23)); cmdCancel.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { cmdCancelActionPerformed(evt); } }); panDialogButtons.add(cmdCancel); getContentPane().add(panDialogButtons, java.awt.BorderLayout.SOUTH); bindingGroup.bind(); pack(); } // </editor-fold>//GEN-END:initComponents //~ Instance fields -------------------------------------------------------- private String layerName; //~ Methods ---------------------------------------------------------------- /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void chkLineActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_chkLineActionPerformed // TODO add your handling code here: } //GEN-LAST:event_chkLineActionPerformed /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void chkCustomSLDActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_chkCustomSLDActionPerformed if (!chkCustomSLD.isSelected()) { final int i = JOptionPane.showConfirmDialog( this, "Das aktivieren des Expertenmodus übernimmt die Füllfarbe,\nLinienfarbe und Linienstaerke aus dem einfachen Stil", "Sind Sie sicher?", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE); if (i == JOptionPane.YES_OPTION) { jEditorPane1.setText(getSLDStyle(true)); } else { chkCustomSLD.setSelected(true); return; } } tbpTabs.setEnabledAt(tbpTabs.indexOfComponent(panTabFill), chkCustomSLD.isSelected()); tbpTabs.setEnabledAt(tbpTabs.indexOfComponent(panTabLabeling), chkCustomSLD.isSelected()); tbpTabs.setEnabledAt(tbpTabs.indexOfComponent(panTabAttrib), chkCustomSLD.isSelected()); } //GEN-LAST:event_chkCustomSLDActionPerformed /** * Returns a modified CloneableFeature. * * @return CloneableFeature with the current style */ // public CloneableFeature getReturnStatus() // { // return feature; // } public String getSLDStyle() { return chkCustomSLD.isSelected() ? "" : getSLDStyle(false); } /** * DOCUMENT ME! * * @param simpleStyle DOCUMENT ME! * * @return DOCUMENT ME! */ public String getSLDStyle(final boolean simpleStyle) { if (simpleStyle) { String sld = "<sld:StyledLayerDescriptor xmlns:sld=\"http://www.opengis.net/sld\" xmlns:se=\"http://www.opengis.net/se\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n" + " xmlns:wfs=\"http://www.opengis.net/wfs\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:fo=\"http://www.w3.org/1999/XSL/Format\"\n" + " xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns=\"http://www.opengis.net/sld\" version=\"1.1.0\"\n" + " xsi:schemaLocation=\"http://www.opengis.net/sld http://schemas.opengis.net/sld/1.1.0/StyledLayerDescriptor.xsd\">\n" + " <sld:NamedLayer>\n" + " <!-- This styling file shows the use of SLD styling -->\n" + " <sld:Name>" + layerName + "</sld:Name>\n" // todo correct layer name + " <sld:UserStyle>\n" + " <sld:Name>" + layerName + "</sld:Name>\n" + " <sld:Title>" + layerName + "</sld:Title>\n" + " <sld:FeatureTypeStyle>\n" + " <sld:Name>" + layerName + "</sld:Name>\n" + " <sld:Rule>\n" + " <sld:Name>" + layerName + "</sld:Name>\n"; sld += " <sld:PolygonSymbolizer uom=\"http://www.opengeospatial/se/units/pixel\">\n"; if (chkFill.isSelected()) { sld += " <sld:Fill>\n"; sld += " <sld:CssParameter name=\"fill\">"; sld += "#" + Integer.toHexString(panFillColor.getBackground().getRGB()).substring(2).toUpperCase(); sld += "</sld:CssParameter>\n"; if (panFillColor.getBackground().getAlpha() != 255) { sld += " <sld:CssParameter name=\"fill-opacity\">"; sld += (float)((panFillColor.getBackground().getAlpha() * 100) / 255) * 0.01f; sld += "</sld:CssParameter>\n"; } sld += " </sld:Fill>\n"; } if (chkLine.isSelected()) { sld += " <sld:Stroke>\n"; sld += " <sld:CssParameter name=\"stroke\">"; sld += "#" + Integer.toHexString(panLineColor.getBackground().getRGB()).substring(2).toUpperCase(); sld += "</sld:CssParameter>\n"; if (panLineColor.getBackground().getAlpha() != 255) { sld += " <sld:CssParameter name=\"stroke-opacity\">"; sld += (float)((panLineColor.getBackground().getAlpha() * 100) / 255) * 0.01f; sld += "</sld:CssParameter>\n"; } sld += " <sld:CssParameter name=\"stroke-width\">"; sld += sldLineWidth.getValue(); sld += "</sld:CssParameter>\n"; //" <!--<se:SvgParameter name=\"stroke-dasharray\">5,7.5,10,2.5</se:SvgParameter>-->\n" + //" <se:SvgParameter name=\"stroke-linecap\">butt</se:SvgParameter>\n" + sld += " </sld:Stroke>\n"; } sld += " </sld:PolygonSymbolizer>\n"; sld += (" </sld:Rule>\n" + " </sld:FeatureTypeStyle>\n" + " </sld:UserStyle>\n" + " </sld:NamedLayer>\n" + "</sld:StyledLayerDescriptor>"); return sld; // new StringReader(sld); } else { return jEditorPane1.getText(); // new StringReader(jEditorPane1.getText()); } } /** * Get the value of layerProperties. * * @return the value of layerProperties */ public LayerProperties getLayerProperties() { if (!this.isAccepted()) { logger.warn("supicious call to 'getLayerProperties()', changes not accepted"); // NOI18N } return this.layerProperties; } /** * Set the value of layerProperties. * * @param layerProperties new value of layerProperties */ protected void setLayerProperties(final LayerProperties layerProperties) { this.layerProperties = layerProperties.clone(); } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ private Style getStyle() { return this.layerProperties.getStyle(); } /** * Closes the dialog and sets the returnvalue. * * @param accepted retStatus new returnvalue */ private void doClose(final boolean accepted) { this.setAccepted(accepted); tbpTabs.setSelectedComponent(panTabFill); lstHistory.setSelectedIndex(-1); setVisible(false); dispose(); } /** * Creates the XML-editor and adds it to the scrollpane. */ private void createXMLEditor() { try { final XMLEditorKit kit = new XMLEditorKit(true); kit.setWrapStyleWord(true); kit.setLineWrappingEnabled(chkLinewrap.isSelected()); queryEditor.setEditorKit(kit); queryEditor.setFont(new Font("Monospace", Font.PLAIN, 12)); // NOI18N queryEditor.getDocument().putProperty(PlainDocument.tabSizeAttribute, new Integer(4)); queryEditor.getDocument().putProperty(XMLDocument.AUTO_INDENTATION_ATTRIBUTE, new Boolean(true)); queryEditor.getDocument().putProperty(XMLDocument.TAG_COMPLETION_ATTRIBUTE, new Boolean(true)); // Set style kit.setStyle(XMLStyleConstants.ATTRIBUTE_NAME, Color.GREEN.darker(), Font.PLAIN); kit.setStyle(XMLStyleConstants.ATTRIBUTE_VALUE, Color.MAGENTA.darker(), Font.PLAIN); kit.setStyle(XMLStyleConstants.COMMENT, Color.GRAY, Font.PLAIN); kit.setStyle(XMLStyleConstants.DECLARATION, Color.DARK_GRAY, Font.BOLD); kit.setStyle(XMLStyleConstants.ELEMENT_NAME, Color.BLUE, Font.PLAIN); kit.setStyle(XMLStyleConstants.ELEMENT_PREFIX, Color.BLUE, Font.PLAIN); kit.setStyle(XMLStyleConstants.ELEMENT_VALUE, Color.BLACK, Font.BOLD); kit.setStyle(XMLStyleConstants.NAMESPACE_NAME, Color.GREEN.darker(), Font.PLAIN); kit.setStyle(XMLStyleConstants.NAMESPACE_VALUE, Color.MAGENTA.darker(), Font.PLAIN); kit.setStyle(XMLStyleConstants.NAMESPACE_PREFIX, Color.GREEN.darker(), Font.PLAIN); kit.setStyle(XMLStyleConstants.SPECIAL, Color.BLACK, Font.PLAIN); // ScrollableEditorPanel forces the queryEditor to resize final ScrollableEditorPanel editorPanel = new ScrollableEditorPanel(queryEditor); scpQuery.setViewportView(editorPanel); // Add the number margin as a Row Header View scpQuery.setRowHeaderView(new LineNumberMargin(queryEditor)); } catch (Exception ex) { logger.error("Error during the creation of the QueryEditor", ex); // NOI18N } } /** * Creates all default FeatureAnnotationSymbols and stores them in the pointSymbol-Hashmap. */ private void createPointSymbols() { // pointSymbolList.addElement(getStyle().NO_POINTSYMBOL); pointSymbolHM.put(Style.NO_POINTSYMBOL, null); pointSymbolHM.put(Style.AUTO_POINTSYMBOL, null); if (logger.isDebugEnabled()) { logger.debug(getClass().getResource(POINTSYMBOL_FOLDER + "pushpin.png")); // NOI18N } final FeatureAnnotationSymbol pushPin = new FeatureAnnotationSymbol(new ImageIcon( getClass().getResource(POINTSYMBOL_FOLDER + "pushpin.png")).getImage()); // NOI18N pushPin.setSweetSpotX(0.14d); pushPin.setSweetSpotY(1.0d); // pointSymbolList.addElement("pushpin.png"); pointSymbolHM.put("pushpin.png", pushPin); // NOI18N final FeatureAnnotationSymbol arrowBlue = new FeatureAnnotationSymbol(new ImageIcon( getClass().getResource(POINTSYMBOL_FOLDER + "arrow-blue-down.png")).getImage()); // NOI18N arrowBlue.setSweetSpotX(0.5d); arrowBlue.setSweetSpotY(1.0d); // pointSymbolList.addElement("arrow-blue-down.png"); pointSymbolHM.put("arrow-blue-down.png", arrowBlue); // NOI18N final FeatureAnnotationSymbol arrowGreen = new FeatureAnnotationSymbol(new ImageIcon( getClass().getResource(POINTSYMBOL_FOLDER + "arrow-green-down.png")).getImage()); // NOI18N arrowGreen.setSweetSpotX(0.5d); arrowGreen.setSweetSpotY(1.0d); // pointSymbolList.addElement("arrow-green-down.png"); pointSymbolHM.put("arrow-green-down.png", arrowGreen); // NOI18N final FeatureAnnotationSymbol flagBlack = new FeatureAnnotationSymbol(new ImageIcon( getClass().getResource(POINTSYMBOL_FOLDER + "flag-black.png")).getImage()); // NOI18N flagBlack.setSweetSpotX(0.18d); flagBlack.setSweetSpotY(0.96d); // pointSymbolList.addElement("flag-black.png"); pointSymbolHM.put("flag-black.png", flagBlack); // NOI18N final FeatureAnnotationSymbol flagBlue = new FeatureAnnotationSymbol(new ImageIcon( getClass().getResource(POINTSYMBOL_FOLDER + "flag-blue.png")).getImage()); // NOI18N flagBlue.setSweetSpotX(0.18d); flagBlue.setSweetSpotY(0.96d); // pointSymbolList.addElement("flag-blue.png"); pointSymbolHM.put("flag-blue.png", flagBlue); // NOI18N final FeatureAnnotationSymbol flagGreen = new FeatureAnnotationSymbol(new ImageIcon( getClass().getResource(POINTSYMBOL_FOLDER + "flag-green.png")).getImage()); // NOI18N flagGreen.setSweetSpotX(0.18d); flagGreen.setSweetSpotY(0.96d); // pointSymbolList.addElement("flag-green.png"); pointSymbolHM.put("flag-green.png", flagGreen); // NOI18N final FeatureAnnotationSymbol flagRed = new FeatureAnnotationSymbol(new ImageIcon( getClass().getResource(POINTSYMBOL_FOLDER + "flag-red.png")).getImage()); // NOI18N flagRed.setSweetSpotX(0.18d); flagRed.setSweetSpotY(0.96d); // pointSymbolList.addElement("flag-red.png"); pointSymbolHM.put("flag-red.png", flagRed); // NOI18N final FeatureAnnotationSymbol flagYellow = new FeatureAnnotationSymbol(new ImageIcon( getClass().getResource(POINTSYMBOL_FOLDER + "flag-yellow.png")).getImage()); // NOI18N flagYellow.setSweetSpotX(0.18d); flagYellow.setSweetSpotY(0.96d); // pointSymbolList.addElement("flag-yellow.png"); pointSymbolHM.put("flag-yellow.png", flagYellow); // NOI18N final FeatureAnnotationSymbol starBlack = new FeatureAnnotationSymbol(new ImageIcon( getClass().getResource(POINTSYMBOL_FOLDER + "star-black.png")).getImage()); // NOI18N starBlack.setSweetSpotX(0.5d); starBlack.setSweetSpotY(0.5d); // pointSymbolList.addElement("star-black.png"); pointSymbolHM.put("star-black.png", starBlack); // NOI18N final FeatureAnnotationSymbol starYellow = new FeatureAnnotationSymbol(new ImageIcon( getClass().getResource(POINTSYMBOL_FOLDER + "star-yellow.png")).getImage()); // NOI18N starYellow.setSweetSpotX(0.5d); starYellow.setSweetSpotY(0.5d); // pointSymbolList.addElement("star-yellow.png"); pointSymbolHM.put("star-yellow.png", starYellow); // NOI18N final FeatureAnnotationSymbol infoButton = new FeatureAnnotationSymbol(new ImageIcon( getClass().getResource(POINTSYMBOL_FOLDER + "info.png")).getImage()); // NOI18N infoButton.setSweetSpotX(0.5d); infoButton.setSweetSpotY(0.5d); // pointSymbolList.addElement("info.png"); pointSymbolHM.put("info.png", infoButton); // NOI18N } /** * Calls update() of the StylePreviewPanel. */ private void updatePreview() { ((StylePreviewPanel)panPreview).update(getStyle(), getStyle().getPointSymbol()); if (cbbPointSymbol.getSelectedItem().equals(getStyle().AUTO_POINTSYMBOL) && !sldLineWidth.getValueIsAdjusting() && !sldPointSymbolSize.getValueIsAdjusting()) { if (pointSymbol == null) { // pointSymbol = new FeatureAnnotationSymbol(((StylePreviewPanel) panPreview).getPointSymbol()); // pointSymbol.setSweetSpotX(0.5d); pointSymbol.setSweetSpotY(0.5d); this.pointSymbol = ((BasicStyle)this.layerProperties.getStyle()).createAutoPointSymbol(); } else { pointSymbol.setImage(((StylePreviewPanel)panPreview).getPointSymbol()); } } } /** * Searches the defaultStyleHistory.xml-file in the default-directory. If the file doesn't exist it will be created * if possible. * * @return searches the defaultStyleHistory.xml-file in the default-directory. */ private File searchDefaultHistory() { if (logger.isDebugEnabled()) { logger.debug("search for " + DEFAULT_HISTORY_NAME); // NOI18N } if (fileToCismapFolder.exists() && fileToCismapFolder.isDirectory()) { // .cismap exists // does defaultStyleHistory.xml exist? final File test = new File(fileToCismapFolder.getPath() + seperator + DEFAULT_HISTORY_NAME); if (test.exists() && test.isFile() && test.canRead() && test.canWrite()) { if (logger.isDebugEnabled()) { logger.debug(DEFAULT_HISTORY_NAME + " found"); // NOI18N } return test; } else { return createDefaultHistory(); } } else { // .cismap doesn't exist, hence no history fileToCismapFolder.mkdir(); return createDefaultHistory(); } } /** * Tries to create a new defaultStyleHistory.xml in /user/.cismap/ * * @return file-object if successfully created or null */ private File createDefaultHistory() { try { // create defaultStyleHistory.xml final File newFile = new File(fileToCismapFolder.getPath() + seperator + DEFAULT_HISTORY_NAME); newFile.createNewFile(); if (logger.isDebugEnabled()) { logger.debug(DEFAULT_HISTORY_NAME + " successfully created"); // NOI18N } return newFile; } catch (IOException ex) { logger.error(DEFAULT_HISTORY_NAME + " could not create", ex); // NOI18N return null; } } /** * Writes the current historylist-content into a XML-file. * * @param f targetfile * @param onClose true, if the current style should be added to the history before writing, else false */ private void writeHistory(final File f, final boolean onClose) { if (logger.isDebugEnabled()) { logger.debug("writeHistory(" + f + ")"); // NOI18N } final Runnable writeHistoryRunnable = new Runnable() { @Override public void run() { FileWriter writer = null; try { f.createNewFile(); if (f.canWrite()) { if (onClose) { ((StyleHistoryListModel)lstHistory.getModel()).addStyle((Style)getStyle().clone()); } final XMLOutputter out = new XMLOutputter(Format.getPrettyFormat()); // NOI18N final Document doc = new Document(((StyleHistoryListModel)lstHistory.getModel()) .toElement()); writer = new FileWriter(f); out.output(doc, writer); EventQueue.invokeLater(new Runnable() { @Override public void run() { lblHistory.setText(f.getName()); } }); } } catch (Exception ex) { logger.error("Error during writing the history.", ex); // NOI18N JOptionPane.showMessageDialog( StaticSwingTools.getParentFrame(StyleDialog.this), org.openide.util.NbBundle.getMessage( StyleDialog.class, "StyleDialog.writeHistory(File,boolean).JOptionPane.message", new Object[] { ex.getMessage() }), // NOI18N org.openide.util.NbBundle.getMessage( StyleDialog.class, "StyleDialog.writeHistory(File,boolean).JOptionPane.title"), JOptionPane.ERROR_MESSAGE); // NOI18N } finally { try { writer.close(); } catch (Exception skip) { } } } }; CismetThreadPool.execute(new Thread(writeHistoryRunnable, "StyleDialog writeHistory()")); } /** * Loads the history from a XML-file. * * @param f historyfile */ private void loadHistory(final File f) { if (logger.isDebugEnabled()) { logger.debug("loadHistory(" + f + ")"); // NOI18N } final Runnable loadHistoryRunnable = new Runnable() { @Override public void run() { try { final StyleHistoryListModel model = new StyleHistoryListModel(f); EventQueue.invokeLater(new Runnable() { @Override public void run() { lstHistory.setModel(model); lblHistory.setText(f.getName()); defaultHistory = f; if (logger.isDebugEnabled()) { logger.debug(f + " successfully loaded"); // NOI18N } } }); } catch (Exception ex) { logger.error("Error during loading of the history", ex); // NOI18N JOptionPane.showMessageDialog( StaticSwingTools.getParentFrame(StyleDialog.this), org.openide.util.NbBundle.getMessage( StyleDialog.class, "StyleDialog.loadHistory().JOptionPane.message", new Object[] { ex.getMessage() }), // NOI18N org.openide.util.NbBundle.getMessage( StyleDialog.class, "StyleDialog.loadHistory().JOptionPane.title"), JOptionPane.ERROR_MESSAGE); // NOI18N } } }; CismetThreadPool.execute(new Thread(loadHistoryRunnable, "StyleDialog loadHistory()")); } /** * Create the popupmenu to manipulate the stylehistory. */ private void createHistoryListPopupMenu() { final FileFilter filter = new FileFilter() { @Override public boolean accept(final File f) { if ((f.isFile() && f.getName().endsWith(".xml")) || f.isDirectory()) // NOI18N { return true; } else { return false; } } @Override public String getDescription() { return org.openide.util.NbBundle.getMessage( StyleDialog.class, "StyleDialog.createHistoryListPopupMenu().description"); // NOI18N } }; final JMenuItem save = new JMenuItem(); save.setText(POPUP_SAVE); try { save.setIcon(new ImageIcon( getClass().getResource("/de/cismet/cismap/commons/featureservice/res/save.png"))); // NOI18N } catch (Exception skipIcon) { } save.addActionListener(new ActionListener() { @Override public void actionPerformed(final ActionEvent e) { try { JFileChooser fc; try { fc = new JFileChooser(home + seperator + CISMAP_FOLDER); } catch (Exception bug) { // Bug Workaround http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6544857 fc = new JFileChooser(home + seperator + CISMAP_FOLDER, new RestrictedFileSystemView()); } fc.setFileFilter(filter); fc.setMultiSelectionEnabled(false); fc.setFileSelectionMode(JFileChooser.FILES_ONLY); final int returnValue = fc.showSaveDialog(StyleDialog.this); if (returnValue == JFileChooser.APPROVE_OPTION) { File dst = fc.getSelectedFile(); if (!dst.getName().endsWith(".xml")) // NOI18N { dst = new File(dst.toString() + ".xml"); // NOI18N } writeHistory(dst, false); defaultHistory = dst; } } catch (Throwable ex) { logger.error("Error during opening the Open Dialog of the style history", ex); // NOI18N } } }); final JMenuItem open = new JMenuItem(); open.setText(POPUP_LOAD); try { open.setIcon(new ImageIcon( getClass().getResource("/de/cismet/cismap/commons/featureservice/res/open.png"))); // NOI18N } catch (Exception skipIcon) { } open.addActionListener(new ActionListener() { @Override public void actionPerformed(final ActionEvent e) { try { JFileChooser fc; try { fc = new JFileChooser(home + seperator + CISMAP_FOLDER); } catch (Exception bug) { // Bug Workaround http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6544857 fc = new JFileChooser(home + seperator + CISMAP_FOLDER, new RestrictedFileSystemView()); } fc.setFileFilter(filter); fc.setMultiSelectionEnabled(false); fc.setFileSelectionMode(JFileChooser.FILES_ONLY); final int returnVal = fc.showOpenDialog(StyleDialog.this); if (returnVal == JFileChooser.APPROVE_OPTION) { final File fileToLoad = fc.getSelectedFile(); loadHistory(fileToLoad); } } catch (Throwable ex) { logger.error("Error in open dialog of the StyleHistory", ex); // NOI18N } } }); final JMenuItem clear = new JMenuItem(); clear.setText(POPUP_CLEAR); try { clear.setIcon(new ImageIcon( getClass().getResource("/de/cismet/cismap/commons/featureservice/res/delete_history.png"))); // NOI18N } catch (Exception skipIcon) { } clear.addActionListener(new ActionListener() { @Override public void actionPerformed(final ActionEvent e) { final StyleHistoryListModel model = (StyleHistoryListModel)lstHistory.getModel(); model.clear(); lstHistory.repaint(); } }); popupMenu = new JPopupMenu(); popupMenu.add(save); popupMenu.add(open); popupMenu.add(new JSeparator()); popupMenu.add(clear); } /** * DOCUMENT ME! * * @param layerProperties DOCUMENT ME! * @param featureServiceAttributes DOCUMENT ME! * @param query DOCUMENT ME! */ public void configureDialog(final LayerProperties layerProperties, final Map<String, FeatureServiceAttribute> featureServiceAttributes, final Object query) { configureDialog(null, "default", layerProperties, featureServiceAttributes, query); } /** * DOCUMENT ME! * * @param sldDefinition DOCUMENT ME! * @param featureService DOCUMENT ME! */ public void configureDialog(final Reader sldDefinition, final AbstractFeatureService featureService) { configureDialog( sldDefinition, featureService.getName(), featureService.getLayerProperties(), featureService.getFeatureServiceAttributes(), featureService.getQuery()); } /** * Configures the dialog based on the delivered AbstractfeatureService. * * @param sldDefinition DOCUMENT ME! * @param layerName DOCUMENT ME! * @param layerProperties DOCUMENT ME! * @param featureServiceAttributes featureservice to get attributes from * @param query DOCUMENT ME! */ public void configureDialog(final Reader sldDefinition, final String layerName, final LayerProperties layerProperties, final Map<String, FeatureServiceAttribute> featureServiceAttributes, final Object query) { try { this.layerName = layerName; chkCustomSLD.setSelected(sldDefinition == null); tbpTabs.setEnabledAt(tbpTabs.indexOfComponent(panTabFill), chkCustomSLD.isSelected()); tbpTabs.setEnabledAt(tbpTabs.indexOfComponent(panTabLabeling), chkCustomSLD.isSelected()); tbpTabs.setEnabledAt(tbpTabs.indexOfComponent(panTabAttrib), chkCustomSLD.isSelected()); this.setAccepted(false); this.setFeatureServiceAttributes(featureServiceAttributes); this.setLayerProperties(layerProperties); if (logger.isDebugEnabled()) { logger.debug("QueryType: " + this.layerProperties.getQueryType()); // NOI18N } if ((this.layerProperties.getQueryType() != LayerProperties.QUERYTYPE_UNDEFINED) && (query != null)) { if (logger.isDebugEnabled()) { logger.debug("Layer supports query, adding query dialog"); // NOI18N } tbpTabs.addTab( "Query Editor", new javax.swing.ImageIcon( getClass().getResource("/de/cismet/cismap/commons/featureservice/res/editor.png")), panTabQuery); // NOI18N setQueryString(query.toString()); } else { if (logger.isDebugEnabled()) { logger.debug("Layer does not support query, removing query dialog"); // NOI18N } tbpTabs.remove(panTabQuery); } if (sldDefinition != null) { // jEditorPane1.setDocument(); jEditorPane1.setText(IOUtils.toString(sldDefinition)); } this.updateDialog(); this.updateAttributes(); this.updatePreview(); } catch (Throwable t) { logger.error(t.getMessage(), t); } } /** * Reassigns all variables based on the actual Layer Properties. */ private void updateDialog() { panFillColor.setBackground(getStyle().getFillColor()); panTransColor.setBackground(getStyle().getFillColor()); chkFill.setSelected(getStyle().isDrawFill()); panLineColor.setBackground(getStyle().getLineColor()); chkLine.setSelected(getStyle().isDrawLine()); chkSync.setSelected(false); chkHighlightable.setSelected(getStyle().isHighlightFeature()); sldLineWidth.setValue(getStyle().getLineWidth()); setAlpha(getStyle().getAlpha()); if (!pointSymbolHM.containsKey(getStyle().getPointSymbolFilename())) { logger.warn("unkown point symbol: '" + getStyle().getPointSymbolFilename() + "', adding to list"); // NOI18N pointSymbolHM.put(getStyle().getPointSymbolFilename(), getStyle().getPointSymbol()); cbbPointSymbol.setModel(new DefaultComboBoxModel(new Vector<String>(this.pointSymbolHM.keySet()))); } cbbPointSymbol.setSelectedItem(getStyle().getPointSymbolFilename()); if (getStyle().getPointSymbolFilename().equals(getStyle().AUTO_POINTSYMBOL)) { setPointSymbolSizeActivated(true); sldPointSymbolSize.setValue(getStyle().getPointSymbolSize()); } else { setPointSymbolSizeActivated(false); sldPointSymbolSize.setValue(getStyle().MIN_POINTSYMBOLSIZE); } chkActivateLabels.setSelected(getStyle().isDrawLabel()); setFontType(getStyle().getFont()); panFontColor.setBackground(getStyle().getFontColor()); setAlignment(getStyle().getAlignment()); txtMin.setText("" + getStyle().getMinScale()); // NOI18N txtMax.setText("" + getStyle().getMaxScale()); // NOI18N setMultiplier(getStyle().getMultiplier()); chkAutoscale.setSelected(getStyle().isAutoscale()); } /** * DOCUMENT ME! */ private void updateAttributes() { // set Attributes .......................................................... cbbAnnotationExpression.removeAllItems(); cbbIdExpression.removeAllItems(); panAttribGeo.removeAll(); panAttribNorm.removeAll(); btgGeom = new ButtonGroup(); // the stored expression may null or no feature service attribute this.ignoreSelectionEvent = true; if (this.layerProperties.isIdExpressionEnabled()) { final String idExpression = this.layerProperties.getIdExpression(); if ((idExpression == null) || ((this.layerProperties.getIdExpressionType() == LayerProperties.EXPRESSIONTYPE_PROPERTYNAME) && !this.featureServiceAttributes.containsKey(idExpression))) { boolean expressionSet = false; for (final FeatureServiceAttribute fsa : this.featureServiceAttributes.values()) { if (!fsa.isGeometry() && fsa.isSelected()) { this.layerProperties.setIdExpression(fsa.getName(), LayerProperties.EXPRESSIONTYPE_PROPERTYNAME); logger.warn("idExpression is null or not in attriute list, setting to '" + fsa.getName() + "' (" + fsa.getType() + ", EXPRESSIONTYPE_PROPERTYNAME)"); // NOI18N expressionSet = true; break; } } // no selected attributes?! if (!expressionSet) { for (final FeatureServiceAttribute fsa : this.featureServiceAttributes.values()) { if (!fsa.isGeometry()) { fsa.setSelected(true); this.layerProperties.setIdExpression(fsa.getName(), LayerProperties.EXPRESSIONTYPE_PROPERTYNAME); logger.warn("idExpression is null or not in attriute list, setting to '" + fsa.getName() + "' (EXPRESSIONTYPE_PROPERTYNAME) and forcing attribute enabled"); // NOI18N expressionSet = true; break; } } } if (!expressionSet) { logger.error("no valid id expression could be dertimed from the list of available attributes"); // NOI18N } } else if (this.layerProperties.getIdExpressionType() == LayerProperties.EXPRESSIONTYPE_PROPERTYNAME) { if (!this.featureServiceAttributes.get(idExpression).isSelected()) { logger.warn("idExpression '" + idExpression + "' is not selected, forcing selected"); // NOI18N this.featureServiceAttributes.get(idExpression).setSelected(true); } } } else { if (logger.isDebugEnabled()) { logger.debug("the selected layer does not support id expressions"); // NOI18N } this.cbbIdExpression.setEnabled(false); } final String annotationExpression = this.layerProperties.getPrimaryAnnotationExpression(); if ((annotationExpression == null) || ((this.layerProperties.getPrimaryAnnotationExpressionType() == LayerProperties.EXPRESSIONTYPE_PROPERTYNAME) && !this.featureServiceAttributes.containsKey(annotationExpression))) { boolean expressionSet = false; for (final FeatureServiceAttribute fsa : this.featureServiceAttributes.values()) { if (!fsa.isGeometry() && fsa.isSelected()) { this.layerProperties.setPrimaryAnnotationExpression(fsa.getName(), LayerProperties.EXPRESSIONTYPE_PROPERTYNAME); logger.warn("annotationExpressionExpression is null or not in attriute list, setting to '" + fsa.getName() + "' (EXPRESSIONTYPE_PROPERTYNAME)"); // NOI18N expressionSet = true; break; } } // no selected attributes?! if (!expressionSet) { for (final FeatureServiceAttribute fsa : this.featureServiceAttributes.values()) { if (!fsa.isGeometry()) { fsa.setSelected(true); this.layerProperties.setPrimaryAnnotationExpression(fsa.getName(), LayerProperties.EXPRESSIONTYPE_PROPERTYNAME); logger.warn("annotationExpressionExpression is null or not in attriute list, setting to '" + fsa.getName() + "' (EXPRESSIONTYPE_PROPERTYNAME) and forcing attribute enabled"); // NOI18N expressionSet = true; break; } } } if (!expressionSet) { logger.error( "no valid annotationExpression expression could be determined from the list of available attributes"); // NOI18N } } else if (this.layerProperties.getPrimaryAnnotationExpressionType() == LayerProperties.EXPRESSIONTYPE_PROPERTYNAME) { if (!this.featureServiceAttributes.get(annotationExpression).isSelected()) { logger.warn("annotationExpression '" + annotationExpression + "' is not selected, forcing selected"); // NOI18N this.featureServiceAttributes.get(annotationExpression).setSelected(true); } } // initialise the combo boxes and check boxes for (final FeatureServiceAttribute fsa : this.featureServiceAttributes.values()) { if (!fsa.isGeometry()) { this.createNormalAttributeButton(fsa); } else { this.createGeoAttributeButton(fsa); } } if (this.layerProperties.isIdExpressionEnabled()) { cbbIdExpression.setSelectedItem(this.layerProperties.getIdExpression()); } cbbAnnotationExpression.setSelectedItem(this.layerProperties.getPrimaryAnnotationExpression()); this.ignoreSelectionEvent = false; // check if a geo attribute is selected if ((this.btgGeom.getSelection() == null) && (this.btgGeom.getButtonCount() > 0)) { this.btgGeom.setSelected(this.btgGeom.getElements().nextElement().getModel(), true); logger.warn("no geo attribute selected, forcing selection of attribute '" + this.btgGeom.getSelection().getActionCommand() + "'"); // NOI18N } } /** * Reassigns all variables based on the delivered feature. * * @param attributes f feature to define the current style of the dialog */ // private void setFeature(CloneableFeature f) { logger.debug("Setzte StyleFeature im StyleDialog"); if (f != null && f // != feature) { try { this.feature = f; if (f instanceof StyledFeature) { isStyleFeature = true; // // color im BasicStyle Objekt nicht auf null setzen sondern nur paintFill/Line auf false Paint fillColor = ((StyledFeature) // f).getFillingPaint(); setFillColor(fillColor != null, fillColor != null ? (Color) ((StyledFeature) // f).getFillingPaint() : getStyle().getFillColor()); // // Paint lineColor = ((StyledFeature) f).getLinePaint(); setLineColor(lineColor != null, lineColor != null ? (Color) // lineColor : getStyle().getLineColor()); // // setLineWidth(((StyledFeature) f).getLineWidth()); // // FeatureAnnotationSymbol s = ((StyledFeature) f).getPointAnnotationSymbol(); if (pointSymbolHM.containsValue(s)) { for // (String key : pointSymbolHM.keySet()) { if (pointSymbolHM.get(key) == s) { setPointSymbol(key); // cbbPointSymbol.setSelectedItem(key); break; } } } else { setPointSymbol(getStyle().NO_POINTSYMBOL); // cbbPointSymbol.setSelectedItem(getStyle().NO_POINTSYMBOL); pointSymbol = s; } // // setAlpha(((StyledFeature) f).getTransparency()); setHighlighting(((StyledFeature) f).isHighlightingEnabled()); } // // if (f instanceof AnnotatedFeature) { isAnnotatedFeature = true; setLabelingEnabled(((AnnotatedFeature) // f).isPrimaryAnnotationVisible()); setMaxScale(((AnnotatedFeature) f).getMaxScaleDenominator()); // setMinScale(((AnnotatedFeature) f).getMinScaleDenominator()); setLabelAttribute(((AnnotatedFeature) // f).getPrimaryAnnotation()); setFontType(((AnnotatedFeature) f).getPrimaryAnnotationFont()); setFontColor((Color) // ((AnnotatedFeature) f).getPrimaryAnnotationPaint()); setAlignment(((AnnotatedFeature) // f).getPrimaryAnnotationJustification()); setAutoscale(((AnnotatedFeature) f).isAutoscale()); // setMultiplier(((AnnotatedFeature) f).getPrimaryAnnotationScaling()); } // // if (f instanceof FeatureWithId) { isIdFeature = true; setIdExpression(((FeatureWithId) f).getIdExpression()); } } catch // (Exception ex) { logger.error("Fehler beim Setzen des StyleFeatures", ex); } // // updatePreview(); } } /** * Creates components depending on the attributetype and adds them to the attributes-tab. * * @param attributes list with FeatureServiceAttribute */ private void setAttributes(final List<FeatureServiceAttribute> attributes) { } // /** // * Resets the attributevariables. // */ // private void resetAttributeVariables() // { // logger.debug("resetAttributeVariables"); // //styleAttribHM.put(ATTRI_GEOM, new Vector<Component>()); // //styleAttribHM.put(ATTRI_NORM, new Vector<Component>()); // //styleAttribHM.put(ATTRI_NORM_SELECTED, new Vector<String>()); // // cbbAttribute.removeAllItems(); // cbbPrimary.removeAllItems(); // panAttribGeo.removeAll(); // panAttribNorm.removeAll(); // btgGeom = new ButtonGroup(); // } /** * Is called if setFeatureServiceAttributes() found a attribute with a geometrytype. Creates a new RadioButton and * adds it to the attribute-panel. * * @param fsa FeatureServiceAttribute */ private void createGeoAttributeButton(final FeatureServiceAttribute fsa) { if (logger.isDebugEnabled()) { logger.debug("Geo-Attribut \"" + fsa.getName() + "\" adden"); // NOI18N } // delete attribute from the "normal" attribute-list // ((Vector<FeatureServiceAttribute>) styleAttribHM.get(ATTRI_NORM_SELECTED)).remove(fsa); final JRadioButton rb = new JRadioButton(fsa.getName()); rb.setActionCommand(fsa.getName()); btgGeom.add(rb); // select/deselect the RadioButton rb.setSelected(fsa.isSelected()); panAttribGeo.add(rb); // create ItemStateListener that keeps the HashMap up-to-date rb.addItemListener(new ItemListener() { @Override public void itemStateChanged(final ItemEvent e) { if (!ignoreSelectionEvent && (e.getStateChange() == ItemEvent.SELECTED)) { // setSelectedGeoAttribute(fsa.getName()); fsa.setSelected(true); } else { fsa.setSelected(false); } } }); } /** * Is called if setFeatureServiceAttributes() found a attribute that is no geometry. Creates a new CheckBox and adds * it to the attribute-panel. * * @param fsa FeatureServiceAttribute */ private void createNormalAttributeButton(final FeatureServiceAttribute fsa) { if (logger.isDebugEnabled()) { logger.debug("Attribut \"" + fsa.getName() + "\" adden"); // NOI18N } final JCheckBox cb = new JCheckBox(fsa.getName(), false); cb.setActionCommand(fsa.getName()); // select/deselect the CheckBox -> item state change cb.setSelected(fsa.isSelected()); if (fsa.isSelected()) { cbbAnnotationExpression.addItem(fsa.getName()); cbbIdExpression.addItem(fsa.getName()); } cb.addItemListener(new ItemListener() { @Override public void itemStateChanged(final ItemEvent e) { if (!ignoreSelectionEvent && (e.getStateChange() == ItemEvent.SELECTED)) { // sel.add(fsa.getName()); fsa.setSelected(true); cbbAnnotationExpression.addItem(fsa.getName()); cbbIdExpression.addItem(fsa.getName()); } else if (!ignoreSelectionEvent && (e.getStateChange() == ItemEvent.DESELECTED)) { // sel.remove(fsa.getName()); fsa.setSelected(false); cbbAnnotationExpression.removeItem(fsa.getName()); cbbIdExpression.removeItem(fsa.getName()); } } }); panAttribNorm.add(cb); } /** * Returns a Vector with all selected attributes (including the geometry-attribute). * * @return a Vector with all selected attributes (including the geometry-attribute). */ public Vector<String> getSelectedAttributes() { final Vector<String> selectedAttributes = new Vector(this.featureServiceAttributes.size()); for (final FeatureServiceAttribute fsa : this.featureServiceAttributes.values()) { if (fsa.isSelected()) { selectedAttributes.add(fsa.getName()); } } return selectedAttributes; } /** * Returns the selected geometry-attribute. * * @return the selected geometry-attribute. */ public String getSelectedGeoAttribute() { if (!this.isAccepted()) { logger.warn("supicious call to 'getQueryString()', changes not accepted"); // NOI18N } return this.btgGeom.getSelection().getActionCommand(); } /** * Changes the fillingcolor. * * @param paint DOCUMENT ME! * @param fillColor the new fillingcolor */ private void setFillColor(final boolean paint, final Color fillColor) { getStyle().setDrawFill(paint); getStyle().setFillColor(fillColor); panFillColor.setBackground(fillColor); panTransColor.setBackground(fillColor); chkFill.setSelected(paint); } /** * Changes the linecolor. * * @param paint DOCUMENT ME! * @param lineColor the new linecolor */ private void setLineColor(final boolean paint, final Color lineColor) { getStyle().setDrawLine(paint); getStyle().setLineColor(lineColor); panLineColor.setBackground(lineColor); chkLine.setSelected(paint); } /** * Changes the linewidth. * * @param lineWidth the new linewidth */ private void setLineWidth(final int lineWidth) { getStyle().setLineWidth(lineWidth); if (sldLineWidth.getValue() != lineWidth) { sldLineWidth.setValue(lineWidth); } txtLineWidth.setText("" + lineWidth); // NOI18N } /** * Changes the transparency. * * @param alpha the new transparency */ private void setAlpha(final float alpha) { getStyle().setAlpha(alpha); final int a = Math.round(alpha * 100); if (sldAlpha.getValue() != a) { sldAlpha.setValue(a); } txtTransparency.setText("" + a); // NOI18N } /** * Changes the pointsymbol. * * @param pointSymbol name of the new pointsymbol */ private void setPointSymbol(final String pointSymbol) { setPointSymbolSizeActivated(pointSymbol.equals(getStyle().AUTO_POINTSYMBOL)); getStyle().setPointSymbolFilename(pointSymbol); } /** * Returns the FeatureAnnotationSymbol. * * @param size DOCUMENT ME! */ // private FeatureAnnotationSymbol getPointSymbol() // { // return pointSymbolHM.get(getStyle().getPointSymbolFilename()); // } /** * Changes the size of the pointsymbol (if "no pointsymbol" is selected). * * @param size size of the new pointsymbol */ private void setPointSymbolSize(final int size) { getStyle().setPointSymbolSize(size); txtPointSymbolSize.setText(size + ""); // NOI18N } /** * Enables or disables the components to manipulate the size of the pointsymbol. * * @param flag true to enable, false to disable */ private void setPointSymbolSizeActivated(final boolean flag) { lblPointSymbolSize.setEnabled(flag); sldPointSymbolSize.setEnabled(flag); txtPointSymbolSize.setEnabled(flag); } /** * Changes whether the features should hightlight at mouseover or not. * * @param flag true if there should be a rollover-effect */ private void setHighlighting(final boolean flag) { getStyle().setHighlightFeature(flag); if (chkHighlightable.isSelected() != flag) { chkHighlightable.setSelected(flag); } } /** * Enables/disables the featurelabels. * * @param flag enable true if labels should be shown, else false */ private void setLabelingEnabled(final boolean flag) { getStyle().setDrawLabel(flag); if (flag != chkActivateLabels.isSelected()) { chkActivateLabels.setSelected(flag); } } /** * Changes the maximum scale at which the labels still are visible. * * @param max maximum scale */ private void setMaxScale(final int max) { getStyle().setMaxScale(max); if (!txtMax.getText().equals(max + "")) // NOI18N { txtMax.setText(max + ""); // NOI18N } } /** * Changes the minimum scale at which the labels still are visible. * * @param min max minimum scale */ private void setMinScale(final int min) { getStyle().setMinScale(min); if (!txtMin.getText().equals(min + "")) // NOI18N { txtMin.setText(min + ""); // NOI18N } } /** * Changes the horizontal alignment of the label. * * @param align float with the new alignment */ private void setAlignment(final float align) { getStyle().setAlignment(align); if (align == JLabel.LEFT_ALIGNMENT) { radLeft.setSelected(true); } else if (align == JLabel.CENTER_ALIGNMENT) { radCenter.setSelected(true); } else { radRight.setSelected(true); } } /** * Changes the scaling-multiplier of the labels. Only effective if autoscale is off. * * @param multi the new multiplier */ private void setMultiplier(final Object multi) { if (multi instanceof Double) { getStyle().setMultiplier((Double)multi); } else if (multi instanceof Long) { getStyle().setMultiplier(new Double((Long)multi)); } txtMultiplier.setValue(multi); } /** * Returns the scaling-multiplier of the labels. * * @return the scaling-multiplier of the labels. */ private double getMultiplier() { final Object o = getStyle().getMultiplier(); if (o instanceof Double) { return (Double)o; } else if (o instanceof Long) { final long l = (Long)o; final double d = l; return d; } else { return 1.0d; } } /** * Changes the fontcolor of the labels. * * @param fontColor neue Schriftfarbe */ private void setFontColor(final Color fontColor) { getStyle().setFontColor(fontColor); panFontColor.setBackground(fontColor); } /** * Changes the font of the labels. * * @param fontType the new font */ private void setFontType(final Font fontType) { getStyle().setFont(fontType); final StringBuffer name = new StringBuffer(fontType.getSize() + "pt "); // NOI18N name.append(fontType.getName()); if (fontType.isBold()) { name.append(org.openide.util.NbBundle.getMessage( StyleDialog.class, "StyleDialog.setFontType(Font).name.bold")); // NOI18N } if (fontType.isItalic()) { name.append(org.openide.util.NbBundle.getMessage( StyleDialog.class, "StyleDialog.setFontType(Font).name.italic")); // NOI18N } lblFontname.setText(name.toString()); } /** * Changes whether the label should be scaled automatically with the zoomlevel. * * @param flag true to activate autoscaling */ private void setAutoscale(final boolean flag) { getStyle().setAutoscale(flag); if (chkAutoscale.isSelected() != flag) { chkAutoscale.setSelected(flag); } } /** * Changes the primaryattribute. * * @param s id the name of the new primaryattribute */ /* private void setIdExpression(String id) * { if (id != null) { //styleAttribHM.put(ATTRI_PRIMARY, id); this.layerProperties.setIdExpression(id, * LayerProperties.EXPRESSIONTYPE_PROPERTYNAME); if (cbbPrimary.getSelectedItem() == null || * !cbbPrimary.getSelectedItem().equals(id)) { cbbPrimary.setSelectedItem(id); } }}*/ /** * Changes the label of the features. This String provides Groovy-functionality. * * @param s attrib the new label */ /* private void setLabelAttribute(String attrib) * { if (attrib == null) { attrib = ""; } //this.getLayerProperties().setPrimaryAnnotationExpression(attrib, * LayerProperties.EXPRESSIONTYPE_PROPERTYNAME); cbbAttribute.setSelectedItem(attrib);}*/ /** * Sets a string as text in the queryEditorpane. * * @param s querystring */ private void setQueryString(final String s) { queryEditor.setText(s); chkUseQueryString.setSelected(false); } /** * Returns the querystring of the queryEditorpane. * * @return the querystring of the queryEditorpane. */ public String getQueryString() { if (!this.isAccepted()) { logger.warn("supicious call to 'getQueryString()', changes not accepted"); // NOI18N } return queryEditor.getText(); } /** * Returns whether the query string was changed in the queryEditorpane. * * @return true if changed, else false */ public boolean isQueryStringChanged() { return chkUseQueryString.isSelected(); } /** * Get the value of accepted. * * @return the value of accepted */ public boolean isAccepted() { return accepted; } /** * Set the value of accepted. * * @param accepted new value of accepted */ private void setAccepted(final boolean accepted) { this.accepted = accepted; } /** * Overrides the setVisible()-method from JDialog. Updates the UI of the historylist if the StyleDialog is shown and * selects the "color and filling"-tab. * * @param visible b true to show, false to hide */ @Override public void setVisible(final boolean visible) { if (visible) { lstHistory.updateUI(); if (chkCustomSLD.isSelected()) { tbpTabs.setSelectedComponent(panTabFill); } else { tbpTabs.setSelectedComponent(panSLDDefinition); } } super.setVisible(visible); } }