//$HeadURL$
/*----------------------------------------------------------------------------
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.style.component;
import static org.deegree.igeo.i18n.Messages.get;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.border.EmptyBorder;
import org.deegree.framework.log.ILogger;
import org.deegree.framework.log.LoggerFactory;
import org.deegree.framework.xml.XMLTools;
import org.deegree.igeo.ApplicationContainer;
import org.deegree.igeo.style.perform.SldIO;
import com.jgoodies.forms.builder.ButtonBarBuilder;
import com.jgoodies.forms.builder.DefaultFormBuilder;
import com.jgoodies.forms.layout.FormLayout;
/**
* <code>SldFrame</code>
*
* @author <a href="mailto:buesching@lat-lon.de">Lyn Buesching</a>
* @author last edited by: $Author$
*
* @version $Revision$, $Date$
*/
public class SldFrame extends JFrame {
private static final long serialVersionUID = -1141789314492561424L;
private static final ILogger LOG = LoggerFactory.getLogger( SldFrame.class );
private JTextArea textArea;
private ApplicationContainer<?> appContainer;
/**
* @param ruleName
* the name of the rule
* @param appContainer
* the applicationContainer
*/
public SldFrame( String ruleName, ApplicationContainer<?> appContainer ) {
this.appContainer = appContainer;
setTitle( get( "$MD11063", ruleName ) );
init();
}
/**
* @param sld
* the sld to set
*/
public void setSld( String sld ) {
textArea.setText( sld );
}
private void init() {
textArea = new JTextArea( 150, 100 );
textArea.setWrapStyleWord( true );
textArea.setLineWrap( true );
JScrollPane scrollPane = new JScrollPane( textArea );
textArea.setEditable( false );
JPanel buttons = getButtonBar();
buttons.setBorder( new EmptyBorder( 20, 10, 10, 10 ) );
FormLayout fl = new FormLayout( "center:default", "default:grow(1.0), default" );
DefaultFormBuilder builder = new DefaultFormBuilder( fl );
builder.append( scrollPane );
builder.nextLine();
builder.append( buttons );
getContentPane().add( builder.getPanel() );
}
private JPanel getButtonBar() {
JButton prettyPrintBt = new JButton( get( "$MD11064" ) );
prettyPrintBt.addActionListener( new ActionListener() {
public void actionPerformed( ActionEvent e ) {
try {
textArea.setText( XMLTools.getAsPrettyString( textArea.getText() ) );
} catch ( Exception ex ) {
LOG.logWarning( "ignore", ex );
}
}
} );
JButton saveSLDBt = new JButton( get( "$MD11065" ) );
saveSLDBt.addActionListener( new ActionListener() {
public void actionPerformed( ActionEvent e ) {
saveSld();
}
} );
JButton exitBt = new JButton( get( "$MD11066" ) );
exitBt.addActionListener( new ActionListener() {
public void actionPerformed( ActionEvent e ) {
setVisible( false );
}
} );
ButtonBarBuilder bbBuilder = new ButtonBarBuilder();
bbBuilder.addUnrelatedGap();
bbBuilder.addGridded( prettyPrintBt );
bbBuilder.addUnrelatedGap();
bbBuilder.addGridded( saveSLDBt );
bbBuilder.addUnrelatedGap();
bbBuilder.addGridded( exitBt );
bbBuilder.addUnrelatedGap();
return bbBuilder.getPanel();
}
private void saveSld() {
SldIO.exportSld( textArea.getText(), appContainer, this );
}
}