From 3fec176fc1d76cfc67f8dba73dabd294230a4bf4 Mon Sep 17 00:00:00 2001 From: Branislav Stojkovic Date: Tue, 18 Dec 2018 18:38:39 +0100 Subject: [PATCH] Added few chassis-related components under "Electromechanical" category fixed thin line style when zoomed in --- .../diylc/components/AbstractComponent.java | 3 +- .../src/org/diylc/presenter/G2DWrapper.java | 4 +- .../src/org/diylc/utils/Constants.java | 2 +- diylc/diylc-library/lib/diylc-core.jar | Bin 248207 -> 248284 bytes .../components/chassis/ChassisPanel.java | 97 ++++++++++++++ .../components/chassis/EllipticalCutout.java | 75 +++++++++++ .../components/chassis/PolygonalCutout.java | 125 ++++++++++++++++++ .../components/chassis/RectangularCutout.java | 92 +++++++++++++ .../diylc/components/connectivity/Line.java | 4 +- .../diylc/components/connectivity/Turret.java | 2 +- diylc/diylc-swing/lib/diylc-core.jar | Bin 248207 -> 248284 bytes diylc/diylc-swing/library/main.jar | Bin 433362 -> 443076 bytes diylc/diylc-swing/update.xml | 10 +- 13 files changed, 406 insertions(+), 8 deletions(-) create mode 100644 diylc/diylc-library/src/org/diylc/components/chassis/ChassisPanel.java create mode 100644 diylc/diylc-library/src/org/diylc/components/chassis/EllipticalCutout.java create mode 100644 diylc/diylc-library/src/org/diylc/components/chassis/PolygonalCutout.java create mode 100644 diylc/diylc-library/src/org/diylc/components/chassis/RectangularCutout.java diff --git a/diylc/diylc-core/src/org/diylc/components/AbstractComponent.java b/diylc/diylc-core/src/org/diylc/components/AbstractComponent.java index 6ed8628e..08fa9467 100644 --- a/diylc/diylc-core/src/org/diylc/components/AbstractComponent.java +++ b/diylc/diylc-core/src/org/diylc/components/AbstractComponent.java @@ -62,7 +62,8 @@ public abstract class AbstractComponent implements IDIYComponent { public static Color LABEL_COLOR = Color.black; public static Color LABEL_COLOR_SELECTED = Color.red; public static Font LABEL_FONT = new Font("Tahoma", Font.PLAIN, 14); - public static Color METAL_COLOR = Color.decode("#759DAF"); + public static Color METAL_COLOR = Color.decode("#759DAF"); + public static Color LIGHT_METAL_COLOR = Color.decode("#EEEEEE"); public static Color COPPER_COLOR = Color.decode("#DA8A67"); @EditableProperty(defaultable = false) diff --git a/diylc/diylc-core/src/org/diylc/presenter/G2DWrapper.java b/diylc/diylc-core/src/org/diylc/presenter/G2DWrapper.java index 81e267c2..09eaf0b2 100644 --- a/diylc/diylc-core/src/org/diylc/presenter/G2DWrapper.java +++ b/diylc/diylc-core/src/org/diylc/presenter/G2DWrapper.java @@ -403,11 +403,11 @@ class G2DWrapper extends Graphics2D implements IDrawingObserver { @Override public void setStroke(Stroke s) { - if (this.zoom > 1 && s.getClass() == BasicStroke.class) { + if (this.zoom > 1 && s instanceof BasicStroke) { BasicStroke bs = (BasicStroke) s; // make thin lines even thinner to compensate for zoom factor if (bs.getLineWidth() <= 2) - s = ObjectCache.getInstance().fetchBasicStroke((float) (bs.getLineWidth() / zoom)); + s = ObjectCache.getInstance().fetchStroke((float) (bs.getLineWidth() / zoom), bs.getDashArray(), bs.getDashPhase()); } canvasGraphics.setStroke(s); } diff --git a/diylc/diylc-core/src/org/diylc/utils/Constants.java b/diylc/diylc-core/src/org/diylc/utils/Constants.java index aebd686e..654fff3c 100644 --- a/diylc/diylc-core/src/org/diylc/utils/Constants.java +++ b/diylc/diylc-core/src/org/diylc/utils/Constants.java @@ -36,7 +36,7 @@ public class Constants { public static Color CANVAS_COLOR = Color.white; public static final Stroke DASHED_STROKE = new BasicStroke(1.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 10f, - new float[] {2.0f}, 0.0f); + new float[] {2.0f, 4.0f}, 0.0f); public static final Theme DEFAULT_THEME = new Theme("Light", Constants.CANVAS_COLOR, new Color(240, 240, 240), Color.black); diff --git a/diylc/diylc-library/lib/diylc-core.jar b/diylc/diylc-library/lib/diylc-core.jar index 0a8bc225aaaec8fa45c563662af1866a51a58cfc..8df580fe8711d9cc14d34ee9a99b024f9e61adf4 100644 GIT binary patch delta 17176 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

g}dBFdxC5&1?6rAcIBr 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 c7ad9wFbaJu11o)@mnU7l0QI3fy&^#A|> diff --git a/diylc/diylc-library/src/org/diylc/components/chassis/ChassisPanel.java b/diylc/diylc-library/src/org/diylc/components/chassis/ChassisPanel.java new file mode 100644 index 00000000..a43098c3 --- /dev/null +++ b/diylc/diylc-library/src/org/diylc/components/chassis/ChassisPanel.java @@ -0,0 +1,97 @@ +/* + + DIY Layout Creator (DIYLC). + Copyright (c) 2009-2018 held jointly by the individual authors. + + This file is part of DIYLC. + + DIYLC is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + DIYLC is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with DIYLC. If not, see . + +*/ +package org.diylc.components.chassis; + +import java.awt.AlphaComposite; +import java.awt.Composite; +import java.awt.Graphics2D; + +import org.diylc.common.ObjectCache; +import org.diylc.common.SimpleComponentTransformer; +import org.diylc.components.shapes.AbstractShape; +import org.diylc.core.ComponentState; +import org.diylc.core.IDIYComponent; +import org.diylc.core.IDrawingObserver; +import org.diylc.core.Project; +import org.diylc.core.annotations.BomPolicy; +import org.diylc.core.annotations.ComponentDescriptor; +import org.diylc.core.annotations.EditableProperty; +import org.diylc.core.measures.Size; +import org.diylc.core.measures.SizeUnit; + +@ComponentDescriptor(name = "Chassis Panel", author = "Branislav Stojkovic", category = "Electromechanical", + instanceNamePrefix = "CP", description = "One side of a chassis, with or withouth rounded edges", + zOrder = IDIYComponent.CHASSIS, bomPolicy = BomPolicy.SHOW_ONLY_TYPE_NAME, autoEdit = false, + transformer = SimpleComponentTransformer.class) +public class ChassisPanel extends AbstractShape { + + private static final long serialVersionUID = 1L; + + protected Size edgeRadius = new Size(0d, SizeUnit.mm); + + public ChassisPanel() { + this.color = LIGHT_METAL_COLOR; + this.borderColor = LIGHT_METAL_COLOR.darker(); + } + + @Override + public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project, + IDrawingObserver drawingObserver) { + g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke((int) borderThickness.convertToPixels())); + int radius = (int) edgeRadius.convertToPixels(); + 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(color); + g2d.fillRoundRect(firstPoint.x, firstPoint.y, secondPoint.x - firstPoint.x, secondPoint.y - firstPoint.y, radius, + radius); + g2d.setComposite(oldComposite); + } + // Do not track any changes that follow because the whole rect has been + // tracked so far. + drawingObserver.stopTracking(); + g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR + : borderColor); + g2d.drawRoundRect(firstPoint.x, firstPoint.y, secondPoint.x - firstPoint.x, secondPoint.y - firstPoint.y, radius, + radius); + } + + @EditableProperty(name = "Radius") + public Size getEdgeRadius() { + return edgeRadius; + } + + public void setEdgeRadius(Size edgeRadius) { + this.edgeRadius = edgeRadius; + } + + @Override + public void drawIcon(Graphics2D g2d, int width, int height) { + int factor = 32 / width; + g2d.setColor(LIGHT_METAL_COLOR); + g2d.fillRect(2 / factor, 4 / factor, width - 4 / factor, height - 8 / factor); + g2d.setColor(LIGHT_METAL_COLOR.darker()); + g2d.drawRect(2 / factor, 4 / factor, width - 4 / factor, height - 8 / factor); + } +} diff --git a/diylc/diylc-library/src/org/diylc/components/chassis/EllipticalCutout.java b/diylc/diylc-library/src/org/diylc/components/chassis/EllipticalCutout.java new file mode 100644 index 00000000..d1521142 --- /dev/null +++ b/diylc/diylc-library/src/org/diylc/components/chassis/EllipticalCutout.java @@ -0,0 +1,75 @@ +/* + * + * DIY Layout Creator (DIYLC). Copyright (c) 2009-2018 held jointly by the individual authors. + * + * This file is part of DIYLC. + * + * DIYLC is free software: you can redistribute it and/or modify it under the terms of the GNU + * General Public License as published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * DIYLC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even + * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General + * Public License for more details. + * + * You should have received a copy of the GNU General Public License along with DIYLC. If not, see + * . + */ +package org.diylc.components.chassis; + +import java.awt.AlphaComposite; +import java.awt.Composite; +import java.awt.Graphics2D; + +import org.diylc.common.ObjectCache; +import org.diylc.common.SimpleComponentTransformer; +import org.diylc.components.shapes.AbstractShape; +import org.diylc.core.ComponentState; +import org.diylc.core.IDIYComponent; +import org.diylc.core.IDrawingObserver; +import org.diylc.core.Project; +import org.diylc.core.annotations.BomPolicy; +import org.diylc.core.annotations.ComponentDescriptor; + +@ComponentDescriptor(name = "Elliptical Cutout", author = "Branislav Stojkovic", category = "Electromechanical", + instanceNamePrefix = "ELC", description = "Elliptical chassis cutout", zOrder = IDIYComponent.CHASSIS + 0.1, + bomPolicy = BomPolicy.NEVER_SHOW, autoEdit = false, transformer = SimpleComponentTransformer.class) +public class EllipticalCutout extends AbstractShape { + + private static final long serialVersionUID = 1L; + + public EllipticalCutout() { + this.borderColor = LIGHT_METAL_COLOR.darker(); + } + + @Override + public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project, + IDrawingObserver drawingObserver) { + g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke((int) borderThickness.convertToPixels())); + + 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(color); + g2d.fillOval(firstPoint.x, firstPoint.y, secondPoint.x - firstPoint.x, secondPoint.y - firstPoint.y); + g2d.setComposite(oldComposite); + } + // Do not track any changes that follow because the whole oval has been + // tracked so far. + drawingObserver.stopTracking(); + g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR + : borderColor); + g2d.drawOval(firstPoint.x, firstPoint.y, secondPoint.x - firstPoint.x, secondPoint.y - firstPoint.y); + } + + @Override + public void drawIcon(Graphics2D g2d, int width, int height) { + int factor = 32 / width; + g2d.setColor(COLOR); + g2d.fillOval(2 / factor, 2 / factor, width - 4 / factor, height - 4 / factor); + g2d.setColor(LIGHT_METAL_COLOR.darker()); + g2d.drawOval(2 / factor, 2 / factor, width - 4 / factor, height - 4 / factor); + } +} diff --git a/diylc/diylc-library/src/org/diylc/components/chassis/PolygonalCutout.java b/diylc/diylc-library/src/org/diylc/components/chassis/PolygonalCutout.java new file mode 100644 index 00000000..23dc1164 --- /dev/null +++ b/diylc/diylc-library/src/org/diylc/components/chassis/PolygonalCutout.java @@ -0,0 +1,125 @@ +/* + * + * DIY Layout Creator (DIYLC). Copyright (c) 2009-2018 held jointly by the individual authors. + * + * This file is part of DIYLC. + * + * DIYLC is free software: you can redistribute it and/or modify it under the terms of the GNU + * General Public License as published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * DIYLC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even + * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General + * Public License for more details. + * + * You should have received a copy of the GNU General Public License along with DIYLC. If not, see + * . + */ +package org.diylc.components.chassis; + +import java.awt.AlphaComposite; +import java.awt.Color; +import java.awt.Composite; +import java.awt.Graphics2D; +import java.awt.Point; +import java.util.Arrays; + +import org.diylc.common.ObjectCache; +import org.diylc.common.SimpleComponentTransformer; +import org.diylc.components.shapes.AbstractShape; +import org.diylc.core.ComponentState; +import org.diylc.core.IDIYComponent; +import org.diylc.core.IDrawingObserver; +import org.diylc.core.Project; +import org.diylc.core.annotations.BomPolicy; +import org.diylc.core.annotations.ComponentDescriptor; +import org.diylc.core.annotations.EditableProperty; + +@ComponentDescriptor(name = "Polygonal Cutout", author = "Branislav Stojkovic", category = "Electromechanical", + instanceNamePrefix = "POLYC", description = "Polygonal chassis cutout", zOrder = IDIYComponent.CHASSIS + 0.1, + bomPolicy = BomPolicy.NEVER_SHOW, autoEdit = false, transformer = SimpleComponentTransformer.class) +public class PolygonalCutout extends AbstractShape { + + private static final long serialVersionUID = 1L; + + protected PointCount pointCount = PointCount._4; + + public PolygonalCutout() { + super(); + this.borderColor = LIGHT_METAL_COLOR.darker(); + this.controlPoints = + new Point[] {new Point(0, 0), new Point(0, (int) DEFAULT_HEIGHT.convertToPixels()), + new Point((int) DEFAULT_WIDTH.convertToPixels(), (int) DEFAULT_HEIGHT.convertToPixels()), + new Point((int) DEFAULT_WIDTH.convertToPixels(), 0)}; + } + + @Override + public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project, + IDrawingObserver drawingObserver) { + g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke((int) borderThickness.convertToPixels())); + g2d.setColor(color); + int[] xPoints = new int[controlPoints.length]; + int[] yPoints = new int[controlPoints.length]; + for (int i = 0; i < controlPoints.length; i++) { + xPoints[i] = controlPoints[i].x; + yPoints[i] = controlPoints[i].y; + } + + Composite oldComposite = g2d.getComposite(); + if (this.alpha < MAX_ALPHA) { + g2d.setComposite(AlphaComposite.getInstance(3, 1.0F * this.alpha / MAX_ALPHA)); + } + g2d.fillPolygon(xPoints, yPoints, controlPoints.length); + g2d.setComposite(oldComposite); + + // Do not track any changes that follow because the whole board has been + // tracked so far. + drawingObserver.stopTracking(); + Color lineColor = + componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR + : borderColor; + g2d.setColor(lineColor); + g2d.drawPolygon(xPoints, yPoints, controlPoints.length); + } + + @EditableProperty(name = "Edges") + public PointCount getPointCount() { + return pointCount; + } + + public void setPointCount(PointCount pointCount) { + if (this.pointCount == pointCount) + return; + int oldPointCount = Integer.parseInt(this.pointCount.toString()); + int newPointCount = Integer.parseInt(pointCount.toString()); + this.controlPoints = Arrays.copyOf(this.controlPoints, newPointCount); + if (oldPointCount < newPointCount) { + this.controlPoints[newPointCount - 1] = this.controlPoints[oldPointCount - 1]; + for (int i = oldPointCount - 1; i < newPointCount - 1; i++) { + this.controlPoints[i] = + new Point((this.controlPoints[i - 1].x + this.controlPoints[newPointCount - 1].x) / 2, + (this.controlPoints[i - 1].y + this.controlPoints[newPointCount - 1].y) / 2); + } + } + this.pointCount = pointCount; + } + + @Override + public void drawIcon(Graphics2D g2d, int width, int height) { + int factor = 32 / width; + g2d.setColor(COLOR); + int[] x = {2 / factor, width - 2 / factor, width - 4 / factor, 3 / factor}; + int[] y = {4 / factor, 2 / factor, height - 5 / factor, height - 2 / factor}; + g2d.fillPolygon(x, y, 4); + g2d.setColor(LIGHT_METAL_COLOR.darker()); + g2d.drawPolygon(x, y, 4); + } + + public enum PointCount { + _3, _4, _5, _6, _7, _8; + + public String toString() { + return name().substring(1); + }; + } +} diff --git a/diylc/diylc-library/src/org/diylc/components/chassis/RectangularCutout.java b/diylc/diylc-library/src/org/diylc/components/chassis/RectangularCutout.java new file mode 100644 index 00000000..310acfc1 --- /dev/null +++ b/diylc/diylc-library/src/org/diylc/components/chassis/RectangularCutout.java @@ -0,0 +1,92 @@ +/* + * + * DIY Layout Creator (DIYLC). Copyright (c) 2009-2018 held jointly by the individual authors. + * + * This file is part of DIYLC. + * + * DIYLC is free software: you can redistribute it and/or modify it under the terms of the GNU + * General Public License as published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * DIYLC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even + * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General + * Public License for more details. + * + * You should have received a copy of the GNU General Public License along with DIYLC. If not, see + * . + */ +package org.diylc.components.chassis; + +import java.awt.AlphaComposite; +import java.awt.Composite; +import java.awt.Graphics2D; + +import org.diylc.common.ObjectCache; +import org.diylc.common.SimpleComponentTransformer; +import org.diylc.components.shapes.AbstractShape; +import org.diylc.core.ComponentState; +import org.diylc.core.IDIYComponent; +import org.diylc.core.IDrawingObserver; +import org.diylc.core.Project; +import org.diylc.core.annotations.BomPolicy; +import org.diylc.core.annotations.ComponentDescriptor; +import org.diylc.core.annotations.EditableProperty; +import org.diylc.core.measures.Size; +import org.diylc.core.measures.SizeUnit; + +@ComponentDescriptor(name = "Rectangular Cutout", author = "Branislav Stojkovic", category = "Electromechanical", + instanceNamePrefix = "RECTC", description = "Rectangular chassis cutout, with or without rounded edges", + zOrder = IDIYComponent.CHASSIS + 0.1, bomPolicy = BomPolicy.NEVER_SHOW, autoEdit = false, + transformer = SimpleComponentTransformer.class) +public class RectangularCutout extends AbstractShape { + + private static final long serialVersionUID = 1L; + + protected Size edgeRadius = new Size(0d, SizeUnit.mm); + + public RectangularCutout() { + this.borderColor = LIGHT_METAL_COLOR.darker(); + } + + @Override + public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project, + IDrawingObserver drawingObserver) { + g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke((int) borderThickness.convertToPixels())); + int radius = (int) edgeRadius.convertToPixels(); + 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(color); + g2d.fillRoundRect(firstPoint.x, firstPoint.y, secondPoint.x - firstPoint.x, secondPoint.y - firstPoint.y, radius, + radius); + g2d.setComposite(oldComposite); + } + // Do not track any changes that follow because the whole rect has been + // tracked so far. + drawingObserver.stopTracking(); + g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR + : borderColor); + g2d.drawRoundRect(firstPoint.x, firstPoint.y, secondPoint.x - firstPoint.x, secondPoint.y - firstPoint.y, radius, + radius); + } + + @EditableProperty(name = "Radius") + public Size getEdgeRadius() { + return edgeRadius; + } + + public void setEdgeRadius(Size edgeRadius) { + this.edgeRadius = edgeRadius; + } + + @Override + public void drawIcon(Graphics2D g2d, int width, int height) { + int factor = 32 / width; + g2d.setColor(COLOR); + g2d.fillRect(2 / factor, 4 / factor, width - 4 / factor, height - 8 / factor); + g2d.setColor(LIGHT_METAL_COLOR.darker()); + g2d.drawRect(2 / factor, 4 / factor, width - 4 / factor, height - 8 / factor); + } +} diff --git a/diylc/diylc-library/src/org/diylc/components/connectivity/Line.java b/diylc/diylc-library/src/org/diylc/components/connectivity/Line.java index 0fc799a2..7765d3b6 100644 --- a/diylc/diylc-library/src/org/diylc/components/connectivity/Line.java +++ b/diylc/diylc-library/src/org/diylc/components/connectivity/Line.java @@ -71,10 +71,10 @@ public class Line extends AbstractLeadedComponent { stroke = ObjectCache.getInstance().fetchBasicStroke(thickness); break; case DASHED: - stroke = ObjectCache.getInstance().fetchStroke(thickness, new float[] {thickness * 2}, thickness * 4); + stroke = ObjectCache.getInstance().fetchStroke(thickness, new float[] {thickness * 2, thickness * 4}, thickness * 4); break; case DOTTED: - stroke = ObjectCache.getInstance().fetchStroke(thickness, new float[] {thickness / 4, thickness * 3}, 0); + stroke = ObjectCache.getInstance().fetchStroke(thickness, new float[] {thickness, thickness * 5}, 0); break; } g2d.setStroke(stroke); diff --git a/diylc/diylc-library/src/org/diylc/components/connectivity/Turret.java b/diylc/diylc-library/src/org/diylc/components/connectivity/Turret.java index d19b3287..e0416d91 100644 --- a/diylc/diylc-library/src/org/diylc/components/connectivity/Turret.java +++ b/diylc/diylc-library/src/org/diylc/components/connectivity/Turret.java @@ -41,7 +41,7 @@ import org.diylc.core.measures.SizeUnit; import org.diylc.utils.Constants; @ComponentDescriptor(name = "Turret Lug", category = "Connectivity", author = "Branislav Stojkovic", - description = "Turret terminal lug", instanceNamePrefix = "Eyelet", stretchable = false, + description = "Turret terminal lug", instanceNamePrefix = "Turret", stretchable = false, zOrder = IDIYComponent.TRACE + 0.1, bomPolicy = BomPolicy.SHOW_ONLY_TYPE_NAME, autoEdit = false, keywordPolicy = KeywordPolicy.SHOW_TYPE_NAME, transformer = SimpleComponentTransformer.class) public class Turret extends AbstractComponent { diff --git a/diylc/diylc-swing/lib/diylc-core.jar b/diylc/diylc-swing/lib/diylc-core.jar index 0a8bc225aaaec8fa45c563662af1866a51a58cfc..8df580fe8711d9cc14d34ee9a99b024f9e61adf4 100644 GIT binary patch delta 17176 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

g}dBFdxC5&1?6rAcIBr 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 c7ad9wFbaJu11o)@mnU7l0QI3fy&^#A|> diff --git a/diylc/diylc-swing/library/main.jar b/diylc/diylc-swing/library/main.jar index d65489150a25afda8632b48a51b1c55ac0cc918d..cf79fc8038c85ff61f6da428749a761997ff551a 100644 GIT binary patch delta 23927 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 TNVJLNWCl~=wg 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 XK_^<-GaeUB7ftQc(4xyln3(<#8Uq-H delta 14165 zcmZu&2Rv5o`+w%K_ugb@uk4YMP?S|dQXz?mko81TW@H?DrZQ9HNwO+YM$sUms5Gsn zO7*|bInS$}et)0O`+4rJ@3rrBo$H+U=5dkX7Gbt6HbfFL4#$YY{bcxLq9OL$}SSC3#$ z!*$VLVUiqdmIsmlQ8Q1_BLY`4R})RqU!V@&B}Har{oB#ZvqWtaogf;ZzrrLP^w*xG z!j3q*EYU3K%mw0-gAbY$MBtQ2NU*V!w2KQd-6+j(PecddLU%~$z(Tx_4Hew()?hqN zz~RVHW^C}PMlfYOR7W_C|iy986oGGO& z*~n?SlOL4|axy@((OBfe)fzI zakwuG@LCTL&a(}8wno`IZ;2>+UpetdI+(!`9+(1?Mc{k!5IZay4{hd3H_N9q_*W3MJpVGbR6lZS=M_rVvV#4hV%`D*?BiiHiyFM~l* z3?8Iu1I$@O6h-}kMNdG?)M*wx4;l`2i4DIM)kEFHkH>6Km&NdFv0UZ#wR1Bu;czv) zNUrcBvXo7}0bZ(m4tNF!XFDfSc(;lDw!LH-suiDw^VMVC*C}h|a?-ypURw76n^kXu zc%iC}n&4n_i+?f`J5qG_lRRsA%`Ylnb{Oc-!R?&h1$;XqQSj$Xo`;H}~zn zvMRynW}p-6$jt`H1fTAOLcw;v?vLhU)b0gy)~8*`TcdQ7;PRzng2EPuvsL59M; zRdhJh*tzSHVR#l7%V3(}wtIXBgd5(wY5Mi^Y2HrJG4{{9jlc2W{&d!hjOYa4D-67j z@}X&pjGwo=Xx8z|9Mii0{Hk$vDvO36RLhFrAAkGcL9G{*8MbmeI=BPi}0caeTK^QMBA zt@qsq)p_m|&bnut8b-Z1{fp*41fF#tcxY(*{q6~WzthjQEmTHSb*l%jd(Qf}HXw|# z>2RLcFzxwFtp-TUqYN>Sc#}{ce{cZN0Z_`hKrJ(R}nR(OP%YyL_!Z?`$>w z3-23;iK}I&ZoiW@4I5Fsg0yZ(}FQrRw!QDybYCdEdu-Z4E`lMnvBsSV)Lm z)D_+6SNO8ZYj5o9$A^q(KN|ixsxI$8Fe=pclv7`ThpE|Si{fZ>#U+Kl_YaFw{CVA7 z0;ReJXG#aI9B~n!X!aJiU0X1bA6j=?(eF|3J^rb;gl$SViyBWvPdB;Uqm(3Ed#ibs@o7Vyogl}(`@~}hvRybTrRr0ATcoziWDG{k zuUUWKNxpb9^M-`<&?mj`=PV4Su5`6uY|ps==Ek}nU!Kj)>o1&FwW_WBz1ipbrE?Z1 z+Je2(&ZNHCy;iL?C?xUPx^BN9ILUou^=Rr|UQ@?K>86^|V_y_vYNx%H*HgOf7Oi|65N3pz+ zL^(NCVm_phR(0>Dx@rRJrPU#u&i5vE@keUqItB5E?4S5xWUrB^$ah5Wz`*KX$7LqM z{RFPYHUE}B_Rao^PRl^#s7#bD<^HOm)8ECMKfNf!FQ$z(#hrJ|G2S6(cWK9$ zV_EPKr61=@iW417%UbiIs563j7Q6g-ei{;0hZBy5F*Z6)awVrIjlN)$QT=wBQjzFb z{b|+MWTA=Q7A>_IZ}S5=oCP+V1xoMh4Z1D2W(g#E?k9h%eI8avYCGSoF+`zMn{s~G zf8bHao`23tXk=O5pW-FxkM_68E7qey) zFCQBY*uQU~>1zYqDS;)%t~Dkl)JBxKCx zds@Fe>29`JNmfnrk?@%4U;wkvI+l}ai5}9o4HY6JMt%e_uy5p3 zk<}<>zBtz7U{TNhOtPiBIb2X%4(LyZTXh@H(5`AF2av#S+z(5@T;1OHX*TomAKK*Sq=i zM$<2olxJ*u3DO~R>NA179Ko*$!^3vcvJ}6*n0&P#zQw~4l_fKZ7d&ojkc{VuIro#c7=x%VAI>&=y%CFPr>E++=LN8*EQ-_3Bf z#(fsx;%oL;Ey9;!mS$7>&SsNW>1OWYRoM?quc|)bskBPk_o%pB#-~fdJ7Uew)jpf7 zUQ>SZB?_v_PYdSNMD>f8ThA=wW}Z*J5vi2iX&|0NEN;ojan9+npT6~Sj`S^FmYbHXtd?n%edC0g}#%K-E!?Yh0d$5DBddT{2XG|#b&jm(sp-!b}rwO`DX)# zw$D}8cHW42=EL};ojq_!i4>@!&P)B#rq3goL|HVOku&|+V&=Vb2;VQV+|L1Ne%#No zYx1>EjCQ)dK<~BNcbD7EyxX~rX4af)v0e-|aqe<)nt368kg+2kXAEQdUq7G}E_!%?#-lv#jp;4O6qjuZ2 zq~||WC}vN@VuI|Rmg}{Xh&TNglUoldO}}jwoY23!`A1uM%H^i^_&S!+nNx>cEwc8! zROs0*fAF~Z)+5*aEn-xkImPVt$M^1E`10Xlhea{&nxw~1)@oIo8hCVm_kpKU7A7Z8 zyjX6~_LZ=c@MQ38JR&cCctQ2rcvs}Y&LZ++OjKu=8N;F!!-cLrZABIWzYQgB zuG`M6c)Y=7?4GvBRjGS{H*de!&hrlS$;;bZP<~W?I`(U9(kjMq$zd}Gb_+*di-mSR zJ~g8SlLb=8`~axA4rI=J?JLlokAC|5=hLu3lke|;au7z3`ebfDQNW|eM_pKu5)XJe zwMIPP)zl4Ulhf-(C0@d(x`P-@DW=6Yivv_LJ&xK#| z)XB#YUfdqH_AnWxU07)GNG*yMxalG4vFGLmrKNSzB#U*R&LClYtNK@w zB5v;S4{a@;9@__JB0n0wshu<)i+@x$``O@9vzMU^|6waP^Qivjl(^hG1_y^4cNcga zOtUw=kbc^z>x@j(l538$_^d*Bnu|E4a$wZE@j!&DjCSP+`!L?6bz`|r2aujLUT{u@@TP8AN+3U%ZaG!D; z_7k4il9j$cydl2glfI9Yo+p96?~2UFtq^s8I;yw<#Pe(Kxeqa4c4*6qq_PhC_Zy>AO@yJubr$?jY8IC=QE z`O60lm)5k7XDH>1H_F>MvGx?mD0dg>haZlZ3eF4D8hYYvle#Z2$$eQWCebkRB)v%FdTX4%tRmjyi3-`D<;ZS^B`Cp;61V zyp%Z34H_!ei814vhwb(9c&~3`u?e~te^f?!Pxq0>?GM=cE}y+&fBkk4ULncSCSrDZ zhcrV$5LJ$V|pXItjJ z%_nE?QVcC_Bo^^dQhtleE2WKA=9RiN-gCcOlu;p~s&t^wL%VSP-Gq)&Lyf8Klab5E zc5E+H-5YG+;3=#t_jSxR2-0ul{O~2hrT#Xdjr~eq;r7t5aofb?$tU~mS3mZuCRZkT zJ-DW!t~6OSEgDj#$EM~S1aXKQ(aSt>|Du(J{F)(3Vz9&U!|fM#YYm>p@wo=Bd1%jP z+R5Rx%xHIhNh79w`dqkux6PvF>dUKR5=v^8$dKdm=@TAPihLa#1o-ywb*#OR^z_4m z;eqngwbQ=uw=G5*RX*cb{i|17Ig5AMs=H)SfREDs^!&LK(oWqEuWaacQn1>7d5e?d zLKxrgPAz82uc~Q}C0&nKrjARtck1reo2t}IcPy2}f68b+n3ODSqneZqO;}tHVhMF* z>d~IdbKD^C=G5mjmZa>$F9kx|zSVj;n|sx(pLM$8dinL91QXT5*-P8I6$Vv8+9gLm zRqo|B=o4x9F%X^bGRfAAx?`1XgZquoAG%jjj|K#ADk)N=#L~>73v&-`Ueo8K=?(AM zr>uSRy^OU(;_#~W@upg%=qfJHRdWs=QxTyr196My^}4WFFIQ~%*TMQa*U0b9+?JHf z@=tX|qc+@1%GVm?=bm_Ky8BzLeoe7&(6A$V}#MxCQo*!FVqC-Z)h#p6ej`Ld|W9f5CTqP%V zWIE1+OL^n2bLU=3T)ZM4e2S0FJ&LvX$@!nhTjiba&!-=DOyk)e%U*l#(z1C(@;$Zl zq!Go7jT+(hsoar1C%-ZZs4l)|eN?p}QU0MqL^C&kwxRIdN-8C&SDR=%AR3pIXZ}Jm z|23B}W1jfMV_P&iB-?AM-f(g=Wb`*_OT+qy{bu7h<_y1iwD^`6h!2ZrT5hgG&)KiA(osH*9~ zuXH=mZAD`JKVjNi`}eX`MTlk9K5uS@aY6ADR+xW*g;A8TEUl8IaY^$_cip;Z=%yq04+c}|yP%cX>$DrEZY zJ}~Z7wQp;48qc29`AL@yZ&Ds5-D=e-skgqpJGm#T@brzOsfp~yjE*!>lIG^qtc@gr ztvlRPv_mrr5_(_5=|O6;y6zj~S_>mSGz9kX|7O<;D06wnpWharBFd$e>b*JMP|A%{ zHe}nCqdbS>QzW<&$JZXLRSdrK#HoUhCpp6X!|kr1?p-6CiC07_){;lfDfv->%J*$s zOe4F_Y!{RLsSz8RqUIzm!Sgx6Dn&;|_Jozo38{z58?Dsc-vG(zUXQg= zi|GBSn|IfMreXZ^>;2VixmF4{*t6`IvZRL$&GUb})0Wm5VCMR$qdTlMyyfFtgSQ#N zpBY6zXqU`fXHj26793I(mGJ&WsW!;k$0oaDU6noWHw7P(!u$Naf-_eQ1Y02KkzHSQ zd*B+2_AZ5)$9bMVRKgkB_t`OGQs&uMRF|-ux%Mineo?MjZn@iWAJuUwiwE0!(VG?p72FKfEf5iuMZer7F4I0{1!SP|knFs1s1y;XvZlq6B235o+ zEViq0Gz>B~aOZtFac@oPLk9DkWA94eMlUd5vo~|MxX5Fh>I?cy9+Ag>bT7Ug`?{|9 z2XxHnXlCf;=@*d~y_wbY;y+ECT(a?dms74X`*k|2mCI0a(~TZc+42__+c%Wx_$l}o zEC{ci+HuX<=mO8oi|0En=j1Fq#197QFK%#~x6f^R-0iyH3{O9wT^G(U`FL}ETURG2 zSg)ND2+&@LiNfi=S$g(QNlI1Qiub_!e;E$==V-f?8s>%HiP1)V@MC;v1F>L0xd{TL zt1CPdKo*5dlOcI3AqLNh@$ntSpF|s{)Y2T#Mn((Ox;#89Ho8`b|A^JMURy1s(twtW zWO(5S=!=%7LP}I(DLxldQ(TTO#YSr@@%F-~nw$>&6^yp^I(~u&rD;6EyJECcqj-I^ z2}|vp$BS~K=vzEtCuZ1&OxQxx%s@DW(bQQ86&URi8{vcyDzQtRV2;r$6$$4sEp|qP zrx;Dcl%S5u?lmVI$HIKSov;x@bzKR|7`n!TuuTxvmmWs2$IzEY2yPgtW zkSNOcwSe%H106lCAv9sl*YqZWC?;`%N?<_yxzv^}LK!x4?D2zb@8Bih)T@ zC&Ks}L}~b0AtX#4Urm(9!X>K^f1{&w4C+KIKg=76`_U#gHO!9ajIrI@O1y!MavX`d zWYj;69mLOARuuOTxj3=_R&u8Wc&A*yz3%Nei2QCIb=|rccb6w2avhH6zJ#qY5`> zi1pn8vEE`u6=rTBa!`-hlU`u5yIe>TOemk!)?uXtG7cxejJ~Tt_~5`Ah=Y1-Hz^&9 z)ny;a4V&;Q2T33k;Dr&j^f1YnfR0$hNv$MwbSH`wAc&3(vq|4DL%M||E6lZH#UxiE zicXc04r8(|XGkDZh(6X0%-WlIwzL9Nyy%M(y*7mcfLN0D&2VrJAD3}8X{P7}mNmCz$6V3{~? zL@veRvT-2Gkx;p)t$y-1!2XeWE|Be z;em@}C2D9K*#--x`f<|LLXfy~Y{pz-VLDkcw&$68?fzf=s z$u~IBIZ=B=uEEfWQE~}3Pn2o0DhrA>%#uZz(b3>n@*|Az+;=iNme4Cd$&)DUavrpq z2W5N1197OJqaS7v5Bd%h<_d-MkfRCS6bhLlCoG&63aO!k&QM4Pg_c4gGjw1W2HBv4 z#4yMb9f*fRBJf-oB%E3Lh86Y*hgeZ^03Z_<@NicNUXf#q4W7VD#NPWNmVmGbUIz|3 z0v3*G4#WWe`cLd$1V9dA2=ca8=^s(L*TP~euZTHuvun>GQp!khaOn}?Q{WLu2nwNGBaJUh(RPI!Z6B^X+~mzSt223$$!;x)2U-7WqOkMVH<=KX_ftXy^O=DtZ;&} zGS+~UnL$#6i#j1zl=IX(^(ro~$Lzp?CP&9P&WE^|X~oY4FGbS0*IysAIt+I574SCK zfR0;T2o3097{roUB_s^*ilWWy!6*>TPqEBJ6LGjY3X(u4yB{I;DFLEHrk@&9rnNE) zEE-LdP>KfNXH^==@z;!ET}8gE6KTtM9L@;1txD&F5L^}wp>OlyDMX2aUtv#lD8aKoKPA-2qhU`F`J zMTk`bnO@QTcMOdMaJW*y58mak{GEx-fy<6UCa7LcmxD)_S#h{&p?}waWGbpxEEW<& zXTvxaxaO0Oy7nZW<9~vUJqB>uvzhoiDsbO1T0CP2(V{w2YETDOj;9d~;{j2w5fEkJ z=yyl;YrBC?natWZOv-<@4mQd4CYQ$~!2u8nzE_~1%o{o- zbRQM0%o?&SgO^cu?UN8%Z^N5U0+YAM@YWC1Q3F1XV37C{^ zP6HpXv`GJZ67;GetQ%3;!XzMDzZM}V!kqg+F6RDI@G9noNdh0JES153bh+SIzrxQA zyC>7!IFJlfy?4Q&*=Rf;JaLK^k)Zq6DlHHV0UUMor_v@jjDPb{JP)jvLQ`du0#uD0 z!l2O{JSQxEmZr*`|IV3fU^DiD<4}jrs~3kc{x>O*Fq(mkMz7jZz-kUy_2^hXhGVRf zX<%vnD#SCu?y3JpkqS(|iCn=sV2v2sl#e0M!HDINdA=k)xX@Hhj3 z2VR{;o9n>hy#ZFh(k!^p=p}t#{VQp5n&$Ja)4*r8xAZs%Tz#6B{|*F)iSWfNNE}X; zCvg6i^-NHzJb~9{KoSVT2)kv{gn|G(^6(scZ);V@S&BnrpE5FeVIJQ!Hz zJc&_BwP4~`Y91GfeuT6llaBCX1*=CcP%x8;5ENjzla_)Ogt}0Ksr`@( zq0JbWH4jj;&STV*{UDRy3u%e*M4&e{7&LL0zyiPSpe?|Fw_ATBwU;vRLy^vpkgM=e z9)x~}2(#n^1^sOZK^nHn2Yw(W_b!CGegIROmro1&B0?oUKvE}w_B7zxd`KQm-Jg!f zzd@%w{)^wC08&QzrL{L|{RU;;X`X*i!lXBU@wXR1GAMt~si^D%@WI?I@WCAYR6hCe z7yo^JBHy2x7_GUs*aU=Zz(qh``}8dTCDblS-$Qn-47^wbtw$rwpOvpg zPQ~Nkyr91u>Xi_M%5ZEkZ9Nne12YV&2vsV_p2z}Uy+)h!>?7GcPTIJpFpL%lFNmGrU;Yylgv{^`BgWs0z_L%FmfBQ(aq z>`8*zqrWyn>@bBcrL^rCSqjXQZ%3$-utXVnzUe5XZBJ1J%bZQ1=e8)0!zs}@YXbVB zG=8+D2pg6GE%$v_s0=Wrj8^L9BT#7YU(jS3B!Ig4r&aZDHm)5;vLOL$m(x;eTMo1s zAHk@gUBvrI0K2HVeIqHkNW`1Yz6IqSENeG3O_HLdxmz1)SUsQLs~G% zZvw=!QX&r3ObnKS^^pd?idao&`oJ}ee_bVnrQD+uXmPxbPzBH?RCy&Ni$;A1LE3vz z1U8!^a>JZwA+$#atDFVU);lYZI7|Vx4=R<0KnBAYgmmIy(1~M!pZA^5omf8n)D zU|()JN0WCw2k@bh6j1Iz=56*U;x6uMfb!qu(~noEWQO z7431zstOo4P+&Gm2s4QEa^50PKsW}e)YHm78<(yeMzH1d zz+FgRO<#>zVP%Ia>cNqX^g`CF6pl)P!}t`Cp?`c3j6wJ{VTKDJg-93@7l6U^qZl>d z0>pzVIC@{VSQaSA1`0s+vGR8&b{&kcTA{MDh-_CLLePOt8)(Ltq}TLH{=ddeFT+6% zpwWfcZEXOu%~XV-1+!cPOBBm8Lp3WCRY$ULxq8rYji zCU@z}O6vomesJQ@S0RgE{t}wI1dbgf0Om$uKj`NQv>K%zK&bgRcqT01p$2%j z36(p5ys3jzg}&-|D!9Tgpox9A|96i8@s6vaO5z!q{wm-hy?1fo85Riy={UnNm%%0_&UPAqQkJv!b&&a9 zPGdg(Vo&pLz^TZaWy zAp6T2AxOjHR8S8hvf~$w)Z2mVO<9Aw6?hR7=a< z_$`Vceez(%(bpNcZ7Zx?a9|o4%DD=${^_f$w?X`b=$&v^3#1RH#gQ5Rq~%YK{ogeH z*oE-hpc&z~3ZAAuz+0%$D%c|pOvBErw5;$>E#$_7$ZY?on)BX|`2_d{5O+{Tj}b*C zu+$ZxD54eopDEX_&~}C1~m<)gtZe+A-$JKJgJq1xwx+EDN|@t5?!yRftj;TMF{yTMCz^Z^X<&6@3HmlFtn6{w`? z7rytU6@C&N&;g2|JXIl)0E8W$?}T_IkU&0i zv2h?zlIOsMOMl>ku0{tW2Ag(4QmDyncHO{C!08S+=_{c5$A1*h{v@;hxnH}wfZcmf z{)2g8=IgXID|8(c0+I`4_!|#+HgNlo?1zvw#UPkvEg;ulhZxy=alN=uYw$lp*@GQ{ F`#-j273cr} diff --git a/diylc/diylc-swing/update.xml b/diylc/diylc-swing/update.xml index dcfd503d..fc1daf34 100644 --- a/diylc/diylc-swing/update.xml +++ b/diylc/diylc-swing/update.xml @@ -1959,13 +1959,21 @@ 44 0 - 2018-12-17 00:00:00.000 CET + 2018-12-18 00:00:00.000 CET + + NEW_FEATURE + Added few chassis-related components under "Electromechanical" category + IMPROVEMENT Change mouse cursor when in "Highlight Connected Areas" mode to avoid confusion + + BUG_FIX + Thin dashed and dotted lines turn to solid when zommed in + https://github.com/bancika/diy-layout-creator/releases