/***************************************************
*
* cismet GmbH, Saarbruecken, Germany
*
* ... and it just works.
*
****************************************************/
/*
* HandleAddAction.java
*
* Created on 11. Dezember 2007, 09:14
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package de.cismet.cismap.commons.gui.piccolo.eventlistener.actions;
import de.cismet.cismap.commons.features.Feature;
import de.cismet.cismap.commons.gui.MappingComponent;
import de.cismet.cismap.commons.gui.piccolo.PFeature;
/**
* Implementiert das CustomAction-Interface und wird von der Memento-Klasse verwendet, um ein gel\u00F6schtes Handle
* eines Features wiederherzustellen.
*
* @author nh
* @version $Revision$, $Date$
*/
public class HandleAddAction implements CustomAction {
//~ Instance fields --------------------------------------------------------
private final MappingComponent mc;
private final Feature feature;
private final int entityPosition;
private final int ringPosition;
private final int coordPosition;
private final float x;
private final float y;
//~ Constructors -----------------------------------------------------------
/**
* Erzeugt eine HandleAddAction-Instanz.
*
* @param mc h das Handle selbst
* @param f PFeature dem das Handle zugeordnet ist
* @param entityPosition DOCUMENT ME!
* @param ringPosition DOCUMENT ME!
* @param coordPosition Position der HandleKoordinaten im Koordinatenarray des PFeatures
* @param x DOCUMENT ME!
* @param y DOCUMENT ME!
*/
public HandleAddAction(
final MappingComponent mc,
final Feature f,
final int entityPosition,
final int ringPosition,
final int coordPosition,
final float x,
final float y) {
this.mc = mc;
this.feature = f;
this.entityPosition = entityPosition;
this.ringPosition = ringPosition;
this.coordPosition = coordPosition;
this.x = x;
this.y = y;
}
//~ Methods ----------------------------------------------------------------
/**
* Legt das gespeicherte PHandle neu an.
*/
@Override
public void doAction() {
final PFeature pf = (PFeature)mc.getPFeatureHM().get(feature);
pf.insertCoordinate(entityPosition, ringPosition, coordPosition, x, y, false);
}
/**
* Liefert eine Beschreibung der Aktion als String.
*
* @return Beschreibungsstring
*/
@Override
public String info() {
return org.openide.util.NbBundle.getMessage(
HandleAddAction.class,
"HandleAddAction.info().return",
new Object[] { coordPosition, x, y }); // NOI18N
}
/**
* Liefert als Gegenteil die L\u00F6schaktion des Handles.
*
* @return HandleDeleteAction
*/
@Override
public CustomAction getInverse() {
return new HandleDeleteAction(mc, feature, entityPosition, ringPosition, coordPosition, x, y);
}
@Override
public boolean featureConcerned(final Feature feature) {
return (feature != null) && feature.equals(feature);
}
}