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 f0f97931..25c6f89d 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/presenter/Presenter.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/Presenter.java index f443d562..55129801 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 @@ -1,9 +1,7 @@ package org.diylc.presenter; -import java.awt.AlphaComposite; import java.awt.BasicStroke; import java.awt.Color; -import java.awt.Composite; import java.awt.Cursor; import java.awt.Dimension; import java.awt.Graphics2D; @@ -297,8 +295,9 @@ public class Presenter implements IPlugInPort { g2dWrapper.scale(zoomLevel, zoomLevel); } - Composite mainComposite = g2d.getComposite(); - Composite alphaComposite = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f); + // Composite mainComposite = g2d.getComposite(); + // Composite alphaComposite = + // AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f); // g2dWrapper.resetTx(); @@ -318,15 +317,15 @@ public class Presenter implements IPlugInPort { } // If the component is being dragged, draw it in a separate // composite. - if (state == ComponentState.DRAGGING) { - g2dWrapper.setComposite(alphaComposite); - } + // if (state == ComponentState.DRAGGING) { + // g2dWrapper.setComposite(alphaComposite); + // } // Draw the component through the g2dWrapper. component.draw(g2dWrapper, state, currentProject); // Restore the composite if needed. - if (state == ComponentState.DRAGGING) { - g2dWrapper.setComposite(mainComposite); - } + // if (state == ComponentState.DRAGGING) { + // g2dWrapper.setComposite(mainComposite); + // } componentAreaMap.put(component, g2dWrapper.finishedDrawingComponent()); // Draw control points @@ -483,9 +482,11 @@ public class Presenter implements IPlugInPort { break; } } + if (!components.equals(controlPointMap)) { controlPointMap = components; - messageDispatcher.dispatchMessage(EventType.AVAILABLE_CTRL_POINTS_CHANGED, components); + messageDispatcher.dispatchMessage(EventType.AVAILABLE_CTRL_POINTS_CHANGED, + new HashMap, Set>(components)); } } @@ -534,11 +535,25 @@ public class Presenter implements IPlugInPort { messageDispatcher.dispatchMessage(EventType.SELECTION_CHANGED, selectedComponents); messageDispatcher.dispatchMessage(EventType.REPAINT); } + // If there aren't any control points, try to add all the selected + // components with all their control points. That will allow the + // user to + // drag the whole component. + for (IDIYComponent c : selectedComponents) { + Set pointIndices = new HashSet(); + if (component.getControlPointCount() > 0) { + for (int i = 0; i < component.getControlPointCount(); i++) { + pointIndices.add(i); + } + controlPointMap.put(c, pointIndices); + } + } } } @Override public boolean dragOver(Point point) { +// System.err.println("DragOver: " + point); if (point == null) { return false; } @@ -567,7 +582,7 @@ public class Presenter implements IPlugInPort { dy = (int) (Math.round(dy / Constants.GRID) * Constants.GRID); } // Only repaint if there's an actual change. - repaint = dx != 0 && dy != 0; + repaint = dx != 0 || dy != 0; previousDragPoint.translate(dx, dy); @@ -588,10 +603,12 @@ public class Presenter implements IPlugInPort { repaint = true; // messageDispatcher.dispatchMessage(EventType.SELECTION_RECT_CHANGED, // selectionRect); - } else { - // If there are components selected translate their control points. - repaint = translateSelectedComponents(previousDragPoint, scaledPoint); - // dragStartPoint = point; + // } else { + // // If there are components selected translate their control + // points. + // repaint = translateSelectedComponents(previousDragPoint, + // scaledPoint); + // // dragStartPoint = point; } if (repaint) { messageDispatcher.dispatchMessage(EventType.REPAINT); @@ -633,29 +650,32 @@ public class Presenter implements IPlugInPort { dragInProgress = false; } - private boolean translateSelectedComponents(Point fromPoint, Point toPoint) { - if (toPoint == null) { - LOG.debug("Drag ended outside the drawing area."); - return false; - } - int dx = (int) (Math.round((toPoint.x - fromPoint.x) / zoomLevel / Constants.GRID) * Constants.GRID); - int dy = (int) (Math.round((toPoint.y - fromPoint.y) / zoomLevel / Constants.GRID) * Constants.GRID); - fromPoint.translate(dx, dy); - for (IDIYComponent component : selectedComponents) { - for (int i = 0; i < component.getControlPointCount(); i++) { - Point controlPoint = new Point(component.getControlPoint(i)); - translateControlPoint(controlPoint, dx, dy); - component.setControlPoint(controlPoint, i); - } - } - return dx != 0 && dy != 0; - } + // private boolean translateSelectedComponents(Point fromPoint, Point + // toPoint) { + // if (toPoint == null) { + // LOG.debug("Drag ended outside the drawing area."); + // return false; + // } + // int dx = (int) (Math.round((toPoint.x - fromPoint.x) / zoomLevel / + // Constants.GRID) * Constants.GRID); + // int dy = (int) (Math.round((toPoint.y - fromPoint.y) / zoomLevel / + // Constants.GRID) * Constants.GRID); + // fromPoint.translate(dx, dy); + // for (IDIYComponent component : selectedComponents) { + // for (int i = 0; i < component.getControlPointCount(); i++) { + // Point controlPoint = new Point(component.getControlPoint(i)); + // translateControlPoint(controlPoint, dx, dy); + // component.setControlPoint(controlPoint, i); + // } + // } + // return dx != 0 && dy != 0; + // } - private void translateControlPoint(Point controlPoint, int dx, int dy) { - int x = controlPoint.x + dx; - int y = controlPoint.y + dy; - controlPoint.setLocation(x, y); - } + // private void translateControlPoint(Point controlPoint, int dx, int dy) { + // int x = controlPoint.x + dx; + // int y = controlPoint.y + dy; + // controlPoint.setLocation(x, y); + // } @Override public void addComponents(List> components, Point preferredPoint) { 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 daad0907..b7099844 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 @@ -8,7 +8,7 @@ import java.awt.Toolkit; public class Constants { - public static final float GRID = (int) (Toolkit.getDefaultToolkit().getScreenResolution() / 10f); + public static final int GRID = (int) (Toolkit.getDefaultToolkit().getScreenResolution() / 10f); public static Color CANVAS_COLOR = Color.white; public static Color GRID_COLOR = new Color(240, 240, 240); diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/lib/diylc.jar b/ diy-layout-creator --username bancika@gmail.com/Library/lib/diylc.jar index f3a83528..24f2cd2b 100644 Binary files a/ diy-layout-creator --username bancika@gmail.com/Library/lib/diylc.jar and b/ diy-layout-creator --username bancika@gmail.com/Library/lib/diylc.jar differ diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/AbstractBoard.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/AbstractBoard.java index efd52a26..f35471fc 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/AbstractBoard.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/AbstractBoard.java @@ -28,9 +28,11 @@ public abstract class AbstractBoard implements IDIYComponent { @Override public void draw(Graphics2D g2d, ComponentState componentState, Project project) { g2d.setStroke(new BasicStroke()); - g2d.setColor(getBoardColor()); - g2d.fillRect(controlPoints[0].x, controlPoints[0].y, controlPoints[1].x - - controlPoints[0].x, controlPoints[1].y - controlPoints[0].y); + if (componentState != ComponentState.DRAGGING) { + g2d.setColor(getBoardColor()); + g2d.fillRect(controlPoints[0].x, controlPoints[0].y, controlPoints[1].x + - controlPoints[0].x, controlPoints[1].y - controlPoints[0].y); + } g2d.setColor(getBorderColor()); g2d.drawRect(controlPoints[0].x, controlPoints[0].y, controlPoints[1].x - controlPoints[0].x, controlPoints[1].y - controlPoints[0].y); diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/PerfBoard.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/PerfBoard.java index 9b418108..1281c2c1 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/PerfBoard.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/PerfBoard.java @@ -26,7 +26,7 @@ public class PerfBoard extends AbstractBoard { private static Size PAD_SIZE = new Size(0.08d, SizeUnit.in); private static Size HOLE_SIZE = new Size(0.8d, SizeUnit.mm); -// private Area copperArea; + // private Area copperArea; @Override public void draw(Graphics2D g2d, ComponentState componentState, Project project) { @@ -41,20 +41,25 @@ public class PerfBoard extends AbstractBoard { // long t = System.nanoTime(); super.draw(g2d, componentState, project); - Point p = new Point(controlPoints[0]); - int radius = PAD_SIZE.convertToPixels() / 2; - int holeRadius = HOLE_SIZE.convertToPixels() / 2; - g2d.setStroke(new BasicStroke(radius)); - while (p.y < controlPoints[1].y - SPACING.convertToPixels()) { - p.x = controlPoints[0].x; - p.y += SPACING.convertToPixels(); - while (p.x < controlPoints[1].x - SPACING.convertToPixels()) { - p.x += SPACING.convertToPixels(); - g2d.setColor(COPPER_COLOR); - g2d.fillOval(p.x - radius, p.y - radius, radius * 2, radius * 2); - g2d.setColor(Constants.CANVAS_COLOR); - g2d.fillOval(p.x - holeRadius, p.y - holeRadius, holeRadius * 2, holeRadius * 2); + if (componentState != ComponentState.DRAGGING) { + Point p = new Point(controlPoints[0]); + int radius = PAD_SIZE.convertToPixels() / 2; + int holeRadius = HOLE_SIZE.convertToPixels() / 2; + g2d.setStroke(new BasicStroke(radius)); + + while (p.y < controlPoints[1].y - SPACING.convertToPixels()) { + p.x = controlPoints[0].x; + p.y += SPACING.convertToPixels(); + while (p.x < controlPoints[1].x - SPACING.convertToPixels()) { + p.x += SPACING.convertToPixels(); + g2d.setColor(COPPER_COLOR); + g2d.fillOval(p.x - radius, p.y - radius, radius * 2, radius * 2); + g2d.setColor(Constants.CANVAS_COLOR); + g2d + .fillOval(p.x - holeRadius, p.y - holeRadius, holeRadius * 2, + holeRadius * 2); + } } } // System.err.println("OldDraw: " + (System.nanoTime() - t));