From 8dd1b74f96808f1ce9a7d9522d3f4ca970406acc Mon Sep 17 00:00:00 2001 From: Branislav Stojkovic Date: Sun, 6 Jan 2019 14:16:50 +0100 Subject: [PATCH] multi-section can caps --- diylc/diylc-library/lib/diylc-core.jar | Bin 248429 -> 248550 bytes .../passive/ElectrolyticCanCapacitor.java | 778 ++++++++++-------- diylc/diylc-swing/build.xml | 2 +- diylc/diylc-swing/lib/diylc-core.jar | Bin 248429 -> 248550 bytes diylc/diylc-swing/lib/swing-framework.jar | Bin 140092 -> 140127 bytes diylc/diylc-swing/library/main.jar | Bin 454891 -> 462388 bytes .../swing/gui/editor/MeasureArrayEditor.java | 4 +- 7 files changed, 425 insertions(+), 359 deletions(-) diff --git a/diylc/diylc-library/lib/diylc-core.jar b/diylc/diylc-library/lib/diylc-core.jar index b601d29f6b4b2ffc90888bdb90c3cc60d3410bdc..ca3f52810ddbc6632ec24410522b87c989fe243c 100644 GIT binary patch delta 13887 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. -// -//*/ -//package org.diylc.components.passive; -// -//import java.awt.AlphaComposite; -//import java.awt.Color; -//import java.awt.Composite; -//import java.awt.FontMetrics; -//import java.awt.Graphics2D; -//import java.awt.Point; -//import java.awt.Rectangle; -//import java.awt.geom.Area; -//import java.awt.geom.Ellipse2D; -//import java.awt.geom.Rectangle2D; -// -//import org.diylc.appframework.miscutils.ConfigurationManager; -//import org.diylc.common.Display; -//import org.diylc.common.IPlugInPort; -//import org.diylc.common.ObjectCache; -//import org.diylc.common.Orientation; -//import org.diylc.components.AbstractTransparentComponent; -//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.annotations.KeywordPolicy; -//import org.diylc.core.measures.Capacitance; -//import org.diylc.core.measures.Size; -//import org.diylc.core.measures.SizeUnit; -//import org.diylc.utils.Constants; -// -////@ComponentDescriptor(name = "Electrolytic Capacitor (can)", author = "Branislav Stojkovic", category = "Passive", -//// instanceNamePrefix = "C", description = "Vertical chassis-mount electrolytic capacitor similar to JJ", -//// stretchable = false, zOrder = IDIYComponent.COMPONENT, keywordPolicy = KeywordPolicy.SHOW_VALUE) -//public class ElectrolyticCanCapacitor extends AbstractTransparentComponent { -// -// private static final long serialVersionUID = 1L; -// -// public static Color BODY_COLOR = Color.lightGray; -// public static Color BASE_COLOR = Color.gray; -// public static Color BORDER_COLOR = BODY_COLOR.darker(); -// public static Color PIN_COLOR = Color.decode("#00B2EE"); -// public static Color PIN_BORDER_COLOR = PIN_COLOR.darker(); -// public static Color LABEL_COLOR = Color.black; -// public static Size PIN_SIZE = new Size(0.08d, SizeUnit.in); -//// public static Size PIN_SPACING = new Size(0.05d, SizeUnit.in); -// public static Size BODY_DIAMETER = new Size(1d, SizeUnit.in); -// -// private Capacitance[] value = new Capacitance[4]; -// private org.diylc.core.measures.Voltage voltage = null; -// -// private Orientation orientation = Orientation.DEFAULT; -// private Point[] controlPoints = new Point[] {new Point(0, 0), new Point(0, 0), new Point(0, 0)}; -// transient private Area body; -// private Color bodyColor = BODY_COLOR; -// private Color baseColor = BASE_COLOR; -// private Color borderColor = BORDER_COLOR; -// private Color labelColor = LABEL_COLOR; -// protected Display display = Display.NAME; -//// private Size pinSpacing = PIN_SPACING; -// private CanSections sections = CanSections._1; -// private Size diameter = BODY_DIAMETER; -// -// public ElectrolyticCanCapacitor() { -// super(); -// updateControlPoints(); +/* + + 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.passive; + +import java.awt.AlphaComposite; +import java.awt.Color; +import java.awt.Composite; +import java.awt.Graphics2D; +import java.awt.Point; +import java.awt.Rectangle; +import java.awt.geom.Area; +import java.awt.geom.Ellipse2D; +import java.text.DecimalFormat; +import java.text.Format; + +import org.diylc.appframework.miscutils.ConfigurationManager; +import org.diylc.common.Display; +import org.diylc.common.HorizontalAlignment; +import org.diylc.common.IPlugInPort; +import org.diylc.common.ObjectCache; +import org.diylc.common.Orientation; +import org.diylc.common.VerticalAlignment; +import org.diylc.components.AbstractTransparentComponent; +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.annotations.KeywordPolicy; +import org.diylc.core.measures.Capacitance; +import org.diylc.core.measures.Size; +import org.diylc.core.measures.SizeUnit; +import org.diylc.utils.Constants; + +@ComponentDescriptor(name = "Electrolytic Capacitor (can)", author = "Branislav Stojkovic", category = "Passive", + instanceNamePrefix = "C", description = "Multi-section vertically mounted electrolytic capacitor, similar to JJ, CE and others", + stretchable = false, zOrder = IDIYComponent.COMPONENT, keywordPolicy = KeywordPolicy.SHOW_VALUE) +public class ElectrolyticCanCapacitor extends AbstractTransparentComponent { + + private static final long serialVersionUID = 1L; + + public static Color BODY_COLOR = Color.decode("#6B6DCE"); + public static Color BASE_COLOR = Color.decode("#333333"); + public static Color BORDER_COLOR = BODY_COLOR.darker(); + public static Color PIN_COLOR = METAL_COLOR; + public static Color PIN_BORDER_COLOR = PIN_COLOR.darker(); + public static Color LABEL_COLOR = Color.white; + public static Size PIN_SIZE = new Size(0.08d, SizeUnit.in); +// public static Size PIN_SPACING = new Size(0.05d, SizeUnit.in); + public static Size BODY_DIAMETER = new Size(1d, SizeUnit.in); + private static double RELATIVE_DIAMETER = 0.6d; + private static final Format format = new DecimalFormat("0.#####"); + + private Capacitance[] value = new Capacitance[3]; + private org.diylc.core.measures.Voltage voltage = null; + + private Orientation orientation = Orientation.DEFAULT; + private Point[] controlPoints = new Point[] {new Point(0, 0), new Point(0, 0), new Point(0, 0)}; + transient private Area[] body; + private Color bodyColor = BODY_COLOR; + private Color baseColor = BASE_COLOR; + private Color borderColor = BORDER_COLOR; + private Color labelColor = LABEL_COLOR; + protected Display display = Display.NAME; +// private Size pinSpacing = PIN_SPACING; + private Size diameter = BODY_DIAMETER; + + public ElectrolyticCanCapacitor() { + super(); + updateControlPoints(); + } + + @EditableProperty + public Capacitance[] getValue() { + return value; + } + + public void setValue(Capacitance[] value) { + boolean needsUpdate = false; + if ((this.value == null ? 0 : this.value.length) != (value == null ? 0 : value.length)) + needsUpdate = true; + + this.value = value; + + if (needsUpdate) { + updateControlPoints(); + body = null; + } + } + + private String getStringValue() { + if (value == null) + return ""; + StringBuilder sb = new StringBuilder(); + boolean isFirst = true; + for (Capacitance c : value) { + if (isFirst) + isFirst = false; + else + sb.append(" / "); + sb.append(c == null ? "" : format.format(c.getValue())); + } + if (value[0] != null) + sb.append(" " + value[0].getUnit()); + return sb.toString(); + } + + @EditableProperty + public org.diylc.core.measures.Voltage getVoltage() { + return voltage; + } + + public void setVoltage(org.diylc.core.measures.Voltage voltage) { + this.voltage = voltage; + } + + @EditableProperty + public Size getDiameter() { + return diameter; + } + + public void setDiameter(Size diameter) { + this.diameter = diameter; + } + + @EditableProperty + public Orientation getOrientation() { + return orientation; + } + + public void setOrientation(Orientation orientation) { + this.orientation = orientation; + updateControlPoints(); + // Reset body shape; + body = null; + } + + @Override + public int getControlPointCount() { + return controlPoints.length; + } + + @Override + public Point getControlPoint(int index) { + return controlPoints[index]; + } + + @Override + public boolean isControlPointSticky(int index) { + return true; + } + + @Override + public VisibilityPolicy getControlPointVisibilityPolicy(int index) { + return VisibilityPolicy.NEVER; + } + + @Override + public void setControlPoint(Point point, int index) { + controlPoints[index].setLocation(point); + body = null; + } + + private void updateControlPoints() { +// int pinSpacing = (int) getPinSpacing().convertToPixels(); + int pinSpacing = (int) (getDiameter().convertToPixels() * RELATIVE_DIAMETER); +// switch (getS) + + int newCount = value.length + 1; + if (newCount != controlPoints.length) { + // need new control points + Point[] newPoints = new Point[newCount]; + newPoints[0] = controlPoints[0]; + for (int i = 1; i < newCount; i++) { + newPoints[i] = new Point(0, 0); + } + controlPoints = newPoints; + } + + // Update control points. + int x = controlPoints[0].x; + int y = controlPoints[0].y; + + if (newCount == 2) { + controlPoints[1].setLocation(x + pinSpacing, y); + } else if (newCount == 3) { + controlPoints[1].setLocation(x + pinSpacing / 2, y - pinSpacing / 2); + controlPoints[2].setLocation(x + pinSpacing / 2, y + pinSpacing / 2); + } else { + double theta = Math.PI * 2 / newCount; + double centerX = x + pinSpacing / 2; + double centerY = y; + for (int i = 1; i < newCount; i++) { + controlPoints[i].setLocation(centerX + Math.cos(-Math.PI + theta * i) * pinSpacing / 2, centerY + Math.sin(-Math.PI + theta * i) * pinSpacing / 2); + } + } + + switch (orientation) { + case DEFAULT: +// controlPoints[1].setLocation(x - pinSpacing, y + pinSpacing); +// controlPoints[2].setLocation(x, y + 2 * pinSpacing); + break; + case _90: + controlPoints[1].setLocation(x - pinSpacing, y - pinSpacing); + controlPoints[2].setLocation(x - 2 * pinSpacing, y); + break; + case _180: + controlPoints[1].setLocation(x + pinSpacing, y - pinSpacing); + controlPoints[2].setLocation(x, y - 2 * pinSpacing); + break; + case _270: + controlPoints[1].setLocation(x + pinSpacing, y + pinSpacing); + controlPoints[2].setLocation(x + 2 * pinSpacing, y); + break; + default: + throw new RuntimeException("Unexpected orientation: " + orientation); + } + } + + public Area[] getBody() { + if (body == null) { + double centerX; + double centerY; + int x = controlPoints[0].x; + int y = controlPoints[0].y; + int pinSpacing = (int) (getDiameter().convertToPixels() * RELATIVE_DIAMETER); + if (controlPoints.length == 2 || controlPoints.length == 3) { + centerX = x + pinSpacing / 2; + centerY = y; +// } else if (controlPoints.length == 3) { +// controlPoints[1].setLocation(x + pinSpacing, y); +// controlPoints[2].setLocation(x + pinSpacing / 2, y + pinSpacing / 2); + } else { + centerX = x + pinSpacing / 2; + centerY = y; + } + int bodyDiameter = getClosestOdd(getDiameter().convertToPixels()); + int innerDiameter = getClosestOdd(getDiameter().convertToPixels() * 0.85); + + body = new Area[] { new Area(new Ellipse2D.Double(centerX - bodyDiameter / 2, centerY - bodyDiameter / 2, bodyDiameter, bodyDiameter)), + new Area(new Ellipse2D.Double(centerX - innerDiameter / 2, centerY - innerDiameter / 2, innerDiameter, innerDiameter))}; + + } + return body; + } + + @Override + 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[] area = getBody(); + 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(area[0]); + drawingObserver.startTracking(); + g2d.setComposite(oldComposite); + Color finalBorderColor; + Theme theme = (Theme) ConfigurationManager.getInstance().readObject(IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME); + if (outlineMode) { + 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(area[0]); + g2d.setColor(baseColor); + + g2d.fill(area[1]); + + for (Point point : controlPoints) { + if (!outlineMode) { + g2d.setColor(PIN_COLOR); + g2d.fillOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize); + } + g2d.setColor(outlineMode ? theme.getOutlineColor() : PIN_BORDER_COLOR); + g2d.drawOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize); + } + + // Draw label. + g2d.setFont(project.getFont()); + Color finalLabelColor; + if (outlineMode) { + finalLabelColor = + componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? LABEL_COLOR_SELECTED + : theme.getOutlineColor(); + } else { + finalLabelColor = + componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? LABEL_COLOR_SELECTED + : getLabelColor(); + } + g2d.setColor(finalLabelColor); + String label = ""; + label = (getDisplay() == Display.NAME) ? getName() : getStringValue(); + if (getDisplay() == Display.NONE) { + label = ""; + } else if (getDisplay() == Display.NAME) { + label = getName(); + } else if (getDisplay() == Display.VALUE) { + label = getStringValue(); + } else if (getDisplay() == Display.BOTH) { + label = getName() + "\n" + getStringValue(); + } + + Rectangle bounds = area[0].getBounds(); + + drawCenteredText(g2d, label, bounds.x + bounds.width / 2, bounds.y + bounds.height / 2, HorizontalAlignment.CENTER, VerticalAlignment.CENTER); + + // draw polarity markers + g2d.setColor(PIN_BORDER_COLOR); + g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(2f)); + double markerSize = pinSize * 0.7; + for (int i = 0; i < controlPoints.length; i++) { + int x = controlPoints[i].x; + int y = controlPoints[i].y; + g2d.drawLine((int)(x - markerSize / 2), y, (int)(x + markerSize / 2), y); + if (i > 0) + g2d.drawLine(x, (int)(y - markerSize / 2), x, (int)(y + markerSize / 2)); + } + } + + @Override + public void drawIcon(Graphics2D g2d, int width, int height) { + int margin = 2 * width / 32; + Area area = new Area(new Ellipse2D.Double(margin / 2, margin, width - 2 * margin, width - 2 * margin)); + g2d.setColor(BODY_COLOR); + g2d.fill(area); + g2d.setColor(BORDER_COLOR); + g2d.draw(area); + g2d.setColor(PIN_COLOR); + int pinSize = 2 * width / 32; + for (int i = 0; i < 3; i++) { + g2d.fillOval((i == 1 ? width * 3 / 8 : width / 2) - pinSize / 2, (height / 4) * (i + 1), pinSize, pinSize); + } + } + + @EditableProperty(name = "Body") + public Color getBodyColor() { + return bodyColor; + } + + public void setBodyColor(Color bodyColor) { + this.bodyColor = bodyColor; + } + + @EditableProperty(name = "Base") + public Color getBaseColor() { + return baseColor; + } + + public void setBaseColor(Color baseColor) { + this.baseColor = baseColor; + } + +// @EditableProperty(name = "Pin spacing") +// public Size getPinSpacing() { +// return pinSpacing; // } // -// @EditableProperty -// public Capacitance[] getValue() { -// return value; -// } -// -// public void setValue(Capacitance[] value) { -// this.value = value; -// } -// -// @EditableProperty -// public org.diylc.core.measures.Voltage getVoltage() { -// return voltage; -// } -// -// public void setVoltage(org.diylc.core.measures.Voltage voltage) { -// this.voltage = voltage; -// } -//// -//// @EditableProperty -//// public CanSections getSections() { -//// return sections; -//// } -//// -//// public void setSections(CanSections sections) { -//// this.sections = sections; -//// } -// -// @EditableProperty -// public Size getDiameter() { -// return diameter; -// } -// -// public void setDiameter(Size diameter) { -// this.diameter = diameter; -// } -// -// @EditableProperty -// public Orientation getOrientation() { -// return orientation; -// } -// -// public void setOrientation(Orientation orientation) { -// this.orientation = orientation; +// public void setPinSpacing(Size pinSpacing) { +// this.pinSpacing = pinSpacing; // updateControlPoints(); // // Reset body shape; // body = null; // } -// -// @Override -// public int getControlPointCount() { -// return controlPoints.length; -// } -// -// @Override -// public Point getControlPoint(int index) { -// return controlPoints[index]; -// } -// -// @Override -// public boolean isControlPointSticky(int index) { -// return true; -// } -// -// @Override -// public VisibilityPolicy getControlPointVisibilityPolicy(int index) { -// return VisibilityPolicy.NEVER; -// } -// -// @Override -// public void setControlPoint(Point point, int index) { -// controlPoints[index].setLocation(point); -// body = null; -// } -// -// private void updateControlPoints() { -//// int pinSpacing = (int) getPinSpacing().convertToPixels(); -// int pinSpacing = (int) getDiameter().convertToPixels(); -//// switch (getS) -// -// // Update control points. -// int x = controlPoints[0].x; -// int y = controlPoints[0].y; -// switch (orientation) { -// case DEFAULT: -// controlPoints[1].setLocation(x - pinSpacing, y + pinSpacing); -// controlPoints[2].setLocation(x, y + 2 * pinSpacing); -// break; -// case _90: -// controlPoints[1].setLocation(x - pinSpacing, y - pinSpacing); -// controlPoints[2].setLocation(x - 2 * pinSpacing, y); -// break; -// case _180: -// controlPoints[1].setLocation(x + pinSpacing, y - pinSpacing); -// controlPoints[2].setLocation(x, y - 2 * pinSpacing); -// break; -// case _270: -// controlPoints[1].setLocation(x + pinSpacing, y + pinSpacing); -// controlPoints[2].setLocation(x + 2 * pinSpacing, y); -// break; -// default: -// throw new RuntimeException("Unexpected orientation: " + orientation); -// } -// } -// -// public Area getBody() { -// if (body == null) { -// int x = (controlPoints[0].x + controlPoints[1].x + controlPoints[2].x) / 3; -// int y = (controlPoints[0].y + controlPoints[1].y + controlPoints[2].y) / 3; -// int bodyDiameter = getClosestOdd(getDiameter().convertToPixels()); -// -// body = new Area(new Ellipse2D.Double(x - bodyDiameter / 2, y - bodyDiameter / 2, bodyDiameter, bodyDiameter)); -// -// } -// return body; -// } -// -// @Override -// 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(); -// 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(mainArea); -// g2d.setComposite(oldComposite); -// Color finalBorderColor; -// Theme theme = (Theme) ConfigurationManager.getInstance().readObject(IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME); -// if (outlineMode) { -// 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) { -// if (!outlineMode) { -// g2d.setColor(PIN_COLOR); -// g2d.fillOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize); -// } -// g2d.setColor(outlineMode ? theme.getOutlineColor() : PIN_BORDER_COLOR); -// g2d.drawOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize); -// } -// -// // Draw label. -// g2d.setFont(project.getFont()); -// Color finalLabelColor; -// if (outlineMode) { -// finalLabelColor = -// componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? LABEL_COLOR_SELECTED -// : theme.getOutlineColor(); -// } else { -// finalLabelColor = -// componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? LABEL_COLOR_SELECTED -// : getLabelColor(); -// } -// g2d.setColor(finalLabelColor); -// String label = ""; -// label = (getDisplay() == Display.NAME) ? getName() : getValue().toString(); -// if (getDisplay() == Display.NONE) { -// label = ""; -// } -// if (getDisplay() == Display.BOTH) { -// label = getName() + " " + (getValue() == null ? "" : getValue().toString()); -// } -// FontMetrics fontMetrics = g2d.getFontMetrics(g2d.getFont()); -// Rectangle2D rect = fontMetrics.getStringBounds(label, g2d); -// int textHeight = (int) (rect.getHeight()); -// int textWidth = (int) (rect.getWidth()); -// // Center text horizontally and vertically -// Rectangle bounds = mainArea.getBounds(); -// int x = bounds.x + (bounds.width - textWidth) / 2; -// int y = bounds.y + (bounds.height - textHeight) / 2 + fontMetrics.getAscent(); -// g2d.drawString(label, x, y); -// } -// -// @Override -// public void drawIcon(Graphics2D g2d, int width, int height) { -// int margin = 2 * width / 32; -// Area area = new Area(new Ellipse2D.Double(margin / 2, margin, width - 2 * margin, width - 2 * margin)); -// g2d.setColor(BODY_COLOR); -// g2d.fill(area); -// g2d.setColor(BORDER_COLOR); -// g2d.draw(area); -// g2d.setColor(PIN_COLOR); -// int pinSize = 2 * width / 32; -// for (int i = 0; i < 3; i++) { -// g2d.fillOval((i == 1 ? width * 3 / 8 : width / 2) - pinSize / 2, (height / 4) * (i + 1), pinSize, pinSize); -// } -// } -// -// @EditableProperty(name = "Body") -// public Color getBodyColor() { -// return bodyColor; -// } -// -// public void setBodyColor(Color bodyColor) { -// this.bodyColor = bodyColor; -// } -// -// @EditableProperty(name = "Base") -// public Color getBaseColor() { -// return baseColor; -// } -// -// public void setBaseColor(Color baseColor) { -// this.baseColor = baseColor; -// } -// -//// @EditableProperty(name = "Pin spacing") -//// public Size getPinSpacing() { -//// return pinSpacing; -//// } -//// -//// public void setPinSpacing(Size pinSpacing) { -//// this.pinSpacing = pinSpacing; -//// updateControlPoints(); -//// // Reset body shape; -//// body = null; -//// } -// -// @EditableProperty(name = "Border") -// public Color getBorderColor() { -// return borderColor; -// } -// -// public void setBorderColor(Color borderColor) { -// this.borderColor = borderColor; -// } -// -// @EditableProperty(name = "Label") -// public Color getLabelColor() { -// return labelColor; -// } -// -// public void setLabelColor(Color labelColor) { -// this.labelColor = labelColor; -// } -// -// @EditableProperty -// public Display getDisplay() { -// if (display == null) { -// display = Display.NAME; -// } -// return display; -// } -// -// public void setDisplay(Display display) { -// this.display = display; -// } -// -// public enum CanSections { -// _1, _2, _3, _4, _5; -// -// @Override -// public String toString() { -// return name().substring(1); -// } -// } -//} + + @EditableProperty(name = "Border") + public Color getBorderColor() { + return borderColor; + } + + public void setBorderColor(Color borderColor) { + this.borderColor = borderColor; + } + + @EditableProperty(name = "Label") + public Color getLabelColor() { + return labelColor; + } + + public void setLabelColor(Color labelColor) { + this.labelColor = labelColor; + } + + @EditableProperty + public Display getDisplay() { + if (display == null) { + display = Display.NAME; + } + return display; + } + + public void setDisplay(Display display) { + this.display = display; + } +} diff --git a/diylc/diylc-swing/build.xml b/diylc/diylc-swing/build.xml index 0a3d1c0f..36f630da 100644 --- a/diylc/diylc-swing/build.xml +++ b/diylc/diylc-swing/build.xml @@ -7,7 +7,7 @@ - + diff --git a/diylc/diylc-swing/lib/diylc-core.jar b/diylc/diylc-swing/lib/diylc-core.jar index 21cf81dae6f72a79eb1b0513ffd1504ce472b70a..ca3f52810ddbc6632ec24410522b87c989fe243c 100644 GIT binary patch delta 13887 zcmZu&2Rv2p|98%#QnL3hyGS9G(oiWHXc9$3A~Q)Ux+x{uE>B23AJgqX zW)~35WML_I;w%tjO3i$YQDZX|X~k*UqnIT>t8yacOXR>$&rsxNFTjyY9(V! zD7zTT$`_PA6yV{Jk>laf=7GtPK#A$PZ8Gc%2NM}#+a_CYZ#y(5l>Z{GdQaooC?mag z>*bOc14C6@11fgMR!y7^s#dL0URrB(*SgZkNT2WVw*CcPPhCI7r)_*zuqC$X&VJ>! zf?b;D6VwYYdfPXvxizc398q_>{z$#IWaNa5^uu?rU%q{DuzvAKzf{?9E6gFC(l^Qa z^my@9pLAkWg~-mg7q7WAQQ%9Hw&|DXx%L}x^^^}jzriR`umI#gH|NfNT$R;SvN6a=YeQMG^Lh>$j~4Qj<#fx99ug=Ic-1mwJL)E2UpdG-Ts*q? zk6kYxU+F8U(4~>@gbYHvBj);vG2{b-mo^S%jOup`&0@rj-9A(9nQkxfraWe?pKYam zcdo?Ps>)YAi>5F%zLdjvN@+h<3;YRWv<}T4wQ?R?pZ-UumQnMOvF3~Ylt0(Ii$@dZ z{!yv@v)>Q?VK&O0Ji5O7k3^1E$<<_wH>2mjhR7b})7x$MT~t?p^L^Iz2<6-}#-C?= zc1hEmRY6co)a7iTm&=E$ZO~ndL{S)@g*k$&9O0&2Cw-;a%7#jTmp+tLs`#_pT0mQ}E&7 zX>(qWM;GQ!P9Ccc6x?vbgXeP4~h4%&=AkW!{_T zPu0qHKW=~YF~4bX@RQ9=3m)#5uanJt4XRqs%4cOp8;7Hx#BU5_j8LV6q`B<$Ax}xlfx5 z!n#7#u8V73jSq8(txH|pnCI@|b*?QgJjKT3(7BI>**6CBWk!~W=x1y{HCgb>kySnm zYtxF#1gTfR()rsns$YG1ZEfTCmcs?X-7z=kq=yz5`hL}A z=%3&FspzfEW#DGZA9ejlS&z<~tYf>)+8!#l>o?tzypmc$c+3V07F}uKW@+C0D@+vX zd;VEy(BzZgW7@1*YknsrH^$@ALWAa)B^NudH0v1ePd?WE-TMyo>1$czws0VM-gCh$ zcsTrGt3$JJe$_hl+INZZiZ1aALEx;u@KMIV!b1)I^6CcPH4?sW)Ub^(-_cTgK6R7O zw~sBWf3=_SepX-I#T<<>-*Cr1V^XGl2C=Zh@k;YFg_aM-vb!srovjzhi=-=x);K1t z`mifOFpE83&xzHItk7cyG^8UH>sAC2xE8Go758Cg*dC@OAUaOCk^F z{NucEdhOI-V^dg*#mFWau{OZdm>%{A6nw{EQw^WK=D(P7ihIGNb^!T)}0{cHZf^;-8|j+Xh| ze9;4*{OT?&y7vCm@;5USmYzy_`oVeKha0z&g&w{?;M~+zvppJSw|lJ$o$S&i{79&; z=7jP7$BT=7M!dg&_&U|!y1Kx1lkL#~B?XO3&KA9;3A0AtUx;#kTPuIs@>gAp{Xwfl zky(4gQ!4#$Phk`RgWfW^g%6_LzwDXY_dS8vp-#&~Day)ur=gP7n}D~>4>Npng5T`vUz>O-UV1Mnd2!peoCL3{_qQ@1Z+K>O-r-4l zSzuf!>urZir)bcFD+N!^S5!_n3)vpHG9lLAxp|%8X;T;`Ce3)(7F+mT=aA|imIP1Rsq@0(9{i;2x ze*$OhWu}@{54K%@S5Vuyg;?<-I>e^k=E#>j*3ahNbWDs>%=UjCHeuyU#)`_r4{E;Y zK!vreoNJ}G1LOCf*(ci3&I{v2$^EXcat`D{`P<0cQ*>HZ|muIyCXl33&IsJBtu>p>$dQor)frm|>3%RQJ@Yks;5A z&uq)pe)4l;TJ+~6{hYXPL(xXYktI7Hh*gWGZ})3{masNUyJn@MwcP^Ut#-=Iy_&g! zO1cSo7vl1gOhwNN1~)8T2m7MQEqm`S(l4#^wn@~Mm;d4TwrI_Z5(BS|q8kIG``ksO z2Ig;iy?aIXa*b712YO8B*hDgypZ47KXr|4irsvlVq0dnTqVRMnj~X^CD`k>h<~H^ECEcP+eVy71<{ znTJmI--*1czt_U1DQVCtTItFY(-)x~gG2Fh_WRym|4<5Q+aKn>TX3>HaI&iJZ|U;X z5Kno#Bh%U$8+xLjd{R36tKj*;?!6<;pBTRbpVznh%QW{Kp2)KJ?5fhN`YEKZ*Z5m< z%ItezPJS5?DiIp&H8HlS);IqAw4ATr-sw$d;Cw}JAl0Ym$y`Q834hA%=Qx?k%&%I9m>Job|fJcWFaG^XvXcxFv_t+JC)xXxv7#l2dWUWBEXxEoDL zvh+3Y4(bw^_N3fo>d4!B{%ePn9X|vOtLUtKb-IeNj*wbB5bIa}`QX{PEmn2AUasYn z=$`7A$e(e}$!B;`^0$HHZwkrhBxf_0ScEL?KRl$AE%ZyKe9M+qEg^hKs~bK&ue2*( zI;r-PZON7<56`yw-huu;gE<~f!wH|i7)s^rd~N;q!?osJ9(#X#w_8apT^wO+^N)bY zpS5SjyR~BuGbHV7^TYY#H~1--6b#Gyg=hxd%>A9Jy0qfZi=3f7Z?Cjj*7ddJZRxHa z@p6cTX)46gL^aDg|FwIZn&sWywul^hdQ34j8$N1XrYgK4(NWQ=w!5hHa)t@Nez{fs zE-U{PD^C}`yLMy5TXj^~ec${0AEs=!eH}XeL~wInuW}h5gMZ(b8DY8Kze$}pou||M z`tJFyVb9}Rd(KMEaKBX9x^;0%eYg3x*~0}fcK3?TdI%OSN<2K~b?bSVq3eokZ*mjM z6SjEmPM9s@F(bhwbB)c*0Nwk|8+|5!yJvc8t%JQ_nC*|Ow-(~+u1lY7oEK7SG^2a+ zrkFBaoeI%On#?m*p3aP0u7c0)ty?QMh|k_Fch2nxBfj*MX}5-Wo#v%2qoMaKJ_onm z_$9DYWRGUCZsI+Q8Gc*4GZGf7m7)5W9W{xx=#f%6IP2)5`tR2d+COl-wMTG$qGSEz zcEg}zJClRu6%$)i92?jPnUeI{-Zny@t*hhf#FjM|M7En6^$0)GcRsF| z@5871wMVL-_e+S;amDgCtHuWNbPPT%Z63O_Qr6KwD77{qU$4Hc=gInl(HdFCtWP@{ zdvdne#6&)SCY!zQm0;cL6aFpQk8FU|oSJ)y)pxC2iTXO7C4Hqkdmm;P-qtqroPBca zX5Y}e$wSK%d2&xRSN_nEtS}fpr#5+qr|O$?J@Cgbqq44vJ;42^)2tMmyFn;7{eA0abD!7{7twzCGYM&|6v$&|ZQkbZ zIkvR%=wuZ*+@Ka}S5^6aG)hZaj$h$(%)v23Kbb+n(tX5WX{bu_>VZx^g~DGKm|-x- zH(21|!#4G5=a@;irj5$ltr+^nX>0INZ4I$y4`RyMkJ9K7cW$bKGyR z21<+4QMPs{TW#j>bGdxkzWcb%jrdg(N(Y z2qx#B8*IT{4ZF_97FGS0d5?RlsG@`o*0n?G6%pnh{d07G;7i7pq#0m_u9nrAesZGL2oi;#q_6m1w9j z2_OzFQh_+jN}Fh+L!LF8;HTA$^av?BdaHTF1{#pPfG85C5@k7>5$7?sXgv{3YlT@7 z|IpCzO~enH8)8M=qsa}ngfNbN`LACc>?Y7AI{GtqgfreIZ(S6XMNwr0pobYD4J*>Y zB$nJRLY_9U$boo5ll)G^RhqozLWI-g8V@3p4x;k_v4rMMJ4F1TxeC5SB2AVbCDu&D z2?+!cK{WP4Akhw}Wg>Nd(WWvKa%D4GPE;Ak3kC1GARpeXgd7&YMB6kIgh#AFYa3 zN%AMB%rfLeTBlQ<^u(EJmuSoqM^Ovm5*(aHa@I+r3YkU2*K3eXc(c~5TXgj$a?y^4 zGHlc(C164!5N2)BB712!%XG*S*!F3bva~6(y#m{Qt4rEqLDr5Q$3P@t;PUzxq4K&J zker?JX94+%_B?Dv8q%cBGV(e;*I2KNNjut`@k-K*2C!C>Wi;T38JU4y3AEG=`XW~c z@iH=5PlnNOw6K{p>9&~+#PC8DVKV~+pF_dn<=cRtHQkzAN&_8i#~oMgAdP7*|1L6? zCes|q5Nt_e!}5&Z=&=3@10>KEl`ck|^b8476nZ<6U-8yW`4{|Y{4w>ElsIy z}bQ+Vg$U<7JBAa9hVhhKLN&4LYYgQ>)BZs*^+R1k!n0)<_9HQ0Q z`pHO|>oP{Jz^7($o2$e@w5*5FdlF4J^bs8*9S?wb;YZ+4$KV2h98I2^0D^GNjp}_1 z)*!W8yf9AysKQrOD6=(uU^5oa6YtHvhs0VFC^4&H3TUQnWC(ygG$|+y`c~sG|FHtg z=xeI61K_1|Hroe$Y4X8-P)W~is3&NnE$ll8yy-*n)nQ;xle&Ij2hJHr`-Az^8#Gw! z50+5ApwMxEUra&c<6ti49XSq`W2*c(ScIvu<6tSKj2XZTQ{fDN->1RH3}AwJ;wSz` zR~CAo0MoG`?gafR40eoDG65X0eE=}UxU2xM4pYAZI6*Ex2^M1Bv6EmkrkYQJ?U>R( z#i5v|z!uEwKZOdwzO#i(0y$JnX-` z`t}TP#FRx4u*6jAI5iRkwqo9fvmC#vXF0f$vmC!Gf;m|-gE>C>g25`RYj6&DVJhn! zCuVf0&>3wG;Y6Ae!m;vsoLU~r!Nr7f^5_obL|_mGHe$;mVZatsAIEvi!htoufg68C z1=GX9Iwf``xt>$dsmA%F1>A!o5n#nMHfZxzi3d{X=(>%LuEiV#`c4aIcA?&M!LbM+ z#7uJ$fle`CDy37+U-NR)R34sD^gc|FOUJ}xTxU83U3Rj7QN%u7&~}>31$}>v4b_2e zkwBaZ*Tei;|6@_Kmo@)ubqHRL1jdxT=bk~|Gm)+LXv1^6=8u9z6j(-~9wrw_R-&X# z(GBqeF0UX4?uz2fT2>U0CFL(rAu~In?D=SbcQF)>MiP^Fbd-bXaD6mTr6MHWUX1QQ z&VA77y_CyrH;jx1=9KRvE1&zcA|d-xL7fXEl?2D4!CVRz=p?zaA0Yxzlqy^(-OJ3D zBsD0_Dfal2-d{+&6ef|P25Xq~v^4$vwx$8uG($*bE}MJOm=n`f|FwBWC{^DVC8CWI z;YJ=zXG*54vI{|l`D1jYKms!L3=K6dlUi4qb(tEl7=?)!<>MGsGX87KoU1dSa4d&A zEf&ZUui&CsFoQC9GAhGL26@gxG0x&LsCON{iUrclfov&CpQ^Y`+RO!i&<_f3N%Qc? zbHUHU&RBq7{6m5B$VolaJP))fCtQ!LTv|)YnBArFF!DSnzRPS?DJTMg7_2)FR4M&I zj~JHD_?6c)aU|`#U-{u6xs3w8;^PNKReP(e(x-M6bt() zNSDjX_gZXa-~v#l94?ybs1t@DH_+gofwX!IT^9%N&orQW9CGN_fE^k&h{D@(^ulO9 z?Xy7|ITJ+tP>0K*Pa}rUYZRlB$McvaeK#M$gi(y#@MmyYJXnnL3y4SVI$CfPcjAE( zX1`>!KR?B6$%|knl?S<3<~0xUK8gy*od<6_yvt9>!lM^Cm$Iab$b!WSip^;bh*DNQ zTDq68&l3l<6S%F2c5&bmu|L^wyw<+-#e3*t0^TV_E>A4PG{zuaRW!HqV)8Mjx?i&S%&k}(gRfs1A zyRvvnLZFQk~TTIqL4fPS_R!gY}9mkI++u0QZhPsV&I)*FbBu~ z2{C|=5&?C!2{EXc0>r1YFVFurW_Wne894q)3s6*{v5qM~6x;AiK{oW%DZVuPq(%t9 zvJ_6K>)1la8MF|j0vW6{Efw*@v?;#&EX%b7DGtzy%ZGcNIdVfS^(d!DXmHo(!fe`9 zW-5@PVl9-9^?ip{U^g04)}`$P^VCDSqUBwk*E7; z$Z~lbwS?2sQTr;_lHh|ouW*Xxc?CKCu?fpAUjgEj8KWY-Bj=E#(`YDinfY$ThDyL3 zD}rC^zcqXW;zu~o-`u&DK&5m}u4~hg%LY5_@>n`&PNUdtyImAp?~u2Sr~AJD+Hc-@ z*b<_UqR~KiWaFQ-fOH4gkb$z>;Xq7=!Wo?Grez?TK2BI>nE~+6@1QH2t>TK=myjMc zQwua#m2E?H+l+?7xNY{V7Q*@rppEC{4_nvFi>)gM=Vby3dIB>MJLC{%pBZN-vDs&R zF}pPrC{X3?dG>a)1iB5qi3WEbGmo*M5^zocF#*oH3WTurWml0I-+*x$A3SoEKC{G5 z${Jrm^|*`%cg?|Rc;zb4z!n;i1$2ATcNOSi#`J55(Fu*NfqB%Lc9!UMW8b5(d$`;y zM=OGW_2GmZ%(=#?YZ+Vl4eYo^-|UPx=>7^q_&ik3;snus3#o-er!4x)W+tC#{2Hlr zqQSkU)e>M=Hk!|>EY9+Hk%daIB$>^YU^nsTI|VI7kx$YvdwVvJrV6aNa+kO#GU|c` z_xin*$%ab8Yv>;ex-4j!Y%!YgA~d+6rrB&LJ?+BRk)NfxY>qq}%Rzg{@;av)JK3_} zn{1gljJ!@CXyYwH6a)7i-OB<31{4qqf1N=mO13S3kKpW@aL*;*ZAwK9mfs>K!5KMV zDm7_4jY7qug?V_w(BPgljZ#{nvxMLi{_jSD0XgU_9ImA?V>w_lypscP*AUjRg_RBe z3a3%dDoaXSIA;rbavA@m1>`pWi=6^Jn~AB=DVGj$yo-r);tsK_mDbA41>$&7R^*}u zG6tXL0!?ai9_dYa2T*QfLOeW5;||$d^5{$Gc>_qpMK^#1wR@o(ESxl%hlfOC8W;2q z^tb_LQ}+Jtg8tXupYPaSE3$`U8N7jJwelyMEe@6P=;bn>|AE#il*(~5xZP|W8;4GW z9(nXh`oAqn?)0Tdm{){u#%l?3GAz&IET;NAJkHIO(oMuZ!-v`CH-S73 z(w)tI&X3s%H|Zb`r4D{pK>;eF!F^kABZQ&CLZmqSd6VOGNXLaiWF4LRWy=)RegYlG8c5IEQV?p&nR_q z!HEK&&IL77z|cSPq%b^NKp%eN{b7XXu5RfxjIS=>%x6~t%44!BW(ySpF>2YIi=XYE zgtX();NEh#pm8DRlI2#2bi=imhV! z>Wc>Vfflz6LoJt)Q?>tlB(%rO`mKd#NF5FCLabTNR->;YB`oAKdnGp1&jMo96i;{{ zDSaCG3q*r^pDLT;l-pO6f^gX_&VsWK2f~E1!KW zA&oa+w(xDv?dHteh~2&!v%@!&|IgWXfDPGcjUlLqP8%#{v+Hd!`{QlS9P{5nY+XCd zUU-KtvdPO=QuZiHo4+FU*@dCnyGVW*eutBABHN76UM#DHYe!pRDw-eerQQZN6a)N61MoP46TL957#L7zHdnu%YeNmVkTA-H)PpZe zI5Fy$pmRUegW@Ye3lCBR9v>HmvxT)@Bs}27r8L0iH~G>^GfIIxwIWKo^4kWG!)<6q z%;R!A&kshHp;okI8JGaWO9AeM!|SD}K!^SRNA?+U@LUU*A=#Sa1QSdQV_P8K?dDimf{s&DPa`x6z+Sz@l~w^t+Oel(2G;C#{o@@KGe)sE1Q1J#{k4H=7xe1|qihY)1gUULq3^T+kqa=O0!YEfkQDsuo;mitO~xdo zqJfqG_jCDkc%p*Sn69Wm?q^+M+tGx)cL9DU0_E-^_Tog$MsF?fZnWHgl5Zn28T6OQ z&6hD$=`uM98dh^AzL9NaI0efj?s2SZ-$U%eE12zx*woDW?FnnCMb=}`-@a&Z<+(kR z4b^~;?s0C~y4V)HvfzeFpakVA>CNMOG-CY$^iD{7`hTBzwXU@sx!a4Wp!&BozPk*Ke>b{_dX;rTH96B&wp@V%5;XL%O9}TljzUKT zcT=Ht4C5olNHGdeZCS22JzVi95Fqw0m;nbKaLVw{1GM>C0f2c^P=O7rI5THih4|kl z(EL!ur%eC*Ht4_i1t<7uEP6qNvH!jr`Y%?1pTeqB3y89t=^r?(ic%~_DRSR$hzinn zPgiqdyHt&0J0eW+6=7R7XRQpd`A*gpUka*Nqe*Aa5#?aA!K0QZ$iZ~4x^Nk0`JSz$N|@7Xx|)+XHYxMlQjNjNB#+5%HZcMuY*E4kFyRv{*#( zd9D~7Q5xLk(~z)_{|zEq1jdl;zTiC!Q9xLg3sDu~Cn?@)$$ZMjh_p9Fxy!925Ux;B z5oe`vY`p!D7fz!+<)YEF7%rOPpgxR{DHc#UO6ivod@f zKdy?fbmWgw4<9uXDzh5=W)^$HD)w9D#Tx?kn_gX%F)w={>rXFxHC#DTF&H>F@#D02 z;AaV1*Y1z$>9^c4*rLxd-LhJ;gQQmArkugQLRA?M8dw z@9GWF*FE2R=+*~+zXJz4?n?9QR9dRra-Vm*UEvHT;ge1qhb>2UNmPYAu`3T*=sK4B z;P-_{kpP?eg5HI-hM})E4m*wx%stLsHM>*y>gbZAW4|7h&sjXN?CJPQx`b1M(yY;) z67&!gyCI3hKZ*KuoffC;QLTv$^-iw~GJnb?9=Ezsb^cKm$wpIV(^Pwv3jmmFkl*110VUybCKauj4S9{_k)kaOG zG40ADm|VA{!z|{UlT?*C-*``h9_^I2>{Lj=u??<@yfz8%EOOR1t;{fY61i;gAy+(S z(;fwkOFQwt%%-E8+WMl6(-wI<$Shgx?(j1z(O>`B%1de|Blpb*%McHZ?1kH1ngp18H)v-0R0f%Jfgee+v@b%VgK>_f={!(khwA_c7aJ~d~|yU^&i z&MmriYwHc4i|_7)czjrRZTRuw_W=tYU7+h}r`tJg_8PEq^GrS}U)(&auBeT#ZEtVX z(qy0NrE3zbzgYII>Gg<}GF^D(o4iMDN%N<9^BKk5Z8DoSrM{87!w|STL*@D5!p&*{ zGHW&mUU|f5T)*r4*SrQ7$Mwky?OCR89YR(4ca(q5Yiwe2ckWGl*m=fPCCjHj&qZL% zcp`mx#`Ehuj=j0(pIn!%-dCrX-|n|`sewyI>!P*q%Zd}P&N{KTKv#L5aoT#B0fD;` zUDYw^)^XR=ygtnDHjRm$|3Iz5cERhdH8CsWml~Wke|L1`M#1@YdYje%G@8$U;`j81 zo|5z456@aXcN;HkjC=lMN8#1yi5pec)n%`cljzE5r*Gq}7w>AW%xsqob>|7*__(<+ z?BmlFn`Rk5W61X}(8%&lj?mng+uqIFT{kaOA=T^F$kn)c?>1ZdCJ1#7>^*JnMd#k| zYmI5w;-@=SG%z~-7MSc1{T%)3=YA0ngS3g(J-_4@ch$RVZ5FjH-Nm1Byw>blb9c;& zuZPkGJXDHqKBe1~PuuN7*Xlp^wC>j$Q4gC%7V<-_dhKVzuesnd(I1D(!-QN+)BX46 znm*6C3U)8yLRN?`f@Ef>uX77)~8)F-1S%0$ws%Q%SQ8l@YnZSYv{W*eV*~Pjsttw zwfh_RDOEV7GY(s*C6Cehc73>2ydulM!e&d%Lav`tJUh0g&uB9H%Ju6fFY~@>+v8jK zfTYGE_pZ85TiYwU$mpg?$J$ImZ~2l-+$`q$?fScTG4#8ua7RoXj`oH)KnWgX>^tEoto@H=Qg{Nf$p!)>)ldKI}fj`i}SQC z`MyX=V0~$4N^4-Um%o97-nH8dC*e1P>&Cy2NXc|;h}T@)VV~`+p?N69-%-iof!6`! z-QATJd+r;(O-|Rn8>c!;P`a7!9(iJet4w*b(Cd_4Ju(eG3;1P>N+cW4t(zVpu~WV& zCG~>zF8nXKjdp3P4`O$I*klLZH)QN;eq0%K)`}^$d3T5C-Lg#A`-}QspHW||qkZmk zlgjOwi}q``52^)^QEH>K(gWu>70wj#FM=WNjlxzJG5#ZvH80l)lg` zUdQbBrx~g_Id;zGg^eLMKG9|>W~~yFX*9mbr$JXLmd~N zo%(>t3kTmZy)9+Af={fTT-$xUTf%pSM;Cq5sV!Y^eZQ8*?fSdK#?|BQo55R!t6HA? zDS6y)9&2f%!yB*TC|6bNyrn zsfla5QhMA+)}6E%J-om6%%XE%=I-U0e-~dpS;UB`2v5p+c%bq7>X~7Lr&CEl%)w68 z=<14*Baa8#-s1QZsW|21&8b@w#$?FL>b<^7QHrXwTE3sGguu|tcy5Hqh!}ecV*A{dZz1>`s7UR8X zAp6e!g=&2>&&Hifcqw_HP#-T^uf|)yPGeyu1}TEIuXBNeW`(R!DE+ob~bt*W=bIAP5gwnT28O%PQD&Bv3Mi3 zu)p{B>>l5{n9lIo)wWUA;+fAZTeqgAmghG29FA9tX*TOJGxB~n#;j^>@^7c>ZfU=x z`<%hEbN&XiuTOiJ`(#?Hb$!ae{t*Nl)}?+QGcV{1Y5b5?{*$rY+bB??^GzR(*=hXz zj()_iFAc}6cV>Jl9;)b>SQC6G;q~g}Tkg(Z&Z}R^^UA>OCw;saop9A1n{!SqJ&`?#db%v*8 zPE?=pt@l00xtY98HuEPD! zdFX3R@D(GjpIJk?59#GWLpv9y#TfiLV({yz0r!!>!$gzG#2kG^Q?1r!)ldBEbT1uL zw40q|98|P=UjT2VV@es>sKv~f4@t@n$q>qhb_ zLmX^(w#YxOIB6!Mqta96mlm~Ks!DP*UAd@ItthRfttzNMTUwxWlpd>ZdLk;-+I>gU z=~GL?uXie)8cUww-I(S5^@&AQhvTcKA_9gL%*sOT{VMnRwpK(~?KF_`&@~-5_;9*o znb+7GOy=)dgmCX}J}i*N|PGaQWNf2Xs7df3V(O z_n1wqX7>rxT{fHgi)^{mn|;{z>j}@>t9Xx_)dg)d~MB4#jhO_!R=lz z)^vr<_3q1(C{_*eixIHst&IQva&EZkt9`HTJHOVi3X4A;EReT`@ARI&nE|0?kJDd# zlHFrIx^u$b_;ked{GN9SCbBQILsIB<<9ts8Wm3O|32kk7mr$GkBPF5s+Yj{>h3)-j zcUQC?^8$0<3ykF7UD}saXBp(M2NTj!KFjl~>tXiCwFS=pbHweW+9zax6n53xeE;i5 zbbV7_Asyq^$@bjm6cgHQyQ8pO>iVGQVdJ zu)}CUY`)ouyq^PC#fz3SZ^iKKK8HvCdReD6>1?1%C~Qs3(Ce6gZadvpO^tSQooPe+}$zxhp~zDa26ksX4smGccn#@&2>%P;*9 z+U0#+$L_O9$G5Os3yNR%xPKkml_=$L;5}V%OF%%hq)`5z18rK`7Ey4LFKk#*IAnaT z)uuSx;^e+JJbeC&LRBAme2*L%mic41+ptCCS8WlOkg9xMsQ~>f&BRW<`gxD4H6SEOj}{yDNYpy71DnhM|UhRZw)iw%FWQ|7CSyzwg`W zVM)V7R#8!_6~EgZs#dB9zN;Fm>-=eY%$jwE;uiQWs!|3V@ zmNSM-PCN2Ckh7jbExYDSQ5gjWd`Q||>OuKhTlol`ZTmZ?eX510@qQYkuulS*0z!td zt)>~_wQHp)8)kRd5&1MkpgV-`C2s2z2^#GpH;p!nA=0W?tld~hu+G2RmUl-zg+@)` zX?+eUVhFT+MJBmgbI`@YV*cGa(GYVTHf@MeV!Uk2W?>kS?LS!O?#|F7Hq!7IEy%?f zeyCDh&|yI3{deat){Q{i6De8?)St%~?o9Sb z9;^;AK^Px)86oHJV^rYGK_RHbs+LTffp|JUjm9SpToiCAu;wx$%?Z;lm*^dfgyDx0pl}(?&iM)S+3u036_ zRVeaK=cCpD>YoF#!I%sP$|7bkU%6sw$a>q_bDamE)RVG)FAG{P+JpI1*5`R*F=%KT zYMNGVhQV%xO##%nViI6mHo?an^2T;jPVEn3ODVlXAM7W^jrYY;DALd$vzU$w5*Cbw zQ&^Eu>?uVKoWg!l*iWZ1bBb#ei`_)w>Yvy1`vwCTWK~RxDaL>ugbXUiV}6JP>uqoq zW6nZSP?~Ggut48DzMmrR zE8}JqDW#6*Qe=Y${(vHrX5%sxd0Ph$qR1tBcmPFK7~o8b^fkgiQ>6P6+=wExmf_c^ za2!_P+o^O*SK$XKz+5xD5@Sty<72B;4#Uj7fzoZbZirdnVH76W3eTrVIMf&v`F~@^=VzM1yj*7av`<0XvG`$4`8^NOfE`{^xx(mLSQdii8pQgyXJ-7iC z@4LM?KSh3b$8n1M<$+(Muot}XB^3GmAdXQJt;ZL4rnsvD@FhqMga+bmXs9?G$B(0( zo7r_1SE9_0pTjjNa#kD;FZsy(S*FE#yn`y4QUcyUaX%#D>nQHxB%Io;nU*QI7}|)e z-9vabz`+&{_Y-Y^mBT40TtkR56E5NGmE+H4yc&Vm^*4BKgEJ~D2%S*OhFXpw=z7R;$Er1@5!;YW{re5pRz@0G@Us#nmQ{AX8bd}Rs^YR z?Z<~G73%@~48?srfv=>T&c=wF6#14Q~WY^FdlJVXRV z%JC5x6|b@&!A?0`nCM@FoF8!@mZ1kKW~nQ|MPX~*2=*jj>Os_@_ae+`2Z$$>-JV0l zVQPhO@Fmt!WKICF4P^rOjuQ)6?}>ovabhXU7dUmCK(Ajw>2X3I@uGtWS-?*xG|^W> zIV*&3FiEi-L)ej)gb<4m?^_755m9ST5L*$IH%alIB}0WruLsAHX&ZqDRu<% z5tGsgw%_syc9#5+Y#*+XgelU^k0cHvO8qoDX8+S{do8Egk;+A}t$0jQWl?OLKr}m# zEz#@<@}r3j$TC+9;fSc6F>K!L7{Y(X%;qy7@bk9Y|RbeP5DgR62$bgcR z6mXQmo>T=S=T<7i>e5Uw#Gow1$3f=1G$0>G%tLwDkerX{40?t-;7MXTN+Y>rnT*&g z>i??5Fv%^-1_I}a`K-`SkBVu>!py2*(_m)^|7HZAy9%7o69z0)MAc5ygP^SD@R`VzqJFe&qGJI^BC){>4H>t?7%o4auo_7R~qb(Cq$LV>eaU_x~dPi zvMcbEp)hHh3}F*UiznuwEIUZm`U)@*PiV4Y`sefoUlekvrBnk0KrBFd-T>-dsR5?} zm2pvtUHm)PS+UTi7KdI<9YeTL0sI1l9MY9dfV!XSNiO43gADLYU{^PQl=$C+lG#(n z4aW(N!+~QnW2jjNC?vAYXeUB5fh~;cHbutVRtXR=DTyK_v)iCVcZvhETYcUI(6Bhn zLYu<@(ay?1`2wNHs?k5EK)7phAjerqMnQ)dh`GQHC*=Zk>e9)w@#F%bgsLz`a-AOn z=O986=wBohS-n=!++I)y17N^mVZ>qj7&vf|ycM7QxFY=v|2!T>K zk6AvOZ@A1!fc`>YnK?&m=?ICAzXZcBN+raput_@?eo_*ufXbH$S)zf4F;t$)u<*{8 z*ah?>MaKx12wb0JH<4^Z9;A^*$Rgv4kRtx@B5*z*#tXKmv1`7Mlx6ZESwk24GX?aCUnp3DskvO6{jPy@QCJDX0NW5+wry;6E(rL}upx zdk|I!+e{9F;&TwRHJx3uPmscubP>Bn7vlqSGT0?E&VVupraXt3~OdyZWWPoh2#T?7s;BfqkS&5rUm+xr;dxh}g+P16 zhF1;LNC+g^D;*I#?+PK#GQ8r~uV>`XLu_H=jMaWSg8tc#af7id?4t2zK{M~1ku2H; z%9drZW!9uj+ZDi5w>WuAfnxvXegYl|ILa~ZMna`PGaFi>eYS23Own#inmHaMlzO_= z&W3)By^$YygCWIAg=b%#77i81VJfN|e%cRALb*ZEL2L#v%AuzB61A^f6;R>U6eUrg ze<}URrjj{$&St?Dh_!=_b2$+5{TF`yRrW%(|0;~N&=1KjU8T&ZJa!S<0Asa+O^zeh zKS7hw>0t0GA;ii}EJSvBCd6KXO@;#>c@lNSyd0`WrS2@Yt%T9thE0tFy89G@3Pxa} zz-zKcFXX@ocb!HufhbH8yn@w1V`-3-6~!Q#VlEZ^KUX;aT@yUcA?R)hMHc9}&;mG* z*e3B9&(ueiEw>3-cop?Jmq0%z144OFCoc&c$b;j^B#&B0ESc&$>tX&DuyHP0^_NJf zE~`@QUT)?Lh=_rWbDr8}kSJNul}Dh%G8iWPsAZFE3DA-a7YFTY?97*3gR-_vA z$2q(%;sO!r)WE5)O77-`KBmE@%2DQq{7EGt&!@%Mi5CYm z^4aUCNjXI#r(yLrjP5FOIY<+9%a`K~MoZsEY;A$LAARu9;Lo--6k`=%&Xq2^(?BxTK>}lZh0Nft=3fX#c zg%A+-<6nUFg;WfEs)-hxq5qAr$#bSWhVY<}T4EOR)z3ZwVdQg+G6%GK96>`TFd;C+ zb{k&=y{2Hm<`!Jc;RPL95OeA`eU^n5Bw$nJuu{y0pzw-L1e_|OhR)>u9mI1Ed;y+G zJRg8pdef%#=TZJVx+&CK4jbn}vx5)m^77-nK)IM*sJX>3}X=q`cOh#TxKRDl$JUJ|jbZ%_}= zVxFRBnxNBq*i<j}9B>)LCGFpf3$@ z9xzeD?pZ-5G&5|7WJ{RTkoIyL<{_Yo30Ppx(cf!KLd8MU5}bER&zdWo^z^~t;}C3| zo4WEcq}I3$=LavDZ10~*?;XpLOc9P4RsrJ9AL25B-WN?tVm`3G#oq4&Zb99vYf$95 z@C$3o=Tw-=<9BnR}30%N|@1q?WP07nH&Md^>0=BWAHWIqXq$b1gJr0>=vHp0W>!mJ{eV z>%g)co>UHd;9z+OeAw?PC#Hj0p12seP|miSLn6ey|3Rp!kk=P7eQ_csaGqKU!k4KW zOT@;5|6r$s8HXrqtf0J3cx{u0g*Y_*zbEs}Ah?29!ZKanQ~YEAn%oQ{U%+9y!k=YY z4IBx;#liI|f}f?3YiaZ-2m;T*X278^5kM(017R4)DhYm882ireY10vdKhM_vuZIq> zypqrYvBz;C&<){eAP-c+8rYttY-v{!8Z5tUC7B8jp}%q17IFAJa*o34GT>_pGEiiw zx(XV)%s|5UYT_@%)~bf=x;RQF;5>{qu$rwC4TX3D05!Gnp}iV@K{_u<_Krl7tqGJa z;M`zV4YhS0G&CNqhsC=LE6sURa^oVx2i8yrtbMmLG@Bvx>J;dmWCVQ*p~&N44fOat z6|v{nve_23knMXJv11^cRbr0U5gfHK2GzCH4R?GURPD_oRW(3rHa;Dg*HJn2mTqSr zhJmewfpOl@{mdcpvLLpOePNYPnkmYgWKRPhpp3O#&C+pUx<)ECFEF*U4ui9uVf^3w5~YesyfUgs)g9=z|0!a_S0ch7C7Ru7BK1)A=p&K^ z_2crush%zKCS{GECS~H_WCWQIfHRHMy{u$;Qc?;`X4;g6_c*9&By?D5L<(Hj(T4yo`2UJH z7uU@|u!%5WEe{u(!v{qm$OGQJsZAz9-tcxDC4ieRq0Z_>7WT-=C#y7IFN#CYoCg)P V00P_&Aml)M6Cpf3BoNk^_CF%*+Y0~y diff --git a/diylc/diylc-swing/lib/swing-framework.jar b/diylc/diylc-swing/lib/swing-framework.jar index a0518534186b65886cbd5bae8f803303171c71ee..8e9d33b0fce0155faef2faced767b85ef5b7ccd8 100644 GIT binary patch delta 15214 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 Vn9lB0aY1MqfW#<&E}-rs{6DnN0cZdK delta 15120 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 P$TL9kP`;jkfgt=J`~k?l diff --git a/diylc/diylc-swing/library/main.jar b/diylc/diylc-swing/library/main.jar index 99a59bdd2e7daf6af4b5a351e8af3aa66b50bcdd..4a6f83b6f8ba06b36fc1561b50a458d7ad9b0be7 100644 GIT binary patch delta 15633 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

+C?_vuPl zg&wQ)Py+XxC*FXe=Z5jM`FoJ?-&~xf1-rfg%($Zkuw)p3ckN*3Fl6x^{XaUc5xmbH zQT*DjP#tKYI_%G@y(kWkJ2mng0r=pw#*aW$(uZIw=;vW<-~v=4Soa&!5uE_X#{gDP zY83y#1R9?9eS!wwCN$FbuLW3rBUd2B~SR!w0~zLg@f3gW#}gm&Cr>f$i9M1 ztM2cKe+wWVgM8!Ef^|w`_>r$L5U{g*3ij-O9(=O~Fmz)KU;*>S@Y#KHBD3i(H1gx2 zX}Lcm#zuSiLvX~BCf#tGR7+SRqYz`Ey#XeQjt2X3g{J$F_39psKZ zG_OVXMYiq^b^)!*TJ>K;owbAki$q zzkAjLzmSnQN|W|MQ-2tX96s+>{M2>3r@Y7LPuSO!_Z7B|A4nRM5`ub0zIOr z=@1C9eZxy;YkyDt8$;3}z=r&Y20+?%=m&!=6xm1`0B3^ha(dt-$cv)^QOeR1j$9%0I=&1S{!s*BH+Du<%i`Uxe&ks z{$z!YH20o&h=W1bf}tXgKr7My*H(QMaCwRF+A8^Nms$-+Ar0Pv&bZ)kp6$vNHE?nv zu>Bjrj0@-Qsn>rO9(GL}RuB|hCQLrnWvBpG&B457fDwcaz-Ymvi}h_SVE2zHStYN@YS?j8GN! z^nB5tGHQX5^NU@2jc7+1^mFiur z5asDdb__`~3j*@T-D8n29)1}46wC`)Y$nn{L-V_qNrIrF^t8{L7Q}=*Yf`L73=DoHsIEkUhX`PnX?3{6{-VB_+Gk^cPJ1e56DYP*62_ zz9*%Um&TeYm7lf8fl}i)I+!RmbK5>dscySE%9Q%zmoauuMkyYeA3oZz34+BLSAVMb zV&@VRSkSVlSfhIX6#FTZ@+_@jcy$+RnY5;I8S`q^olGY6c{s+NAb;B`iuD% ziW@ L8MRF-EL#C%CImhVMj;aL1nq+{#&^3&p)tk(1L2nnP~YfQv!LtanHgdwEz4 z_uSkDeD({#Y*7WFBmOQ|Y>8toAQ!zDi$!eBBF^8^r z^y?|B6(2#^22d?T5{U=Cb`h!i#~VdA9~#c|LQ$vcleD9y3ta_aQ#h%j5qML5=0WjW zSE}iANlavGOuHg>r46a?t`&otP=yLf8pd3UMiMXZN|UsV7HvZI$nm`)y88;Q&QX1F zd>Qi4KXQ~lVW`DU(tK}HgDqa?lAglsb&$y*8JZe)DMu!}uMC;=<;^9P*<`kqHZ~z8 zSoqQXjTwLrDT_sZ)FeJea@4=*Ds7|@)@-?Q^D?M-&^{$PI_SvE>knh4FFj~1RfDCT zY>AdbrKe1xMUphoi+Gq_GoefdsP|<$OvJ<7O5~*fD=A50NS5>3A?KP<1Xm|4Pwu=4gCsXADQCLasy%vVn>`* zjgVgXi*%fgOJ0$bONUmEKPkZmX|$NW;k1Y?;2-9_|2 z>ZJdu#Hlw^roQ#PvmitS)8>f(Og7LK_#0^`1l|yjFO_&eOOWr`mm$&YHuoJ{_?#4({;}4?cvn-hAz2xyM zfm!d$FBrMzJ^3YT#GFxbGTS{I$H@bj!l+MWJ~?5Z$(RPSM0f7J799P#$t%Ikxq}e) zy@Pyo*J<)5wk7SGBfGee;Mz_9BJwKO1i8{-A_*WickUop-D{`ym#eepFp)`vuMd;IFmZN{*utci?L zy?i1cWs4ktF5jfNY8~-it}|>$Z5&9h(&J@k{g$k>RcQ2#Y-d0MZVkCatX@*FAF`jjqqQes@$cc8k}%8Y(6B%(>^`8lmxfx zZ#abp%~4jc{M5`-hOnf>Emdx+cE${L|7lU8A71OKw85<&BPV@wy3&j}k&~h9VbvOz zrHu2USuXuasYB#?pda6@^rH6;-D9tkC=CRK}CwA-o#BE z?m^Nsc~wZCi3si#j^t1yIp5q;UC9z19jV&!=sT%1823c98cI(D$1!2kYazSGU2sB` z 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 A7XSbN diff --git a/diylc/diylc-swing/src/org/diylc/swing/gui/editor/MeasureArrayEditor.java b/diylc/diylc-swing/src/org/diylc/swing/gui/editor/MeasureArrayEditor.java index 67801400..f7ea5e87 100644 --- a/diylc/diylc-swing/src/org/diylc/swing/gui/editor/MeasureArrayEditor.java +++ b/diylc/diylc-swing/src/org/diylc/swing/gui/editor/MeasureArrayEditor.java @@ -60,7 +60,7 @@ public class MeasureArrayEditor extends Container { .getValue()); Double[] values = new Double[measure.length]; for (int i = 0; i < measure.length; i++) { - values[i] = measure[i].getValue(); + values[i] = measure[i] == null ? null : measure[i].getValue(); } valueField = new DoubleArrayTextField(measure == null ? null : values); oldBg = valueField.getBackground(); @@ -101,7 +101,7 @@ public class MeasureArrayEditor extends Container { .getGenericSuperclass()).getActualTypeArguments()[0]; Method method = ((Class) type).getMethod("values"); unitBox = new JComboBox((Object[]) method.invoke(null)); - unitBox.setSelectedItem(measure == null || measure.length == 0 ? null + unitBox.setSelectedItem(measure == null || measure.length == 0 || measure[0] == null ? null : measure[0].getUnit()); unitBox.addActionListener(new ActionListener() {