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 b4120b55..47113384 100644
--- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml
+++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml
@@ -5,7 +5,7 @@
lastPath
- C:\Documents and Settings\Branislav Stojkovic\Desktop
+ C:\Documents and Settings\Branislav Stojkovic\My Documents\Downloads
abnormalExit
@@ -31,6 +31,12 @@
240
240
+
+ 0
+ 0
+ 0
+ 255
+
@@ -45,6 +51,10 @@
hiQualityRender
false
+
+ outline
+ true
+
exportGrid
true
@@ -63,11 +73,11 @@
autoCreatePads
- false
+ true
continuousCreation
- false
+ true
showTemplatesAtStartup
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 c15c3461..143b92f6 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/DrawOption.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/DrawOption.java
index f0f23153..b36ac993 100644
--- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/DrawOption.java
+++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/DrawOption.java
@@ -32,5 +32,9 @@ public enum DrawOption {
/**
* Anti-aliasing is used when drawing.
*/
- ANTIALIASING;
+ ANTIALIASING,
+ /**
+ * Draw components in outline mode.
+ */
+ OUTLINE_MODE;
}
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 b26c1588..144e0f1e 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
@@ -43,6 +43,8 @@ public interface IPlugInPort {
public static final String AUTO_EDIT_KEY = "autoEdit";
public static final String ABNORMAL_EXIT_KEY = "abnormalExit";
public static final String WHEEL_ZOOM_KEY = "wheelZoom";
+ public static final String OUTLINE_KEY = "outline";
+ public static final String THEME_KEY = "theme";
/**
* Returns size of the canvas that takes project dimensions into account as
diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractCurvedComponent.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractCurvedComponent.java
index 18bf8a5c..b0164317 100644
--- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractCurvedComponent.java
+++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractCurvedComponent.java
@@ -63,8 +63,8 @@ public abstract class AbstractCurvedComponent extends AbstractTransparentComp
}
@Override
- public void draw(Graphics2D g2d, ComponentState componentState, Project project,
- IDrawingObserver drawingObserver) {
+ public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode,
+ Project project, IDrawingObserver drawingObserver) {
if (checkPointsClipped(g2d.getClip())) {
return;
}
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 f6f20b71..c58a5cfc 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
@@ -13,14 +13,19 @@ import java.awt.geom.Ellipse2D;
import java.awt.geom.Rectangle2D;
import org.diylc.common.Display;
+import org.diylc.common.IPlugInPort;
import org.diylc.common.ObjectCache;
import org.diylc.core.ComponentState;
import org.diylc.core.IDrawingObserver;
import org.diylc.core.Project;
+import org.diylc.core.Theme;
import org.diylc.core.VisibilityPolicy;
import org.diylc.core.annotations.EditableProperty;
import org.diylc.core.measures.Size;
import org.diylc.core.measures.SizeUnit;
+import org.diylc.utils.Constants;
+
+import com.diyfever.gui.miscutils.ConfigurationManager;
/**
* Base class for all leaded components such as resistors or capacitors. Has two
@@ -45,7 +50,7 @@ public abstract class AbstractLeadedComponent extends AbstractTransparentComp
protected Color bodyColor = Color.white;
protected Color borderColor = Color.black;
protected Color labelColor = LABEL_COLOR;
- protected Display display = Display.NAME;
+ protected Display display = Display.VALUE;
protected AbstractLeadedComponent() {
super();
@@ -60,8 +65,8 @@ public abstract class AbstractLeadedComponent extends AbstractTransparentComp
}
@Override
- public void draw(Graphics2D g2d, ComponentState componentState, Project project,
- IDrawingObserver drawingObserver) {
+ public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode,
+ Project project, IDrawingObserver drawingObserver) {
double distance = points[0].distance(points[1]);
Shape shape = getBodyShape();
// If there's no body, just draw the line connecting the ending points.
@@ -74,13 +79,32 @@ public abstract class AbstractLeadedComponent extends AbstractTransparentComp
int width = getClosestOdd(this.width.convertToPixels());
Shape body = new Ellipse2D.Double(points[0].x - width / 2, points[0].y - width / 2,
width, width);
- g2d.setColor(bodyColor);
+ Composite oldComposite = g2d.getComposite();
+ if (alpha < MAX_ALPHA) {
+ g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha
+ / MAX_ALPHA));
+ }
+ g2d.setColor(outlineMode ? Constants.TRANSPARENT_COLOR : bodyColor);
g2d.fill(body);
- Color finalBorderColor = componentState == ComponentState.SELECTED
- || componentState == ComponentState.DRAGGING ? SELECTION_COLOR : borderColor;
+ g2d.setComposite(oldComposite);
+ Color finalBorderColor;
+ if (outlineMode) {
+ Theme theme = (Theme) ConfigurationManager.getInstance().readObject(
+ IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME);
+ finalBorderColor = componentState == ComponentState.SELECTED
+ || componentState == ComponentState.DRAGGING ? SELECTION_COLOR : theme
+ .getOutlineColor();
+ } else {
+ finalBorderColor = componentState == ComponentState.SELECTED
+ || componentState == ComponentState.DRAGGING ? SELECTION_COLOR
+ : borderColor;
+ }
+
g2d.setColor(finalBorderColor);
g2d.draw(body);
- drawLead(g2d, componentState);
+ if (!outlineMode) {
+ drawLead(g2d, componentState);
+ }
} else {
// Normal mode with component body in the center and two lead parts.
Rectangle shapeRect = shape.getBounds();
@@ -99,23 +123,42 @@ public abstract class AbstractLeadedComponent extends AbstractTransparentComp
}
if (bodyColor != null) {
if (bodyColor != null) {
- g2d.setColor(bodyColor);
+ g2d.setColor(outlineMode ? Constants.TRANSPARENT_COLOR : bodyColor);
g2d.fill(shape);
}
}
- decorateComponentBody(g2d);
+ decorateComponentBody(g2d, outlineMode);
g2d.setComposite(oldComposite);
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
- Color finalBorderColor = componentState == ComponentState.SELECTED
- || componentState == ComponentState.DRAGGING ? SELECTION_COLOR : borderColor;
+ Color finalBorderColor;
+ if (outlineMode) {
+ Theme theme = (Theme) ConfigurationManager.getInstance().readObject(
+ IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME);
+ finalBorderColor = componentState == ComponentState.SELECTED
+ || componentState == ComponentState.DRAGGING ? SELECTION_COLOR : theme
+ .getOutlineColor();
+ } else {
+ finalBorderColor = componentState == ComponentState.SELECTED
+ || componentState == ComponentState.DRAGGING ? SELECTION_COLOR
+ : borderColor;
+ }
g2d.setColor(finalBorderColor);
g2d.draw(shape);
// Draw label.
g2d.setFont(LABEL_FONT);
- Color finalLabelFont = componentState == ComponentState.SELECTED
- || componentState == ComponentState.DRAGGING ? LABEL_COLOR_SELECTED
- : labelColor;
- g2d.setColor(finalLabelFont);
+ Color finalLabelColor;
+ if (outlineMode) {
+ Theme theme = (Theme) ConfigurationManager.getInstance().readObject(
+ IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME);
+ finalLabelColor = componentState == ComponentState.SELECTED
+ || componentState == ComponentState.DRAGGING ? LABEL_COLOR_SELECTED : theme
+ .getOutlineColor();
+ } else {
+ finalLabelColor = componentState == ComponentState.SELECTED
+ || componentState == ComponentState.DRAGGING ? LABEL_COLOR_SELECTED
+ : labelColor;
+ }
+ g2d.setColor(finalLabelColor);
FontMetrics fontMetrics = g2d.getFontMetrics();
String label = display == Display.NAME ? getName() : getValue().toString();
// Adjust label angle if needed to make sure that it's readable.
@@ -128,30 +171,31 @@ public abstract class AbstractLeadedComponent extends AbstractTransparentComp
calculateLabelYCoordinate(shapeRect, textRect, fontMetrics));
// Go back to the original transformation to draw leads.
- g2d.setTransform(oldTransform);
- int leadThickness = getClosestOdd(getLeadThickness());
- double leadLength = (distance - shapeRect.width) / 2 - leadThickness / 2;
- g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness));
- Color leadColor = shouldShadeLeads() ? getLeadColor(componentState).darker()
- : getLeadColor(componentState);
- g2d.setColor(leadColor);
- int endX = (int) (points[0].x + Math.cos(theta) * leadLength);
- int endY = (int) Math.round(points[0].y + Math.sin(theta) * leadLength);
- g2d.drawLine(points[0].x, points[0].y, endX, endY);
- endX = (int) (points[1].x + Math.cos(theta - Math.PI) * leadLength);
- endY = (int) Math.round(points[1].y + Math.sin(theta - Math.PI) * leadLength);
- g2d.drawLine(points[1].x, points[1].y, endX, endY);
- if (shouldShadeLeads()) {
- g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness - 2));
- leadColor = getLeadColor(componentState);
+ if (!outlineMode) {
+ g2d.setTransform(oldTransform);
+ int leadThickness = getClosestOdd(getLeadThickness());
+ double leadLength = (distance - shapeRect.width) / 2 - leadThickness / 2;
+ g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness));
+ Color leadColor = shouldShadeLeads() ? getLeadColor(componentState).darker()
+ : getLeadColor(componentState);
g2d.setColor(leadColor);
- g2d.drawLine(points[0].x, points[0].y, (int) (points[0].x + Math.cos(theta)
- * leadLength), (int) (points[0].y + Math.sin(theta) * leadLength));
- g2d
- .drawLine(points[1].x, points[1].y, (int) (points[1].x + Math.cos(theta
- - Math.PI)
- * leadLength), (int) (points[1].y + Math.sin(theta - Math.PI)
- * leadLength));
+ int endX = (int) (points[0].x + Math.cos(theta) * leadLength);
+ int endY = (int) Math.round(points[0].y + Math.sin(theta) * leadLength);
+ g2d.drawLine(points[0].x, points[0].y, endX, endY);
+ endX = (int) (points[1].x + Math.cos(theta - Math.PI) * leadLength);
+ endY = (int) Math.round(points[1].y + Math.sin(theta - Math.PI) * leadLength);
+ g2d.drawLine(points[1].x, points[1].y, endX, endY);
+ if (shouldShadeLeads()) {
+ g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness - 2));
+ leadColor = getLeadColor(componentState);
+ g2d.setColor(leadColor);
+ g2d.drawLine(points[0].x, points[0].y, (int) (points[0].x + Math.cos(theta)
+ * leadLength), (int) (points[0].y + Math.sin(theta) * leadLength));
+ g2d.drawLine(points[1].x, points[1].y, (int) (points[1].x + Math.cos(theta
+ - Math.PI)
+ * leadLength), (int) (points[1].y + Math.sin(theta - Math.PI)
+ * leadLength));
+ }
}
}
}
@@ -170,7 +214,7 @@ public abstract class AbstractLeadedComponent extends AbstractTransparentComp
}
}
- protected void decorateComponentBody(Graphics2D g2d) {
+ protected void decorateComponentBody(Graphics2D g2d, boolean outlineMode) {
// Do nothing.
}
diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/IDIYComponent.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/IDIYComponent.java
index 2bd9e126..ecf23912 100644
--- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/IDIYComponent.java
+++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/IDIYComponent.java
@@ -103,10 +103,11 @@ public interface IDIYComponent extends Serializable {
*
* @param g2d
* @param componentState
+ * @param outlineMode
* @param project
* @param drawingObserver
*/
- void draw(Graphics2D g2d, ComponentState componentState, Project project,
+ void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project,
IDrawingObserver drawingObserver);
/**
diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/Theme.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/Theme.java
index 4a232448..722f02dc 100644
--- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/Theme.java
+++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/Theme.java
@@ -10,12 +10,14 @@ public class Theme implements Serializable {
private String name;
private Color bgColor;
private Color gridColor;
+ private Color outlineColor;
- public Theme(String name, Color bgColor, Color gridColor) {
+ public Theme(String name, Color bgColor, Color gridColor, Color outlineColor) {
super();
this.name = name;
this.bgColor = bgColor;
this.gridColor = gridColor;
+ this.outlineColor = outlineColor;
}
public String getName() {
@@ -30,12 +32,17 @@ public class Theme implements Serializable {
return gridColor;
}
+ public Color getOutlineColor() {
+ return outlineColor;
+ }
+
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((bgColor == null) ? 0 : bgColor.hashCode());
result = prime * result + ((gridColor == null) ? 0 : gridColor.hashCode());
+ result = prime * result + ((outlineColor == null) ? 0 : outlineColor.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@@ -59,6 +66,11 @@ public class Theme implements Serializable {
return false;
} else if (!gridColor.equals(other.gridColor))
return false;
+ if (outlineColor == null) {
+ if (other.outlineColor != null)
+ return false;
+ } else if (!outlineColor.equals(other.outlineColor))
+ return false;
if (name == null) {
if (other.name != null)
return false;
diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/DrawingManager.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/DrawingManager.java
index eeb482cb..778208de 100644
--- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/DrawingManager.java
+++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/DrawingManager.java
@@ -46,14 +46,14 @@ public class DrawingManager {
public static int CONTROL_POINT_SIZE = 7;
public static final String ZOOM_KEY = "zoom";
- public static final String THEME_KEY = "theme";
+
public static String DEBUG_COMPONENT_AREAS = "org.diylc.debugComponentAreas";
- public static Color GRID_COLOR = new Color(240, 240, 240);
- public static Color CONTROL_POINT_COLOR = Color.black;
+ public static Color CONTROL_POINT_COLOR = Color.blue;
public static Color SELECTED_CONTROL_POINT_COLOR = Color.green;
- private Theme theme = new Theme("Light", Constants.CANVAS_COLOR, GRID_COLOR);
+ private Theme theme = (Theme) ConfigurationManager.getInstance().readObject(
+ IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME);
// Keeps Area object of each drawn component.
private Map, Area> componentAreaMap;
@@ -80,10 +80,6 @@ public class DrawingManager {
String debugComponentAreasStr = System.getProperty(DEBUG_COMPONENT_AREAS);
debugComponentAreas = debugComponentAreasStr != null
&& debugComponentAreasStr.equalsIgnoreCase("true");
- Theme theme = (Theme) ConfigurationManager.getInstance().readObject(THEME_KEY, null);
- if (theme != null) {
- this.theme = theme;
- }
}
/**
@@ -220,7 +216,8 @@ public class DrawingManager {
}
// Draw the component through the g2dWrapper.
try {
- component.draw(g2dWrapper, state, project, g2dWrapper);
+ component.draw(g2dWrapper, state, drawOptions.contains(DrawOption.OUTLINE_MODE),
+ project, g2dWrapper);
} catch (Exception e) {
LOG.error("Error drawing " + component.getName(), e);
failedComponents.add(component);
@@ -235,7 +232,7 @@ public class DrawingManager {
// Draw control points.
if (drawOptions.contains(DrawOption.CONTROL_POINTS)) {
// Draw unselected points first to make sure they are below.
- if (dragInProgress) {
+ if (dragInProgress || drawOptions.contains(DrawOption.OUTLINE_MODE)) {
for (IDIYComponent> component : project.getComponents()) {
for (int i = 0; i < component.getControlPointCount(); i++) {
VisibilityPolicy visibilityPolicy = component
@@ -247,7 +244,6 @@ public class DrawingManager {
&& !selectedComponents.contains(component) && component
.getControlPointVisibilityPolicy(i) == VisibilityPolicy.ALWAYS))) {
g2dWrapper.setColor(CONTROL_POINT_COLOR);
-
Point controlPoint = component.getControlPoint(i);
int pointSize = CONTROL_POINT_SIZE - 2;
g2dWrapper.fillOval(controlPoint.x - pointSize / 2, controlPoint.y
@@ -283,7 +279,8 @@ public class DrawingManager {
g2dWrapper.startedDrawingComponent();
g2dWrapper.setComposite(slotComposite);
try {
- componentSlot.draw(g2dWrapper, ComponentState.NORMAL, project, g2dWrapper);
+ componentSlot.draw(g2dWrapper, ComponentState.NORMAL, drawOptions
+ .contains(DrawOption.OUTLINE_MODE), project, g2dWrapper);
} catch (Exception e) {
LOG.error("Error drawing " + componentSlot.getName(), e);
failedComponents.add(componentSlot);
@@ -393,7 +390,7 @@ public class DrawingManager {
public void setTheme(Theme theme) {
this.theme = theme;
- ConfigurationManager.getInstance().writeValue(THEME_KEY, theme);
+ ConfigurationManager.getInstance().writeValue(IPlugInPort.THEME_KEY, theme);
messageDispatcher.dispatchMessage(EventType.REPAINT);
}
}
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 995d5546..4b0b61ce 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
@@ -800,7 +800,8 @@ public class Presenter implements IPlugInPort {
for (int j = i + 1; j < controlPoints.length; j++) {
if (controlPoints[i] != null && controlPoints[j] != null
&& controlPoints[i].equals(controlPoints[j])) {
- // Control points collision detected, cannot make this move.
+ // Control points collision detected, cannot make
+ // this move.
return true;
}
}
@@ -1171,13 +1172,25 @@ public class Presenter implements IPlugInPort {
currentProject.getComponents().add(component);
}
if (canCreatePads
- && ConfigurationManager.getInstance().readBoolean(IPlugInPort.AUTO_PADS_KEY, false)) {
+ && ConfigurationManager.getInstance().readBoolean(IPlugInPort.AUTO_PADS_KEY, false)
+ && !(component instanceof SolderPad)) {
+ ComponentType padType = ComponentProcessor.getInstance().extractComponentTypeFrom(
+ SolderPad.class);
for (int i = 0; i < component.getControlPointCount(); i++) {
if (component.isControlPointSticky(i)) {
- SolderPad pad = new SolderPad();
- pad.setControlPoint(component.getControlPoint(i), 0);
- addComponent(pad, ComponentProcessor.getInstance().extractComponentTypeFrom(
- SolderPad.class), false);
+ try {
+ IDIYComponent> pad = instantiationManager.instantiateComponent(padType,
+ component.getControlPoint(i), currentProject);
+ pad.setControlPoint(component.getControlPoint(i), 0);
+ addComponent(pad, padType, false);
+ } catch (Exception e) {
+ LOG.warn("Could not auto-create solder pad", e);
+ }
+ // SolderPad pad = new SolderPad();
+ // pad.setControlPoint(component.getControlPoint(i), 0);
+ // addComponent(pad,
+ // ComponentProcessor.getInstance().extractComponentTypeFrom(
+ // SolderPad.class), false);
}
}
}
diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/canvas/CanvasPanel.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/canvas/CanvasPanel.java
index 81eb232d..83e8b9d9 100644
--- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/canvas/CanvasPanel.java
+++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/canvas/CanvasPanel.java
@@ -21,6 +21,7 @@ import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.VolatileImage;
import java.util.EnumSet;
+import java.util.Set;
import javax.swing.AbstractAction;
import javax.swing.JComponent;
@@ -47,11 +48,11 @@ class CanvasPanel extends JComponent implements Autoscroll {
private static boolean USE_HARDWARE_ACCELLERATION = false;
- static final EnumSet DRAW_OPTIONS = EnumSet.of(DrawOption.GRID,
- DrawOption.SELECTION, DrawOption.ZOOM, DrawOption.CONTROL_POINTS);
- static final EnumSet DRAW_OPTIONS_ANTI_ALIASING = EnumSet.of(DrawOption.GRID,
- DrawOption.SELECTION, DrawOption.ZOOM, DrawOption.ANTIALIASING,
- DrawOption.CONTROL_POINTS);
+// static final EnumSet DRAW_OPTIONS = EnumSet.of(DrawOption.GRID,
+// DrawOption.SELECTION, DrawOption.ZOOM, DrawOption.CONTROL_POINTS);
+// static final EnumSet DRAW_OPTIONS_ANTI_ALIASING = EnumSet.of(DrawOption.GRID,
+// DrawOption.SELECTION, DrawOption.ZOOM, DrawOption.ANTIALIASING,
+// DrawOption.CONTROL_POINTS);
public CanvasPanel(IPlugInPort plugInPort) {
super();
@@ -114,9 +115,15 @@ class CanvasPanel extends JComponent implements Autoscroll {
}
Graphics2D g2d = (Graphics2D) bufferImage.getGraphics();
g2d.setClip(getVisibleRect());
- plugInPort.draw(g2d, ConfigurationManager.getInstance().readBoolean(
- IPlugInPort.ANTI_ALIASING_KEY, true) ? DRAW_OPTIONS_ANTI_ALIASING : DRAW_OPTIONS,
- null);
+ Set drawOptions = EnumSet.of(DrawOption.GRID, DrawOption.SELECTION,
+ DrawOption.ZOOM, DrawOption.CONTROL_POINTS);
+ if (ConfigurationManager.getInstance().readBoolean(IPlugInPort.ANTI_ALIASING_KEY, true)) {
+ drawOptions.add(DrawOption.ANTIALIASING);
+ }
+ if (ConfigurationManager.getInstance().readBoolean(IPlugInPort.OUTLINE_KEY, false)) {
+ drawOptions.add(DrawOption.OUTLINE_MODE);
+ }
+ plugInPort.draw(g2d, drawOptions, null);
if (USE_HARDWARE_ACCELLERATION) {
VolatileImage volatileImage = (VolatileImage) bufferImage;
do {
diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/config/ConfigPlugin.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/config/ConfigPlugin.java
index 3b3fb9e9..d12360df 100644
--- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/config/ConfigPlugin.java
+++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/config/ConfigPlugin.java
@@ -52,6 +52,8 @@ public class ConfigPlugin implements IPlugIn {
"Hi-Quality Rendering", IPlugInPort.HI_QUALITY_RENDER_KEY, false), CONFIG_MENU);
swingUI.injectMenuAction(ActionFactory.getInstance().createConfigAction(plugInPort,
"Mouse Wheel Zoom", IPlugInPort.WHEEL_ZOOM_KEY, false), CONFIG_MENU);
+ swingUI.injectMenuAction(ActionFactory.getInstance().createConfigAction(plugInPort,
+ "Outline Mode", IPlugInPort.OUTLINE_KEY, false), CONFIG_MENU);
swingUI.injectMenuAction(ActionFactory.getInstance().createConfigAction(plugInPort,
"Snap to Grid", IPlugInPort.SNAP_TO_GRID_KEY, true), CONFIG_MENU);
swingUI.injectMenuAction(ActionFactory.getInstance().createConfigAction(plugInPort,
diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/file/ProjectDrawingProvider.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/file/ProjectDrawingProvider.java
index 6e34eb89..6290a124 100644
--- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/file/ProjectDrawingProvider.java
+++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/file/ProjectDrawingProvider.java
@@ -33,16 +33,19 @@ public class ProjectDrawingProvider implements IDrawingProvider {
@Override
public void draw(Graphics g) {
- EnumSet options = EnumSet.of(DrawOption.ANTIALIASING);
+ EnumSet drawOptions = EnumSet.of(DrawOption.ANTIALIASING);
if (useZoom) {
- options.add(DrawOption.ZOOM);
+ drawOptions.add(DrawOption.ZOOM);
}
if (showGridWhenNeeded
&& ConfigurationManager.getInstance().readBoolean(IPlugInPort.EXPORT_GRID_KEY,
false)) {
- options.add(DrawOption.GRID);
+ drawOptions.add(DrawOption.GRID);
}
- plugInPort.draw((Graphics2D) g, options, null);
+ if (ConfigurationManager.getInstance().readBoolean(IPlugInPort.OUTLINE_KEY, false)) {
+ drawOptions.add(DrawOption.OUTLINE_MODE);
+ }
+ plugInPort.draw((Graphics2D) g, drawOptions, null);
}
@Override
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 992027cd..6a705ddc 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
@@ -5,6 +5,8 @@ import java.awt.Color;
import java.awt.Stroke;
import java.awt.Toolkit;
+import org.diylc.core.Theme;
+
public class Constants {
public static final int PIXELS_PER_INCH = 200;
@@ -15,4 +17,9 @@ public class Constants {
public static final Stroke DASHED_STROKE = new BasicStroke(1.0f, BasicStroke.CAP_BUTT,
BasicStroke.JOIN_MITER, 10f, new float[] { 2.0f }, 0.0f);
+
+ public static final Theme DEFAULT_THEME = new Theme("Light", Constants.CANVAS_COLOR, new Color(
+ 240, 240, 240), Color.black);
+
+ public static final Color TRANSPARENT_COLOR = new Color(0, 0, 0, 0);
}
diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/test/org/diylc/components/MockDIYComponent.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/test/org/diylc/components/MockDIYComponent.java
index 7eb82402..7752c5bd 100644
--- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/test/org/diylc/components/MockDIYComponent.java
+++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/test/org/diylc/components/MockDIYComponent.java
@@ -133,8 +133,8 @@ public class MockDIYComponent implements IDIYComponent {
}
@Override
- public void draw(Graphics2D g2d, ComponentState componentState, Project project,
- IDrawingObserver drawingObserver) {
+ public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode,
+ Project project, IDrawingObserver drawingObserver) {
g2d.setColor(componentState.equals(ComponentState.SELECTED) ? color : color.darker());
g2d.fillRect(leftTopCorner.x, leftTopCorner.y, 200, 50);
}
diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/themes/Blueprint.xml b/ diy-layout-creator --username bancika@gmail.com/DIYLC/themes/Blueprint.xml
index 8e74cee5..bd5af8ab 100644
--- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/themes/Blueprint.xml
+++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/themes/Blueprint.xml
@@ -12,4 +12,10 @@
193
255
+
+ 255
+ 255
+ 255
+ 255
+
\ No newline at end of file
diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/themes/Dark.xml b/ diy-layout-creator --username bancika@gmail.com/DIYLC/themes/Dark.xml
index ca9d5444..ef5b0634 100644
--- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/themes/Dark.xml
+++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/themes/Dark.xml
@@ -12,4 +12,10 @@
40
255
+
+ 255
+ 255
+ 255
+ 255
+
\ No newline at end of file
diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/themes/Light.xml b/ diy-layout-creator --username bancika@gmail.com/DIYLC/themes/Light.xml
index cfdc69d9..d2841ca7 100644
--- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/themes/Light.xml
+++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/themes/Light.xml
@@ -1,15 +1,21 @@
- Light
-
- 255
- 255
- 255
- 255
-
-
- 240
- 240
- 240
- 240
-
+ Light
+
+ 255
+ 255
+ 255
+ 255
+
+
+ 240
+ 240
+ 240
+ 240
+
+
+ 0
+ 0
+ 0
+ 255
+
\ No newline at end of file
diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/update.xml b/ diy-layout-creator --username bancika@gmail.com/DIYLC/update.xml
index 483339e8..0e6d34ea 100644
--- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/update.xml
+++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/update.xml
@@ -309,5 +309,29 @@
http://code.google.com/p/diy-layout-creator/downloads/list
+
+
+ 3
+ 0
+ 9
+
+ 2011-03-03 20:00:00.000 CET
+
+
+
+ BUG_FIX
+ Auto-created solder pads aren't assigned with default settings and name
+
+
+ IMPROVEMENT
+
+
+
+ NEW_FEATURE
+ Outline mode that resembles PCB silkscreen
+
+
+ http://code.google.com/p/diy-layout-creator/downloads/list
+
\ No newline at end of file
diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/.classpath b/ diy-layout-creator --username bancika@gmail.com/Library/.classpath
index 85279d70..1685d3ac 100644
--- a/ diy-layout-creator --username bancika@gmail.com/Library/.classpath
+++ b/ diy-layout-creator --username bancika@gmail.com/Library/.classpath
@@ -4,6 +4,7 @@
+
diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/lib/bancika-gui-framework.jar b/ diy-layout-creator --username bancika@gmail.com/Library/lib/bancika-gui-framework.jar
new file mode 100644
index 00000000..1ccbbb07
Binary files /dev/null and b/ diy-layout-creator --username bancika@gmail.com/Library/lib/bancika-gui-framework.jar differ
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 2815b211..0782abf3 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 23300cac..f645c5b5 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
@@ -5,8 +5,8 @@ import java.awt.Color;
import java.awt.Composite;
import java.awt.Graphics2D;
import java.awt.Point;
-import java.awt.Shape;
+import org.diylc.common.IPlugInPort;
import org.diylc.common.ObjectCache;
import org.diylc.components.AbstractTransparentComponent;
import org.diylc.core.ComponentState;
@@ -17,6 +17,9 @@ import org.diylc.core.VisibilityPolicy;
import org.diylc.core.annotations.EditableProperty;
import org.diylc.core.measures.Size;
import org.diylc.core.measures.SizeUnit;
+import org.diylc.utils.Constants;
+
+import com.diyfever.gui.miscutils.ConfigurationManager;
public abstract class AbstractBoard extends AbstractTransparentComponent {
@@ -38,7 +41,7 @@ public abstract class AbstractBoard extends AbstractTransparentComponent
protected Color borderColor = BORDER_COLOR;
@Override
- public void draw(Graphics2D g2d, ComponentState componentState, Project project,
+ public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project,
IDrawingObserver drawingObserver) {
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
if (componentState != ComponentState.DRAGGING) {
diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/EyeletBoard.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/EyeletBoard.java
index c40703fd..cf7185a0 100644
--- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/EyeletBoard.java
+++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/EyeletBoard.java
@@ -41,14 +41,14 @@ public class EyeletBoard extends AbstractBoard {
}
@Override
- public void draw(Graphics2D g2d, ComponentState componentState, Project project,
- IDrawingObserver drawingObserver) {
+ public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode,
+ Project project, IDrawingObserver drawingObserver) {
Shape clip = g2d.getClip();
if (checkPointsClipped(clip) && !clip.contains(firstPoint.x, secondPoint.y)
&& !clip.contains(secondPoint.x, firstPoint.y)) {
return;
}
- super.draw(g2d, componentState, project, drawingObserver);
+ super.draw(g2d, componentState, outlineMode, project, drawingObserver);
if (componentState != ComponentState.DRAGGING) {
if (alpha < MAX_ALPHA) {
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha
diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/MarshallPerfBoard.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/MarshallPerfBoard.java
index e635e753..fc67654a 100644
--- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/MarshallPerfBoard.java
+++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/MarshallPerfBoard.java
@@ -37,14 +37,14 @@ public class MarshallPerfBoard extends AbstractBoard {
}
@Override
- public void draw(Graphics2D g2d, ComponentState componentState, Project project,
- IDrawingObserver drawingObserver) {
+ public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode,
+ Project project, IDrawingObserver drawingObserver) {
Shape clip = g2d.getClip();
if (checkPointsClipped(clip) && !clip.contains(firstPoint.x, secondPoint.y)
&& !clip.contains(secondPoint.x, firstPoint.y)) {
return;
}
- super.draw(g2d, componentState, project, drawingObserver);
+ super.draw(g2d, componentState, outlineMode, project, drawingObserver);
if (componentState != ComponentState.DRAGGING) {
if (alpha < MAX_ALPHA) {
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha
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 461f9863..31321ea5 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
@@ -33,14 +33,14 @@ public class PerfBoard extends AbstractBoard {
protected Color padColor = COPPER_COLOR;
@Override
- public void draw(Graphics2D g2d, ComponentState componentState, Project project,
- IDrawingObserver drawingObserver) {
+ public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode,
+ Project project, IDrawingObserver drawingObserver) {
Shape clip = g2d.getClip();
if (checkPointsClipped(clip) && !clip.contains(firstPoint.x, secondPoint.y)
&& !clip.contains(secondPoint.x, firstPoint.y)) {
return;
}
- super.draw(g2d, componentState, project, drawingObserver);
+ super.draw(g2d, componentState, outlineMode, project, drawingObserver);
if (componentState != ComponentState.DRAGGING) {
if (alpha < MAX_ALPHA) {
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha
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 a17a1b61..e1b3b15f 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
@@ -35,14 +35,14 @@ public class VeroBoard extends AbstractBoard {
protected OrientationHV orientation = OrientationHV.HORIZONTAL;
@Override
- public void draw(Graphics2D g2d, ComponentState componentState, Project project,
- IDrawingObserver drawingObserver) {
+ public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode,
+ Project project, IDrawingObserver drawingObserver) {
Shape clip = g2d.getClip();
if (checkPointsClipped(clip) && !clip.contains(firstPoint.x, secondPoint.y)
&& !clip.contains(secondPoint.x, firstPoint.y)) {
return;
}
- super.draw(g2d, componentState, project, drawingObserver);
+ super.draw(g2d, componentState, outlineMode, project, drawingObserver);
if (componentState != ComponentState.DRAGGING) {
Composite oldComposite = g2d.getComposite();
if (alpha < MAX_ALPHA) {
diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/Eyelet.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/Eyelet.java
index 5614bda1..71103a93 100644
--- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/Eyelet.java
+++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/Eyelet.java
@@ -9,7 +9,6 @@ import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
import org.diylc.core.Project;
-import org.diylc.core.Theme;
import org.diylc.core.VisibilityPolicy;
import org.diylc.core.annotations.ComponentDescriptor;
import org.diylc.core.annotations.EditableProperty;
@@ -33,8 +32,8 @@ public class Eyelet extends AbstractComponent {
private String value = "";
@Override
- public void draw(Graphics2D g2d, ComponentState componentState, Project project,
- IDrawingObserver drawingObserver) {
+ public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode,
+ Project project, IDrawingObserver drawingObserver) {
if (checkPointsClipped(g2d.getClip())) {
return;
}
diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/SolderPad.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/SolderPad.java
index f1b59ae3..19492074 100644
--- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/SolderPad.java
+++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/SolderPad.java
@@ -32,8 +32,8 @@ public class SolderPad extends AbstractComponent {
private Type type = Type.ROUND;
@Override
- public void draw(Graphics2D g2d, ComponentState componentState, Project project,
- IDrawingObserver drawingObserver) {
+ public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode,
+ Project project, IDrawingObserver drawingObserver) {
if (checkPointsClipped(g2d.getClip())) {
return;
}
diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/TraceCut.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/TraceCut.java
index 106821f3..69b17433 100644
--- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/TraceCut.java
+++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/TraceCut.java
@@ -33,8 +33,8 @@ public class TraceCut extends AbstractComponent {
protected Point point = new Point(0, 0);
@Override
- public void draw(Graphics2D g2d, ComponentState componentState, Project project,
- IDrawingObserver drawingObserver) {
+ public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode,
+ Project project, IDrawingObserver drawingObserver) {
if (checkPointsClipped(g2d.getClip())) {
return;
}
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 e5f47aad..1010136e 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
@@ -8,6 +8,7 @@ import java.awt.Point;
import java.awt.Shape;
import java.awt.geom.RoundRectangle2D;
+import org.diylc.common.IPlugInPort;
import org.diylc.common.ObjectCache;
import org.diylc.components.AbstractTransparentComponent;
import org.diylc.core.ComponentState;
@@ -20,6 +21,9 @@ import org.diylc.core.annotations.ComponentDescriptor;
import org.diylc.core.annotations.EditableProperty;
import org.diylc.core.measures.Size;
import org.diylc.core.measures.SizeUnit;
+import org.diylc.utils.Constants;
+
+import com.diyfever.gui.miscutils.ConfigurationManager;
@ComponentDescriptor(name = "Mini Toggle Switch", category = "Electromechanical", author = "Branislav Stojkovic", description = "Panel mounted mini toggle switch", stretchable = false, zOrder = IDIYComponent.COMPONENT, instanceNamePrefix = "SW")
public class MiniToggleSwitch extends AbstractTransparentComponent {
@@ -166,8 +170,8 @@ public class MiniToggleSwitch extends AbstractTransparentComponent {
private Point point = new Point(0, 0);
@Override
- public void draw(Graphics2D g2d, ComponentState componentState, Project project,
- IDrawingObserver drawingObserver) {
+ public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode,
+ Project project, IDrawingObserver drawingObserver) {
List bom = BomMaker.getInstance().createBom(project.getComponents());
// Cleanup entries that do not have a value set.
Iterator iterator = bom.iterator();
diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/Image.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/Image.java
index eaea7448..0bdd32e6 100644
--- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/Image.java
+++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/Image.java
@@ -13,7 +13,6 @@ import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
import org.diylc.core.Project;
-import org.diylc.core.Theme;
import org.diylc.core.VisibilityPolicy;
import org.diylc.core.annotations.ComponentDescriptor;
import org.diylc.core.annotations.EditableProperty;
@@ -42,8 +41,8 @@ public class Image extends AbstractTransparentComponent {
private byte scale = 50;
@Override
- public void draw(Graphics2D g2d, ComponentState componentState, Project project,
- IDrawingObserver drawingObserver) {
+ public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode,
+ Project project, IDrawingObserver drawingObserver) {
double s = 1d * scale / DEFAULT_SCALE;
Point endPoint = new Point((int) (image.getIconWidth() * s),
(int) (image.getIconHeight() * s));
diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/Label.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/Label.java
index d8f4a071..7e7bb802 100644
--- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/Label.java
+++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/Label.java
@@ -30,8 +30,8 @@ public class Label extends AbstractComponent {
private boolean center = true;
@Override
- public void draw(Graphics2D g2d, ComponentState componentState, Project project,
- IDrawingObserver drawingObserver) {
+ public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode,
+ Project project, IDrawingObserver drawingObserver) {
g2d.setColor(componentState == ComponentState.SELECTED ? LABEL_COLOR_SELECTED : color);
g2d.setFont(font);
FontMetrics fontMetrics = g2d.getFontMetrics();
diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/AxialElectrolyticCapacitor.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/AxialElectrolyticCapacitor.java
index c0fbf7bf..71472d91 100644
--- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/AxialElectrolyticCapacitor.java
+++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/AxialElectrolyticCapacitor.java
@@ -5,6 +5,7 @@ import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.geom.Rectangle2D;
+import org.diylc.common.IPlugInPort;
import org.diylc.common.ObjectCache;
import org.diylc.components.AbstractLeadedComponent;
import org.diylc.core.CreationMethod;
@@ -16,6 +17,9 @@ import org.diylc.core.measures.Capacitance;
import org.diylc.core.measures.CapacitanceUnit;
import org.diylc.core.measures.Size;
import org.diylc.core.measures.SizeUnit;
+import org.diylc.utils.Constants;
+
+import com.diyfever.gui.miscutils.ConfigurationManager;
@ComponentDescriptor(name = "Electrolytic Capacitor (axial)", author = "Branislav Stojkovic", category = "Passive", creationMethod = CreationMethod.POINT_BY_POINT, instanceNamePrefix = "C", description = "Axial electrolytic capacitor, similar to Sprague Atom, F&T, etc", zOrder = IDIYComponent.COMPONENT)
public class AxialElectrolyticCapacitor extends AbstractLeadedComponent {
@@ -118,15 +122,24 @@ public class AxialElectrolyticCapacitor extends AbstractLeadedComponent
}
@Override
- protected void decorateComponentBody(Graphics2D g2d) {
+ protected void decorateComponentBody(Graphics2D g2d, boolean outlineMode) {
if (polarized) {
// Draw + sign.
g2d.setColor(getBorderColor());
diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/PotentiometerPanel.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/PotentiometerPanel.java
index e4ce854f..cc84a5c2 100644
--- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/PotentiometerPanel.java
+++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/PotentiometerPanel.java
@@ -159,8 +159,8 @@ public class PotentiometerPanel extends AbstractPotentiometer {
}
@Override
- public void draw(Graphics2D g2d, ComponentState componentState, Project project,
- IDrawingObserver drawingObserver) {
+ public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode,
+ Project project, IDrawingObserver drawingObserver) {
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
for (Area shape : getBody()) {
if (shape != null) {
diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/RadialElectrolytic.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/RadialElectrolytic.java
index e3326209..901a587f 100644
--- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/RadialElectrolytic.java
+++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/RadialElectrolytic.java
@@ -7,6 +7,7 @@ import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Rectangle2D;
+import org.diylc.common.IPlugInPort;
import org.diylc.common.ObjectCache;
import org.diylc.components.AbstractLeadedComponent;
import org.diylc.core.CreationMethod;
@@ -18,6 +19,9 @@ import org.diylc.core.measures.Capacitance;
import org.diylc.core.measures.CapacitanceUnit;
import org.diylc.core.measures.Size;
import org.diylc.core.measures.SizeUnit;
+import org.diylc.utils.Constants;
+
+import com.diyfever.gui.miscutils.ConfigurationManager;
@ComponentDescriptor(name = "Electrolytic Capacitor", author = "Branislav Stojkovic", category = "Passive", creationMethod = CreationMethod.POINT_BY_POINT, instanceNamePrefix = "C", description = "Vertical mounted electrolytic capacitor, polarized or bipolar", zOrder = IDIYComponent.COMPONENT)
public class RadialElectrolytic extends AbstractLeadedComponent {
@@ -86,16 +90,25 @@ public class RadialElectrolytic extends AbstractLeadedComponent {
}
@Override
- protected void decorateComponentBody(Graphics2D g2d) {
+ protected void decorateComponentBody(Graphics2D g2d, boolean outlineMode) {
if (polarized) {
int totalDiameter = getClosestOdd(getLength().convertToPixels());
- Area area = new Area(getBodyShape());
- area
- .subtract(new Area(new Rectangle2D.Double(0, 0, totalDiameter * 0.8,
- totalDiameter)));
- g2d.setColor(markerColor);
- g2d.fill(area);
- g2d.setColor(tickColor);
+ if (!outlineMode) {
+ Area area = new Area(getBodyShape());
+ area.subtract(new Area(new Rectangle2D.Double(0, 0, totalDiameter * 0.8,
+ totalDiameter)));
+ g2d.setColor(markerColor);
+ g2d.fill(area);
+ }
+ Color finalTickColor;
+ if (outlineMode) {
+ Theme theme = (Theme) ConfigurationManager.getInstance().readObject(
+ IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME);
+ finalTickColor = theme.getOutlineColor();
+ } else {
+ finalTickColor = tickColor;
+ }
+ g2d.setColor(finalTickColor);
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(2));
g2d.drawLine((int) (totalDiameter * 0.9), totalDiameter / 2
- (int) (totalDiameter * 0.05), (int) (totalDiameter * 0.9), totalDiameter / 2
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 e9556419..d47e14af 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
@@ -104,9 +104,9 @@ public class Resistor extends AbstractLeadedComponent {
}
@Override
- protected void decorateComponentBody(Graphics2D g2d) {
+ protected void decorateComponentBody(Graphics2D g2d, boolean outlineMode) {
// int width = getWidth().convertToPixels();
- if (colorCode == ResistorColorCode.NONE) {
+ if (colorCode == ResistorColorCode.NONE || outlineMode) {
return;
}
int height = getClosestOdd(getWidth().convertToPixels());
diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/TrimmerPotentiometer.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/TrimmerPotentiometer.java
index 8b03bc26..f117ccf7 100644
--- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/TrimmerPotentiometer.java
+++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/TrimmerPotentiometer.java
@@ -241,8 +241,8 @@ public class TrimmerPotentiometer extends AbstractPotentiometer {
}
@Override
- public void draw(Graphics2D g2d, ComponentState componentState, Project project,
- IDrawingObserver drawingObserver) {
+ public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode,
+ Project project, IDrawingObserver drawingObserver) {
if (checkPointsClipped(g2d.getClip())) {
return;
}
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 84cf3f10..3ae3d17f 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
@@ -12,6 +12,7 @@ import java.awt.geom.Ellipse2D;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
+import org.diylc.common.IPlugInPort;
import org.diylc.common.ObjectCache;
import org.diylc.common.Orientation;
import org.diylc.components.AbstractTransparentComponent;
@@ -19,11 +20,15 @@ import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
import org.diylc.core.Project;
+import org.diylc.core.Theme;
import org.diylc.core.VisibilityPolicy;
import org.diylc.core.annotations.ComponentDescriptor;
import org.diylc.core.annotations.EditableProperty;
import org.diylc.core.measures.Size;
import org.diylc.core.measures.SizeUnit;
+import org.diylc.utils.Constants;
+
+import com.diyfever.gui.miscutils.ConfigurationManager;
@ComponentDescriptor(name = "DIL IC", author = "Branislav Stojkovic", category = "Semiconductors", instanceNamePrefix = "IC", description = "IC with rectangular housing and two parallel rows of pins", stretchable = false, zOrder = IDIYComponent.COMPONENT)
public class DIL_IC extends AbstractTransparentComponent {
@@ -248,38 +253,69 @@ public class DIL_IC extends AbstractTransparentComponent {
}
@Override
- public void draw(Graphics2D g2d, ComponentState componentState, Project project,
- IDrawingObserver drawingObserver) {
+ public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode,
+ Project project, IDrawingObserver drawingObserver) {
if (checkPointsClipped(g2d.getClip())) {
return;
}
- int pinSize = (int) PIN_SIZE.convertToPixels() / 2 * 2;
Area mainArea = getBody()[0];
- for (Point point : controlPoints) {
- g2d.setColor(PIN_COLOR);
- g2d.fillRect(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
- g2d.setColor(PIN_BORDER_COLOR);
- g2d.drawRect(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
+ if (!outlineMode) {
+ int pinSize = (int) PIN_SIZE.convertToPixels() / 2 * 2;
+ for (Point point : controlPoints) {
+ g2d.setColor(PIN_COLOR);
+ g2d.fillRect(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
+ g2d.setColor(PIN_BORDER_COLOR);
+ g2d.drawRect(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
+ }
}
Composite oldComposite = g2d.getComposite();
if (alpha < MAX_ALPHA) {
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha
/ MAX_ALPHA));
}
- g2d.setColor(BODY_COLOR);
+ g2d.setColor(outlineMode ? Constants.TRANSPARENT_COLOR : BODY_COLOR);
g2d.fill(mainArea);
g2d.setComposite(oldComposite);
- g2d.setColor(componentState == ComponentState.SELECTED
- || componentState == ComponentState.DRAGGING ? SELECTION_COLOR : BORDER_COLOR);
+
+ Color finalBorderColor;
+ if (outlineMode) {
+ Theme theme = (Theme) ConfigurationManager.getInstance().readObject(
+ IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME);
+ finalBorderColor = componentState == ComponentState.SELECTED
+ || componentState == ComponentState.DRAGGING ? SELECTION_COLOR : theme
+ .getOutlineColor();
+ } else {
+ finalBorderColor = componentState == ComponentState.SELECTED
+ || componentState == ComponentState.DRAGGING ? SELECTION_COLOR : BORDER_COLOR;
+ }
+ g2d.setColor(finalBorderColor);
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
- g2d.draw(mainArea);
- if (getBody()[1] != null) {
- g2d.setColor(INDENT_COLOR);
- g2d.fill(getBody()[1]);
+ if (outlineMode) {
+ Area area = new Area(mainArea);
+ area.subtract(getBody()[1]);
+ g2d.draw(area);
+ } else {
+ g2d.draw(mainArea);
+ if (getBody()[1] != null) {
+ g2d.setColor(INDENT_COLOR);
+ g2d.fill(getBody()[1]);
+ }
}
// Draw label.
g2d.setFont(LABEL_FONT);
- g2d.setColor(LABEL_COLOR);
+ Color finalLabelColor;
+ if (outlineMode) {
+ Theme theme = (Theme) ConfigurationManager.getInstance().readObject(
+ IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME);
+ finalLabelColor = componentState == ComponentState.SELECTED
+ || componentState == ComponentState.DRAGGING ? LABEL_COLOR_SELECTED : theme
+ .getOutlineColor();
+ } else {
+ finalLabelColor = componentState == ComponentState.SELECTED
+ || componentState == ComponentState.DRAGGING ? LABEL_COLOR_SELECTED
+ : LABEL_COLOR;
+ }
+ g2d.setColor(finalLabelColor);
FontMetrics fontMetrics = g2d.getFontMetrics(g2d.getFont());
Rectangle2D rect = fontMetrics.getStringBounds(getName(), g2d);
int textHeight = (int) (rect.getHeight());
diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DiodePlastic.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DiodePlastic.java
index 107351d1..870ec92b 100644
--- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DiodePlastic.java
+++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DiodePlastic.java
@@ -5,13 +5,18 @@ import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.geom.Rectangle2D;
+import org.diylc.common.IPlugInPort;
import org.diylc.components.AbstractLeadedComponent;
import org.diylc.core.CreationMethod;
import org.diylc.core.IDIYComponent;
+import org.diylc.core.Theme;
import org.diylc.core.annotations.ComponentDescriptor;
import org.diylc.core.annotations.EditableProperty;
import org.diylc.core.measures.Size;
import org.diylc.core.measures.SizeUnit;
+import org.diylc.utils.Constants;
+
+import com.diyfever.gui.miscutils.ConfigurationManager;
@ComponentDescriptor(name = "Diode (plastic)", author = "Branislav Stojkovic", category = "Semiconductors", creationMethod = CreationMethod.POINT_BY_POINT, instanceNamePrefix = "D", description = "Plastic diode, like most rectifier, zener, schottky, etc.", zOrder = IDIYComponent.COMPONENT)
public class DiodePlastic extends AbstractLeadedComponent {
@@ -20,7 +25,7 @@ public class DiodePlastic extends AbstractLeadedComponent {
public static Size DEFAULT_WIDTH = new Size(1d / 4, SizeUnit.in);
public static Size DEFAULT_HEIGHT = new Size(1d / 8, SizeUnit.in);
- public static Size MARKER_WIDTH = new Size(1.5d, SizeUnit.mm);
+ public static Size MARKER_WIDTH = new Size(1d, SizeUnit.mm);
public static Color BODY_COLOR = Color.darkGray;
public static Color MARKER_COLOR = Color.decode("#DDDDDD");
public static Color LABEL_COLOR = Color.white;
@@ -80,8 +85,16 @@ public class DiodePlastic extends AbstractLeadedComponent {
}
@Override
- protected void decorateComponentBody(Graphics2D g2d) {
- g2d.setColor(markerColor);
+ protected void decorateComponentBody(Graphics2D g2d, boolean outlineMode) {
+ Color finalMarkerColor;
+ if (outlineMode) {
+ Theme theme = (Theme) ConfigurationManager.getInstance().readObject(
+ IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME);
+ finalMarkerColor = theme.getOutlineColor();
+ } else {
+ finalMarkerColor = markerColor;
+ }
+ g2d.setColor(finalMarkerColor);
int width = (int) getLength().convertToPixels();
int markerWidth = (int) MARKER_WIDTH.convertToPixels();
g2d.fillRect(width - markerWidth, 0, markerWidth, getClosestOdd(getWidth()
diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/LED.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/LED.java
index bc41eaaf..3421ec18 100644
--- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/LED.java
+++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/LED.java
@@ -83,13 +83,15 @@ public class LED extends AbstractLeadedComponent {
}
@Override
- protected void decorateComponentBody(Graphics2D g2d) {
- int size = getClosestOdd((int) (getLength().convertToPixels() * 1.2));
- int innerSize = getClosestOdd(getLength().convertToPixels());
- int x = (size - innerSize) / 2;
- Shape s = new Ellipse2D.Double(x, x, innerSize, innerSize);
- g2d.setColor(getBorderColor());
- g2d.draw(s);
+ protected void decorateComponentBody(Graphics2D g2d, boolean outlineMode) {
+ if (!outlineMode) {
+ int size = getClosestOdd((int) (getLength().convertToPixels() * 1.2));
+ int innerSize = getClosestOdd(getLength().convertToPixels());
+ int x = (size - innerSize) / 2;
+ Shape s = new Ellipse2D.Double(x, x, innerSize, innerSize);
+ g2d.setColor(getBorderColor());
+ g2d.draw(s);
+ }
}
@EditableProperty(name = "Size")
diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/TransistorTO220.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/TransistorTO220.java
index 5af95c74..a8061358 100644
--- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/TransistorTO220.java
+++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/TransistorTO220.java
@@ -10,6 +10,7 @@ import java.awt.Rectangle;
import java.awt.Shape;
import java.awt.geom.Rectangle2D;
+import org.diylc.common.IPlugInPort;
import org.diylc.common.ObjectCache;
import org.diylc.common.Orientation;
import org.diylc.components.AbstractTransparentComponent;
@@ -23,6 +24,9 @@ import org.diylc.core.annotations.ComponentDescriptor;
import org.diylc.core.annotations.EditableProperty;
import org.diylc.core.measures.Size;
import org.diylc.core.measures.SizeUnit;
+import org.diylc.utils.Constants;
+
+import com.diyfever.gui.miscutils.ConfigurationManager;
@ComponentDescriptor(name = "Transistor (TO-220 package)", author = "Branislav Stojkovic", category = "Semiconductors", instanceNamePrefix = "Q", description = "Transistors with metal tab for heat sink mounting", stretchable = false, zOrder = IDIYComponent.COMPONENT)
public class TransistorTO220 extends AbstractTransparentComponent {
@@ -40,7 +44,7 @@ public class TransistorTO220 extends AbstractTransparentComponent {
public static Size PIN_SPACING = new Size(0.1d, SizeUnit.in);
public static Size BODY_WIDTH = new Size(0.4d, SizeUnit.in);
public static Size BODY_HEIGHT = new Size(4.5d, SizeUnit.mm);
- public static Size TAB_THICKNESS = new Size(0.05d, SizeUnit.in);
+ public static Size TAB_THICKNESS = new Size(1d, SizeUnit.mm);
private String value = "";
private Orientation orientation = Orientation.DEFAULT;
@@ -173,8 +177,8 @@ public class TransistorTO220 extends AbstractTransparentComponent {
}
@Override
- public void draw(Graphics2D g2d, ComponentState componentState, Project project,
- IDrawingObserver drawingObserver) {
+ public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode,
+ Project project, IDrawingObserver drawingObserver) {
if (checkPointsClipped(g2d.getClip())) {
return;
}
@@ -186,29 +190,63 @@ public class TransistorTO220 extends AbstractTransparentComponent {
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha
/ MAX_ALPHA));
}
- g2d.setColor(bodyColor);
+ g2d.setColor(outlineMode ? Constants.TRANSPARENT_COLOR : bodyColor);
g2d.fill(mainArea);
- g2d.setColor(tabColor);
+ Color finalTabColor;
+ if (outlineMode) {
+ Theme theme = (Theme) ConfigurationManager.getInstance().readObject(
+ IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME);
+ finalTabColor = theme.getOutlineColor();
+ } else {
+ finalTabColor = tabColor;
+ }
+ g2d.setColor(finalTabColor);
g2d.fill(tabArea);
g2d.setComposite(oldComposite);
- g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
- g2d.setColor(tabBorderColor);
- g2d.draw(tabArea);
- g2d.setColor(componentState == ComponentState.SELECTED
- || componentState == ComponentState.DRAGGING ? SELECTION_COLOR : borderColor);
+ if (!outlineMode) {
+ g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
+ g2d.setColor(tabBorderColor);
+ g2d.draw(tabArea);
+ }
+ Color finalBorderColor;
+ if (outlineMode) {
+ Theme theme = (Theme) ConfigurationManager.getInstance().readObject(
+ IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME);
+ finalBorderColor = componentState == ComponentState.SELECTED
+ || componentState == ComponentState.DRAGGING ? SELECTION_COLOR : theme
+ .getOutlineColor();
+ } else {
+ finalBorderColor = componentState == ComponentState.SELECTED
+ || componentState == ComponentState.DRAGGING ? SELECTION_COLOR : borderColor;
+ }
+ g2d.setColor(finalBorderColor);
g2d.draw(mainArea);
// Draw pins.
- for (Point point : controlPoints) {
- g2d.setColor(PIN_COLOR);
- g2d.fillOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
- g2d.setColor(PIN_BORDER_COLOR);
- g2d.drawOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
+ if (!outlineMode) {
+ for (Point point : controlPoints) {
+ g2d.setColor(PIN_COLOR);
+ g2d.fillOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
+ g2d.setColor(PIN_BORDER_COLOR);
+ g2d.drawOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
+ }
}
// Draw label.
g2d.setFont(LABEL_FONT);
- g2d.setColor(LABEL_COLOR);
+ Color finalLabelColor;
+ if (outlineMode) {
+ Theme theme = (Theme) ConfigurationManager.getInstance().readObject(
+ IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME);
+ finalLabelColor = componentState == ComponentState.SELECTED
+ || componentState == ComponentState.DRAGGING ? LABEL_COLOR_SELECTED : theme
+ .getOutlineColor();
+ } else {
+ finalLabelColor = componentState == ComponentState.SELECTED
+ || componentState == ComponentState.DRAGGING ? LABEL_COLOR_SELECTED
+ : LABEL_COLOR;
+ }
+ g2d.setColor(finalLabelColor);
FontMetrics fontMetrics = g2d.getFontMetrics(g2d.getFont());
Rectangle2D rect = fontMetrics.getStringBounds(getName(), g2d);
int textHeight = (int) (rect.getHeight());
diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/TransistorTO92.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/TransistorTO92.java
index 8890e497..2966c3bb 100644
--- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/TransistorTO92.java
+++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/TransistorTO92.java
@@ -11,6 +11,7 @@ import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Rectangle2D;
+import org.diylc.common.IPlugInPort;
import org.diylc.common.ObjectCache;
import org.diylc.common.Orientation;
import org.diylc.components.AbstractTransparentComponent;
@@ -24,6 +25,9 @@ import org.diylc.core.annotations.ComponentDescriptor;
import org.diylc.core.annotations.EditableProperty;
import org.diylc.core.measures.Size;
import org.diylc.core.measures.SizeUnit;
+import org.diylc.utils.Constants;
+
+import com.diyfever.gui.miscutils.ConfigurationManager;
@ComponentDescriptor(name = "Transistor (TO-92 package)", author = "Branislav Stojkovic", category = "Semiconductors", instanceNamePrefix = "Q", description = "Transistor with small plastic or epoxy body", stretchable = false, zOrder = IDIYComponent.COMPONENT)
public class TransistorTO92 extends AbstractTransparentComponent {
@@ -165,8 +169,8 @@ public class TransistorTO92 extends AbstractTransparentComponent {
}
@Override
- public void draw(Graphics2D g2d, ComponentState componentState, Project project,
- IDrawingObserver drawingObserver) {
+ public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode,
+ Project project, IDrawingObserver drawingObserver) {
if (checkPointsClipped(g2d.getClip())) {
return;
}
@@ -177,24 +181,48 @@ public class TransistorTO92 extends AbstractTransparentComponent {
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha
/ MAX_ALPHA));
}
- g2d.setColor(bodyColor);
+ g2d.setColor(outlineMode ? Constants.TRANSPARENT_COLOR : bodyColor);
g2d.fill(mainArea);
g2d.setComposite(oldComposite);
- g2d.setColor(componentState == ComponentState.SELECTED
- || componentState == ComponentState.DRAGGING ? SELECTION_COLOR : borderColor);
+ Color finalBorderColor;
+ if (outlineMode) {
+ Theme theme = (Theme) ConfigurationManager.getInstance().readObject(
+ IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME);
+ finalBorderColor = componentState == ComponentState.SELECTED
+ || componentState == ComponentState.DRAGGING ? SELECTION_COLOR : theme
+ .getOutlineColor();
+ } else {
+ finalBorderColor = componentState == ComponentState.SELECTED
+ || componentState == ComponentState.DRAGGING ? SELECTION_COLOR : borderColor;
+ }
+ g2d.setColor(finalBorderColor);
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
g2d.draw(mainArea);
- for (Point point : controlPoints) {
- g2d.setColor(PIN_COLOR);
- g2d.fillOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
- g2d.setColor(PIN_BORDER_COLOR);
- g2d.drawOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
+ if (!outlineMode) {
+ for (Point point : controlPoints) {
+ g2d.setColor(PIN_COLOR);
+ g2d.fillOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
+ g2d.setColor(PIN_BORDER_COLOR);
+ g2d.drawOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
+ }
}
// Draw label.
g2d.setFont(LABEL_FONT);
- g2d.setColor(LABEL_COLOR);
+ Color finalLabelColor;
+ if (outlineMode) {
+ Theme theme = (Theme) ConfigurationManager.getInstance().readObject(
+ IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME);
+ finalLabelColor = componentState == ComponentState.SELECTED
+ || componentState == ComponentState.DRAGGING ? LABEL_COLOR_SELECTED : theme
+ .getOutlineColor();
+ } else {
+ finalLabelColor = componentState == ComponentState.SELECTED
+ || componentState == ComponentState.DRAGGING ? LABEL_COLOR_SELECTED
+ : LABEL_COLOR;
+ }
+ g2d.setColor(finalLabelColor);
FontMetrics fontMetrics = g2d.getFontMetrics(g2d.getFont());
Rectangle2D rect = fontMetrics.getStringBounds(getName(), g2d);
int textHeight = (int) (rect.getHeight());
diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/tube/TubeSocket.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/tube/TubeSocket.java
index 4b4243ca..235f2c30 100644
--- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/tube/TubeSocket.java
+++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/tube/TubeSocket.java
@@ -9,6 +9,7 @@ import java.awt.Shape;
import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
+import org.diylc.common.IPlugInPort;
import org.diylc.common.ObjectCache;
import org.diylc.common.Orientation;
import org.diylc.components.AbstractTransparentComponent;
@@ -16,11 +17,15 @@ import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
import org.diylc.core.Project;
+import org.diylc.core.Theme;
import org.diylc.core.VisibilityPolicy;
import org.diylc.core.annotations.ComponentDescriptor;
import org.diylc.core.annotations.EditableProperty;
import org.diylc.core.measures.Size;
import org.diylc.core.measures.SizeUnit;
+import org.diylc.utils.Constants;
+
+import com.diyfever.gui.miscutils.ConfigurationManager;
@ComponentDescriptor(name = "Tube Socket", author = "Branislav Stojkovic", category = "Tubes", instanceNamePrefix = "V", description = "Various types of tube/valve sockets", stretchable = false, zOrder = IDIYComponent.COMPONENT)
public class TubeSocket extends AbstractTransparentComponent {
@@ -186,8 +191,8 @@ public class TubeSocket extends AbstractTransparentComponent {
}
@Override
- public void draw(Graphics2D g2d, ComponentState componentState, Project project,
- IDrawingObserver drawingObserver) {
+ public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode,
+ Project project, IDrawingObserver drawingObserver) {
// g2d.setColor(Color.black);
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
// for (int i = 0; i < controlPoints.length; i++) {
@@ -202,22 +207,34 @@ public class TubeSocket extends AbstractTransparentComponent {
/ MAX_ALPHA));
}
if (componentState != ComponentState.DRAGGING) {
- g2d.setColor(BODY_COLOR);
+ g2d.setColor(outlineMode ? Constants.TRANSPARENT_COLOR : BODY_COLOR);
g2d.fill(body);
}
g2d.setComposite(oldComposite);
- g2d.setColor(componentState == ComponentState.SELECTED
- || componentState == ComponentState.DRAGGING ? SELECTION_COLOR : BORDER_COLOR);
+ Color finalBorderColor;
+ if (outlineMode) {
+ Theme theme = (Theme) ConfigurationManager.getInstance().readObject(
+ IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME);
+ finalBorderColor = componentState == ComponentState.SELECTED
+ || componentState == ComponentState.DRAGGING ? SELECTION_COLOR : theme
+ .getOutlineColor();
+ } else {
+ finalBorderColor = componentState == ComponentState.SELECTED
+ || componentState == ComponentState.DRAGGING ? SELECTION_COLOR : BORDER_COLOR;
+ }
+ g2d.setColor(finalBorderColor);
g2d.draw(body);
// Draw pins
- int pinSize = getClosestOdd(PIN_SIZE.convertToPixels());
- for (int i = 1; i < controlPoints.length; i++) {
- g2d.setColor(PIN_COLOR);
- g2d.fillOval(controlPoints[i].x - pinSize / 2, controlPoints[i].y - pinSize / 2,
- pinSize, pinSize);
- g2d.setColor(PIN_BORDER_COLOR);
- g2d.drawOval(controlPoints[i].x - pinSize / 2, controlPoints[i].y - pinSize / 2,
- pinSize, pinSize);
+ if (!outlineMode) {
+ int pinSize = getClosestOdd(PIN_SIZE.convertToPixels());
+ for (int i = 1; i < controlPoints.length; i++) {
+ g2d.setColor(PIN_COLOR);
+ g2d.fillOval(controlPoints[i].x - pinSize / 2, controlPoints[i].y - pinSize / 2,
+ pinSize, pinSize);
+ g2d.setColor(PIN_BORDER_COLOR);
+ g2d.drawOval(controlPoints[i].x - pinSize / 2, controlPoints[i].y - pinSize / 2,
+ pinSize, pinSize);
+ }
}
}