/* * GeoTools - The Open Source Java GIS Toolkit * http://geotools.org * * (C) 2002-2008, Open Source Geospatial Foundation (OSGeo) * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. */ package org.geotools.gui.swing.style.sld; import java.awt.Component; import org.geotools.gui.swing.style.StyleElementEditor; import org.geotools.map.MapLayer; import org.geotools.styling.Graphic; import org.geotools.styling.StyleBuilder; /** * Graphic panel * * @author Johann Sorel * * @source $URL$ */ public class JGraphicPane extends javax.swing.JPanel implements StyleElementEditor<Graphic> { private MapLayer layer = null; private Graphic graphic = null; /** Creates new form JGraphicPanel */ public JGraphicPane() { initComponents(); init(); } private void init() { guiOpacity.setType(JExpressionPane.EXP_TYPE.OPACITY); guiRotation.setType(JExpressionPane.EXP_TYPE.NUMBER); guiSize.setType(JExpressionPane.EXP_TYPE.NUMBER); } public void setLayer(MapLayer layer) { this.layer = layer; guiDisplacement.setLayer(layer); guiGeom.setLayer(layer); guiOpacity.setLayer(layer); guiRotation.setLayer(layer); guiSize.setLayer(layer); guiExternal.setLayer(layer); guiMark.setLayer(layer); } public MapLayer getLayer() { return layer; } public void setEdited(Graphic graphic) { if (graphic != null) { guiDisplacement.setEdited(graphic.getDisplacement()); guiGeom.setGeom(graphic.getGeometryPropertyName()); guiOpacity.setExpression(graphic.getOpacity()); guiRotation.setExpression(graphic.getRotation()); guiSize.setExpression(graphic.getSize()); // marks and external graphics are symbols so no need to handle this method //graphic.getSymbols(); guiMark.setEdited(graphic.getMarks()); guiExternal.setEdited(graphic.getExternalGraphics()); } this.graphic = graphic; } public Graphic getEdited() { if (graphic == null) { graphic = new StyleBuilder().createGraphic(); } apply(); return graphic; } public void apply() { if (graphic != null) { graphic.setDisplacement(guiDisplacement.getEdited()); graphic.setGeometryPropertyName(guiGeom.getGeom()); graphic.setOpacity(guiOpacity.getExpression()); graphic.setRotation(guiRotation.getExpression()); graphic.setSize(guiSize.getExpression()); graphic.setMarks(guiMark.getEdited()); graphic.setExternalGraphics(guiExternal.getEdited()); } } public Component getComponent() { return this; } /** 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() { jXTaskPaneContainer1 = new org.jdesktop.swingx.JXTaskPaneContainer(); guiGeom = new org.geotools.gui.swing.style.sld.JGeomPane(); jXTaskPane1 = new org.jdesktop.swingx.JXTaskPane(); jPanel1 = new javax.swing.JPanel(); guiSize = new org.geotools.gui.swing.style.sld.JExpressionPane(); jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); guiRotation = new org.geotools.gui.swing.style.sld.JExpressionPane(); jLabel3 = new javax.swing.JLabel(); guiOpacity = new org.geotools.gui.swing.style.sld.JExpressionPane(); guiDisplacement = new org.geotools.gui.swing.style.sld.JDisplacementPane(); jXTaskPane2 = new org.jdesktop.swingx.JXTaskPane(); jPanel2 = new javax.swing.JPanel(); guiExternal = new org.geotools.gui.swing.style.sld.JExternalGraphicTable(); guiMark = new org.geotools.gui.swing.style.sld.JMarkTable(); jXTaskPaneContainer1.add(guiGeom); java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("org/geotools/gui/swing/style/sld/Bundle"); // NOI18N jXTaskPane1.setTitle(bundle.getString("general")); // NOI18N jPanel1.setOpaque(false); jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel1.setText(bundle.getString("size")); // NOI18N jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel2.setText(bundle.getString("rotation")); // NOI18N jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel3.setText(bundle.getString("opacity")); // NOI18N guiDisplacement.setOpaque(false); org.jdesktop.layout.GroupLayout jPanel1Layout = new org.jdesktop.layout.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(jPanel1Layout.createSequentialGroup() .add(jLabel1) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(guiSize, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .add(jPanel1Layout.createSequentialGroup() .add(jLabel2) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(guiRotation, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .add(jPanel1Layout.createSequentialGroup() .add(jLabel3) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(guiOpacity, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .add(org.jdesktop.layout.GroupLayout.TRAILING, jPanel1Layout.createSequentialGroup() .addContainerGap() .add(guiDisplacement, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))) ); jPanel1Layout.linkSize(new java.awt.Component[] {jLabel1, jLabel2, jLabel3}, org.jdesktop.layout.GroupLayout.HORIZONTAL); jPanel1Layout.linkSize(new java.awt.Component[] {guiOpacity, guiRotation, guiSize}, org.jdesktop.layout.GroupLayout.HORIZONTAL); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(jPanel1Layout.createSequentialGroup() .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false) .add(jLabel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .add(guiSize, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false) .add(jLabel2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .add(guiRotation, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false) .add(jLabel3, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .add(guiOpacity, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(guiDisplacement, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); jXTaskPane1.getContentPane().add(jPanel1); jXTaskPaneContainer1.add(jXTaskPane1); jXTaskPane2.setExpanded(false); jXTaskPane2.setTitle(bundle.getString("symbol")); // NOI18N jPanel2.setOpaque(false); guiExternal.setBorder(javax.swing.BorderFactory.createTitledBorder(bundle.getString("external"))); // NOI18N guiMark.setBorder(javax.swing.BorderFactory.createTitledBorder(bundle.getString("mark"))); // NOI18N org.jdesktop.layout.GroupLayout jPanel2Layout = new org.jdesktop.layout.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup( jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(jPanel2Layout.createSequentialGroup() .add(guiMark, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(guiExternal, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) ); jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(guiMark, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(guiExternal, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) ); jXTaskPane2.getContentPane().add(jPanel2); jXTaskPaneContainer1.add(jXTaskPane2); org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(jXTaskPaneContainer1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(jXTaskPaneContainer1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); }// </editor-fold>//GEN-END:initComponents // Variables declaration - do not modify//GEN-BEGIN:variables private org.geotools.gui.swing.style.sld.JDisplacementPane guiDisplacement; private org.geotools.gui.swing.style.sld.JExternalGraphicTable guiExternal; private org.geotools.gui.swing.style.sld.JGeomPane guiGeom; private org.geotools.gui.swing.style.sld.JMarkTable guiMark; private org.geotools.gui.swing.style.sld.JExpressionPane guiOpacity; private org.geotools.gui.swing.style.sld.JExpressionPane guiRotation; private org.geotools.gui.swing.style.sld.JExpressionPane guiSize; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private org.jdesktop.swingx.JXTaskPane jXTaskPane1; private org.jdesktop.swingx.JXTaskPane jXTaskPane2; private org.jdesktop.swingx.JXTaskPaneContainer jXTaskPaneContainer1; // End of variables declaration//GEN-END:variables }