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 d6460070..6b58cd31 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml @@ -6,14 +6,14 @@ K - - lastPath - C:\Documents and Settings\Branislav Stojkovic\Desktop - metric true + + lastPath + C:\Documents and Settings\Branislav Stojkovic\Desktop + default.org.diylc.components.semiconductors.DIL_IC:Value LM366 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 473a0b16..6831326f 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/IComponentFiler.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/IComponentFiler.java new file mode 100644 index 00000000..c1647cdb --- /dev/null +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/IComponentFiler.java @@ -0,0 +1,8 @@ +package org.diylc.common; + +import org.diylc.core.IDIYComponent; + +public interface IComponentFiler { + + boolean testComponent(IDIYComponent component); +} diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/IPlugInPort.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/IPlugInPort.java index 27106901..750d9044 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/IPlugInPort.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/IPlugInPort.java @@ -83,11 +83,15 @@ public interface IPlugInPort { Map> getComponentTypes(); /** - * Draws project on the provided {@link Graphics2D}. + * Draws project on the provided {@link Graphics2D}. If the provided filter + * is not null, it will be used to filter the components that are shown. * * @param g2d + * @param drawOptions + * specific drawing options + * @param filter */ - void draw(Graphics2D g2d, Set drawProperties); + void draw(Graphics2D g2d, Set drawOptions, IComponentFiler filter); /** * Injects a custom GUI panels provided by the plug-in and desired position 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 b6608b0e..8684a7f9 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 @@ -71,16 +71,14 @@ public abstract class AbstractLeadedComponent extends AbstractTransparentComp (points[0].y + points[1].y - shapeRect.height) / 2); g2d.rotate(theta, shapeRect.width / 2, shapeRect.height / 2); // Draw body. - if (componentState != ComponentState.DRAGGING) { - Composite oldComposite = g2d.getComposite(); - if (alpha < MAX_ALPHA) { - g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha - / MAX_ALPHA)); - } - g2d.setColor(bodyColor); - g2d.fill(shape); - g2d.setComposite(oldComposite); + Composite oldComposite = g2d.getComposite(); + if (alpha < MAX_ALPHA) { + g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha + / MAX_ALPHA)); } + g2d.setColor(bodyColor); + g2d.fill(shape); + g2d.setComposite(oldComposite); g2d.setStroke(new BasicStroke(1)); g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR : borderColor); diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/canvas/CanvasPanel.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/canvas/CanvasPanel.java index 1bb2a2ec..822b8d93 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/canvas/CanvasPanel.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/canvas/CanvasPanel.java @@ -107,7 +107,7 @@ class CanvasPanel extends JComponent implements Autoscroll { bufferImage = createImage(getWidth(), getHeight()); } Graphics2D g2d = (Graphics2D) bufferImage.getGraphics(); - plugInPort.draw(g2d, drawOptions); + plugInPort.draw(g2d, drawOptions, null); } @Override @@ -119,7 +119,7 @@ class CanvasPanel extends JComponent implements Autoscroll { createBufferImage(); } else { Graphics2D g2d = (Graphics2D) bufferImage.getGraphics(); - plugInPort.draw(g2d, drawOptions); + plugInPort.draw(g2d, drawOptions, null); } if (USE_HARDWARE_ACCELLERATION) { VolatileImage volatileImage = (VolatileImage) bufferImage; @@ -139,7 +139,7 @@ class CanvasPanel extends JComponent implements Autoscroll { } while (volatileImage == null || volatileImage.contentsLost()); } else { Graphics2D g2d = (Graphics2D) bufferImage.getGraphics(); - plugInPort.draw(g2d, drawOptions); + plugInPort.draw(g2d, drawOptions, null); g.drawImage(bufferImage, 0, 0, this); bufferImage.flush(); } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/file/ProjectDrawingProvider.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/file/ProjectDrawingProvider.java index 0c537e44..ad34afab 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/file/ProjectDrawingProvider.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/file/ProjectDrawingProvider.java @@ -6,6 +6,7 @@ import java.awt.Graphics2D; import java.util.EnumSet; import org.diylc.common.DrawOption; +import org.diylc.common.IComponentFiler; import org.diylc.common.IPlugInPort; import com.diyfever.gui.IDrawingProvider; @@ -18,7 +19,7 @@ import com.diyfever.gui.IDrawingProvider; */ public class ProjectDrawingProvider implements IDrawingProvider { - IPlugInPort plugInPort; + private IPlugInPort plugInPort; public ProjectDrawingProvider(IPlugInPort plugInPort) { super(); @@ -27,7 +28,12 @@ public class ProjectDrawingProvider implements IDrawingProvider { @Override public void draw(Graphics g) { - plugInPort.draw((Graphics2D) g, EnumSet.of(DrawOption.ZOOM, DrawOption.ANTIALIASING)); + plugInPort.draw((Graphics2D) g, EnumSet.of(DrawOption.ZOOM, DrawOption.ANTIALIASING), null); + } + + public void draw(Graphics g, IComponentFiler filter) { + plugInPort.draw((Graphics2D) g, EnumSet.of(DrawOption.ZOOM, DrawOption.ANTIALIASING), + filter); } @Override diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/file/ProjectPreview.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/file/ProjectPreview.java index 8d6fe1d1..64e24957 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/file/ProjectPreview.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/file/ProjectPreview.java @@ -132,14 +132,14 @@ public class ProjectPreview extends JPanel implements PropertyChangeListener, IF zoomRatio = rect.getHeight() / d.getHeight(); } // d.setSize(d.getWidth() * zoomRatio, d.getHeight() * zoomRatio); - int x = (int) (rect.getWidth() - d.getWidth() * zoomRatio) / 2; - int y = (int) (rect.getHeight() - d.getHeight() * zoomRatio) / 2; +// int x = (int) (rect.getWidth() - d.getWidth() * zoomRatio) / 2; +// int y = (int) (rect.getHeight() - d.getHeight() * zoomRatio) / 2; // System.out.println(x + "," + y); - g2d.translate(x, y); +// g2d.translate(x, y); g2d.scale(zoomRatio, zoomRatio); - presenter.draw(g2d, EnumSet.noneOf(DrawOption.class)); + presenter.draw(g2d, EnumSet.noneOf(DrawOption.class), null); g2d.setColor(Color.black); g2d.drawRect(0, 0, d.width - (int) (1 / zoomRatio), d.height - (int) (1 / zoomRatio)); diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ComponentZOrderFiler.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ComponentZOrderFiler.java new file mode 100644 index 00000000..7ff1ab09 --- /dev/null +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ComponentZOrderFiler.java @@ -0,0 +1,23 @@ +package org.diylc.presenter; + +import org.diylc.common.ComponentType; +import org.diylc.common.IComponentFiler; +import org.diylc.core.IDIYComponent; + +public class ComponentZOrderFiler implements IComponentFiler { + + private int zOrder; + + public ComponentZOrderFiler(int zOrder) { + super(); + this.zOrder = zOrder; + } + + @SuppressWarnings("unchecked") + @Override + public boolean testComponent(IDIYComponent component) { + ComponentType componentType = ComponentProcessor.getInstance().createComponentTypeFrom( + (Class>) component.getClass()); + return Math.round(componentType.getZOrder()) == zOrder; + } +} 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 db27e4ac..e715ad79 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 @@ -8,7 +8,6 @@ import java.awt.Graphics2D; import java.awt.Point; import java.awt.Rectangle; import java.awt.RenderingHints; -import java.awt.geom.AffineTransform; import java.awt.geom.Area; import java.awt.geom.Point2D; import java.lang.reflect.Modifier; @@ -31,6 +30,7 @@ import org.diylc.common.ComponentSelection; import org.diylc.common.ComponentType; import org.diylc.common.DrawOption; import org.diylc.common.EventType; +import org.diylc.common.IComponentFiler; import org.diylc.common.IPlugIn; import org.diylc.common.IPlugInPort; import org.diylc.common.PropertyWrapper; @@ -215,7 +215,7 @@ public class Presenter implements IPlugInPort { } @Override - public void draw(Graphics2D g2d, Set drawOptions) { + public void draw(Graphics2D g2d, Set drawOptions, IComponentFiler filter) { if (currentProject == null) { return; } @@ -227,7 +227,7 @@ public class Presenter implements IPlugInPort { RenderingHints.VALUE_ANTIALIAS_ON); } - AffineTransform initialTx = g2d.getTransform(); +// AffineTransform initialTx = g2d.getTransform(); Dimension d = getCanvasDimensions(drawOptions.contains(DrawOption.ZOOM)); g2dWrapper.setColor(Constants.CANVAS_COLOR); @@ -259,6 +259,10 @@ public class Presenter implements IPlugInPort { 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; + } g2dWrapper.startedDrawingComponent(); ComponentState state = ComponentState.NORMAL; if (drawOptions.contains(DrawOption.SELECTION) @@ -299,10 +303,10 @@ public class Presenter implements IPlugInPort { // Go back to the original transformation and zoom in to draw the // selection rectangle and other similar elements. - g2d.setTransform(initialTx); - if ((drawOptions.contains(DrawOption.ZOOM)) && (Math.abs(1.0 - zoomLevel) > 1e-4)) { - g2d.scale(zoomLevel, zoomLevel); - } +// g2d.setTransform(initialTx); +// if ((drawOptions.contains(DrawOption.ZOOM)) && (Math.abs(1.0 - zoomLevel) > 1e-4)) { +// g2d.scale(zoomLevel, zoomLevel); +// } // At the end draw selection rectangle if needed. if (drawOptions.contains(DrawOption.SELECTION) && (selectionRect != null)) { 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 678d160b..93e74f87 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 @@ -157,16 +157,14 @@ public class MiniToggleSwitch extends AbstractTransparentComponent { g2d.setColor(PIN_BORDER_COLOR); g2d.drawRect(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize); } - if (componentState != ComponentState.DRAGGING) { - Composite oldComposite = g2d.getComposite(); - if (alpha < MAX_ALPHA) { - g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha - / MAX_ALPHA)); - } - g2d.setColor(BODY_COLOR); - g2d.fill(getBody()); - g2d.setComposite(oldComposite); + Composite oldComposite = g2d.getComposite(); + if (alpha < MAX_ALPHA) { + g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha + / MAX_ALPHA)); } + g2d.setColor(BODY_COLOR); + g2d.fill(getBody()); + g2d.setComposite(oldComposite); g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR : BORDER_COLOR); g2d.setStroke(new BasicStroke()); g2d.draw(getBody()); // Draw label. g2d.setFont(Constants.LABEL_FONT); - if (componentState == ComponentState.DRAGGING) { - g2d.setColor(BORDER_COLOR); - } else { - g2d.setColor(LABEL_COLOR); - } + g2d.setColor(LABEL_COLOR); FontMetrics fontMetrics = g2d.getFontMetrics(g2d.getFont()); Rectangle2D rect = fontMetrics.getStringBounds(getName(), g2d); int textHeight = (int) (rect.getHeight());