diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/library/main.jar b/ diy-layout-creator --username bancika@gmail.com/DIYLC/library/main.jar index c66b9ed3..d035c3c6 100644 Binary files a/ diy-layout-creator --username bancika@gmail.com/DIYLC/library/main.jar and b/ diy-layout-creator --username bancika@gmail.com/DIYLC/library/main.jar differ diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/ComponentType.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/ComponentType.java index ddeb33ad..673897d4 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/ComponentType.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/ComponentType.java @@ -12,7 +12,6 @@ import org.diylc.core.IDIYComponent; * * @see IDIYComponent */ -@SuppressWarnings("rawtypes") public class ComponentType { private String name; @@ -25,12 +24,10 @@ public class ComponentType { private Class instanceClass; private double zOrder; private boolean stretchable; - private boolean sticky; public ComponentType(String name, String description, CreationMethod creationMethod, String category, String namePrefix, String author, Icon icon, - Class instanceClass, double zOrder, boolean stretchable, - boolean sticky) { + Class instanceClass, double zOrder, boolean stretchable) { super(); this.name = name; this.description = description; @@ -42,7 +39,6 @@ public class ComponentType { this.instanceClass = instanceClass; this.zOrder = zOrder; this.stretchable = stretchable; - this.sticky = sticky; } public String getName() { @@ -85,10 +81,6 @@ public class ComponentType { return stretchable; } - public boolean isSticky() { - return sticky; - } - @Override public String toString() { return name; diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractCurvedComponent.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractCurvedComponent.java index 4fca231f..b618db56 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractCurvedComponent.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractCurvedComponent.java @@ -11,6 +11,7 @@ import java.awt.geom.CubicCurve2D; import org.diylc.core.ComponentState; import org.diylc.core.IDrawingObserver; import org.diylc.core.Project; +import org.diylc.core.VisibilityPolicy; import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Size; import org.diylc.core.measures.SizeUnit; @@ -98,6 +99,16 @@ public abstract class AbstractCurvedComponent extends AbstractTransparentComp return controlPoints.length; } + @Override + public boolean isControlPointSticky(int index) { + return index == 0 || index == 3; + } + + @Override + public VisibilityPolicy getControlPointVisibilityPolicy(int index) { + return index == 0 || index == 3 ? VisibilityPolicy.ALWAYS : VisibilityPolicy.WHEN_SELECTED; + } + @Override public Point getControlPoint(int index) { return controlPoints[index]; diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractLeadedComponent.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractLeadedComponent.java index d80fcae4..02b27abe 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractLeadedComponent.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractLeadedComponent.java @@ -15,6 +15,7 @@ import org.diylc.common.Display; import org.diylc.core.ComponentState; import org.diylc.core.IDrawingObserver; import org.diylc.core.Project; +import org.diylc.core.VisibilityPolicy; import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Size; import org.diylc.core.measures.SizeUnit; @@ -167,9 +168,22 @@ public abstract class AbstractLeadedComponent extends AbstractTransparentComp return (Point) points[index]; } + @Override + public boolean isControlPointSticky(int index) { + return true; + } + + @Override + public VisibilityPolicy getControlPointVisibilityPolicy(int index) { + return VisibilityPolicy.ALWAYS; + } + @Override public void setControlPoint(Point point, int index) { - points[index].setLocation(point); + // Only accept the change if ending points are not the same. + if (!point.equals(points[1 - index])) { + points[index].setLocation(point); + } } @EditableProperty(name = "Color") diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/IDIYComponent.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/IDIYComponent.java index c6d76b90..b6671f9a 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/IDIYComponent.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/IDIYComponent.java @@ -86,6 +86,10 @@ public interface IDIYComponent extends Serializable { * @param index */ void setControlPoint(Point point, int index); + + boolean isControlPointSticky(int index); + + VisibilityPolicy getControlPointVisibilityPolicy(int index); /** * Draws the component onto the {@link Graphics2D}. diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/annotations/ComponentDescriptor.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/annotations/ComponentDescriptor.java index d03c1af6..c9bbaa21 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/annotations/ComponentDescriptor.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/annotations/ComponentDescriptor.java @@ -59,9 +59,4 @@ public @interface ComponentDescriptor { */ boolean stretchable() default true; - /** - * @return true, if control points may stick to other components' control - * points. - */ - boolean sticky() default false; } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ComponentProcessor.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ComponentProcessor.java index 3dd4d1d6..95fa95a2 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ComponentProcessor.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ComponentProcessor.java @@ -62,7 +62,6 @@ public class ComponentProcessor { Icon icon; double zOrder; boolean stretchable; - boolean sticky; if (clazz.isAnnotationPresent(ComponentDescriptor.class)) { ComponentDescriptor annotation = clazz.getAnnotation(ComponentDescriptor.class); name = annotation.name(); @@ -73,7 +72,6 @@ public class ComponentProcessor { author = annotation.author(); zOrder = annotation.zOrder(); stretchable = annotation.stretchable(); - sticky = annotation.sticky(); } else { name = clazz.getSimpleName(); description = ""; @@ -83,7 +81,6 @@ public class ComponentProcessor { author = "Unknown"; zOrder = IDIYComponent.COMPONENT; stretchable = true; - sticky = false; } icon = null; // Draw component icon. @@ -92,7 +89,9 @@ public class ComponentProcessor { Image image = new BufferedImage(Presenter.ICON_SIZE, Presenter.ICON_SIZE, java.awt.image.BufferedImage.TYPE_INT_ARGB); Graphics2D g2d = (Graphics2D) image.getGraphics(); - g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + g2d + .setRenderingHint(RenderingHints.KEY_ANTIALIASING, + RenderingHints.VALUE_ANTIALIAS_ON); componentInstance.drawIcon(g2d, Presenter.ICON_SIZE, Presenter.ICON_SIZE); icon = new ImageIcon(image); } catch (InstantiationException e) { @@ -101,7 +100,7 @@ public class ComponentProcessor { e.printStackTrace(); } ComponentType componentType = new ComponentType(name, description, creationMethod, - category, namePrefix, author, icon, clazz, zOrder, stretchable, sticky); + category, namePrefix, author, icon, clazz, zOrder, stretchable); return componentType; } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/Presenter.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/Presenter.java index bd5bdd77..bc0eb03c 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/Presenter.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/Presenter.java @@ -306,14 +306,15 @@ public class Presenter implements IPlugInPort { if (currentProject == null) { return; } - Set> drawControlPoints = new HashSet>(); + Set> groupedComponents = new HashSet>(); for (IDIYComponent component : currentProject.getComponents()) { - if (shouldShowControlPointsFor(component)) { - drawControlPoints.add(component); + // Only try to draw control points of ungrouped + if (findAllGroupedComponents(component).size() > 1) { + groupedComponents.add(component); } } projectPainter.drawProject(g2d, currentProject, drawOptions, filter, selectionRect, - selectedComponents, drawControlPoints, Arrays.asList(controlPointSlot, + selectedComponents, groupedComponents, Arrays.asList(controlPointSlot, potentialControlPoint), dragInProgress, zoomLevel); } @@ -569,13 +570,14 @@ public class Presenter implements IPlugInPort { for (IDIYComponent component : currentProject.getComponents()) { // Do not process a component if it's already in the map. ComponentType componentType = componentTypeMap.get(component.getClass().getName()); - if (!controlPointMap.containsKey(component) && componentType.isSticky()) { - // Check if there's a control point in the current selection - // that matches with one of its control points. - for (int i = 0; i < component.getControlPointCount(); i++) { - if (controlPointMap.containsKey(component)) { - break; - } + + // Check if there's a control point in the current selection + // that matches with one of its control points. + for (int i = 0; i < component.getControlPointCount(); i++) { + if (controlPointMap.containsKey(component)) { + break; + } + if (!controlPointMap.containsKey(component) && component.isControlPointSticky(i)) { boolean componentMatches = false; for (Map.Entry, Set> entry : controlPointMap .entrySet()) { @@ -1154,11 +1156,6 @@ public class Presenter implements IPlugInPort { * component. */ private boolean shouldShowControlPointsFor(IDIYComponent component) { - ComponentType componentType = componentTypeMap.get(component.getClass().getName()); - // Do not show control points for non-stretchable components. - if (!componentType.isStretchable()) { - return false; - } if (findAllGroupedComponents(component).size() > 1) { return false; } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ProjectPainter.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ProjectPainter.java index e2623d70..64aa00a6 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ProjectPainter.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ProjectPainter.java @@ -22,6 +22,7 @@ import org.diylc.common.IComponentFiler; import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; import org.diylc.core.Project; +import org.diylc.core.VisibilityPolicy; import org.diylc.utils.Constants; /** @@ -50,7 +51,7 @@ public class ProjectPainter { public void drawProject(Graphics2D g2d, Project project, Set drawOptions, IComponentFiler filter, Rectangle selectionRect, ComponentSelection selectedComponents, - Set> drawControlPoints, List controlPointSlot, + Set> groupedComponents, List controlPointSlot, boolean dragInProgress, double zoomLevel) { if (project == null) { return; @@ -137,10 +138,17 @@ public class ProjectPainter { if (drawOptions.contains(DrawOption.CONTROL_POINTS)) { // Draw unselected points first to make sure they are below. for (IDIYComponent component : project.getComponents()) { - if (drawControlPoints.contains(component) - && !selectedComponents.contains(component)) { - g2dWrapper.setColor(Constants.CONTROL_POINT_COLOR); - for (int i = 0; i < component.getControlPointCount(); i++) { + for (int i = 0; i < component.getControlPointCount(); i++) { + VisibilityPolicy visibilityPolicy = component + .getControlPointVisibilityPolicy(i); + if ((groupedComponents.contains(component) + && (visibilityPolicy == VisibilityPolicy.ALWAYS || (selectedComponents + .contains(component) && visibilityPolicy == VisibilityPolicy.WHEN_SELECTED)) || (!groupedComponents + .contains(component) + && !selectedComponents.contains(component) && component + .getControlPointVisibilityPolicy(i) == VisibilityPolicy.ALWAYS))) { + g2dWrapper.setColor(Constants.CONTROL_POINT_COLOR); + Point controlPoint = component.getControlPoint(i); int pointSize = CONTROL_POINT_SIZE - 2; g2dWrapper.fillOval(controlPoint.x - pointSize / 2, controlPoint.y @@ -150,9 +158,12 @@ public class ProjectPainter { } // Then draw the selected ones. for (IDIYComponent component : selectedComponents) { - if (drawControlPoints.contains(component)) { - g2dWrapper.setColor(Constants.SELECTED_CONTROL_POINT_COLOR); - for (int i = 0; i < component.getControlPointCount(); i++) { + for (int i = 0; i < component.getControlPointCount(); i++) { + if (!groupedComponents.contains(component) + && (component.getControlPointVisibilityPolicy(i) == VisibilityPolicy.WHEN_SELECTED || component + .getControlPointVisibilityPolicy(i) == VisibilityPolicy.ALWAYS)) { + g2dWrapper.setColor(Constants.SELECTED_CONTROL_POINT_COLOR); + Point controlPoint = component.getControlPoint(i); int pointSize = CONTROL_POINT_SIZE; g2dWrapper.fillOval(controlPoint.x - pointSize / 2, controlPoint.y diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/test/org/diylc/components/MockDIYComponent.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/test/org/diylc/components/MockDIYComponent.java index 3c5cd5fb..72f10edf 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/test/org/diylc/components/MockDIYComponent.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/test/org/diylc/components/MockDIYComponent.java @@ -8,6 +8,7 @@ import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; import org.diylc.core.IDrawingObserver; import org.diylc.core.Project; +import org.diylc.core.VisibilityPolicy; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Capacitance; @@ -59,6 +60,16 @@ public class MockDIYComponent implements IDIYComponent { return 1; } + @Override + public boolean isControlPointSticky(int index) { + return false; + } + + @Override + public VisibilityPolicy getControlPointVisibilityPolicy(int index) { + return VisibilityPolicy.WHEN_SELECTED; + } + @Override public Point getControlPoint(int index) { return leftTopCorner; diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/AbstractBoard.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/AbstractBoard.java index 05a2a88b..51706ef5 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/AbstractBoard.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/AbstractBoard.java @@ -10,6 +10,7 @@ import org.diylc.components.AbstractTransparentComponent; import org.diylc.core.ComponentState; import org.diylc.core.IDrawingObserver; import org.diylc.core.Project; +import org.diylc.core.VisibilityPolicy; import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Size; import org.diylc.core.measures.SizeUnit; @@ -84,6 +85,16 @@ public abstract class AbstractBoard extends AbstractTransparentComponent return controlPoints[index]; } + @Override + public boolean isControlPointSticky(int index) { + return false; + } + + @Override + public VisibilityPolicy getControlPointVisibilityPolicy(int index) { + return VisibilityPolicy.WHEN_SELECTED; + } + @Override public void setControlPoint(Point point, int index) { controlPoints[index].setLocation(point); diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/CopperTrace.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/CopperTrace.java index acc7c371..2d53b1b4 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/CopperTrace.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/CopperTrace.java @@ -14,7 +14,7 @@ import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Size; import org.diylc.core.measures.SizeUnit; -@ComponentDescriptor(name = "Copper Trace", author = "Branislav Stojkovic", category = "Connectivity", creationMethod = CreationMethod.POINT_BY_POINT, instanceNamePrefix = "Trace", description = "", zOrder = IDIYComponent.ABOVE_BOARD, sticky = true) +@ComponentDescriptor(name = "Copper Trace", author = "Branislav Stojkovic", category = "Connectivity", creationMethod = CreationMethod.POINT_BY_POINT, instanceNamePrefix = "Trace", description = "", zOrder = IDIYComponent.ABOVE_BOARD) public class CopperTrace extends AbstractLeadedComponent { private static final long serialVersionUID = 1L; diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/CurvedTrace.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/CurvedTrace.java index 96d548d4..3ec83251 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/CurvedTrace.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/CurvedTrace.java @@ -13,7 +13,7 @@ import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Size; import org.diylc.core.measures.SizeUnit; -@ComponentDescriptor(name = "Curved Trace", author = "Branislav Stojkovic", category = "Connectivity", instanceNamePrefix = "Trace", description = "Curved copper trace with two control points", zOrder = IDIYComponent.ABOVE_BOARD, sticky = true) +@ComponentDescriptor(name = "Curved Trace", author = "Branislav Stojkovic", category = "Connectivity", instanceNamePrefix = "Trace", description = "Curved copper trace with two control points", zOrder = IDIYComponent.ABOVE_BOARD) public class CurvedTrace extends AbstractCurvedComponent { private static final long serialVersionUID = 1L; diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/HookupWire.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/HookupWire.java index 56f2a952..f2f17306 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/HookupWire.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/HookupWire.java @@ -12,7 +12,7 @@ import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; import org.diylc.utils.Constants; -@ComponentDescriptor(name = "Hookup Wire", author = "Branislav Stojkovic", category = "Connectivity", instanceNamePrefix = "W", description = "Flexible wire with two control points", zOrder = IDIYComponent.ABOVE_COMPONENT, sticky = true) +@ComponentDescriptor(name = "Hookup Wire", author = "Branislav Stojkovic", category = "Connectivity", instanceNamePrefix = "W", description = "Flexible wire with two control points", zOrder = IDIYComponent.ABOVE_COMPONENT) public class HookupWire extends AbstractCurvedComponent { private static final long serialVersionUID = 1L; diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/Jumper.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/Jumper.java index d792478f..28db2434 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/Jumper.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/Jumper.java @@ -13,7 +13,7 @@ import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Size; -@ComponentDescriptor(name = "Jumper", author = "Branislav Stojkovic", category = "Connectivity", creationMethod = CreationMethod.POINT_BY_POINT, instanceNamePrefix = "J", description = "", zOrder = IDIYComponent.ABOVE_BOARD, sticky = true) +@ComponentDescriptor(name = "Jumper", author = "Branislav Stojkovic", category = "Connectivity", creationMethod = CreationMethod.POINT_BY_POINT, instanceNamePrefix = "J", description = "", zOrder = IDIYComponent.ABOVE_BOARD) public class Jumper extends AbstractLeadedComponent { private static final long serialVersionUID = 1L; diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/SolderPad.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/SolderPad.java index 66b8ad22..5eea2c65 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/SolderPad.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/SolderPad.java @@ -9,13 +9,14 @@ import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; import org.diylc.core.IDrawingObserver; import org.diylc.core.Project; +import org.diylc.core.VisibilityPolicy; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Size; import org.diylc.core.measures.SizeUnit; import org.diylc.utils.Constants; -@ComponentDescriptor(name = "Solder Pad", category = "Connectivity", author = "Branislav Stojkovic", description = "test", instanceNamePrefix = "Pad", stretchable = false, zOrder = IDIYComponent.ABOVE_BOARD + 0.1, sticky = true) +@ComponentDescriptor(name = "Solder Pad", category = "Connectivity", author = "Branislav Stojkovic", description = "test", instanceNamePrefix = "Pad", stretchable = false, zOrder = IDIYComponent.ABOVE_BOARD + 0.1) public class SolderPad extends AbstractComponent { private static final long serialVersionUID = 1L; @@ -72,6 +73,16 @@ public class SolderPad extends AbstractComponent { return 1; } + @Override + public boolean isControlPointSticky(int index) { + return true; + } + + @Override + public VisibilityPolicy getControlPointVisibilityPolicy(int index) { + return VisibilityPolicy.NEVER; + } + @Override public Point getControlPoint(int index) { return point; diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/TraceCut.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/TraceCut.java index 595e1987..694d3dc2 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/TraceCut.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/TraceCut.java @@ -2,12 +2,14 @@ package org.diylc.components.connectivity; import java.awt.Color; import java.awt.Graphics2D; +import java.awt.Point; -import org.diylc.components.AbstractSinglePointComponent; +import org.diylc.components.AbstractComponent; import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; import org.diylc.core.IDrawingObserver; import org.diylc.core.Project; +import org.diylc.core.VisibilityPolicy; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Size; @@ -15,7 +17,7 @@ import org.diylc.core.measures.SizeUnit; import org.diylc.utils.Constants; @ComponentDescriptor(name = "Trace Cut", category = "Connectivity", author = "Branislav Stojkovic", description = "test", instanceNamePrefix = "Cut", stretchable = false, zOrder = IDIYComponent.ABOVE_BOARD) -public class TraceCut extends AbstractSinglePointComponent { +public class TraceCut extends AbstractComponent { private static final long serialVersionUID = 1L; @@ -27,6 +29,8 @@ public class TraceCut extends AbstractSinglePointComponent { private Size size = SIZE; private Color fillColor = FILL_COLOR; private Color borderColor = BORDER_COLOR; + + protected Point point = new Point(0, 0); @Override public void draw(Graphics2D g2d, ComponentState componentState, Project project, @@ -57,6 +61,43 @@ public class TraceCut extends AbstractSinglePointComponent { dotDiameter); } + @Override + public int getControlPointCount() { + return 1; + } + + @Override + public Point getControlPoint(int index) { + return point; + } + + @Override + public boolean isControlPointSticky(int index) { + return false; + } + + @Override + public VisibilityPolicy getControlPointVisibilityPolicy(int index) { + return VisibilityPolicy.NEVER; + } + + + @Override + public void setControlPoint(Point point, int index) { + this.point.setLocation(point); + } + + @Deprecated + @Override + public Void getValue() { + return null; + } + + @Deprecated + @Override + public void setValue(Void value) { + } + @EditableProperty public Size getSize() { return size; diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/electromechanical/MiniToggleSwitch.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/electromechanical/MiniToggleSwitch.java index aff26f03..5188fdf6 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/electromechanical/MiniToggleSwitch.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/electromechanical/MiniToggleSwitch.java @@ -14,12 +14,13 @@ import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; import org.diylc.core.IDrawingObserver; import org.diylc.core.Project; +import org.diylc.core.VisibilityPolicy; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Size; import org.diylc.core.measures.SizeUnit; -@ComponentDescriptor(name = "Mini Toggle Switch", category = "Electromechanical", author = "Branislav Stojkovic", description = "", stretchable = false, zOrder = IDIYComponent.COMPONENT, instanceNamePrefix = "SW", sticky = true) +@ComponentDescriptor(name = "Mini Toggle Switch", category = "Electromechanical", author = "Branislav Stojkovic", description = "", stretchable = false, zOrder = IDIYComponent.COMPONENT, instanceNamePrefix = "SW") public class MiniToggleSwitch extends AbstractTransparentComponent { private static final long serialVersionUID = 1L; @@ -115,6 +116,16 @@ public class MiniToggleSwitch extends AbstractTransparentComponent { public Point getControlPoint(int index) { return point; } + + @Override + public boolean isControlPointSticky(int index) { + return false; + } + + @Override + public VisibilityPolicy getControlPointVisibilityPolicy(int index) { + return VisibilityPolicy.NEVER; + } @Override public void setControlPoint(Point point, int index) { diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/ProjectInformation.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/ProjectInformation.java index 4fe87e63..7be9270e 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/ProjectInformation.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/ProjectInformation.java @@ -12,6 +12,7 @@ import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; import org.diylc.core.IDrawingObserver; import org.diylc.core.Project; +import org.diylc.core.VisibilityPolicy; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.measures.Size; import org.diylc.core.measures.SizeUnit; @@ -81,6 +82,16 @@ public class ProjectInformation extends AbstractComponent { return point; } + @Override + public boolean isControlPointSticky(int index) { + return false; + } + + @Override + public VisibilityPolicy getControlPointVisibilityPolicy(int index) { + return VisibilityPolicy.NEVER; + } + @Override public void setControlPoint(Point point, int index) { this.point.setLocation(point); diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/AxialFilmCapacitor.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/AxialFilmCapacitor.java index 2484ae04..93431dba 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/AxialFilmCapacitor.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/AxialFilmCapacitor.java @@ -15,7 +15,7 @@ import org.diylc.core.measures.CapacitanceUnit; import org.diylc.core.measures.Size; import org.diylc.core.measures.SizeUnit; -@ComponentDescriptor(name = "Axial Film Capacitor", author = "Branislav Stojkovic", category = "Passive", creationMethod = CreationMethod.POINT_BY_POINT, instanceNamePrefix = "C", description = "test", zOrder = IDIYComponent.COMPONENT, sticky = true) +@ComponentDescriptor(name = "Axial Film Capacitor", author = "Branislav Stojkovic", category = "Passive", creationMethod = CreationMethod.POINT_BY_POINT, instanceNamePrefix = "C", description = "test", zOrder = IDIYComponent.COMPONENT) public class AxialFilmCapacitor extends AbstractLeadedComponent { private static final long serialVersionUID = 1L; diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/RadialCeramicDiskCapacitor.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/RadialCeramicDiskCapacitor.java index 6d07405c..7257c1f2 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/RadialCeramicDiskCapacitor.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/RadialCeramicDiskCapacitor.java @@ -15,7 +15,7 @@ import org.diylc.core.measures.CapacitanceUnit; import org.diylc.core.measures.Size; import org.diylc.core.measures.SizeUnit; -@ComponentDescriptor(name = "Ceramic Capacitor", author = "Branislav Stojkovic", category = "Passive", creationMethod = CreationMethod.POINT_BY_POINT, instanceNamePrefix = "C", description = "test", zOrder = IDIYComponent.COMPONENT, sticky = true) +@ComponentDescriptor(name = "Ceramic Capacitor", author = "Branislav Stojkovic", category = "Passive", creationMethod = CreationMethod.POINT_BY_POINT, instanceNamePrefix = "C", description = "test", zOrder = IDIYComponent.COMPONENT) public class RadialCeramicDiskCapacitor extends AbstractLeadedComponent { private static final long serialVersionUID = 1L; diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/RadialFilmCapacitor.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/RadialFilmCapacitor.java index 373bb68d..e015e8d3 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/RadialFilmCapacitor.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/RadialFilmCapacitor.java @@ -15,7 +15,7 @@ import org.diylc.core.measures.CapacitanceUnit; import org.diylc.core.measures.Size; import org.diylc.core.measures.SizeUnit; -@ComponentDescriptor(name = "Radial Film Capacitor", author = "Branislav Stojkovic", category = "Passive", creationMethod = CreationMethod.POINT_BY_POINT, instanceNamePrefix = "C", description = "test", zOrder = IDIYComponent.COMPONENT, sticky = true) +@ComponentDescriptor(name = "Radial Film Capacitor", author = "Branislav Stojkovic", category = "Passive", creationMethod = CreationMethod.POINT_BY_POINT, instanceNamePrefix = "C", description = "test", zOrder = IDIYComponent.COMPONENT) public class RadialFilmCapacitor extends AbstractLeadedComponent { private static final long serialVersionUID = 1L; diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/Resistor.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/Resistor.java index 340db6f2..d026ea9c 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/Resistor.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/Resistor.java @@ -15,7 +15,7 @@ import org.diylc.core.measures.ResistanceUnit; import org.diylc.core.measures.Size; import org.diylc.core.measures.SizeUnit; -@ComponentDescriptor(name = "Resistor", author = "Branislav Stojkovic", category = "Passive", creationMethod = CreationMethod.POINT_BY_POINT, instanceNamePrefix = "R", description = "test", zOrder = IDIYComponent.COMPONENT, sticky = true) +@ComponentDescriptor(name = "Resistor", author = "Branislav Stojkovic", category = "Passive", creationMethod = CreationMethod.POINT_BY_POINT, instanceNamePrefix = "R", description = "test", zOrder = IDIYComponent.COMPONENT) public class Resistor extends AbstractLeadedComponent { private static final long serialVersionUID = 1L; diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DIL_IC.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DIL_IC.java index edb53cf9..51809a82 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DIL_IC.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DIL_IC.java @@ -18,13 +18,14 @@ import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; import org.diylc.core.IDrawingObserver; import org.diylc.core.Project; +import org.diylc.core.VisibilityPolicy; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Size; import org.diylc.core.measures.SizeUnit; import org.diylc.utils.Constants; -@ComponentDescriptor(name = "DIL IC", author = "Branislav Stojkovic", category = "Semiconductors", instanceNamePrefix = "IC", description = "test", stretchable = false, zOrder = IDIYComponent.COMPONENT, sticky = true) +@ComponentDescriptor(name = "DIL IC", author = "Branislav Stojkovic", category = "Semiconductors", instanceNamePrefix = "IC", description = "test", stretchable = false, zOrder = IDIYComponent.COMPONENT) public class DIL_IC extends AbstractTransparentComponent { private static final long serialVersionUID = 1L; @@ -124,6 +125,16 @@ public class DIL_IC extends AbstractTransparentComponent { public Point getControlPoint(int index) { return controlPoints[index]; } + + @Override + public boolean isControlPointSticky(int index) { + return true; + } + + @Override + public VisibilityPolicy getControlPointVisibilityPolicy(int index) { + return VisibilityPolicy.NEVER; + } @Override public void setControlPoint(Point point, int index) {