/*---------------------------------------------------------------------------- This file is part of deegree, http://deegree.org/ Copyright (C) 2001-2009 by: - Department of Geography, University of Bonn - and - lat/lon GmbH - 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; either version 2.1 of the License, or (at your option) any later version. 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. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Contact information: lat/lon GmbH Aennchenstr. 19, 53177 Bonn Germany http://lat-lon.de/ Department of Geography, University of Bonn Prof. Dr. Klaus Greve Postfach 1147, 53001 Bonn Germany http://www.geographie.uni-bonn.de/deegree/ e-mail: info@deegree.org ----------------------------------------------------------------------------*/ package org.deegree.igeo.views.swing.layerlist; import java.awt.BorderLayout; import java.awt.Container; import java.awt.FlowLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JEditorPane; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JSpinner; import javax.swing.JToggleButton; import javax.swing.SpinnerNumberModel; import org.deegree.igeo.ApplicationContainer; import org.deegree.igeo.i18n.Messages; import org.deegree.igeo.mapmodel.Layer; import org.deegree.igeo.mapmodel.MapModel; import org.deegree.igeo.mapmodel.MapModelEntry; import org.deegree.igeo.modules.LayerListTreeViewModule; import org.deegree.igeo.views.HelpManager; import org.deegree.igeo.views.swing.HelpFrame; import org.deegree.igeo.views.swing.util.IconRegistry; import com.jgoodies.forms.layout.CellConstraints; import com.jgoodies.forms.layout.FormLayout; /** * * TODO add class documentation here * * @author <a href="mailto:name@deegree.org">Andreas Poth</a> * @author last edited by: $Author$ * * @version $Revision$, $Date$ */ public class InfoPanel extends JPanel { private static final long serialVersionUID = -1590677362265513481L; private JPanel pnAbstract; private JPanel pnButtons; private JButton btTake; private JToggleButton tbSelectedForEdit; private JSpinner spMax; private JSpinner spMin; private JLabel lbMax; private JLabel lnMin; private JPanel pnScale; private JLabel lbLegend; private JPanel pnLegend; private JButton btHelp; private JToggleButton tbEditable; private JToggleButton tbQueryable; private JToggleButton tbVisible; private JPanel pnHelp; private JPanel pnState; private JScrollPane scLegend; private JEditorPane epDescription; private MapModelEntry mme; /** * */ public InfoPanel() { initGUI(); } /** * * @param mme */ void setMapModelEntry( MapModelEntry mme ) { this.mme = mme; this.epDescription.setText( mme.getAbstract() ); this.tbVisible.getModel().setSelected( mme.isVisible() ); this.tbQueryable.getModel().setSelected( mme.isQueryable() ); if ( mme instanceof Layer ) { Layer layer = (Layer) mme; this.lbLegend.setIcon( new ImageIcon( layer.getLegend() ) ); this.tbEditable.getModel().setSelected( layer.isEditable() ); this.tbSelectedForEdit.setSelected( layer.getSelectedFor().contains( MapModel.SELECTION_EDITING ) ); double d = Math.round( layer.getMaxScaleDenominator() / 100 ); ( (SpinnerNumberModel) this.spMin.getModel() ).setValue( layer.getMinScaleDenominator() ); ( (SpinnerNumberModel) this.spMin.getModel() ).setStepSize( d ); ( (SpinnerNumberModel) this.spMax.getModel() ).setValue( layer.getMaxScaleDenominator() ); ( (SpinnerNumberModel) this.spMax.getModel() ).setStepSize( d ); } } private void initGUI() { try { GridBagLayout thisLayout = new GridBagLayout(); this.setPreferredSize( new java.awt.Dimension( 588, 351 ) ); thisLayout.rowWeights = new double[] { 0.0, 0.0, 0.0, 0.0, 0.1 }; thisLayout.rowHeights = new int[] { 166, 65, 83, -1, 7 }; thisLayout.columnWeights = new double[] { 0.0, 0.0, 0.0 }; thisLayout.columnWidths = new int[] { 166, 254, 147 }; this.setLayout( thisLayout ); { pnLegend = new JPanel(); BorderLayout pn_legendLayout = new BorderLayout(); pnLegend.setLayout( pn_legendLayout ); this.add( pnLegend, new GridBagConstraints( 0, 1, 1, 2, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets( 0, 0, 0, 0 ), 0, 0 ) ); pnLegend.setBorder( BorderFactory.createTitledBorder( Messages.getMessage( getLocale(), "$MD11128" ) ) ); { scLegend = new JScrollPane(); pnLegend.add( scLegend, BorderLayout.CENTER ); { lbLegend = new JLabel(); scLegend.setViewportView( lbLegend ); lbLegend.setPreferredSize( new java.awt.Dimension( 143, 15 ) ); } } } { pnState = new JPanel(); GridBagLayout pn_stateLayout = new GridBagLayout(); this.add( pnState, new GridBagConstraints( 0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets( 0, 0, 0, 0 ), 0, 0 ) ); pnState.setBorder( BorderFactory.createTitledBorder( Messages.getMessage( getLocale(), "$MD11129" ) ) ); pn_stateLayout.rowWeights = new double[] { 0.0, 0.0, 0.0, 0.0, 0.1 }; pn_stateLayout.rowHeights = new int[] { 28, 28, 28, 28, 7 }; pn_stateLayout.columnWeights = new double[] { 0.1 }; pn_stateLayout.columnWidths = new int[] { 7 }; pnState.setLayout( pn_stateLayout ); { Icon icon = new ImageIcon( InfoPanel.class.getResource( "visible.png" ) ); tbVisible = new JToggleButton( icon ); pnState.add( tbVisible, new GridBagConstraints( 0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets( 0, 0, 0, 0 ), 0, 0 ) ); tbVisible.setToolTipText( Messages.getMessage( getLocale(), "$MD10001" ) ); } { Icon icon = new ImageIcon( InfoPanel.class.getResource( "queryable.png" ) ); tbQueryable = new JToggleButton( icon ); pnState.add( tbQueryable, new GridBagConstraints( 0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets( 0, 0, 0, 0 ), 0, 0 ) ); tbQueryable.setToolTipText( Messages.getMessage( getLocale(), "$MD10002" ) ); } { Icon icon = new ImageIcon( InfoPanel.class.getResource( "editable.png" ) ); tbEditable = new JToggleButton( icon ); pnState.add( tbEditable, new GridBagConstraints( 0, 2, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets( 0, 0, 0, 0 ), 0, 0 ) ); tbEditable.setToolTipText( Messages.getMessage( getLocale(), "$MD10003" ) ); } { Icon icon = new ImageIcon( InfoPanel.class.getResource( "selected4edit.png" ) ); tbSelectedForEdit = new JToggleButton( icon ); pnState.add( tbSelectedForEdit, new GridBagConstraints( 0, 3, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets( 0, 0, 0, 0 ), 0, 0 ) ); tbSelectedForEdit.setToolTipText( Messages.getMessage( getLocale(), "$MD10005" ) ); } } { pnAbstract = new JPanel(); BorderLayout pn_abstractLayout = new BorderLayout(); pnAbstract.setLayout( pn_abstractLayout ); this.add( pnAbstract, new GridBagConstraints( 1, 0, 2, 2, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets( 0, 0, 0, 0 ), 0, 0 ) ); pnAbstract.setBorder( BorderFactory.createTitledBorder( Messages.getMessage( getLocale(), "$MD11130" ) ) ); { epDescription = new JEditorPane(); JScrollPane sc = new JScrollPane( epDescription ); pnAbstract.add( sc, BorderLayout.CENTER ); epDescription.setPreferredSize( new java.awt.Dimension( 259, 218 ) ); } } { pnButtons = new JPanel(); FlowLayout pn_buttonsLayout = new FlowLayout(); pn_buttonsLayout.setAlignment( FlowLayout.LEFT ); pnButtons.setLayout( pn_buttonsLayout ); this.add( pnButtons, new GridBagConstraints( 0, 4, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets( 0, 0, 0, 0 ), 0, 0 ) ); { btTake = new JButton( Messages.getMessage( getLocale(), "$MD10006" ), IconRegistry.getIcon( "save.gif" ) ); btTake.setToolTipText( Messages.getMessage( getLocale(), "$MD11125" ) ); pnButtons.add( btTake ); btTake.addActionListener( new ActionListener() { public void actionPerformed( ActionEvent e ) { mme.setAbstract( epDescription.getText() ); if ( mme instanceof Layer ) { double min = ( (Number) spMin.getValue() ).doubleValue(); double max = ( (Number) spMax.getValue() ).doubleValue(); double d = min; if ( min > max ) { min = max; max = d; } ( (Layer) mme ).setMinScaleDenominator( min ); ( (Layer) mme ).setMaxScaleDenominator( max ); } ( (Layer) mme ).fireRepaintEvent(); } } ); } } { pnHelp = new JPanel(); FlowLayout jPanel1Layout = new FlowLayout(); jPanel1Layout.setAlignment( FlowLayout.RIGHT ); pnHelp.setLayout( jPanel1Layout ); this.add( pnHelp, new GridBagConstraints( 2, 4, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets( 0, 0, 0, 0 ), 0, 0 ) ); { btHelp = new JButton( Messages.getMessage( getLocale(), "$MD11126" ), IconRegistry.getIcon( "help.png" ) ); pnHelp.add( btHelp ); btHelp.setToolTipText( Messages.getMessage( getLocale(), "$MD11127" ) ); btHelp.addActionListener( new ActionListener() { @SuppressWarnings("unchecked") public void actionPerformed( ActionEvent e ) { ApplicationContainer<Container> appCont = (ApplicationContainer<Container>) mme.getOwner().getApplicationContainer(); HelpFrame hf = HelpFrame.getInstance( new HelpManager( appCont ) ); hf.setVisible( true ); hf.gotoModule( LayerListTreeViewModule.class.getName() ); } } ); } } { pnScale = new JPanel(); FormLayout pnScaleLayout = new FormLayout( "38dlu, 101dlu", "18dlu, 18dlu" ); pnScale.setLayout( pnScaleLayout ); this.add( pnScale, new GridBagConstraints( 1, 2, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.VERTICAL, new Insets( 0, 0, 0, 0 ), 0, 0 ) ); pnScale.setBorder( BorderFactory.createTitledBorder( Messages.getMessage( getLocale(), "$MD11207" ) ) ); { lnMin = new JLabel(); pnScale.add( lnMin, new CellConstraints( "1, 1, 1, 1, default, default" ) ); lnMin.setText( Messages.getMessage( getLocale(), "$MD11208" ) ); } { lbMax = new JLabel(); pnScale.add( lbMax, new CellConstraints( "1, 2, 1, 1, default, default" ) ); lbMax.setText( Messages.getMessage( getLocale(), "$MD11209" ) ); } { spMin = new JSpinner( new SpinnerNumberModel( 0, 0, 9E99, 100 ) ); pnScale.add( spMin, new CellConstraints( 2, 1, 1, 1, CellConstraints.FILL, CellConstraints.DEFAULT, new Insets( 0, 10, 0, 10 ) ) ); } { spMax = new JSpinner( new SpinnerNumberModel( 0, 0, 9E99, 100 ) ); pnScale.add( spMax, new CellConstraints( 2, 2, 1, 1, CellConstraints.FILL, CellConstraints.CENTER, new Insets( 0, 10, 0, 10 ) ) ); } } } catch ( Exception e ) { e.printStackTrace(); } } }