/***************************************************
*
* cismet GmbH, Saarbruecken, Germany
*
* ... and it just works.
*
****************************************************/
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package de.cismet.cismap.commons.gui.piccolo.eventlistener;
import com.vividsolutions.jts.geom.Geometry;
import edu.umd.cs.piccolo.nodes.PPath;
import java.awt.geom.GeneralPath;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import de.cismet.cismap.commons.features.DefaultStyledFeature;
import de.cismet.cismap.commons.gui.piccolo.PFeature;
import de.cismet.cismap.commons.interaction.CismapBroker;
/**
* DOCUMENT ME!
*
* @author thorsten
* @version $Revision$, $Date$
*/
public class DerivedSubFeature extends PPath implements PropertyChangeListener {
//~ Instance fields --------------------------------------------------------
PFeature parent;
DeriveRule rule;
private final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(this.getClass());
//~ Constructors -----------------------------------------------------------
/**
* Creates a new DerivedSubFeature object.
*
* @param parent DOCUMENT ME!
* @param rule DOCUMENT ME!
*/
public DerivedSubFeature(final PFeature parent, final DeriveRule rule) {
this.parent = parent;
this.rule = rule;
parent.addPropertyChangeListener(this);
}
//~ Methods ----------------------------------------------------------------
@Override
public void propertyChange(final PropertyChangeEvent evt) {
final Geometry g = parent.getFeature().getGeometry();
final DefaultStyledFeature dsf = new DefaultStyledFeature();
dsf.setGeometry(rule.derive(g));
final PFeature p = new PFeature(dsf, CismapBroker.getInstance().getMappingComponent());
super.setPathTo(new GeneralPath(p.getPathReference()));
}
}