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 extends IDIYComponent>>) 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());