/*******************************************************************************
* Copyright (c) 2014, 2016 itemis AG and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Alexander Nyßen (itemis AG) - initial API and implementation
*
*******************************************************************************/
package org.eclipse.gef.mvc.examples.logo.model;
import org.eclipse.gef.geometry.planar.AffineTransform;
import org.eclipse.gef.geometry.planar.IGeometry;
import javafx.beans.property.DoubleProperty;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleDoubleProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.scene.effect.Effect;
import javafx.scene.paint.Color;
import javafx.scene.paint.Paint;
abstract public class AbstractGeometricElement<G extends IGeometry> {
public static final String GEOMETRY_PROPERTY = "geometry";
public static final String TRANSFORM_PROPERTY = "transform";
public static final String STROKE_WIDTH_PROPERTY = "strokeWidth";
private final ObjectProperty<G> geometryProperty = new SimpleObjectProperty<>(
this, GEOMETRY_PROPERTY);
private final ObjectProperty<AffineTransform> transformProperty = new SimpleObjectProperty<>(
this, TRANSFORM_PROPERTY);
private Paint stroke = new Color(0, 0, 0, 1);
private Effect effect;
private final DoubleProperty strokeWidthProperty = new SimpleDoubleProperty(
this, STROKE_WIDTH_PROPERTY, 0.5);
public AbstractGeometricElement(G geometry) {
setGeometry(geometry);
}
public AbstractGeometricElement(G geometry, AffineTransform transform,
Paint stroke, double strokeWidth, Effect effect) {
this(geometry);
setTransform(transform);
setEffect(effect);
setStroke(stroke);
setStrokeWidth(strokeWidth);
}
public AbstractGeometricElement(G geometry, Paint stroke,
double strokeWidth, Effect effect) {
setGeometry(geometry);
setEffect(effect);
setStroke(stroke);
setStrokeWidth(strokeWidth);
}
public Effect getEffect() {
return effect;
}
public G getGeometry() {
return geometryProperty.get();
}
public Paint getStroke() {
return stroke;
}
public double getStrokeWidth() {
return strokeWidthProperty.get();
}
public AffineTransform getTransform() {
return transformProperty.get();
}
public void setEffect(Effect effect) {
this.effect = effect;
}
public void setGeometry(G geometry) {
geometryProperty.set(geometry);
}
public void setStroke(Paint stroke) {
this.stroke = stroke;
}
public void setStrokeWidth(double strokeWidth) {
strokeWidthProperty.set(strokeWidth);
}
public void setTransform(AffineTransform transform) {
transformProperty.set(transform);
}
}