From 2a0da6e7941c12016c5a4d5a577cb2005faeb92c Mon Sep 17 00:00:00 2001 From: bancika Date: Wed, 28 Dec 2016 10:13:05 +0100 Subject: [PATCH] folded both P90 under the same component --- .../diylc/presenter/ComponentProcessor.java | 4 +- diylc/diylc-library/lib/diylc-core.jar | Bin 230151 -> 230177 bytes .../{P90DogEarPickup.java => P90Pickup.java} | 123 ++++++--- .../components/guitar/P90SoapBarPickup.java | 255 ------------------ diylc/diylc-swing/lib/diylc-core.jar | Bin 230151 -> 230177 bytes diylc/diylc-swing/library/main.jar | Bin 357176 -> 352942 bytes 6 files changed, 93 insertions(+), 289 deletions(-) rename diylc/diylc-library/src/org/diylc/components/guitar/{P90DogEarPickup.java => P90Pickup.java} (69%) delete mode 100644 diylc/diylc-library/src/org/diylc/components/guitar/P90SoapBarPickup.java diff --git a/diylc/diylc-core/src/org/diylc/presenter/ComponentProcessor.java b/diylc/diylc-core/src/org/diylc/presenter/ComponentProcessor.java index 08ffdbb3..d972e94e 100644 --- a/diylc/diylc-core/src/org/diylc/presenter/ComponentProcessor.java +++ b/diylc/diylc-core/src/org/diylc/presenter/ComponentProcessor.java @@ -119,7 +119,7 @@ public class ComponentProcessor { componentInstance.drawIcon(g2d, Presenter.ICON_SIZE, Presenter.ICON_SIZE); icon = new ImageIcon(image); } catch (Exception e) { - throw new RuntimeException(e); + LOG.error("Error drawing component icon", e); } ComponentType componentType = new ComponentType(name, description, creationMethod, category, namePrefix, author, icon, clazz, zOrder, @@ -150,7 +150,7 @@ public class ComponentProcessor { } else { name = annotation.name(); } - IPropertyValidator validator = getPropertyValidator(annotation.validatorClass()); + IPropertyValidator validator = getPropertyValidator(annotation.validatorClass()); Method setter = clazz.getMethod("set" + getter.getName().substring(3), getter.getReturnType()); PropertyWrapper property = new PropertyWrapper(name, getter.getReturnType(), getter.getName(), setter.getName(), diff --git a/diylc/diylc-library/lib/diylc-core.jar b/diylc/diylc-library/lib/diylc-core.jar index 348025242eb9fc3a6d1cc75bc1a3beb58261ba6d..56c86a85b6cd100a45db090367a1de682b247620 100644 GIT binary patch delta 8931 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 LloG0>Ov(NaLpy { +public class P90Pickup extends AbstractTransparentComponent { private static final long serialVersionUID = 1L; private static Color BODY_COLOR = Color.decode("#D8C989");; private static Color POINT_COLOR = Color.darkGray; public static Color POLE_COLOR = METAL_COLOR; - private static Size WIDTH = new Size(41d, SizeUnit.mm); - private static Size LENGTH = new Size(86.9d, SizeUnit.mm); + + // dog ear + private static Size DOG_EAR_WIDTH = new Size(41d, SizeUnit.mm); + private static Size DOG_EAR_LENGTH = new Size(86.9d, SizeUnit.mm); private static Size TOTAL_LENGTH = new Size(118.7d, SizeUnit.mm); + private static Size DOG_EAR_EDGE_RADIUS = new Size(4d, SizeUnit.mm); + + // soap bar + private static Size SOAP_BAR_WIDTH = new Size(35.3d, SizeUnit.mm); + private static Size SOAP_BAR_LENGTH = new Size(85.6d, SizeUnit.mm); + private static Size SOAP_BAR_EDGE_RADIUS = new Size(8d, SizeUnit.mm); + private static Size LIP_RADIUS = new Size(10d, SizeUnit.mm); - private static Size EDGE_RADIUS = new Size(4d, SizeUnit.mm); private static Size POINT_MARGIN = new Size(5d, SizeUnit.mm); private static Size POINT_SIZE = new Size(3d, SizeUnit.mm); private static Size LIP_HOLE_SIZE = new Size(2.5d, SizeUnit.mm); @@ -61,6 +69,7 @@ public class P90DogEarPickup extends AbstractTransparentComponent { transient Shape[] body; private Orientation orientation = Orientation.DEFAULT; private Color color = BODY_COLOR; + private P90Type type = P90Type.DOG_EAR; @Override public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project, @@ -75,7 +84,8 @@ public class P90DogEarPickup extends AbstractTransparentComponent { } g2d.setColor(outlineMode ? Constants.TRANSPARENT_COLOR : color); g2d.fill(body[0]); - g2d.fill(body[1]); + if (body[1] != null) + g2d.fill(body[1]); g2d.setColor(outlineMode ? Constants.TRANSPARENT_COLOR : POINT_COLOR); g2d.fill(body[2]); g2d.setComposite(oldComposite); @@ -96,7 +106,8 @@ public class P90DogEarPickup extends AbstractTransparentComponent { g2d.setColor(finalBorderColor); g2d.draw(body[0]); - g2d.draw(body[1]); + if (body[1] != null) + g2d.draw(body[1]); if (!outlineMode) { g2d.setColor(POLE_COLOR); g2d.fill(body[3]); @@ -130,9 +141,9 @@ public class P90DogEarPickup extends AbstractTransparentComponent { int x = controlPoint.x; int y = controlPoint.y; - int width = (int) WIDTH.convertToPixels(); - int length = (int) LENGTH.convertToPixels(); - int edgeRadius = (int) EDGE_RADIUS.convertToPixels(); + int width = (int) getType().getWidth().convertToPixels(); + int length = (int) getType().getLength().convertToPixels(); + int edgeRadius = (int) getType().getEdgeRadius().convertToPixels(); int pointMargin = (int) POINT_MARGIN.convertToPixels(); int totalLength = (int) TOTAL_LENGTH.convertToPixels(); int lipRadius = (int) LIP_RADIUS.convertToPixels(); @@ -144,28 +155,30 @@ public class P90DogEarPickup extends AbstractTransparentComponent { new Area(new RoundRectangle2D.Double(x + pointMargin - length, y - pointMargin, length, width, edgeRadius, edgeRadius)); - double rectWidth = (totalLength - length) / Math.sqrt(2); - RoundRectangle2D roundRect = - new RoundRectangle2D.Double(-rectWidth / 2, -rectWidth / 2, rectWidth, rectWidth, lipRadius, lipRadius); - Area leftEar = new Area(roundRect); - leftEar.transform(AffineTransform.getRotateInstance(Math.PI / 4)); - leftEar.transform(AffineTransform.getScaleInstance(1.1, 1.45)); - leftEar.transform(AffineTransform.getTranslateInstance(x + pointMargin - length, y - pointMargin + width / 2)); - leftEar.subtract((Area) body[0]); - Area rightEar = new Area(roundRect); - rightEar.transform(AffineTransform.getRotateInstance(Math.PI / 4)); - rightEar.transform(AffineTransform.getScaleInstance(1.1, 1.45)); - rightEar.transform(AffineTransform.getTranslateInstance(x + pointMargin, y - pointMargin + width / 2)); - rightEar.subtract((Area) body[0]); - Area lipArea = leftEar; - lipArea.add(rightEar); - lipArea.subtract(new Area(new Ellipse2D.Double(x + pointMargin - length / 2 - lipHoleSpacing / 2 - lipHoleSize - / 2, y - pointMargin + width / 2 - lipHoleSize / 2, lipHoleSize, lipHoleSize))); - lipArea.subtract(new Area(new Ellipse2D.Double(x + pointMargin - length / 2 + lipHoleSpacing / 2 - lipHoleSize - / 2, y - pointMargin + width / 2 - lipHoleSize / 2, lipHoleSize, lipHoleSize))); + if (getType() == P90Type.DOG_EAR) { + double rectWidth = (totalLength - length) / Math.sqrt(2); + RoundRectangle2D roundRect = + new RoundRectangle2D.Double(-rectWidth / 2, -rectWidth / 2, rectWidth, rectWidth, lipRadius, lipRadius); + Area leftEar = new Area(roundRect); + leftEar.transform(AffineTransform.getRotateInstance(Math.PI / 4)); + leftEar.transform(AffineTransform.getScaleInstance(1.1, 1.45)); + leftEar.transform(AffineTransform.getTranslateInstance(x + pointMargin - length, y - pointMargin + width / 2)); + leftEar.subtract((Area) body[0]); + Area rightEar = new Area(roundRect); + rightEar.transform(AffineTransform.getRotateInstance(Math.PI / 4)); + rightEar.transform(AffineTransform.getScaleInstance(1.1, 1.45)); + rightEar.transform(AffineTransform.getTranslateInstance(x + pointMargin, y - pointMargin + width / 2)); + rightEar.subtract((Area) body[0]); + Area lipArea = leftEar; + lipArea.add(rightEar); + lipArea.subtract(new Area(new Ellipse2D.Double(x + pointMargin - length / 2 - lipHoleSpacing / 2 - lipHoleSize + / 2, y - pointMargin + width / 2 - lipHoleSize / 2, lipHoleSize, lipHoleSize))); + lipArea.subtract(new Area(new Ellipse2D.Double(x + pointMargin - length / 2 + lipHoleSpacing / 2 - lipHoleSize + / 2, y - pointMargin + width / 2 - lipHoleSize / 2, lipHoleSize, lipHoleSize))); + body[1] = lipArea; + } - body[1] = lipArea; body[2] = new Area(new Ellipse2D.Double(x - pointSize / 2, y - pointSize / 2, pointSize, pointSize)); int poleSize = (int) POLE_SIZE.convertToPixels(); @@ -197,7 +210,8 @@ public class P90DogEarPickup extends AbstractTransparentComponent { AffineTransform rotation = AffineTransform.getRotateInstance(theta, x, y); for (Shape shape : body) { Area area = (Area) shape; - area.transform(rotation); + if (shape != null) + area.transform(rotation); } } } @@ -236,6 +250,17 @@ public class P90DogEarPickup extends AbstractTransparentComponent { } } + @EditableProperty(name = "Kind") + public P90Type getType() { + return type; + } + + public void setType(P90Type type) { + this.type = type; + // Invalidate the body + body = null; + } + @Override public int getControlPointCount() { return 1; @@ -293,4 +318,38 @@ public class P90DogEarPickup extends AbstractTransparentComponent { public void setColor(Color color) { this.color = color; } + + public enum P90Type { + DOG_EAR("Dog Ear", DOG_EAR_LENGTH, DOG_EAR_WIDTH, DOG_EAR_EDGE_RADIUS), SOAP_BAR("Soap Bar", SOAP_BAR_LENGTH, + SOAP_BAR_WIDTH, SOAP_BAR_EDGE_RADIUS); + + private String label; + private Size length; + private Size width; + private Size edgeRadius; + + private P90Type(String label, Size length, Size width, Size edgeRadius) { + this.label = label; + this.length = length; + this.width = width; + this.edgeRadius = edgeRadius; + } + + public Size getLength() { + return length; + } + + public Size getWidth() { + return width; + } + + public Size getEdgeRadius() { + return edgeRadius; + } + + @Override + public String toString() { + return label; + } + } } diff --git a/diylc/diylc-library/src/org/diylc/components/guitar/P90SoapBarPickup.java b/diylc/diylc-library/src/org/diylc/components/guitar/P90SoapBarPickup.java deleted file mode 100644 index 726df5da..00000000 --- a/diylc/diylc-library/src/org/diylc/components/guitar/P90SoapBarPickup.java +++ /dev/null @@ -1,255 +0,0 @@ -package org.diylc.components.guitar; - -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.Shape; -import java.awt.geom.AffineTransform; -import java.awt.geom.Area; -import java.awt.geom.Ellipse2D; -import java.awt.geom.RoundRectangle2D; - -import org.diylc.appframework.miscutils.ConfigurationManager; -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.Size; -import org.diylc.core.measures.SizeUnit; -import org.diylc.utils.Constants; - -@ComponentDescriptor(name = "P-90 \"Soap Bar\" Pickup", category = "Guitar", author = "Branislav Stojkovic", - description = "Single coil P-90 guitar pickup in \"soap bar\" shape", stretchable = false, - zOrder = IDIYComponent.COMPONENT, instanceNamePrefix = "PKP", autoEdit = false, - keywordPolicy = KeywordPolicy.SHOW_TAG, keywordTag = "Guitar Wiring Diagram") -public class P90SoapBarPickup extends AbstractTransparentComponent { - - private static final long serialVersionUID = 1L; - - private static Color BODY_COLOR = Color.decode("#D8C989"); - private static Color POINT_COLOR = Color.darkGray; - public static Color POLE_COLOR = METAL_COLOR; - private static Size WIDTH = new Size(35.3d, SizeUnit.mm); - private static Size LENGTH = new Size(85.6d, SizeUnit.mm); - private static Size EDGE_RADIUS = new Size(8d, SizeUnit.mm); - private static Size POINT_MARGIN = new Size(5d, SizeUnit.mm); - private static Size POINT_SIZE = new Size(3d, SizeUnit.mm); - private static Size POLE_SIZE = new Size(4d, SizeUnit.mm); - private static Size POLE_SPACING = new Size(11.68d, SizeUnit.mm); - - private String value = ""; - private Point controlPoint = new Point(0, 0); - transient Shape[] body; - private Orientation orientation = Orientation.DEFAULT; - private Color color = BODY_COLOR; - - @Override - public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project, - IDrawingObserver drawingObserver) { - Shape[] body = getBody(); - - g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1)); - 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(outlineMode ? Constants.TRANSPARENT_COLOR : color); - g2d.fill(body[0]); - // g2d.fill(body[1]); - g2d.setColor(outlineMode ? Constants.TRANSPARENT_COLOR : POINT_COLOR); - g2d.fill(body[2]); - 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 - : color.darker(); - } - - g2d.setColor(finalBorderColor); - g2d.draw(body[0]); - // g2d.draw(body[1]); - if (!outlineMode) { - g2d.setColor(POLE_COLOR); - g2d.fill(body[3]); - g2d.setColor(color.darker()); - g2d.draw(body[3]); - } - - 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); - g2d.setFont(LABEL_FONT); - Rectangle bounds = body[0].getBounds(); - drawCenteredText(g2d, value, bounds.x + bounds.width / 2, bounds.y + bounds.height / 2, HorizontalAlignment.CENTER, - VerticalAlignment.CENTER); - } - - @SuppressWarnings("incomplete-switch") - public Shape[] getBody() { - if (body == null) { - body = new Shape[4]; - - int x = controlPoint.x; - int y = controlPoint.y; - int width = (int) WIDTH.convertToPixels(); - int length = (int) LENGTH.convertToPixels(); - int edgeRadius = (int) EDGE_RADIUS.convertToPixels(); - int pointMargin = (int) POINT_MARGIN.convertToPixels(); - int pointSize = getClosestOdd(POINT_SIZE.convertToPixels()); - - body[0] = - new Area(new RoundRectangle2D.Double(x + pointMargin - length, y - pointMargin, length, width, edgeRadius, - edgeRadius)); - - body[2] = new Area(new Ellipse2D.Double(x - pointSize / 2, y - pointSize / 2, pointSize, pointSize)); - - int poleSize = (int) POLE_SIZE.convertToPixels(); - int poleSpacing = (int) POLE_SPACING.convertToPixels(); - int poleMargin = (length - poleSpacing * 5) / 2; - Area poleArea = new Area(); - for (int i = 0; i < 6; i++) { - Ellipse2D pole = - new Ellipse2D.Double(x + pointMargin - length + poleMargin + i * poleSpacing - poleSize / 2, y - - pointMargin - poleSize / 2 + width / 2, poleSize, poleSize); - poleArea.add(new Area(pole)); - } - body[3] = poleArea; - - // Rotate if needed - if (orientation != Orientation.DEFAULT) { - double theta = 0; - switch (orientation) { - case _90: - theta = Math.PI / 2; - break; - case _180: - theta = Math.PI; - break; - case _270: - theta = Math.PI * 3 / 2; - break; - } - AffineTransform rotation = AffineTransform.getRotateInstance(theta, x, y); - for (Shape shape : body) { - Area area = (Area) shape; - if (shape != null) - area.transform(rotation); - } - } - } - return body; - } - - @Override - public void drawIcon(Graphics2D g2d, int width, int height) { - g2d.rotate(Math.PI / 4, width / 2, height / 2); - - int baseWidth = 13 * width / 32; - int baseLength = 27 * width / 32; - int radius = 6 * width / 32; - - g2d.setColor(BODY_COLOR); - g2d.fillRoundRect((width - baseWidth) / 2, (height - baseLength) / 2, baseWidth, baseLength, radius, radius); - g2d.setColor(BODY_COLOR.darker()); - g2d.drawRoundRect((width - baseWidth) / 2, (height - baseLength) / 2, baseWidth, baseLength, radius, radius); - - g2d.setColor(POLE_COLOR.darker()); - int poleSize = 2; - int poleSpacing = 17 * width / 32; - for (int i = 0; i < 6; i++) { - g2d.fillOval((width - poleSize) / 2, (height - poleSpacing) / 2 + (i * poleSpacing / 5), poleSize, poleSize); - } - } - - @Override - public int getControlPointCount() { - return 1; - } - - @Override - public VisibilityPolicy getControlPointVisibilityPolicy(int index) { - return VisibilityPolicy.WHEN_SELECTED; - } - - @Override - public boolean isControlPointSticky(int index) { - return true; - } - - @Override - public Point getControlPoint(int index) { - return controlPoint; - } - - @Override - public void setControlPoint(Point point, int index) { - this.controlPoint.setLocation(point); - // Invalidate the body - body = null; - } - - @EditableProperty(name = "Model") - @Override - public String getValue() { - return value; - } - - @Override - public void setValue(String value) { - this.value = value; - } - - @EditableProperty - public Orientation getOrientation() { - return orientation; - } - - public void setOrientation(Orientation orientation) { - this.orientation = orientation; - // Invalidate the body - body = null; - } - - @EditableProperty - public Color getColor() { - return color; - } - - public void setColor(Color color) { - this.color = color; - } -} diff --git a/diylc/diylc-swing/lib/diylc-core.jar b/diylc/diylc-swing/lib/diylc-core.jar index 348025242eb9fc3a6d1cc75bc1a3beb58261ba6d..56c86a85b6cd100a45db090367a1de682b247620 100644 GIT binary patch delta 8931 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 LloG0>Ov(NaLpyVb)M#Bx~d*JGD95 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 a8yo`=HRUCMnY<7M{X*~B-f<`%)c*kha@S@6 delta 17867 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