diff --git a/ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/Utils.java b/ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/Utils.java index 1b70cb781e..4383273efb 100644 --- a/ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/Utils.java +++ b/ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/Utils.java @@ -18,12 +18,13 @@ This file is part of Universal Gcode Sender (UGS). */ package com.willwinder.ugs.nbp.designer; -import static com.willwinder.ugs.nbp.designer.DesignerMain.PROPERTY_IS_STANDALONE; import org.apache.commons.lang3.StringUtils; import java.awt.geom.Point2D; import java.text.ParseException; +import static com.willwinder.ugs.nbp.designer.DesignerMain.PROPERTY_IS_STANDALONE; + /** * @author Joacim Breiler */ diff --git a/ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/entities/AbstractEntity.java b/ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/entities/AbstractEntity.java index f138cef8a5..885522bd5f 100644 --- a/ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/entities/AbstractEntity.java +++ b/ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/entities/AbstractEntity.java @@ -179,8 +179,10 @@ public void setTransform(AffineTransform transform) { @Override public void move(Point2D deltaMovement) { try { - transform.preConcatenate(AffineTransform.getTranslateInstance(deltaMovement.getX(), deltaMovement.getY())); - notifyEvent(new EntityEvent(this, EventType.MOVED)); + if( deltaMovement.distance(new Point2D.Double(0d, 0d)) > 0) { + transform.preConcatenate(AffineTransform.getTranslateInstance(deltaMovement.getX(), deltaMovement.getY())); + notifyEvent(new EntityEvent(this, EventType.MOVED)); + } } catch (Exception e) { throw new EntityException("Could not make inverse transform of point", e); } diff --git a/ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/entities/EntityGroup.java b/ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/entities/EntityGroup.java index 6bf30edb8e..93e48054ef 100644 --- a/ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/entities/EntityGroup.java +++ b/ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/entities/EntityGroup.java @@ -70,6 +70,7 @@ public void rotate(double angle) { groupRotation += angle; Point2D center = getCenter(); getAllChildren().forEach(entity -> entity.rotate(center, angle)); + invalidateBounds(); notifyEvent(new EntityEvent(this, EventType.ROTATED)); } catch (Exception e) { throw new EntityException("Couldn't set the rotation", e); @@ -81,8 +82,8 @@ public void rotate(Point2D center, double angle) { try { groupRotation += angle; getAllChildren().forEach(entity -> entity.rotate(center, angle)); - notifyEvent(new EntityEvent(this, EventType.ROTATED)); invalidateBounds(); + notifyEvent(new EntityEvent(this, EventType.ROTATED)); } catch (Exception e) { throw new EntityException("Couldn't set the rotation", e); } @@ -170,8 +171,8 @@ public void applyTransform(AffineTransform transform) { public void move(Point2D deltaMovement) { try { applyTransform(AffineTransform.getTranslateInstance(deltaMovement.getX(), deltaMovement.getY())); - notifyEvent(new EntityEvent(this, EventType.MOVED)); invalidateBounds(); + notifyEvent(new EntityEvent(this, EventType.MOVED)); } catch (Exception e) { throw new EntityException("Could not make inverse transform of point", e); } @@ -328,14 +329,14 @@ public void scale(double sx, double sy) { child.scale(sx, sy); child.setPosition(new Point2D.Double(originalPosition.getX() + (relativePosition.getX() * sx), originalPosition.getY() + (relativePosition.getY() * sy))); }); - notifyEvent(new EntityEvent(this, EventType.RESIZED)); invalidateBounds(); + notifyEvent(new EntityEvent(this, EventType.RESIZED)); } @Override public void onEvent(EntityEvent entityEvent) { - notifyEvent(entityEvent); invalidateBounds(); + notifyEvent(entityEvent); } @Override diff --git a/ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/entities/controls/CreateEllipseControl.java b/ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/entities/controls/CreateEllipseControl.java index b8108719af..659efc68c1 100644 --- a/ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/entities/controls/CreateEllipseControl.java +++ b/ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/entities/controls/CreateEllipseControl.java @@ -28,7 +28,7 @@ This file is part of Universal Gcode Sender (UGS). import com.willwinder.ugs.nbp.designer.model.Size; import com.willwinder.universalgcodesender.uielements.helpers.ThemeColors; -import java.awt.*; +import java.awt.Graphics2D; import java.awt.geom.Ellipse2D; import java.awt.geom.Point2D; @@ -95,6 +95,9 @@ private void createEntity() { Ellipse ellipse = new Ellipse(startX, startY); ellipse.setSize(new Size(endX - startX, endY - startY)); controller.addEntity(ellipse); + + controller.setTool(Tool.SELECT); + controller.getSelectionManager().addSelection(ellipse); } @Override diff --git a/ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/entities/controls/CreatePointControl.java b/ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/entities/controls/CreatePointControl.java index 8137ede1c4..5d9e33065d 100644 --- a/ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/entities/controls/CreatePointControl.java +++ b/ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/entities/controls/CreatePointControl.java @@ -59,7 +59,11 @@ public void onEvent(EntityEvent entityEvent) { if (entityEvent instanceof MouseEntityEvent) { MouseEntityEvent mouseEntityEvent = (MouseEntityEvent) entityEvent; if (mouseEntityEvent.getType() == EventType.MOUSE_PRESSED) { - controller.addEntity(new Point(mouseEntityEvent.getStartMousePosition().getX(), mouseEntityEvent.getStartMousePosition().getY())); + + Point point = new Point(mouseEntityEvent.getStartMousePosition().getX(), mouseEntityEvent.getStartMousePosition().getY()); + controller.addEntity(point); + controller.setTool(Tool.SELECT); + controller.getSelectionManager().addSelection(point); } } } diff --git a/ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/entities/controls/CreateRectangleControl.java b/ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/entities/controls/CreateRectangleControl.java index 371e5898d7..ddadcb1b69 100644 --- a/ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/entities/controls/CreateRectangleControl.java +++ b/ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/entities/controls/CreateRectangleControl.java @@ -27,7 +27,7 @@ This file is part of Universal Gcode Sender (UGS). import com.willwinder.ugs.nbp.designer.logic.Tool; import com.willwinder.universalgcodesender.uielements.helpers.ThemeColors; -import java.awt.*; +import java.awt.Graphics2D; import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; @@ -95,6 +95,9 @@ private void createEntity() { rectangle.setWidth(endX - startX); rectangle.setHeight(endY - startY); controller.addEntity(rectangle); + + controller.setTool(Tool.SELECT); + controller.getSelectionManager().addSelection(rectangle); } @Override diff --git a/ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/entities/controls/MoveControl.java b/ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/entities/controls/MoveControl.java index 3e276a13ce..a4c8bbadfb 100644 --- a/ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/entities/controls/MoveControl.java +++ b/ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/entities/controls/MoveControl.java @@ -31,7 +31,9 @@ This file is part of Universal Gcode Sender (UGS). import com.willwinder.ugs.nbp.designer.logic.Controller; import com.willwinder.ugs.nbp.designer.logic.ControllerFactory; -import java.awt.*; +import java.awt.Cursor; +import java.awt.Graphics2D; +import java.awt.Shape; import java.awt.geom.AffineTransform; import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; diff --git a/ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/entities/cuttable/Ellipse.java b/ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/entities/cuttable/Ellipse.java index 3b5d0e46e4..3ea4fcc35c 100644 --- a/ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/entities/cuttable/Ellipse.java +++ b/ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/entities/cuttable/Ellipse.java @@ -21,7 +21,6 @@ This file is part of Universal Gcode Sender (UGS). import com.willwinder.ugs.nbp.designer.entities.Entity; import java.awt.Shape; -import java.awt.geom.AffineTransform; import java.awt.geom.Ellipse2D; /**