diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml b/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml index 320bcc98..7c41e4a4 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml @@ -1,2 +1,6 @@ + + lastPath + C:\Documents and Settings\Branislav Stojkovic\Desktop + \ No newline at end of file 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 c39025ef..5f49ce99 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 be697db3..ddeb33ad 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 @@ -2,6 +2,7 @@ package org.diylc.common; import javax.swing.Icon; +import org.diylc.core.CreationMethod; import org.diylc.core.IDIYComponent; /** @@ -11,27 +12,29 @@ import org.diylc.core.IDIYComponent; * * @see IDIYComponent */ +@SuppressWarnings("rawtypes") public class ComponentType { private String name; private String description; + private CreationMethod creationMethod; private String category; private String namePrefix; private String author; private Icon icon; - @SuppressWarnings("unchecked") private Class instanceClass; private double zOrder; private boolean stretchable; private boolean sticky; - @SuppressWarnings("unchecked") - public ComponentType(String name, String description, String category, String namePrefix, - String author, Icon icon, Class instanceClass, - double zOrder, boolean stretchable, 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) { super(); this.name = name; this.description = description; + this.creationMethod = creationMethod; this.category = category; this.namePrefix = namePrefix; this.author = author; @@ -50,6 +53,10 @@ public class ComponentType { return description; } + public CreationMethod getCreationMethod() { + return creationMethod; + } + public String getCategory() { return category; } @@ -66,7 +73,6 @@ public class ComponentType { return icon; } - @SuppressWarnings("unchecked") public Class getInstanceClass() { return instanceClass; } @@ -78,7 +84,7 @@ public class ComponentType { public boolean isStretchable() { return stretchable; } - + public boolean isSticky() { return sticky; } 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 19858af2..213e79dc 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 @@ -31,10 +31,10 @@ public abstract class AbstractLeadedComponent extends AbstractTransparentComp private static final long serialVersionUID = 1L; - public static Color LEAD_COLOR = Color.black; + public static Color LEAD_COLOR = Color.decode("#65909A"); public static Color LABEL_COLOR = Color.black; public static Color LABEL_COLOR_SELECTED = Color.red; - public static Size LEAD_THICKNESS = new Size(0.3d, SizeUnit.mm); + public static Size LEAD_THICKNESS = new Size(0.8d, SizeUnit.mm); public static Size DEFAULT_SIZE = new Size(1d, SizeUnit.in); protected Size width; @@ -91,12 +91,15 @@ public abstract class AbstractLeadedComponent extends AbstractTransparentComp || componentState == ComponentState.DRAGGING ? SELECTION_COLOR : borderColor); g2d.draw(shape); // Draw leads. - g2d.setStroke(new BasicStroke(getLeadThickness().convertToPixels())); + int leadThickness = getLeadThickness().convertToPixels(); + g2d.setStroke(new BasicStroke(leadThickness)); g2d.setColor(getLeadColor(componentState)); g2d.drawLine((int) (shapeRect.width - distance) / 2, (int) shapeRect.height / 2, - (int) ((shapeRect.width - distance) / 2 + leadLenght), (int) shapeRect.height / 2); + (int) ((shapeRect.width - distance) / 2 + leadLenght) - leadThickness / 2, + (int) shapeRect.height / 2); g2d.drawLine((int) (shapeRect.width + distance) / 2, (int) shapeRect.height / 2, - (int) ((shapeRect.width + distance) / 2 - leadLenght), (int) shapeRect.height / 2); + (int) ((shapeRect.width + distance) / 2 - leadLenght) + leadThickness / 2, + (int) shapeRect.height / 2); // Do not track the label because that area was already covered. drawingObserver.stopTracking(); // Draw label. @@ -204,12 +207,12 @@ public abstract class AbstractLeadedComponent extends AbstractTransparentComp public void setHeight(Size height) { this.height = height; } - + @EditableProperty public Display getDisplay() { return display; } - + public void setDisplay(Display display) { this.display = display; } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/CreationMethod.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/CreationMethod.java new file mode 100644 index 00000000..e8c44864 --- /dev/null +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/CreationMethod.java @@ -0,0 +1,6 @@ +package org.diylc.core; + +public enum CreationMethod { + + SINGLE_CLICK, POINT_BY_POINT; +} 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 d5e9b44b..d03c1af6 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 @@ -3,6 +3,7 @@ package org.diylc.core.annotations; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; +import org.diylc.core.CreationMethod; import org.diylc.core.IDIYComponent; /** @@ -24,6 +25,13 @@ public @interface ComponentDescriptor { */ String description(); + /** + * @return method that should be used to create a component. If + * CreationMethod.POINT_BY_POINT is used, user will + * have to select ending points before the component is created. + */ + CreationMethod creationMethod() default CreationMethod.SINGLE_CLICK; + /** * @return component category, e.g. "Passive", "Semiconductors", etc. */ 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 76b90772..3dd4d1d6 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 @@ -17,6 +17,7 @@ import javax.swing.ImageIcon; import org.apache.log4j.Logger; import org.diylc.common.ComponentType; import org.diylc.common.PropertyWrapper; +import org.diylc.core.CreationMethod; import org.diylc.core.IDIYComponent; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; @@ -54,6 +55,7 @@ public class ComponentProcessor { public ComponentType createComponentTypeFrom(Class> clazz) { String name; String description; + CreationMethod creationMethod; String category; String namePrefix; String author; @@ -65,6 +67,7 @@ public class ComponentProcessor { ComponentDescriptor annotation = clazz.getAnnotation(ComponentDescriptor.class); name = annotation.name(); description = annotation.description(); + creationMethod = annotation.creationMethod(); category = annotation.category(); namePrefix = annotation.instanceNamePrefix(); author = annotation.author(); @@ -74,6 +77,7 @@ public class ComponentProcessor { } else { name = clazz.getSimpleName(); description = ""; + creationMethod = CreationMethod.SINGLE_CLICK; category = "Uncategorized"; namePrefix = "Unknown"; author = "Unknown"; @@ -88,9 +92,7 @@ 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) { @@ -98,8 +100,8 @@ public class ComponentProcessor { } catch (IllegalAccessException e) { e.printStackTrace(); } - ComponentType componentType = new ComponentType(name, description, category, namePrefix, - author, icon, clazz, zOrder, stretchable, sticky); + ComponentType componentType = new ComponentType(name, description, creationMethod, + category, namePrefix, author, icon, clazz, zOrder, stretchable, sticky); return componentType; } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/FileManager.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/FileManager.java new file mode 100644 index 00000000..e69de29b 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 daf4acd6..ff897b2b 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 @@ -14,6 +14,7 @@ import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Modifier; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashMap; @@ -38,6 +39,7 @@ import org.diylc.common.IComponentFiler; import org.diylc.common.IPlugIn; import org.diylc.common.IPlugInPort; import org.diylc.common.PropertyWrapper; +import org.diylc.core.CreationMethod; import org.diylc.core.IDIYComponent; import org.diylc.core.Project; import org.diylc.core.measures.SizeUnit; @@ -103,7 +105,10 @@ public class Presenter implements IPlugInPort { private Point previousDragPoint = null; private Project preDragProject = null; + // Component creation private ComponentType componentSlot; + private Point controlPointSlot; + private Point potentialControlPoint; private boolean snapToGrid = true; @@ -307,8 +312,9 @@ public class Presenter implements IPlugInPort { drawControlPoints.add(component); } } - projectPainter.draw(g2d, currentProject, drawOptions, filter, selectionRect, - selectedComponents, drawControlPoints, dragInProgress, zoomLevel); + projectPainter.drawProject(g2d, currentProject, drawOptions, filter, selectionRect, + selectedComponents, drawControlPoints, Arrays.asList(controlPointSlot, + potentialControlPoint), dragInProgress, zoomLevel); } @Override @@ -347,13 +353,34 @@ public class Presenter implements IPlugInPort { .format("mouseClicked(%s, %s, %s, %s)", point, ctrlDown, shiftDown, altDown)); Point scaledPoint = scalePoint(point); if (componentSlot != null) { - try { - instantiateComponent(componentSlot, scaledPoint); - } catch (Exception e) { - LOG.error("Error instatiating component of type: " - + componentSlot.getInstanceClass().getName(), e); + switch (componentSlot.getCreationMethod()) { + case SINGLE_CLICK: + try { + instantiateComponent(componentSlot, scaledPoint); + } catch (Exception e) { + LOG.error("Error instatiating component of type: " + + componentSlot.getInstanceClass().getName(), e); + } + setNewComponentSlot(null); + break; + case POINT_BY_POINT: + if (controlPointSlot != null) { + try { + instantiateComponent(componentSlot, controlPointSlot, scaledPoint); + } catch (Exception e) { + LOG.error("Error instatiating component of type: " + + componentSlot.getInstanceClass().getName(), e); + } + setNewComponentSlot(null); + } else { + controlPointSlot = scaledPoint; + snapPointToGrid(controlPointSlot); + messageDispatcher.dispatchMessage(EventType.REPAINT); + } + break; + default: + LOG.error("Unknown creation method: " + componentSlot.getCreationMethod()); } - setNewComponentSlot(null); } else { List> components = findComponentsAt(scaledPoint); // If there's nothing under mouse cursor deselect all. @@ -388,38 +415,46 @@ public class Presenter implements IPlugInPort { public void mouseMoved(Point point, boolean ctrlDown, boolean shiftDown, boolean altDown) { Map, Set> components = new HashMap, Set>(); Point scaledPoint = scalePoint(point); - // Go backwards so we take the highest z-order components first. - for (int i = currentProject.getComponents().size() - 1; i >= 0; i--) { - IDIYComponent component = currentProject.getComponents().get(i); - ComponentType componentType = componentTypeMap.get(component.getClass().getName()); - for (int pointIndex = 0; pointIndex < component.getControlPointCount(); pointIndex++) { - Point controlPoint = component.getControlPoint(pointIndex); - // Only consider selected components that are not grouped. - if (selectedComponents.contains(component) && componentType.isStretchable() - && findAllGroupedComponents(component).size() == 1) { - try { - if (scaledPoint.distance(controlPoint) < ProjectPainter.CONTROL_POINT_SIZE) { - Set indices = new HashSet(); - if (componentType.isStretchable()) { - indices.add(pointIndex); - } else { - for (int j = 0; j < component.getControlPointCount(); j++) { - indices.add(j); + if (componentSlot != null + && componentSlot.getCreationMethod() == CreationMethod.POINT_BY_POINT) { + potentialControlPoint = scaledPoint; + snapPointToGrid(potentialControlPoint); + messageDispatcher.dispatchMessage(EventType.REPAINT); + } else { + // Go backwards so we take the highest z-order components first. + for (int i = currentProject.getComponents().size() - 1; i >= 0; i--) { + IDIYComponent component = currentProject.getComponents().get(i); + ComponentType componentType = componentTypeMap.get(component.getClass().getName()); + for (int pointIndex = 0; pointIndex < component.getControlPointCount(); pointIndex++) { + Point controlPoint = component.getControlPoint(pointIndex); + // Only consider selected components that are not grouped. + if (selectedComponents.contains(component) && componentType.isStretchable() + && findAllGroupedComponents(component).size() == 1) { + try { + if (scaledPoint.distance(controlPoint) < ProjectPainter.CONTROL_POINT_SIZE) { + Set indices = new HashSet(); + if (componentType.isStretchable()) { + indices.add(pointIndex); + } else { + for (int j = 0; j < component.getControlPointCount(); j++) { + indices.add(j); + } } + components.put(component, indices); + break; } - components.put(component, indices); - break; + } catch (Exception e) { + LOG.warn("Error reading control point for component of type: " + + component.getClass().getName()); } - } catch (Exception e) { - LOG.warn("Error reading control point for component of type: " - + component.getClass().getName()); } } + // // If CTRL is pressed, we only care about the top most + // component. + // if (altDown && components.size() > 0) { + // break; + // } } - // // If CTRL is pressed, we only care about the top most component. - // if (altDown && components.size() > 0) { - // break; - // } } messageDispatcher.dispatchMessage(EventType.MOUSE_MOVED, scaledPoint); @@ -637,6 +672,16 @@ public class Presenter implements IPlugInPort { return (Math.round(1f * x / grid) * grid); } + private void snapPointToGrid(Point point) { + int x = point.x; + int y = point.y; + if (snapToGrid) { + x = roundToGrid(x); + y = roundToGrid(y); + } + point.setLocation(x, y); + } + @Override public void dragEnded(Point point) { LOG.debug(String.format("dragEnded(%s)", point)); @@ -719,7 +764,6 @@ public class Presenter implements IPlugInPort { messageDispatcher.dispatchMessage(EventType.REPAINT); } - @SuppressWarnings("unchecked") @Override public void setSelectionDefaultPropertyValue(String propertyName, Object value) { LOG.info(String.format("setSelectionDefaultPropertyValue(%s, %s)", propertyName, value)); @@ -887,8 +931,8 @@ public class Presenter implements IPlugInPort { } } - @SuppressWarnings("unchecked") - private void instantiateComponent(ComponentType componentType, Point point) throws Exception { + private void instantiateComponent(ComponentType componentType, Point... points) + throws Exception { LOG.info("Instatiating component of type: " + componentType.getInstanceClass().getName()); Project oldProject = cloner.deepClone(currentProject); @@ -919,17 +963,23 @@ public class Presenter implements IPlugInPort { selectedComponents.add(component); // Translate them to the desired location. - if (point != null) { - for (int j = 0; j < component.getControlPointCount(); j++) { - Point controlPoint = new Point(component.getControlPoint(j)); - int x = controlPoint.x + point.x; - int y = controlPoint.y + point.y; - if (snapToGrid) { - x = roundToGrid(x); - y = roundToGrid(y); + if (points != null) { + switch (componentType.getCreationMethod()) { + case SINGLE_CLICK: + for (int j = 0; j < component.getControlPointCount(); j++) { + Point controlPoint = new Point(component.getControlPoint(j)); + controlPoint.translate(points[0].x, points[0].y); + snapPointToGrid(controlPoint); + component.setControlPoint(controlPoint, j); } - controlPoint.setLocation(x, y); - component.setControlPoint(controlPoint, j); + break; + case POINT_BY_POINT: + for (int j = 0; j < points.length; j++) { + Point point = points[j]; + snapPointToGrid(point); + component.setControlPoint(point, j); + } + break; } } @@ -1064,6 +1114,8 @@ public class Presenter implements IPlugInPort { LOG.info(String.format("setNewComponentSlot(%s)", componentType == null ? null : componentType.getName())); this.componentSlot = componentType; + this.controlPointSlot = null; + this.potentialControlPoint = null; selectedComponents.clear(); fireSelectionChanged(); // messageDispatcher.dispatchMessage(EventType.SELECTION_CHANGED, @@ -1098,6 +1150,6 @@ public class Presenter implements IPlugInPort { if (findAllGroupedComponents(component).size() > 1) { return false; } - return selectedComponents.contains(component); + return true; } } 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 172826bb..06625a02 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 @@ -16,7 +16,6 @@ import java.util.List; import java.util.Map; import java.util.Set; -import org.apache.log4j.Logger; import org.diylc.common.ComponentSelection; import org.diylc.common.DrawOption; import org.diylc.common.IComponentFiler; @@ -33,9 +32,7 @@ import org.diylc.utils.Constants; */ public class ProjectPainter { - private static final Logger LOG = Logger.getLogger(ProjectPainter.class); - - public static final int CONTROL_POINT_SIZE = 5; + public static final int CONTROL_POINT_SIZE = 7; public static boolean ENABLE_ANTIALIASING = true; public static boolean DEBUG_COMPONENT_AREAS = false; @@ -51,9 +48,10 @@ public class ProjectPainter { lastDrawnStateMap = new HashMap, ComponentState>(); } - public void draw(Graphics2D g2d, Project project, Set drawOptions, + public void drawProject(Graphics2D g2d, Project project, Set drawOptions, IComponentFiler filter, Rectangle selectionRect, ComponentSelection selectedComponents, - Set> drawControlPoints, boolean dragInProgress, double zoomLevel) { + Set> drawControlPoints, List controlPointSlot, + boolean dragInProgress, double zoomLevel) { if (project == null) { return; } @@ -93,57 +91,64 @@ public class ProjectPainter { // g2dWrapper.resetTx(); - List> components = project.getComponents(); // componentAreaMap.clear(); - if (components != null) { - for (IDIYComponent component : components) { - // Do not draw the component if it's filtered out. - if (filter != null && !filter.testComponent(component)) { - continue; - } - ComponentState state = ComponentState.NORMAL; - if (drawOptions.contains(DrawOption.SELECTION) - && selectedComponents.contains(component)) { - if (dragInProgress) { - state = ComponentState.DRAGGING; - } else { - state = ComponentState.SELECTED; - } - } - // Do not track the area if component is not invalidated and was - // drawn in the same state. - boolean trackArea = lastDrawnStateMap.get(component) != state; - g2dWrapper.startedDrawingComponent(); - if (!trackArea) { - g2dWrapper.stopTracking(); - } - // Draw the component through the g2dWrapper. - component.draw(g2dWrapper, state, project, g2dWrapper); - Area area = g2dWrapper.finishedDrawingComponent(); - if (trackArea) { - componentAreaMap.put(component, area); - lastDrawnStateMap.put(component, state); + for (IDIYComponent component : project.getComponents()) { + // Do not draw the component if it's filtered out. + if (filter != null && !filter.testComponent(component)) { + continue; + } + ComponentState state = ComponentState.NORMAL; + if (drawOptions.contains(DrawOption.SELECTION) + && selectedComponents.contains(component)) { + if (dragInProgress) { + state = ComponentState.DRAGGING; + } else { + state = ComponentState.SELECTED; } } - // Draw control points. - for (IDIYComponent component : components) { - if (drawOptions.contains(DrawOption.CONTROL_POINTS)) { + // Do not track the area if component is not invalidated and was + // drawn in the same state. + boolean trackArea = lastDrawnStateMap.get(component) != state; + g2dWrapper.startedDrawingComponent(); + if (!trackArea) { + g2dWrapper.stopTracking(); + } + // Draw the component through the g2dWrapper. + component.draw(g2dWrapper, state, project, g2dWrapper); + Area area = g2dWrapper.finishedDrawingComponent(); + if (trackArea) { + componentAreaMap.put(component, area); + lastDrawnStateMap.put(component, state); + } + } + + // Draw control points of the component in the slot. + if (controlPointSlot != null) { + for (Point point : controlPointSlot) { + if (point != null) { + g2dWrapper.setColor(Constants.SELECTED_CONTROL_POINT_COLOR); + g2dWrapper.fillOval(point.x - CONTROL_POINT_SIZE / 2, point.y + - CONTROL_POINT_SIZE / 2, CONTROL_POINT_SIZE, CONTROL_POINT_SIZE); + } + } + } + + g2dWrapper.setColor(Constants.CONTROL_POINT_COLOR); + // Draw control points. + for (IDIYComponent component : project.getComponents()) { + if (drawOptions.contains(DrawOption.CONTROL_POINTS)) { + if (drawControlPoints.contains(component)) { + boolean isSelected = selectedComponents.contains(component); + g2dWrapper.setColor(isSelected ? Constants.SELECTED_CONTROL_POINT_COLOR + : Constants.CONTROL_POINT_COLOR); for (int i = 0; i < component.getControlPointCount(); i++) { Point controlPoint = component.getControlPoint(i); - try { - if (drawControlPoints.contains(component)) { - g2dWrapper.setColor(Constants.CONTROL_POINT_COLOR); - g2dWrapper.setStroke(new BasicStroke(2)); - // g2d.drawOval(controlPoint.x - 2, - // controlPoint.y - 2, 4, 4); - g2dWrapper.fillOval(controlPoint.x - CONTROL_POINT_SIZE / 2, - controlPoint.y - CONTROL_POINT_SIZE / 2, - CONTROL_POINT_SIZE, CONTROL_POINT_SIZE); - } - } catch (Exception e) { - LOG.error("Could not obtain control points for component of type " - + component.getClass().getName()); + int pointSize = CONTROL_POINT_SIZE; + if (!isSelected) { + pointSize -= 2; } + g2dWrapper.fillOval(controlPoint.x - pointSize / 2, controlPoint.y + - pointSize / 2, pointSize, pointSize); } } } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/utils/Constants.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/utils/Constants.java index 5ddd7743..99abeed7 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/utils/Constants.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/utils/Constants.java @@ -7,14 +7,16 @@ import java.awt.Stroke; public class Constants { - public static final int PIXELS_PER_INCH = 100;//Toolkit.getDefaultToolkit().getScreenResolution(); + public static final int PIXELS_PER_INCH = 120;//Toolkit.getDefaultToolkit().getScreenResolution(); public static int GRIDS_PER_INCH = 8; // public static Size GRID_SIZE = new Size(1d / GRIDS_PER_INCH, SizeUnit.in); // public static final int GRID = 20; public static Color CANVAS_COLOR = Color.white; public static Color GRID_COLOR = new Color(240, 240, 240); - public static Color CONTROL_POINT_COLOR = Color.blue; + public static Color CONTROL_POINT_COLOR = Color.black; + public static Color SELECTED_CONTROL_POINT_COLOR = Color.blue; + public static Color CREATION_POINT_COLOR = Color.decode("#32CD32"); public static Font LABEL_FONT = new Font("Tahoma", Font.BOLD, 11); 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 bf72a54d..3c0f1faa 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 @@ -19,7 +19,7 @@ public abstract class AbstractBoard extends AbstractTransparentComponent private static final long serialVersionUID = 1L; - public static Color BOARD_COLOR = Color.decode("#BCED91"); + public static Color BOARD_COLOR = Color.decode("#F8EBB3"); public static Color BORDER_COLOR = BOARD_COLOR.darker(); public static Size DEFAULT_WIDTH = new Size(1.5d, SizeUnit.in); public static Size DEFAULT_HEIGHT = new Size(1d, SizeUnit.in); diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/PerfBoard.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/PerfBoard.java index 89c12e0b..4be884d1 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/PerfBoard.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/PerfBoard.java @@ -20,7 +20,7 @@ public class PerfBoard extends AbstractBoard { private static final long serialVersionUID = 1L; - public static Color PAD_COLOR = Color.decode("#B87333"); + public static Color PAD_COLOR = Color.decode("#F3926C"); public static Size SPACING = new Size(0.1d, SizeUnit.in); public static Size PAD_SIZE = new Size(0.08d, SizeUnit.in); diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/VeroBoard.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/VeroBoard.java index 7d9c615c..363cd6d0 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/VeroBoard.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/VeroBoard.java @@ -21,8 +21,7 @@ public class VeroBoard extends AbstractBoard { private static final long serialVersionUID = 1L; - public static Color BOARD_COLOR = Color.decode("#BCED91"); - public static Color PAD_COLOR = Color.decode("#B87333"); + public static Color PAD_COLOR = Color.decode("#F3926C"); public static Color BORDER_COLOR = BOARD_COLOR.darker(); public static Size SPACING = new Size(0.1d, SizeUnit.in); 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 d3902e93..acc7c371 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 @@ -7,13 +7,14 @@ import java.awt.Shape; import org.diylc.components.AbstractLeadedComponent; import org.diylc.core.ComponentState; +import org.diylc.core.CreationMethod; import org.diylc.core.IDIYComponent; 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 = "Copper Trace", author = "Branislav Stojkovic", category = "Connectivity", 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, sticky = true) 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/Jumper.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/Jumper.java index 77a6842a..d792478f 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 @@ -7,12 +7,13 @@ import java.awt.Shape; import org.diylc.components.AbstractLeadedComponent; import org.diylc.core.ComponentState; +import org.diylc.core.CreationMethod; import org.diylc.core.IDIYComponent; 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", 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, sticky = true) 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/passive/AxialFilmCapacitor.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/AxialFilmCapacitor.java index 6c03fc6f..2484ae04 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 @@ -6,6 +6,7 @@ import java.awt.Shape; import java.awt.geom.Rectangle2D; import org.diylc.components.AbstractLeadedComponent; +import org.diylc.core.CreationMethod; import org.diylc.core.IDIYComponent; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; @@ -14,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", 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, sticky = true) 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 2342c00d..6d07405c 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 @@ -6,6 +6,7 @@ import java.awt.Shape; import java.awt.geom.Ellipse2D; import org.diylc.components.AbstractLeadedComponent; +import org.diylc.core.CreationMethod; import org.diylc.core.IDIYComponent; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; @@ -14,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", 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, sticky = true) 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 58d0cb24..373bb68d 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 @@ -6,6 +6,7 @@ import java.awt.Shape; import java.awt.geom.RoundRectangle2D; import org.diylc.components.AbstractLeadedComponent; +import org.diylc.core.CreationMethod; import org.diylc.core.IDIYComponent; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; @@ -14,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", 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, sticky = true) 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 0b966805..340db6f2 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 @@ -6,6 +6,7 @@ import java.awt.Shape; import java.awt.geom.Rectangle2D; import org.diylc.components.AbstractLeadedComponent; +import org.diylc.core.CreationMethod; import org.diylc.core.IDIYComponent; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; @@ -14,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", 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, sticky = true) public class Resistor extends AbstractLeadedComponent { private static final long serialVersionUID = 1L;