/***************************************************
*
* cismet GmbH, Saarbruecken, Germany
*
* ... and it just works.
*
****************************************************/
package de.cismet.cismap.commons.gui.options;
import org.jdom.Element;
import org.openide.util.NbBundle;
import org.openide.util.lookup.ServiceProvider;
import de.cismet.cismap.commons.gui.MappingComponent;
import de.cismet.cismap.commons.gui.piccolo.eventlistener.CreateGeometryListener;
import de.cismet.cismap.commons.gui.piccolo.eventlistener.CreateGeometryListenerInterface;
import de.cismet.cismap.commons.interaction.CismapBroker;
import de.cismet.lookupoptions.*;
import de.cismet.tools.configuration.NoWriteError;
/**
* DOCUMENT ME!
*
* @author jruiz
* @version $Revision$, $Date$
*/
@ServiceProvider(service = OptionsPanelController.class)
public class GeometryOptionsPanel extends AbstractOptionsPanel implements OptionsPanelController {
//~ Static fields/initializers ---------------------------------------------
private static final String OPTION_NAME = NbBundle.getMessage(
GeometryOptionsPanel.class,
"GeometryOptionsPanel.OPTION_NAME");
private static final String CONFIGURATION = "GeometryOptionsPanel";
private static final String CONF_HOLD_GEOMETRIES = "EllipseEgdes";
//~ Instance fields --------------------------------------------------------
private final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(this.getClass());
private boolean stillConfigured = false;
private int numOfEllipseEdges;
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JTextField jTextField1;
// End of variables declaration//GEN-END:variables
//~ Constructors -----------------------------------------------------------
/**
* Creates a new GeometryOptionsPanel object.
*/
public GeometryOptionsPanel() {
super(OPTION_NAME, CismapOptionsCategory.class);
initComponents();
}
//~ Methods ----------------------------------------------------------------
@Override
public int getOrder() {
return 1;
}
@Override
public void update() {
final CreateGeometryListenerInterface listener = getListener();
if (listener != null) {
numOfEllipseEdges = listener.getNumOfEllipseEdges();
}
jTextField1.setText(String.valueOf(numOfEllipseEdges));
}
@Override
public void applyChanges() {
numOfEllipseEdges = Integer.valueOf(jTextField1.getText());
final CreateGeometryListenerInterface listener = getListener();
if (listener != null) {
listener.setNumOfEllipseEdges(numOfEllipseEdges);
}
}
@Override
public boolean isChanged() {
int intEdges;
try {
intEdges = Integer.valueOf(jTextField1.getText());
} catch (NumberFormatException ex) {
intEdges = 0;
}
return numOfEllipseEdges != intEdges;
}
@Override
public String getTooltip() {
return org.openide.util.NbBundle.getMessage(GeometryOptionsPanel.class,
"GeometryOptionsPanel.tooltip"); // NOI18N
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
private CreateGeometryListenerInterface getListener() {
CreateGeometryListenerInterface result = null;
if ((CismapBroker.getInstance() != null)
&& (CismapBroker.getInstance().getMappingComponent() != null)
&& (CismapBroker.getInstance().getMappingComponent().getInputListener(
MappingComponent.CREATE_SEARCH_POLYGON) != null)) {
result = (CreateGeometryListenerInterface)CismapBroker.getInstance().getMappingComponent()
.getInputListener(MappingComponent.CREATE_SEARCH_POLYGON);
}
return result;
}
@Override
public void configure(final Element parent) {
if (!stillConfigured) {
if (log.isDebugEnabled()) {
log.debug("Configure GeometryOptionsPanel");
}
try {
String elementNumOfEllipseEdges = "";
if (parent != null) {
final Element conf = parent.getChild(CONFIGURATION);
if (conf != null) {
elementNumOfEllipseEdges = conf.getChildText(CONF_HOLD_GEOMETRIES);
}
}
numOfEllipseEdges = new Integer(elementNumOfEllipseEdges);
} catch (Exception ex) {
log.error("Fehler beim Konfigurieren des GeometryOptionsPanel", ex);
}
// hier werden die Werte in der GUI gesetzt
jTextField1.setText(String.valueOf(numOfEllipseEdges));
stillConfigured = true;
} else {
if (log.isDebugEnabled()) {
log.debug("skip Configure GeometryOptionsPanel - still configured");
}
}
// Ă„nderungen anwenden
applyChanges();
}
@Override
public Element getConfiguration() throws NoWriteError {
final Element conf = new Element(CONFIGURATION);
final Element holdSearchGeometriesElement = new Element(CONF_HOLD_GEOMETRIES);
holdSearchGeometriesElement.addContent(Integer.toString(numOfEllipseEdges));
conf.addContent(holdSearchGeometriesElement);
return conf;
}
/**
* 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.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jTextField1 = new javax.swing.JTextField();
jLabel1.setText(org.openide.util.NbBundle.getMessage(
GeometryOptionsPanel.class,
"GeometryOptionsPanel.jLabel1.text")); // NOI18N
jLabel2.setText(org.openide.util.NbBundle.getMessage(
GeometryOptionsPanel.class,
"GeometryOptionsPanel.jLabel2.text")); // NOI18N
jTextField1.setText(org.openide.util.NbBundle.getMessage(
GeometryOptionsPanel.class,
"GeometryOptionsPanel.jTextField1.text")); // NOI18N
final javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(
layout.createSequentialGroup().addContainerGap().addGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(
layout.createSequentialGroup().addGap(12, 12, 12).addComponent(jLabel2).addPreferredGap(
javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(
jTextField1,
javax.swing.GroupLayout.PREFERRED_SIZE,
49,
javax.swing.GroupLayout.PREFERRED_SIZE)).addComponent(jLabel1)).addContainerGap(
40,
Short.MAX_VALUE)));
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(
layout.createSequentialGroup().addContainerGap().addComponent(jLabel1).addPreferredGap(
javax.swing.LayoutStyle.ComponentPlacement.RELATED).addGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jLabel2)
.addComponent(
jTextField1,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)).addContainerGap(36, Short.MAX_VALUE)));
} // </editor-fold>//GEN-END:initComponents
}