/* * Geotoolkit - An Open Source Java GIS Toolkit * http://www.geotoolkit.org * * (C) 2007 - 2008, Open Source Geospatial Foundation (OSGeo) * (C) 2008 - 2009, Johann Sorel * * 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.geotoolkit.gui.swing.style; import java.awt.Component; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.GroupLayout; import javax.swing.GroupLayout.Alignment; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JTextField; import javax.swing.LayoutStyle.ComponentPlacement; import javax.swing.SwingConstants; import org.geotoolkit.gui.swing.resource.MessageBundle; import org.geotoolkit.map.MapLayer; import org.geotoolkit.style.MutableFeatureTypeStyle; import org.jdesktop.swingx.JXTitledPanel; import org.opengis.style.SemanticType; /** * * @author Johann Sorel (Puzzle-GIS) * @module */ public class JFeatureTypeStylePane extends StyleElementEditor<MutableFeatureTypeStyle>{ private MapLayer layer = null; private MutableFeatureTypeStyle fts = null; /** Creates new form JRulePanel */ public JFeatureTypeStylePane() { super(MutableFeatureTypeStyle.class); initComponents(); } /** 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() { jXTitledPanel1 = new JXTitledPanel(); jLabel1 = new JLabel(); jLabel2 = new JLabel(); jLabel3 = new JLabel(); jtf_abstract = new JTextField(); jtf_name = new JTextField(); jtf_title = new JTextField(); jXTitledPanel2 = new JXTitledPanel(); jck_any = new JCheckBox(); jck_point = new JCheckBox(); jck_line = new JCheckBox(); jck_polygon = new JCheckBox(); jck_text = new JCheckBox(); jck_raster = new JCheckBox(); jLabel4 = new JLabel(); guiftn = new JTextField(); setOpaque(false); jXTitledPanel1.setBorder(BorderFactory.createEtchedBorder()); jXTitledPanel1.setTitle(MessageBundle.format("general")); // NOI18N jLabel1.setFont(jLabel1.getFont().deriveFont(jLabel1.getFont().getStyle() | Font.BOLD)); jLabel1.setText(MessageBundle.format("title")); // NOI18N jLabel2.setText(MessageBundle.format("name")); // NOI18N jLabel3.setText(MessageBundle.format("abstrac")); // NOI18N jtf_title.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { jtf_titleActionPerformed(evt); } }); GroupLayout jXTitledPanel1Layout = new GroupLayout(jXTitledPanel1); jXTitledPanel1.setLayout(jXTitledPanel1Layout); jXTitledPanel1Layout.setHorizontalGroup( jXTitledPanel1Layout.createParallelGroup(Alignment.LEADING) .addGroup(jXTitledPanel1Layout.createSequentialGroup() .addContainerGap() .addGroup(jXTitledPanel1Layout.createParallelGroup(Alignment.LEADING) .addGroup(jXTitledPanel1Layout.createSequentialGroup() .addComponent(jLabel2) .addPreferredGap(ComponentPlacement.RELATED) .addComponent(jtf_name, GroupLayout.DEFAULT_SIZE, 250, Short.MAX_VALUE)) .addGroup(Alignment.TRAILING, jXTitledPanel1Layout.createSequentialGroup() .addComponent(jLabel1) .addPreferredGap(ComponentPlacement.RELATED) .addComponent(jtf_title, GroupLayout.DEFAULT_SIZE, 250, Short.MAX_VALUE)) .addGroup(jXTitledPanel1Layout.createSequentialGroup() .addComponent(jLabel3) .addPreferredGap(ComponentPlacement.RELATED) .addComponent(jtf_abstract, GroupLayout.DEFAULT_SIZE, 250, Short.MAX_VALUE))) .addContainerGap()) ); jXTitledPanel1Layout.linkSize(SwingConstants.HORIZONTAL, new Component[] {jLabel1, jLabel2, jLabel3}); jXTitledPanel1Layout.setVerticalGroup( jXTitledPanel1Layout.createParallelGroup(Alignment.LEADING) .addGroup(jXTitledPanel1Layout.createSequentialGroup() .addContainerGap() .addGroup(jXTitledPanel1Layout.createParallelGroup(Alignment.BASELINE) .addComponent(jLabel2) .addComponent(jtf_name, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) .addPreferredGap(ComponentPlacement.RELATED) .addGroup(jXTitledPanel1Layout.createParallelGroup(Alignment.BASELINE) .addComponent(jLabel1) .addComponent(jtf_title, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) .addPreferredGap(ComponentPlacement.RELATED) .addGroup(jXTitledPanel1Layout.createParallelGroup(Alignment.BASELINE) .addComponent(jLabel3) .addComponent(jtf_abstract, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jXTitledPanel2.setBorder(BorderFactory.createEtchedBorder()); jXTitledPanel2.setTitle(MessageBundle.format("filter2")); // NOI18N jck_any.setText(MessageBundle.format("semantic_any")); // NOI18N jck_point.setText(MessageBundle.format("semantic_point")); // NOI18N jck_line.setText(MessageBundle.format("semantic_line")); // NOI18N jck_polygon.setText(MessageBundle.format("semantic_polygon")); // NOI18N jck_text.setText(MessageBundle.format("semantic_text")); // NOI18N jck_raster.setText(MessageBundle.format("semantic_raster")); // NOI18N jLabel4.setHorizontalAlignment(SwingConstants.RIGHT); jLabel4.setText(MessageBundle.format("featuretypename")); // NOI18N jLabel4.setEnabled(false); guiftn.setEnabled(false); GroupLayout jXTitledPanel2Layout = new GroupLayout(jXTitledPanel2); jXTitledPanel2.setLayout(jXTitledPanel2Layout); jXTitledPanel2Layout.setHorizontalGroup( jXTitledPanel2Layout.createParallelGroup(Alignment.LEADING) .addGroup(jXTitledPanel2Layout.createSequentialGroup() .addContainerGap() .addGroup(jXTitledPanel2Layout.createParallelGroup(Alignment.LEADING) .addComponent(guiftn, GroupLayout.DEFAULT_SIZE, 324, Short.MAX_VALUE) .addGroup(jXTitledPanel2Layout.createSequentialGroup() .addGroup(jXTitledPanel2Layout.createParallelGroup(Alignment.LEADING) .addComponent(jck_any) .addComponent(jck_point) .addComponent(jck_line)) .addGap(4, 4, 4) .addGroup(jXTitledPanel2Layout.createParallelGroup(Alignment.LEADING) .addComponent(jck_polygon) .addComponent(jck_text) .addComponent(jck_raster))) .addComponent(jLabel4)) .addContainerGap()) ); jXTitledPanel2Layout.linkSize(SwingConstants.HORIZONTAL, new Component[] {jck_any, jck_line, jck_point, jck_polygon, jck_raster, jck_text}); jXTitledPanel2Layout.setVerticalGroup( jXTitledPanel2Layout.createParallelGroup(Alignment.LEADING) .addGroup(jXTitledPanel2Layout.createSequentialGroup() .addContainerGap() .addGroup(jXTitledPanel2Layout.createParallelGroup(Alignment.LEADING) .addGroup(jXTitledPanel2Layout.createSequentialGroup() .addComponent(jck_any) .addPreferredGap(ComponentPlacement.RELATED) .addComponent(jck_point) .addPreferredGap(ComponentPlacement.RELATED) .addComponent(jck_line)) .addGroup(jXTitledPanel2Layout.createSequentialGroup() .addComponent(jck_polygon) .addPreferredGap(ComponentPlacement.RELATED) .addComponent(jck_text) .addPreferredGap(ComponentPlacement.RELATED) .addComponent(jck_raster))) .addPreferredGap(ComponentPlacement.RELATED) .addComponent(jLabel4) .addPreferredGap(ComponentPlacement.RELATED) .addComponent(guiftn, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jXTitledPanel2Layout.linkSize(SwingConstants.VERTICAL, new Component[] {jck_any, jck_line, jck_point, jck_polygon, jck_raster, jck_text}); GroupLayout layout = new GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(Alignment.LEADING) .addComponent(jXTitledPanel1, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jXTitledPanel2, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(jXTitledPanel1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addPreferredGap(ComponentPlacement.RELATED) .addComponent(jXTitledPanel2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) ); }// </editor-fold>//GEN-END:initComponents private void jtf_titleActionPerformed(final ActionEvent evt) {//GEN-FIRST:event_jtf_titleActionPerformed // fts.setTitle(guiTitle.getText()); }//GEN-LAST:event_jtf_titleActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private JTextField guiftn; private JLabel jLabel1; private JLabel jLabel2; private JLabel jLabel3; private JLabel jLabel4; private JXTitledPanel jXTitledPanel1; private JXTitledPanel jXTitledPanel2; private JCheckBox jck_any; private JCheckBox jck_line; private JCheckBox jck_point; private JCheckBox jck_polygon; private JCheckBox jck_raster; private JCheckBox jck_text; private JTextField jtf_abstract; private JTextField jtf_name; private JTextField jtf_title; // End of variables declaration//GEN-END:variables @Override public void setLayer(final MapLayer layer) { this.layer = layer; } @Override public MapLayer getLayer() { return layer; } @Override public void parse(final MutableFeatureTypeStyle target) { this.fts = target; if(fts != null){ jtf_name.setText(fts.getName()); jtf_title.setText(fts.getDescription().getTitle().toString()); jtf_abstract.setText(fts.getDescription().getAbstract().toString()); jck_any.setSelected( fts.semanticTypeIdentifiers().contains(SemanticType.ANY) ); jck_point.setSelected( fts.semanticTypeIdentifiers().contains(SemanticType.POINT) ); jck_line.setSelected( fts.semanticTypeIdentifiers().contains(SemanticType.LINE) ); jck_polygon.setSelected( fts.semanticTypeIdentifiers().contains(SemanticType.POLYGON) ); jck_text.setSelected( fts.semanticTypeIdentifiers().contains(SemanticType.TEXT) ); jck_raster.setSelected( fts.semanticTypeIdentifiers().contains(SemanticType.RASTER) ); } } @Override public MutableFeatureTypeStyle create() { if(fts == null){ fts = getStyleFactory().featureTypeStyle(); } fts.setName(jtf_name.getText()); fts.setDescription(getStyleFactory().description( jtf_title.getText(), jtf_abstract.getText())); fts.semanticTypeIdentifiers().clear(); if(jck_any.isSelected()) fts.semanticTypeIdentifiers().add(SemanticType.ANY); if(jck_point.isSelected()) fts.semanticTypeIdentifiers().add(SemanticType.POINT); if(jck_line.isSelected()) fts.semanticTypeIdentifiers().add(SemanticType.LINE); if(jck_polygon.isSelected()) fts.semanticTypeIdentifiers().add(SemanticType.POLYGON); if(jck_text.isSelected()) fts.semanticTypeIdentifiers().add(SemanticType.TEXT); if(jck_raster.isSelected()) fts.semanticTypeIdentifiers().add(SemanticType.RASTER); return fts; } @Override public void apply() { create(); } @Override protected Object[] getFirstColumnComponents() { return new Object[]{}; } }