X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.district.network.ui%2Fsrc%2Forg%2Fsimantics%2Fdistrict%2Fnetwork%2Fui%2Fnodes%2FDistrictNetworkVertexNode.java;fp=org.simantics.district.network.ui%2Fsrc%2Forg%2Fsimantics%2Fdistrict%2Fnetwork%2Fui%2Fnodes%2FDistrictNetworkVertexNode.java;h=58e47f4bcf285dff9f5585aafc7d6a8e5f0eb49e;hb=00803fe68b14b5dce310a5a88b9c2a55bd1c85e6;hp=1dd0afe5c5e52a30b773262f85207d79066a9c9b;hpb=b654d9f368d601565303bcf646fc4fbdfbc37090;p=simantics%2Fdistrict.git diff --git a/org.simantics.district.network.ui/src/org/simantics/district/network/ui/nodes/DistrictNetworkVertexNode.java b/org.simantics.district.network.ui/src/org/simantics/district/network/ui/nodes/DistrictNetworkVertexNode.java index 1dd0afe5..58e47f4b 100644 --- a/org.simantics.district.network.ui/src/org/simantics/district/network/ui/nodes/DistrictNetworkVertexNode.java +++ b/org.simantics.district.network.ui/src/org/simantics/district/network/ui/nodes/DistrictNetworkVertexNode.java @@ -1,5 +1,6 @@ package org.simantics.district.network.ui.nodes; +import java.awt.BasicStroke; import java.awt.Color; import java.awt.Graphics2D; import java.awt.RenderingHints; @@ -9,17 +10,19 @@ import java.awt.geom.Rectangle2D; import org.simantics.district.network.ModelledCRS; import org.simantics.district.network.ui.adapters.DistrictNetworkVertex; +import org.simantics.scenegraph.ISelectionPainterNode; import org.simantics.scenegraph.g2d.G2DNode; import org.simantics.scenegraph.utils.GeometryUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.simantics.scenegraph.utils.NodeUtil; -public class DistrictNetworkVertexNode extends G2DNode { +public class DistrictNetworkVertexNode extends G2DNode implements ISelectionPainterNode { - private static final Logger LOGGER = LoggerFactory.getLogger(DistrictNetworkVertexNode.class); + //private static final Logger LOGGER = LoggerFactory.getLogger(DistrictNetworkVertexNode.class); private static final long serialVersionUID = -2641639101400236719L; - private DistrictNetworkVertex vertex; + + private static final BasicStroke STROKE = new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND); + private static final Color SELECTION_COLOR = new Color(255, 0, 255, 96); private static final double left = -0.25; private static final double top = -0.25; @@ -29,10 +32,13 @@ public class DistrictNetworkVertexNode extends G2DNode { private static final Rectangle2D NORMAL = new Rectangle2D.Double(left, top, width, height); private static final Rectangle2D HOVERED = new Rectangle2D.Double(left * 3, top * 3, width * 3, height * 3); + private DistrictNetworkVertex vertex; + private boolean scaleStroke = true; private boolean hover; private Color color; + private transient Color dynamicColor; private Rectangle2D bounds; @@ -63,7 +69,6 @@ public class DistrictNetworkVertexNode extends G2DNode { } Color oldColor = g2d.getColor(); - g2d.setColor(color); double scaleRecip = 1; if (scaleStroke) { @@ -82,7 +87,16 @@ public class DistrictNetworkVertexNode extends G2DNode { } else { toDraw = new Rectangle2D.Double(res.getX() - (NORMAL.getWidth() / 2 * scaleRecip), res.getY() - (NORMAL.getHeight() / 2 * scaleRecip), NORMAL.getWidth() * scaleRecip, NORMAL.getHeight() * scaleRecip); } + + if (NodeUtil.isSelected(this, 1)) { + g2d.setColor(SELECTION_COLOR); + BasicStroke ss = GeometryUtils.scaleStroke(STROKE, (float) scaleRecip*2); + g2d.setStroke(ss); + g2d.draw(toDraw); + } + // render + g2d.setColor(dynamicColor != null ? dynamicColor : color); g2d.fill(toDraw); // Reset settings @@ -176,4 +190,9 @@ public class DistrictNetworkVertexNode extends G2DNode { updateBounds(); } + @PropertySetter(value = "dynamicColor") + public void setDynamicColor(Color color) { + this.dynamicColor = color; + } + }