import java.awt.Graphics2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
+import java.util.Map;
+import org.simantics.scenegraph.INode;
import org.simantics.scenegraph.g2d.G2DRenderingHints;
import org.simantics.scenegraph.g2d.IG2DNode;
+import org.simantics.scenegraph.g2d.color.ColorFilter;
+import org.simantics.scenegraph.g2d.color.Graphics2DWithColorFilter;
import org.simantics.scenegraph.g2d.events.EventTypes;
import org.simantics.scenegraph.g2d.events.MouseEvent;
import org.simantics.scenegraph.g2d.events.MouseEvent.MouseDragBegin;
private TransferableProvider transferableProvider;
protected Composite composite;
+ private ColorFilter colorFilter;
protected Boolean visible = Boolean.TRUE;
protected Boolean hidden = Boolean.FALSE;
private transient Object key;
private transient String typeClass;
+ private transient Map<String, Object> parameters;
public void setKey(Object key) {
this.key = key;
return typeClass;
}
+ public void setParameters(Map<String,Object> parameters) {
+ this.parameters = parameters;
+ }
+
+ public <T> T getParameter(String key) {
+ if (parameters != null) {
+ @SuppressWarnings("unchecked")
+ T t = (T) parameters.get(key);
+ if(t != null) return t;
+ }
+ INode parent = NodeUtil.getNearestParentOfType(this, SingleElementNode.class);
+ if (parent instanceof SingleElementNode) {
+ return ((SingleElementNode)parent).getParameter(key);
+ }
+ return null;
+ }
+
public void setTransferableProvider(TransferableProvider transferableProvider) {
if (transferableProvider != this.transferableProvider) {
if (this.transferableProvider != null)
public void setComposite(Composite composite) {
this.composite = composite;
}
+
+ public void setColorFilter(ColorFilter colorFilter) {
+ this.colorFilter = colorFilter;
+ }
@SyncField("visible")
public void setVisible(Boolean visible) {
}
@Override
- public void render(Graphics2D g) {
+ public void render(Graphics2D g2d) {
if (!visible || hidden)
return;
+ Graphics2D g;
+ if (colorFilter != null) {
+ g = new Graphics2DWithColorFilter(g2d, colorFilter);
+ g.setRenderingHint(G2DRenderingHints.KEY_COLOR_FILTER, colorFilter);
+ } else {
+ g = g2d;
+ }
+
Composite oldComposite = null;
if(composite != null) {
oldComposite = g.getComposite();
if (oldComposite != null)
g.setComposite(oldComposite);
+
+ if (colorFilter != null) {
+ g.setRenderingHint(G2DRenderingHints.KEY_COLOR_FILTER, null);
+ }
}
@Override