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 fa04be73..f9e9b3ae 100644
--- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml
+++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml
@@ -3,6 +3,10 @@
defaults
+
+ lastPath
+ C:\Documents and Settings\Branislav Stojkovic\Desktop
+
metric
true
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 86d2d16d..c1c543c0 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/components/AbstractLeadedDIYComponent.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractLeadedDIYComponent.java
index c4635308..066cf83d 100644
--- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractLeadedDIYComponent.java
+++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractLeadedDIYComponent.java
@@ -1,7 +1,9 @@
package org.diylc.components;
+import java.awt.AlphaComposite;
import java.awt.BasicStroke;
import java.awt.Color;
+import java.awt.Composite;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.Point;
@@ -9,7 +11,6 @@ import java.awt.Rectangle;
import java.awt.Shape;
import org.diylc.core.ComponentState;
-import org.diylc.core.IDIYComponent;
import org.diylc.core.Project;
import org.diylc.core.annotations.EditableProperty;
import org.diylc.core.measures.Size;
@@ -23,7 +24,7 @@ import org.diylc.utils.Constants;
*
* @author Branislav Stojkovic
*/
-public abstract class AbstractLeadedDIYComponent implements IDIYComponent {
+public abstract class AbstractLeadedDIYComponent extends AbstractTransparentComponent {
private static final long serialVersionUID = 1L;
@@ -35,7 +36,6 @@ public abstract class AbstractLeadedDIYComponent implements IDIYComponent
protected Size height;
protected Point[] points = new Point[] { new Point((int) (-Constants.GRID * 5), 0),
new Point((int) (Constants.GRID * 5), 0) };
- protected String name = "New Component";
protected AbstractLeadedDIYComponent() {
super();
@@ -83,7 +83,7 @@ public abstract class AbstractLeadedDIYComponent implements IDIYComponent
protected Size getLeadThickness() {
return new Size(0.5d, SizeUnit.mm);
}
-
+
/**
* @return default lead color. Override this method to change it.
*/
@@ -131,8 +131,14 @@ public abstract class AbstractLeadedDIYComponent implements IDIYComponent
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(getBodyColor());
g2d.fill(shape);
+ g2d.setComposite(oldComposite);
}
g2d.setStroke(new BasicStroke(1));
g2d.setColor(getBorderColor());
@@ -148,15 +154,6 @@ public abstract class AbstractLeadedDIYComponent implements IDIYComponent
(int) (shapeRect.height - textRect.getHeight()) / 2 + fontMetrics.getAscent());
}
- @EditableProperty(defaultable = false)
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
@EditableProperty(defaultable = true)
public Size getWidth() {
return width;
@@ -174,30 +171,4 @@ public abstract class AbstractLeadedDIYComponent implements IDIYComponent
public void setHeight(Size height) {
this.height = height;
}
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((name == null) ? 0 : name.hashCode());
- return result;
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- AbstractLeadedDIYComponent other = (AbstractLeadedDIYComponent) obj;
- if (name == null) {
- if (other.name != null)
- return false;
- } else if (!name.equals(other.name))
- return false;
- return true;
- }
}
diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractTransparentComponent.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractTransparentComponent.java
new file mode 100644
index 00000000..17b992d7
--- /dev/null
+++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractTransparentComponent.java
@@ -0,0 +1,32 @@
+package org.diylc.components;
+
+import org.diylc.core.IDIYComponent;
+import org.diylc.core.annotations.EditableProperty;
+
+public abstract class AbstractTransparentComponent implements IDIYComponent {
+
+ private static final long serialVersionUID = 1L;
+
+ public static byte MAX_ALPHA = 127;
+
+ protected String name = "New Component";
+ protected byte alpha = MAX_ALPHA;
+
+ @EditableProperty(defaultable = false)
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @EditableProperty
+ public Byte getAlpha() {
+ return alpha;
+ }
+
+ public void setAlpha(Byte alpha) {
+ this.alpha = alpha;
+ }
+}
diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/gui/MainFrame.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/gui/MainFrame.java
index c3bc678a..002f1032 100644
--- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/gui/MainFrame.java
+++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/gui/MainFrame.java
@@ -31,7 +31,6 @@ import org.diylc.plugins.statusbar.StatusBar;
import org.diylc.plugins.toolbox.ToolBox;
import org.diylc.presenter.Presenter;
-
public class MainFrame extends JFrame implements IView {
private static final long serialVersionUID = 1L;
@@ -64,7 +63,7 @@ public class MainFrame extends JFrame implements IView {
presenter.installPlugin(new ToolBox());
presenter.installPlugin(new FileManager());
presenter.installPlugin(new ClipboardManager());
-// presenter.installPlugin(new OnlineManager());
+ // presenter.installPlugin(new OnlineManager());
presenter.installPlugin(new HelpManager());
presenter.installPlugin(new StatusBar());
@@ -97,7 +96,7 @@ public class MainFrame extends JFrame implements IView {
super.setVisible(b);
// TODO: hack to prevent painting issues in the scroll bar rulers. Find
// a better fix if possible.
- Timer timer = new Timer(200, new ActionListener() {
+ Timer timer = new Timer(500, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/gui/editor/ByteEditor.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/gui/editor/ByteEditor.java
new file mode 100644
index 00000000..a501e3fe
--- /dev/null
+++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/gui/editor/ByteEditor.java
@@ -0,0 +1,26 @@
+package org.diylc.gui.editor;
+
+import javax.swing.JSlider;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+import org.diylc.common.PropertyWrapper;
+
+public class ByteEditor extends JSlider {
+
+ private static final long serialVersionUID = 1L;
+
+ public ByteEditor(final PropertyWrapper property) {
+ super();
+ setMinimum(0);
+ setMaximum(127);
+ setValue((Byte) property.getValue());
+ addChangeListener(new ChangeListener() {
+
+ @Override
+ public void stateChanged(ChangeEvent e) {
+ property.setValue(new Integer(getValue()).byteValue());
+ }
+ });
+ }
+}
diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/gui/editor/FieldEditorFactory.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/gui/editor/FieldEditorFactory.java
index c8579074..5b230b7e 100644
--- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/gui/editor/FieldEditorFactory.java
+++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/gui/editor/FieldEditorFactory.java
@@ -25,6 +25,11 @@ public class FieldEditorFactory {
EnumEditor editor = new EnumEditor(property);
return editor;
}
+ if (Byte.class.isAssignableFrom(property.getType())
+ || byte.class.isAssignableFrom(property.getType())) {
+ ByteEditor byteEditor = new ByteEditor(property);
+ return byteEditor;
+ }
return null;
}
}
diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/toolbox/ComponentTabbedPane.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/toolbox/ComponentTabbedPane.java
index e0200657..a4271bfc 100644
--- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/toolbox/ComponentTabbedPane.java
+++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/toolbox/ComponentTabbedPane.java
@@ -1,6 +1,13 @@
package org.diylc.plugins.toolbox;
+import java.awt.BorderLayout;
+import java.awt.Component;
import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.Insets;
+import java.awt.Rectangle;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -8,19 +15,25 @@ import java.util.Map;
import javax.swing.BoxLayout;
import javax.swing.JButton;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
+import javax.swing.ScrollPaneConstants;
import org.diylc.common.ComponentType;
import org.diylc.common.IPlugInPort;
+import org.diylc.presenter.ComparatorFactory;
+import org.diylc.presenter.Presenter;
/**
- * Tabbed pane that shows all available components categorized into
- * tabs.
+ * Tabbed pane that shows all available components categorized into tabs.
*
* @author Branislav Stojkovic
*/
class ComponentTabbedPane extends JTabbedPane {
+ public static int SCROLL_STEP = Presenter.ICON_SIZE + ComponentButton.MARGIN * 2 + 2;
+
private static final long serialVersionUID = 1L;
private final IPlugInPort plugInPort;
@@ -31,17 +44,68 @@ class ComponentTabbedPane extends JTabbedPane {
List categories = new ArrayList(componentTypes.keySet());
Collections.sort(categories);
for (String category : categories) {
- addTab(category, createComponentPanel(componentTypes.get(category)));
+ JPanel panel = createTab((componentTypes.get(category)));
+ addTab(category, panel);
}
+ setPreferredSize(new Dimension(-1, Presenter.ICON_SIZE + ComponentButton.MARGIN * 2 + 38));
}
- private Container createComponentPanel(List componentTypes) {
- Container componentPanel = new Container();
- componentPanel.setLayout(new BoxLayout(componentPanel, BoxLayout.X_AXIS));
+ private JPanel createTab(List componentTypes) {
+ JPanel panel = new JPanel(new BorderLayout());
+ final JScrollPane scrollPane = createComponentScrollBar(componentTypes);
+ panel.setOpaque(false);
+ JButton leftButton = new JButton("<");
+ leftButton.addActionListener(new ActionListener() {
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ Rectangle rect = scrollPane.getVisibleRect();
+ if (rect.x > SCROLL_STEP) {
+ rect.translate(-SCROLL_STEP, 0);
+ } else {
+ rect.translate(-rect.x, 0);
+ }
+ }
+ });
+ leftButton.setMargin(new Insets(0, 2, 0, 2));
+ JButton rightButton = new JButton(">");
+ rightButton.addActionListener(new ActionListener() {
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ Rectangle rect = scrollPane.getVisibleRect();
+ if (rect.x + rect.width < scrollPane.getViewport().getSize().width - SCROLL_STEP) {
+ rect.translate(SCROLL_STEP, 0);
+ } else {
+ rect.translate(scrollPane.getViewport().getSize().width - rect.x - rect.width,
+ 0);
+ }
+ }
+ });
+ rightButton.setMargin(new Insets(0, 2, 0, 2));
+ panel.add(leftButton, BorderLayout.WEST);
+ panel.add(scrollPane);
+ panel.add(rightButton, BorderLayout.EAST);
+ return panel;
+ }
+
+ private JScrollPane createComponentScrollBar(List componentTypes) {
+ JScrollPane scrollPane = new JScrollPane(createComponentPanel(componentTypes));
+ scrollPane.setOpaque(false);
+ scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
+ scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
+ return scrollPane;
+ }
+
+ private Component createComponentPanel(List componentTypes) {
+ Container toolbar = new Container();
+ Collections.sort(componentTypes, ComparatorFactory.getInstance()
+ .getComponentTypeComparator());
+ toolbar.setLayout(new BoxLayout(toolbar, BoxLayout.X_AXIS));
for (ComponentType componentType : componentTypes) {
JButton button = new ComponentButton(plugInPort, componentType);
- componentPanel.add(button);
+ toolbar.add(button);
}
- return componentPanel;
+ return toolbar;
}
}
diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ComparatorFactory.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ComparatorFactory.java
index 46cca286..8f07ce5e 100644
--- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ComparatorFactory.java
+++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ComparatorFactory.java
@@ -3,6 +3,7 @@ package org.diylc.presenter;
import java.util.Comparator;
import java.util.List;
+import org.diylc.common.ComponentType;
import org.diylc.core.IDIYComponent;
public class ComparatorFactory {
@@ -10,6 +11,7 @@ public class ComparatorFactory {
private static ComparatorFactory instance;
private Comparator> componentNameComparator;
+ private Comparator componentTypeComparator;
public static ComparatorFactory getInstance() {
if (instance == null) {
@@ -36,6 +38,19 @@ public class ComparatorFactory {
return componentNameComparator;
}
+ public Comparator getComponentTypeComparator() {
+ if (componentTypeComparator == null) {
+ componentTypeComparator = new Comparator() {
+
+ @Override
+ public int compare(ComponentType o1, ComponentType o2) {
+ return o1.getName().compareToIgnoreCase(o2.getName());
+ }
+ };
+ }
+ return componentTypeComparator;
+ }
+
public Comparator> getComponentZOrderComparator(
final List> components) {
Comparator> componentZOrderComparator = new Comparator>() {
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 c85deb7b..9a0a7402 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/boards/AbstractBoard.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/AbstractBoard.java
index 6201af16..7c1e6d5c 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
@@ -1,17 +1,19 @@
package org.diylc.components.boards;
+import java.awt.AlphaComposite;
import java.awt.BasicStroke;
import java.awt.Color;
+import java.awt.Composite;
import java.awt.Graphics2D;
import java.awt.Point;
+import org.diylc.components.AbstractTransparentComponent;
import org.diylc.core.ComponentState;
-import org.diylc.core.IDIYComponent;
import org.diylc.core.Project;
import org.diylc.core.annotations.EditableProperty;
import org.diylc.utils.Constants;
-public abstract class AbstractBoard implements IDIYComponent {
+public abstract class AbstractBoard extends AbstractTransparentComponent {
private static final long serialVersionUID = 1L;
@@ -29,9 +31,15 @@ public abstract class AbstractBoard implements IDIYComponent {
public void draw(Graphics2D g2d, ComponentState componentState, Project project) {
g2d.setStroke(new BasicStroke());
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(getBoardColor());
g2d.fillRect(controlPoints[0].x, controlPoints[0].y, controlPoints[1].x
- controlPoints[0].x, controlPoints[1].y - controlPoints[0].y);
+ g2d.setComposite(oldComposite);
}
g2d.setColor(getBorderColor());
g2d.drawRect(controlPoints[0].x, controlPoints[0].y, controlPoints[1].x
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 c415cd9b..4baad47a 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
@@ -1,7 +1,9 @@
package org.diylc.components.boards;
+import java.awt.AlphaComposite;
import java.awt.BasicStroke;
import java.awt.Color;
+import java.awt.Composite;
import java.awt.Graphics2D;
import java.awt.Point;
@@ -43,6 +45,11 @@ public class PerfBoard extends AbstractBoard {
super.draw(g2d, componentState, project);
if (componentState != ComponentState.DRAGGING) {
+ Composite oldComposite = g2d.getComposite();
+ if (alpha < MAX_ALPHA) {
+ g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha
+ / MAX_ALPHA));
+ }
Point p = new Point(controlPoints[0]);
int radius = PAD_SIZE.convertToPixels() / 2;
int holeRadius = HOLE_SIZE.convertToPixels() / 2;
@@ -61,6 +68,7 @@ public class PerfBoard extends AbstractBoard {
holeRadius * 2);
}
}
+ g2d.setComposite(oldComposite);
}
// System.err.println("OldDraw: " + (System.nanoTime() - t));
}
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
new file mode 100644
index 00000000..15cd14da
--- /dev/null
+++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/VeroBoard.java
@@ -0,0 +1,140 @@
+package org.diylc.components.boards;
+
+import java.awt.AlphaComposite;
+import java.awt.Color;
+import java.awt.Composite;
+import java.awt.Graphics2D;
+import java.awt.Point;
+
+import org.diylc.core.ComponentLayer;
+import org.diylc.core.ComponentState;
+import org.diylc.core.Project;
+import org.diylc.core.annotations.ComponentDescriptor;
+import org.diylc.core.measures.Size;
+import org.diylc.core.measures.SizeUnit;
+import org.diylc.utils.Constants;
+
+@ComponentDescriptor(name = "Vero Board", category = "Boards", author = "Branislav Stojkovic", componentLayer = ComponentLayer.BOARD, instanceNamePrefix = "B", desciption = "Perforated FR4 board with solder pads spaced 0.1 inch apart")
+public class VeroBoard extends AbstractBoard {
+
+ private static final long serialVersionUID = 1L;
+
+ public static Color BOARD_COLOR = Color.decode("#BCED91");
+ public static Color COPPER_COLOR = Color.decode("#B87333");
+ public static Color BORDER_COLOR = BOARD_COLOR.darker();
+
+ private static Size SPACING = new Size(0.1d, SizeUnit.in);
+ private static Size STRIP_SIZE = new Size(0.085d, SizeUnit.in);
+ private static Size HOLE_SIZE = new Size(0.8d, SizeUnit.mm);
+
+ // private Area copperArea;
+
+ @Override
+ public void draw(Graphics2D g2d, ComponentState componentState, Project project) {
+ // long t = System.nanoTime();
+ // Area copperArea = getCopperArea();
+ // System.err.println("Calc: " + (System.nanoTime() - t));
+ // t = System.nanoTime();
+ // super.draw(g2d, componentState, project);
+ // g2d.setColor(COPPER_COLOR);
+ // g2d.fill(copperArea);
+ // System.err.println(" Draw: " + (System.nanoTime() - t));
+
+ // long t = System.nanoTime();
+ super.draw(g2d, componentState, project);
+
+ if (componentState != ComponentState.DRAGGING) {
+ Composite oldComposite = g2d.getComposite();
+ if (alpha < MAX_ALPHA) {
+ g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha
+ / MAX_ALPHA));
+ }
+ Point p = new Point(controlPoints[0]);
+ int stripSize = STRIP_SIZE.convertToPixels();
+ int holeRadius = HOLE_SIZE.convertToPixels() / 2;
+
+ while (p.y < controlPoints[1].y - SPACING.convertToPixels()) {
+ p.x = controlPoints[0].x;
+ p.y += SPACING.convertToPixels();
+ g2d.setColor(COPPER_COLOR);
+ g2d.fillRect(p.x + SPACING.convertToPixels() / 2, p.y - stripSize / 2,
+ controlPoints[1].x - SPACING.convertToPixels() - p.x, stripSize);
+ while (p.x < controlPoints[1].x - SPACING.convertToPixels()) {
+ p.x += SPACING.convertToPixels();
+ g2d.setColor(Constants.CANVAS_COLOR);
+ g2d
+ .fillOval(p.x - holeRadius, p.y - holeRadius, holeRadius * 2,
+ holeRadius * 2);
+ }
+ }
+ g2d.setComposite(oldComposite);
+ }
+ // System.err.println("OldDraw: " + (System.nanoTime() - t));
+ }
+
+ // @Override
+ // public void setControlPoint(Point point, int index) {
+ // // Reset copper area if a control point is changed.
+ // if (!point.equals(getControlPoint(index))) {
+ // copperArea = null;
+ // }
+ // super.setControlPoint(point, index);
+ // }
+ //
+ // public Area getCopperArea() {
+ // if (copperArea == null) {
+ // copperArea = new Area();
+ //
+ // int holeRadius = HOLE_SIZE.convertToPixels() / 2;
+ // int radius = PAD_SIZE.convertToPixels() / 2;
+ // int spacing = SPACING.convertToPixels();
+ //
+ // // Create a pad.
+ // Area pad = new Area(new Ellipse2D.Double(-radius, -radius, radius * 2,
+ // radius * 2));
+ // pad.subtract(new Area(new Ellipse2D.Double(-holeRadius, -holeRadius,
+ // holeRadius * 2,
+ // holeRadius * 2)));
+ //
+ // // Create a row duplicating the pad.
+ // Area row = new Area();
+ // int columnCount = (controlPoints[1].x - controlPoints[0].x) / spacing -
+ // 1;
+ // int rowCount = (controlPoints[1].y - controlPoints[0].y) / spacing - 1;
+ //
+ // AffineTransform xTransform =
+ // AffineTransform.getTranslateInstance(spacing, 0);
+ // for (int i = 0; i < columnCount; i++) {
+ // pad.transform(xTransform);
+ // row.add(pad);
+ // }
+ //
+ // // Create the whole matrix duplicating the row.
+ // AffineTransform yTransform = AffineTransform.getTranslateInstance(0,
+ // spacing);
+ // for (int i = 0; i < rowCount; i++) {
+ // row.transform(yTransform);
+ // copperArea.add(row);
+ // }
+ //
+ // copperArea.transform(AffineTransform.getTranslateInstance(controlPoints[0].x,
+ // controlPoints[0].y));
+ // }
+ // return copperArea;
+ // }
+
+ @Override
+ protected Color getBoardColor() {
+ return BOARD_COLOR;
+ }
+
+ @Override
+ protected Color getBorderColor() {
+ return BORDER_COLOR;
+ }
+
+ @Override
+ public void drawIcon(Graphics2D g2d, int width, int height) {
+
+ }
+}
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 c7f4fed1..9e1fc172 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
@@ -1,14 +1,16 @@
package org.diylc.components.electromechanical;
+import java.awt.AlphaComposite;
import java.awt.BasicStroke;
import java.awt.Color;
+import java.awt.Composite;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.geom.RoundRectangle2D;
+import org.diylc.components.AbstractTransparentComponent;
import org.diylc.core.ComponentLayer;
import org.diylc.core.ComponentState;
-import org.diylc.core.IDIYComponent;
import org.diylc.core.Project;
import org.diylc.core.annotations.ComponentDescriptor;
import org.diylc.core.annotations.EditableProperty;
@@ -16,7 +18,7 @@ import org.diylc.core.measures.Size;
import org.diylc.core.measures.SizeUnit;
@ComponentDescriptor(name = "Mini Toggle Switch", category = "Electromechanical", author = "Branislav Stojkovic", desciption = "", stretchable = false, componentLayer = ComponentLayer.COMPONENT, instanceNamePrefix = "SW")
-public class MiniToggleSwitch implements IDIYComponent {
+public class MiniToggleSwitch extends AbstractTransparentComponent {
private static final long serialVersionUID = 1L;
@@ -163,8 +165,14 @@ public class MiniToggleSwitch implements IDIYComponent {
public void draw(Graphics2D g2d, ComponentState componentState, Project project) {
if (body != null) {
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(body);
+ g2d.setComposite(oldComposite);
}
g2d.setStroke(new BasicStroke());
g2d.setColor(BORDER_COLOR);
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 2f839708..8a205ca0 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
@@ -1,15 +1,17 @@
package org.diylc.components.semiconductors;
+import java.awt.AlphaComposite;
import java.awt.BasicStroke;
import java.awt.Color;
+import java.awt.Composite;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.geom.Rectangle2D;
import org.diylc.common.Orientation;
+import org.diylc.components.AbstractTransparentComponent;
import org.diylc.core.ComponentState;
-import org.diylc.core.IDIYComponent;
import org.diylc.core.Project;
import org.diylc.core.annotations.ComponentDescriptor;
import org.diylc.core.annotations.EditableProperty;
@@ -18,7 +20,7 @@ import org.diylc.core.measures.SizeUnit;
import org.diylc.utils.Constants;
@ComponentDescriptor(name = "DIL IC", author = "Branislav Stojkovic", category = "Semiconductors", instanceNamePrefix = "IC", desciption = "test", stretchable = false)
-public class DIL_IC implements IDIYComponent {
+public class DIL_IC extends AbstractTransparentComponent {
private static final long serialVersionUID = 1L;
@@ -166,8 +168,14 @@ public class DIL_IC implements IDIYComponent {
y -= height - Constants.GRID;
}
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.fillRoundRect(x, y, width, height, EDGE_RADIUS, EDGE_RADIUS);
+ g2d.setComposite(oldComposite);
}
g2d.setColor(BORDER_COLOR);
g2d.setStroke(new BasicStroke());