diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/library/main.jar b/ diy-layout-creator --username bancika@gmail.com/DIYLC/library/main.jar new file mode 100644 index 00000000..805a3a93 Binary files /dev/null and b/ diy-layout-creator --username bancika@gmail.com/DIYLC/library/main.jar differ diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/library/test.jar b/ diy-layout-creator --username bancika@gmail.com/DIYLC/library/test.jar deleted file mode 100644 index f1c318d4..00000000 Binary files a/ diy-layout-creator --username bancika@gmail.com/DIYLC/library/test.jar and /dev/null differ diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/AbstractLeadedComponentInstance.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/AbstractLeadedDIYComponent.java similarity index 87% rename from diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/AbstractLeadedComponentInstance.java rename to diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/AbstractLeadedDIYComponent.java index ff4490f3..b553b345 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/AbstractLeadedComponentInstance.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/AbstractLeadedDIYComponent.java @@ -2,7 +2,7 @@ package org.diylc.components; import java.awt.Point; -import org.diylc.core.IComponentInstance; +import org.diylc.core.IDIYComponent; import org.diylc.core.VisibilityPolicy; import org.diylc.core.annotations.BomName; import org.diylc.core.annotations.ControlPoint; @@ -17,7 +17,7 @@ import org.diylc.utils.Constants; * * @author Branislav Stojkovic */ -public abstract class AbstractLeadedComponentInstance implements IComponentInstance { +public abstract class AbstractLeadedDIYComponent implements IDIYComponent { private static final long serialVersionUID = 1L; @@ -28,7 +28,7 @@ public abstract class AbstractLeadedComponentInstance implements IComponentInsta protected Point labelPoint = new Point((int) (Constants.GRID * 5), -(int) Constants.GRID); protected String name = "New Component"; - protected AbstractLeadedComponentInstance() { + protected AbstractLeadedDIYComponent() { super(); this.width = getDefaultWidth(); this.height = getDefaultHeight(); @@ -119,7 +119,7 @@ public abstract class AbstractLeadedComponentInstance implements IComponentInsta return false; if (getClass() != obj.getClass()) return false; - AbstractLeadedComponentInstance other = (AbstractLeadedComponentInstance) obj; + AbstractLeadedDIYComponent other = (AbstractLeadedDIYComponent) obj; if (name == null) { if (other.name != null) return false; diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/MockComponentType.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/MockComponentType.java deleted file mode 100644 index 889fcb0e..00000000 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/MockComponentType.java +++ /dev/null @@ -1,48 +0,0 @@ -package org.diylc.components; - -import javax.swing.Icon; - -import org.diylc.core.ComponentLayer; -import org.diylc.core.IComponentInstance; -import org.diylc.core.IComponentType; -import org.diylc.images.IconLoader; - - -public class MockComponentType implements IComponentType { - - @Override - public Class getComponentInstanceClass() { - return MockComponentInstance.class; - } - - @Override - public String getInstanceNamePrefix() { - return "ABC"; - } - - @Override - public ComponentLayer getComponentLayer() { - return ComponentLayer.BOARD; - } - - @Override - public String getDescription() { - return "Some description"; - } - - @Override - public Icon getIcon() { - return IconLoader.Gears.getIcon(); - } - - @Override - public String getName() { - return "Mock Component"; - } - - @Override - public String getCategory() { - return "Samples"; - } - -} diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/MockComponentInstance.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/MockDIYComponent.java similarity index 81% rename from diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/MockComponentInstance.java rename to diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/MockDIYComponent.java index c18b8dd0..1321dfd7 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/MockComponentInstance.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/MockDIYComponent.java @@ -5,10 +5,11 @@ import java.awt.Graphics2D; import java.awt.Point; import org.diylc.core.ComponentState; -import org.diylc.core.IComponentInstance; +import org.diylc.core.IDIYComponent; import org.diylc.core.VisibilityPolicy; import org.diylc.core.annotations.BomName; import org.diylc.core.annotations.BomValue; +import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.ControlPoint; import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Capacitance; @@ -18,8 +19,8 @@ import org.diylc.core.measures.ResistanceUnit; import org.diylc.core.measures.Size; import org.diylc.core.measures.SizeUnit; - -public class MockComponentInstance implements IComponentInstance { +@ComponentDescriptor(name = "Mock", author = "bancika", category = "Sample", instanceNamePrefix = "M", desciption = "test") +public class MockDIYComponent implements IDIYComponent { private static final long serialVersionUID = 1L; @@ -31,7 +32,7 @@ public class MockComponentInstance implements IComponentInstance { private Point leftTopCorner = new Point(0, 0); private String name = "something"; - public MockComponentInstance(String testField, Capacitance c, Resistance r, Size s, + public MockDIYComponent(String testField, Capacitance c, Resistance r, Size s, Color color, Point leftTopCorner) { super(); this.testField = testField; @@ -42,7 +43,7 @@ public class MockComponentInstance implements IComponentInstance { this.leftTopCorner = leftTopCorner; } - public MockComponentInstance() { + public MockDIYComponent() { super(); } @@ -119,9 +120,7 @@ public class MockComponentInstance implements IComponentInstance { } @Override - public MockComponentInstance clone() throws CloneNotSupportedException { - MockComponentInstance newInstance = new MockComponentInstance(testField, c.clone(), r - .clone(), s.clone(), color, (Point) leftTopCorner.clone()); - return newInstance; + public void drawIcon(Graphics2D g2d, int width, int height) { + g2d.drawString("X", 10, 10); } } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/ResistorInstance.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/Resistor.java similarity index 75% rename from diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/ResistorInstance.java rename to diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/Resistor.java index e5eecfc9..f5700ea1 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/ResistorInstance.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/Resistor.java @@ -5,21 +5,22 @@ import java.awt.Color; import java.awt.Graphics2D; import org.diylc.core.ComponentState; +import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Resistance; import org.diylc.core.measures.ResistanceUnit; import org.diylc.core.measures.Size; import org.diylc.core.measures.SizeUnit; - -public class ResistorInstance extends AbstractLeadedComponentInstance { +@ComponentDescriptor(name = "Resistor", author = "bancika", category = "Passive", instanceNamePrefix = "R", desciption = "test") +public class Resistor extends AbstractLeadedDIYComponent { private static final long serialVersionUID = 1L; private Resistance r = new Resistance(123d, ResistanceUnit.K); private Color color = Color.green; - public ResistorInstance() { + public Resistor() { super(); } @@ -40,6 +41,11 @@ public class ResistorInstance extends AbstractLeadedComponentInstance { g2d.fillRect((point1.x + point2.x) / 2 - 10, (point1.y + point2.y) / 2 - 10, 20, 20); } + @Override + public void drawIcon(Graphics2D g2d, int width, int height) { + g2d.drawString("R", 10, 10); + } + @Override protected Size getDefaultHeight() { return new Size(3d, SizeUnit.mm); diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/ResistorType.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/ResistorType.java deleted file mode 100644 index 952676cc..00000000 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/ResistorType.java +++ /dev/null @@ -1,48 +0,0 @@ -package org.diylc.components; - -import javax.swing.Icon; - -import org.diylc.core.ComponentLayer; -import org.diylc.core.IComponentInstance; -import org.diylc.core.IComponentType; -import org.diylc.images.IconLoader; - - -public class ResistorType implements IComponentType { - - @Override - public Class getComponentInstanceClass() { - return ResistorInstance.class; - } - - @Override - public String getInstanceNamePrefix() { - return "R"; - } - - @Override - public ComponentLayer getComponentLayer() { - return ComponentLayer.COMPONENT; - } - - @Override - public String getDescription() { - return "Some description"; - } - - @Override - public Icon getIcon() { - return IconLoader.Gears.getIcon(); - } - - @Override - public String getName() { - return "Resistor"; - } - - @Override - public String getCategory() { - return "Samples"; - } - -} diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/DIYLCStarter.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/DIYLCStarter.java index 3b8d770c..91879bb7 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/DIYLCStarter.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/DIYLCStarter.java @@ -57,7 +57,7 @@ public class DIYLCStarter { // p.installPlugin(new CanvasPlugin()); // // Project project = new Project(); - // project.getComponents().add(new MockComponentInstance()); + // project.getComponents().add(new MockDIYComponent()); // p.loadProject(project); // panel.setPreferredSize(new Dimension(2000, 1500)); // RulerScrollPane scrollPane = new RulerScrollPane(panel); diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/ComponentSelection.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/ComponentSelection.java index f930adf4..ca59c49a 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/ComponentSelection.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/ComponentSelection.java @@ -8,17 +8,17 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; -import org.diylc.core.IComponentInstance; +import org.diylc.core.IDIYComponent; /** * Represents component selection as a {@link List} of - * {@link IComponentInstance} objects. Implements {@link Transferable}, so it is + * {@link IDIYComponent} objects. Implements {@link Transferable}, so it is * suitable for clipboard usage. * * @author Branislav Stojkovic */ -public class ComponentSelection extends ArrayList implements Transferable { +public class ComponentSelection extends ArrayList implements Transferable { private static final long serialVersionUID = 1L; @@ -28,7 +28,7 @@ public class ComponentSelection extends ArrayList implements super(); } - public ComponentSelection(Collection selectedComponents) { + public ComponentSelection(Collection selectedComponents) { super(selectedComponents); } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/ControlPointWrapper.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/ControlPointWrapper.java index 99c8a99c..5e562044 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/ControlPointWrapper.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/ControlPointWrapper.java @@ -4,7 +4,7 @@ import java.awt.Point; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; -import org.diylc.core.IComponentInstance; +import org.diylc.core.IDIYComponent; import org.diylc.core.VisibilityPolicy; @@ -44,7 +44,7 @@ public class ControlPointWrapper { * @throws IllegalAccessException * @throws InvocationTargetException */ - public void readFrom(IComponentInstance component) throws IllegalArgumentException, + public void readFrom(IDIYComponent component) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException { value = (Point) getter.invoke(component); } @@ -58,7 +58,7 @@ public class ControlPointWrapper { * @throws IllegalAccessException * @throws InvocationTargetException */ - public void writeTo(IComponentInstance component) throws IllegalArgumentException, + public void writeTo(IDIYComponent component) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException { setter.invoke(component, value); } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/EventType.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/EventType.java index 093d0a66..768cb742 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/EventType.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/EventType.java @@ -2,8 +2,8 @@ package org.diylc.common; import java.awt.Rectangle; -import org.diylc.core.IComponentType; import org.diylc.core.Project; +import org.diylc.presenter.ComponentType; /** @@ -44,7 +44,7 @@ public enum EventType { REPAINT, /** * Called when new component slot has been changed. The only parameter is - * {@link IComponentType} and may be null. + * {@link ComponentType} and may be null. */ SLOT_CHANGED, /** diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/IPlugInPort.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/IPlugInPort.java index 18c219a3..3de130dc 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/IPlugInPort.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/IPlugInPort.java @@ -15,9 +15,9 @@ import javax.swing.SwingConstants; import javax.swing.JPopupMenu.Separator; import org.diylc.core.ComponentLayer; -import org.diylc.core.IComponentInstance; -import org.diylc.core.IComponentType; +import org.diylc.core.IDIYComponent; import org.diylc.core.Project; +import org.diylc.presenter.ComponentType; import com.diyfever.gui.simplemq.IMessageListener; import com.diyfever.gui.simplemq.MessageDispatcher; @@ -76,13 +76,13 @@ public interface IPlugInPort { void loadProject(Project project, boolean freshStart); /** - * Returns all available {@link IComponentType}s classified by category. + * Returns all available {@link ComponentType}s classified by category. * Result is a {@link Map} between category name to a {@link List} of all - * {@link IComponentType}s that share that category name. + * {@link ComponentType}s that share that category name. * * @return */ - Map> getComponentTypes(); + Map> getComponentTypes(); /** * Draws project on the provided {@link Graphics2D}. @@ -175,7 +175,7 @@ public interface IPlugInPort { * * @return */ - Area getComponentArea(IComponentInstance component); + Area getComponentArea(IDIYComponent component); /** * Notification that drag has been started from the specified point. @@ -218,7 +218,7 @@ public interface IPlugInPort { * @param components * @param preferredPoint */ - void addComponents(List components, Point preferredPoint); + void addComponents(List components, Point preferredPoint); /** * Checks if a certain layer is locked for editing. @@ -288,5 +288,5 @@ public interface IPlugInPort { * Sets the new component slot. Specified component type will be used to * instantiate new component. */ - void setNewComponentSlot(IComponentType componentType); + void setNewComponentSlot(ComponentType componentType); } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/PropertyWrapper.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/PropertyWrapper.java index ad831092..ea38d10b 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/PropertyWrapper.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/PropertyWrapper.java @@ -3,7 +3,7 @@ package org.diylc.common; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; -import org.diylc.core.IComponentInstance; +import org.diylc.core.IDIYComponent; /** @@ -31,12 +31,12 @@ public class PropertyWrapper implements Cloneable { this.defaultable = defaultable; } - public void readFrom(IComponentInstance component) throws IllegalArgumentException, + public void readFrom(IDIYComponent component) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException { this.value = getter.invoke(component); } - // public void readUniqueFrom(IComponentInstance component) + // public void readUniqueFrom(IDIYComponent component) // throws IllegalArgumentException, IllegalAccessException, // InvocationTargetException { // Object newValue = getter.invoke(component); @@ -45,7 +45,7 @@ public class PropertyWrapper implements Cloneable { // } // } - public void writeTo(IComponentInstance component) throws IllegalArgumentException, + public void writeTo(IDIYComponent component) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException { setter.invoke(component, value); } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/IComponentType.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/IComponentType.java deleted file mode 100644 index bfb173d9..00000000 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/IComponentType.java +++ /dev/null @@ -1,65 +0,0 @@ -package org.diylc.core; - -import javax.swing.Icon; - -/** - * Interface used to describe a component type. - * - * @author Branislav Stojkovic - * - * @see IComponentInstance - */ -public interface IComponentType { - - /** - * Returns component type name. - * - * @return - */ - String getName(); - - /** - * Returns component instance name prefix, e.g. "R" for resistors, "C" for - * capacitors, etc. - * - * @return - */ - String getInstanceNamePrefix(); - - /** - * Returns component category. - * - * @return - */ - String getCategory(); - - /** - * Returns component type description that may contain HTML tags. - * - * @return - */ - String getDescription(); - - /** - * Returns an {@link Icon} used to represent component type. - * - * @return - */ - Icon getIcon(); - - /** - * Returns a {@link ComponentLayer} where this component belongs. - * - * @return - */ - ComponentLayer getComponentLayer(); - - /** - * Returns class that represents component instances of this component type. - * Application will instantiate objects of this class when components are - * created. - * - * @return - */ - Class getComponentInstanceClass(); -} diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/IComponentInstance.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/IDIYComponent.java similarity index 62% rename from diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/IComponentInstance.java rename to diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/IDIYComponent.java index 0dc8438e..6933cff3 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/IComponentInstance.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/IDIYComponent.java @@ -3,6 +3,8 @@ package org.diylc.core; import java.awt.Graphics2D; import java.io.Serializable; +import org.diylc.presenter.ComponentType; + /** * Interface for component instance. Implementation classes of this interface * will be instantiated by the application when component is added to the @@ -12,9 +14,9 @@ import java.io.Serializable; * * @author Branislav Stojkovic * - * @see IComponentType + * @see ComponentType */ -public interface IComponentInstance extends Serializable { +public interface IDIYComponent extends Serializable { /** * Draws the component onto the {@link Graphics2D}. @@ -23,4 +25,13 @@ public interface IComponentInstance extends Serializable { * @param componentState */ void draw(Graphics2D g2d, ComponentState componentState); + + /** + * Draws icon representation of the component. + * + * @param g2d + * @param width + * @param height + */ + void drawIcon(Graphics2D g2d, int width, int height); } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/Project.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/Project.java index da4ccf46..856964bb 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/Project.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/Project.java @@ -29,10 +29,10 @@ public class Project implements Serializable { private String description; private Size width; private Size height; - private List components; + private List components; public Project() { - components = new ArrayList(); + components = new ArrayList(); title = DEFAULT_TITLE; author = System.getProperty("user.name"); width = DEFAULT_WIDTH; @@ -40,7 +40,7 @@ public class Project implements Serializable { } public Project(String title, String author, String description, Size width, Size height, - List components) { + List components) { super(); this.title = title; this.author = author; @@ -95,7 +95,7 @@ public class Project implements Serializable { this.height = height; } - public List getComponents() { + public List getComponents() { return components; } @@ -156,9 +156,9 @@ public class Project implements Serializable { // @Override // public Project clone() throws CloneNotSupportedException { - // List clonedComponents = new - // ArrayList(); - // for (IComponentInstance component : components) { + // List clonedComponents = new + // ArrayList(); + // for (IDIYComponent component : components) { // clonedComponents.add(component.clone()); // } // Project project = new Project(title, author, description, diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/annotations/ComponentDescriptor.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/annotations/ComponentDescriptor.java new file mode 100644 index 00000000..8e1444e3 --- /dev/null +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/annotations/ComponentDescriptor.java @@ -0,0 +1,32 @@ +package org.diylc.core.annotations; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +import org.diylc.core.ComponentLayer; +import org.diylc.core.IDIYComponent; +import org.diylc.core.VisibilityPolicy; + +/** + * Annotation for {@link IDIYComponent} implementation. Describes component + * properties. + * + * @author Branislav Stojkovic + */ +@Retention(RetentionPolicy.RUNTIME) +public @interface ComponentDescriptor { + + String name(); + + String desciption(); + + String category(); + + String author(); + + String instanceNamePrefix(); + + ComponentLayer componentLayer() default ComponentLayer.COMPONENT; + + boolean stretchable() default true; +} diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/annotations/ComponentName.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/annotations/ComponentName.java deleted file mode 100644 index 6855e18c..00000000 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/annotations/ComponentName.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.diylc.core.annotations; - -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; - -@Retention(RetentionPolicy.RUNTIME) -public @interface ComponentName { - -} diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/gui/MainFrame.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/gui/MainFrame.java index 842f4e2c..b337bf28 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/gui/MainFrame.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/gui/MainFrame.java @@ -73,7 +73,7 @@ public class MainFrame extends JFrame implements IView { presenter.installPlugin(canvasPlugin); Project project = new Project(); - // project.getComponents().add(new MockComponentInstance()); + // project.getComponents().add(new MockDIYComponent()); presenter.loadProject(project, true); addWindowListener(new WindowAdapter() { diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/canvas/CanvasTargetListener.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/canvas/CanvasTargetListener.java index 8ba73116..4e3accfd 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/canvas/CanvasTargetListener.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/canvas/CanvasTargetListener.java @@ -53,7 +53,7 @@ class CanvasTargetListener implements DropTargetListener { // (t.isDataFlavorSupported(SelectionTransferable.selectionFlavor)) // { // if (currentPoint != null) { - // List selection = (List) t + // List selection = (List) t // .getTransferData(SelectionTransferable.selectionFlavor); // Point startPoint = (Point) t // .getTransferData(PointTransferable.pointFlavor); diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/canvas/SelectionTransferable.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/canvas/SelectionTransferable.java index 5bdbc7af..68b3f4bf 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/canvas/SelectionTransferable.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/canvas/SelectionTransferable.java @@ -7,7 +7,7 @@ import java.awt.datatransfer.UnsupportedFlavorException; import java.io.IOException; import java.util.List; -import org.diylc.core.IComponentInstance; +import org.diylc.core.IDIYComponent; public class SelectionTransferable implements Transferable { @@ -16,9 +16,9 @@ public class SelectionTransferable implements Transferable { "Component Selection"); private Point startPoint; - private List selection; + private List selection; - public SelectionTransferable(List selection, Point startPoint) { + public SelectionTransferable(List selection, Point startPoint) { super(); this.selection = selection; this.startPoint = startPoint; diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/clipboard/ClipboardManager.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/clipboard/ClipboardManager.java index fd90ed9f..2dfcf0e7 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/clipboard/ClipboardManager.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/clipboard/ClipboardManager.java @@ -19,7 +19,7 @@ import org.diylc.common.ComponentSelection; import org.diylc.common.EventType; import org.diylc.common.IPlugIn; import org.diylc.common.IPlugInPort; -import org.diylc.core.IComponentInstance; +import org.diylc.core.IDIYComponent; import org.diylc.core.Project; import org.diylc.images.IconLoader; @@ -163,7 +163,7 @@ public class ClipboardManager implements IPlugIn, ClipboardOwner { public void actionPerformed(ActionEvent e) { LOG.info("Paste triggered"); try { - List components = (List) clipboard + List components = (List) clipboard .getData(ComponentSelection.listFlavor); plugInPort.addComponents(cloner.deepClone(components), null); } catch (Exception ex) { diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/file/BomMaker.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/file/BomMaker.java index 0f1d08f2..bd399078 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/file/BomMaker.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/file/BomMaker.java @@ -7,7 +7,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import org.diylc.core.IComponentInstance; +import org.diylc.core.IDIYComponent; import org.diylc.presenter.ComponentProcessor; @@ -25,9 +25,9 @@ public class BomMaker { private BomMaker() { } - public List createBom(List components) { + public List createBom(List components) { Map entryMap = new HashMap(); - for (IComponentInstance component : components) { + for (IDIYComponent component : components) { String name = ComponentProcessor.getInstance().extractBomName(component); String value = ComponentProcessor.getInstance().extractBomValue(component); if ((name != null) && (value != null)) { diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/statusbar/StatusBar.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/statusbar/StatusBar.java index 6e7d7300..f214024a 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/statusbar/StatusBar.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/statusbar/StatusBar.java @@ -21,9 +21,9 @@ import org.diylc.common.ControlPointWrapper; import org.diylc.common.EventType; import org.diylc.common.IPlugIn; import org.diylc.common.IPlugInPort; -import org.diylc.core.IComponentInstance; -import org.diylc.core.IComponentType; +import org.diylc.core.IDIYComponent; import org.diylc.presenter.ComponentProcessor; +import org.diylc.presenter.ComponentType; import com.diyfever.gui.MemoryBar; import com.diyfever.gui.miscutils.PercentageListCellRenderer; @@ -41,8 +41,8 @@ public class StatusBar extends JPanel implements IPlugIn { private IPlugInPort plugInPort; // State variables - private IComponentType componentSlot; - private List componentsUnderCursor; + private ComponentType componentSlot; + private List componentsUnderCursor; public StatusBar() { super(); @@ -159,12 +159,12 @@ public class StatusBar extends JPanel implements IPlugIn { } break; case SLOT_CHANGED: - componentSlot = (IComponentType) params[0]; + componentSlot = (ComponentType) params[0]; refreshStatusText(); break; case AVAILABLE_CTRL_POINTS_CHANGED: - componentsUnderCursor = new ArrayList( - ((Map) params[0]).keySet()); + componentsUnderCursor = new ArrayList( + ((Map) params[0]).keySet()); refreshStatusText(); break; } @@ -177,7 +177,7 @@ public class StatusBar extends JPanel implements IPlugIn { } else { // String formattedNames = ""; // int n = 1; - // for (IComponentInstance component : componentsUnderCursor) { + // for (IDIYComponent component : componentsUnderCursor) { // if (n > 1) { // formattedNames += ", "; // } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/toolbox/ComponentButton.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/toolbox/ComponentButton.java index 3240f744..b753ca27 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/toolbox/ComponentButton.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/toolbox/ComponentButton.java @@ -8,8 +8,7 @@ import java.awt.event.ActionListener; import javax.swing.JButton; import org.diylc.common.IPlugInPort; -import org.diylc.core.IComponentType; - +import org.diylc.presenter.ComponentType; /** * {@link JButton} that displays component type icon and instantiates the @@ -22,9 +21,9 @@ class ComponentButton extends JButton { private static final long serialVersionUID = 1L; private IPlugInPort plugInPort; - private IComponentType componentType; + private ComponentType componentType; - public ComponentButton(final IPlugInPort plugInPort, final IComponentType componentType) { + public ComponentButton(final IPlugInPort plugInPort, final ComponentType componentType) { super(componentType.getIcon()); this.plugInPort = plugInPort; this.componentType = componentType; @@ -59,10 +58,8 @@ class ComponentButton extends JButton { private void initializeDnD() { // Initialize drag source recognizer. - DragSource.getDefaultDragSource().createDefaultDragGestureRecognizer( - this, + DragSource.getDefaultDragSource().createDefaultDragGestureRecognizer(this, DnDConstants.ACTION_MOVE, - new ToolboxGestureListener(plugInPort, componentType.getComponentInstanceClass() - .getName())); + new ToolboxGestureListener(plugInPort, componentType.getInstanceClass().getName())); } } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/toolbox/ComponentTabbedPane.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/toolbox/ComponentTabbedPane.java index f1c6a1e5..ab1ac7d2 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/toolbox/ComponentTabbedPane.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/toolbox/ComponentTabbedPane.java @@ -9,7 +9,7 @@ import javax.swing.JButton; import javax.swing.JTabbedPane; import org.diylc.common.IPlugInPort; -import org.diylc.core.IComponentType; +import org.diylc.presenter.ComponentType; class ComponentTabbedPane extends JTabbedPane { @@ -20,16 +20,16 @@ class ComponentTabbedPane extends JTabbedPane { public ComponentTabbedPane(IPlugInPort plugInPort) { super(); this.plugInPort = plugInPort; - Map> componentTypes = plugInPort.getComponentTypes(); - for (Map.Entry> entry : componentTypes.entrySet()) { + Map> componentTypes = plugInPort.getComponentTypes(); + for (Map.Entry> entry : componentTypes.entrySet()) { addTab(entry.getKey(), createComponentPanel(entry.getValue())); } } - private Container createComponentPanel(List componentTypes) { + private Container createComponentPanel(List componentTypes) { Container componentPanel = new Container(); componentPanel.setLayout(new BoxLayout(componentPanel, BoxLayout.X_AXIS)); - for (IComponentType componentType : componentTypes) { + for (ComponentType componentType : componentTypes) { JButton button = new ComponentButton(plugInPort, componentType); componentPanel.add(button); } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ComponentProcessor.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ComponentProcessor.java index 5250744a..e8235194 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ComponentProcessor.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ComponentProcessor.java @@ -10,7 +10,7 @@ import java.util.Map; import org.apache.log4j.Logger; import org.diylc.common.ControlPointWrapper; import org.diylc.common.PropertyWrapper; -import org.diylc.core.IComponentInstance; +import org.diylc.core.IDIYComponent; import org.diylc.core.annotations.BomName; import org.diylc.core.annotations.BomValue; import org.diylc.core.annotations.ControlPoint; @@ -54,7 +54,7 @@ public class ComponentProcessor { * @param clazz * @return */ - public List extractProperties(Class clazz) { + public List extractProperties(Class clazz) { if (propertyCache.containsKey(clazz)) { return cloner.deepClone(propertyCache.get(clazz)); } @@ -91,13 +91,13 @@ public class ComponentProcessor { * Reads all control points from the specified component class. Note than * control points are cached, so it may happen that control points returned * already have their values populated. Always use - * {@link ControlPointWrapper#readFrom(IComponentInstance)} to update their + * {@link ControlPointWrapper#readFrom(IDIYComponent)} to update their * state from an actual component. * * @param clazz * @return */ - public List extractControlPoints(Class clazz) { + public List extractControlPoints(Class clazz) { if (controlPointCache.containsKey(clazz)) { return cloner.deepClone(controlPointCache.get(clazz)); } @@ -136,12 +136,12 @@ public class ComponentProcessor { * @return */ public List getMutualSelectionProperties( - List selectedComponents) { + List selectedComponents) { if (selectedComponents.isEmpty()) { return null; } List properties = new ArrayList(); - IComponentInstance firstComponent = selectedComponents.get(0); + IDIYComponent firstComponent = selectedComponents.get(0); properties.addAll(extractProperties(firstComponent.getClass())); // Initialize values for (PropertyWrapper property : properties) { @@ -153,7 +153,7 @@ public class ComponentProcessor { } } for (int i = 1; i < selectedComponents.size(); i++) { - IComponentInstance component = selectedComponents.get(i); + IDIYComponent component = selectedComponents.get(i); List newProperties = extractProperties(component.getClass()); for (PropertyWrapper property : newProperties) { try { @@ -183,7 +183,7 @@ public class ComponentProcessor { * @param component * @return */ - public String extractBomName(IComponentInstance component) { + public String extractBomName(IDIYComponent component) { String name = null; for (Method method : component.getClass().getMethods()) { if (method.isAnnotationPresent(BomName.class)) { @@ -204,7 +204,7 @@ public class ComponentProcessor { * @param component * @param newBomName */ - public void writeBomName(IComponentInstance component, String newBomName) { + public void writeBomName(IDIYComponent component, String newBomName) { for (Method method : component.getClass().getMethods()) { if (method.isAnnotationPresent(BomName.class)) { try { @@ -224,7 +224,7 @@ public class ComponentProcessor { * @param component * @return */ - public String extractBomValue(IComponentInstance component) { + public String extractBomValue(IDIYComponent component) { String value = null; for (Method method : component.getClass().getMethods()) { if (method.isAnnotationPresent(BomValue.class)) { diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ComponentType.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ComponentType.java new file mode 100644 index 00000000..342eabed --- /dev/null +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ComponentType.java @@ -0,0 +1,76 @@ +package org.diylc.presenter; + +import javax.swing.Icon; + +import org.diylc.core.ComponentLayer; +import org.diylc.core.IDIYComponent; + +/** + * Entity class used to describe a component type. + * + * @author Branislav Stojkovic + * + * @see IDIYComponent + */ +public class ComponentType { + + private String name; + private String description; + private String category; + private String namePrefix; + private String author; + private Icon icon; + private Class instanceClass; + private ComponentLayer layer; + + public ComponentType(String name, String description, String category, String namePrefix, + String author, Icon icon, Class instanceClass, + ComponentLayer layer) { + super(); + this.name = name; + this.description = description; + this.category = category; + this.namePrefix = namePrefix; + this.author = author; + this.icon = icon; + this.instanceClass = instanceClass; + this.layer = layer; + } + + public String getName() { + return name; + } + + public String getDescription() { + return description; + } + + public String getCategory() { + return category; + } + + public String getNamePrefix() { + return namePrefix; + } + + public String getAuthor() { + return author; + } + + public Icon getIcon() { + return icon; + } + + public Class getInstanceClass() { + return instanceClass; + } + + public ComponentLayer getLayer() { + return layer; + } + + @Override + public String toString() { + return name; + } +} diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/Presenter.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/Presenter.java index 34401084..b62d64e6 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/Presenter.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/Presenter.java @@ -7,12 +7,15 @@ import java.awt.Composite; import java.awt.Cursor; import java.awt.Dimension; import java.awt.Graphics2D; +import java.awt.Image; import java.awt.Point; import java.awt.Rectangle; import java.awt.RenderingHints; import java.awt.geom.AffineTransform; import java.awt.geom.Area; import java.awt.geom.Point2D; +import java.awt.image.BufferedImage; +import java.lang.reflect.Modifier; import java.util.ArrayList; import java.util.EnumSet; import java.util.HashMap; @@ -22,6 +25,8 @@ import java.util.Set; import java.util.Map.Entry; import javax.swing.Action; +import javax.swing.Icon; +import javax.swing.ImageIcon; import javax.swing.JComponent; import org.apache.log4j.Logger; @@ -35,10 +40,10 @@ import org.diylc.common.IPlugInPort; import org.diylc.common.PropertyWrapper; import org.diylc.core.ComponentLayer; import org.diylc.core.ComponentState; -import org.diylc.core.IComponentInstance; -import org.diylc.core.IComponentType; +import org.diylc.core.IDIYComponent; import org.diylc.core.Project; import org.diylc.core.VisibilityPolicy; +import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.gui.IView; import org.diylc.utils.Constants; @@ -61,17 +66,18 @@ public class Presenter implements IPlugInPort { private static final VersionNumber CURRENT_VERSION = new VersionNumber(0, 0, 0); private static final String DEFAULTS_KEY = "defaults"; private static final int CONTROL_POINT_SENSITIVITY = 4; + private static final int ICON_SIZE = 32; private double zoomLevel = 1; - private Map componentAreaMap; + private Map componentAreaMap; private Project currentProject; - private Map> componentTypes; + private Map> componentTypes; private List plugIns; private ComponentSelection selectedComponents; // List of components that have at least one of their control points // under the last recorded mouse position. - private Map componentControlPointMap; + private Map componentControlPointMap; private Cloner cloner; @@ -91,12 +97,12 @@ public class Presenter implements IPlugInPort { private Point previousDragPoint = null; private Project preDragProject = null; - private IComponentType componentSlot; + private ComponentType componentSlot; public Presenter(IView view) { super(); this.view = view; - componentAreaMap = new HashMap(); + componentAreaMap = new HashMap(); plugIns = new ArrayList(); messageDispatcher = new MessageDispatcher(); selectedComponents = new ComponentSelection(); @@ -141,7 +147,7 @@ public class Presenter implements IPlugInPort { if (componentSlot == null) { // Scale point to remove zoom factor. Point2D scaledPoint = scalePoint(point); - for (Map.Entry entry : componentAreaMap.entrySet()) { + for (Map.Entry entry : componentAreaMap.entrySet()) { if (entry.getValue().contains(scaledPoint)) { return Cursor.getPredefinedCursor(Cursor.HAND_CURSOR); } @@ -178,28 +184,64 @@ public class Presenter implements IPlugInPort { messageDispatcher.dispatchMessage(EventType.REPAINT); } + @SuppressWarnings("unchecked") @Override - public Map> getComponentTypes() { + public Map> getComponentTypes() { if (componentTypes == null) { LOG.info("Loading component types."); - componentTypes = new HashMap>(); + componentTypes = new HashMap>(); List> componentTypeClasses = JarScanner.getInstance().scanFolder("library/", - IComponentType.class); + IDIYComponent.class); for (Class clazz : componentTypeClasses) { - try { - IComponentType componentType = (IComponentType) clazz.newInstance(); - List nestedList; + if (!Modifier.isAbstract(clazz.getModifiers())) { + ComponentDescriptor annotation = clazz.getAnnotation(ComponentDescriptor.class); + String name; + String description; + String category; + String namePrefix; + String author; + Icon icon; + Class instanceClass = (Class) clazz; + ComponentLayer layer; + if (annotation == null) { + name = clazz.getSimpleName(); + description = ""; + category = "Uncategorized"; + namePrefix = "Unknown"; + author = "Unknown"; + layer = ComponentLayer.COMPONENT; + } else { + name = annotation.name(); + description = annotation.desciption(); + category = annotation.category(); + namePrefix = annotation.instanceNamePrefix(); + author = annotation.author(); + layer = annotation.componentLayer(); + } + icon = null; + // Draw component icon. + try { + IDIYComponent componentInstance = (IDIYComponent) clazz.newInstance(); + Image image = new BufferedImage(ICON_SIZE, ICON_SIZE, + java.awt.image.BufferedImage.TYPE_INT_ARGB); + componentInstance.drawIcon((Graphics2D) image.getGraphics(), ICON_SIZE, + ICON_SIZE); + icon = new ImageIcon(image); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + ComponentType componentType = new ComponentType(name, description, category, + namePrefix, author, icon, instanceClass, layer); + List nestedList; if (componentTypes.containsKey(componentType.getCategory())) { nestedList = componentTypes.get(componentType.getCategory()); } else { - nestedList = new ArrayList(); + nestedList = new ArrayList(); componentTypes.put(componentType.getCategory(), nestedList); } nestedList.add(componentType); - } catch (InstantiationException e) { - LOG.warn("Could not instantiate: " + clazz.getName()); - } catch (IllegalAccessException e) { - LOG.warn("Could not access: " + clazz.getName()); } } } @@ -249,10 +291,10 @@ public class Presenter implements IPlugInPort { // g2dWrapper.resetTx(); - List components = getCurrentProject().getComponents(); + List components = getCurrentProject().getComponents(); componentAreaMap.clear(); if (components != null) { - for (IComponentInstance component : components) { + for (IDIYComponent component : components) { g2dWrapper.startedDrawingComponent(); ComponentState state = ComponentState.NORMAL; if (drawOptions.contains(DrawOption.SELECTION) @@ -343,9 +385,9 @@ public class Presenter implements IPlugInPort { * * @return */ - private List findComponentsAt(Point point) { - List components = new ArrayList(); - for (Map.Entry entry : componentAreaMap.entrySet()) { + private List findComponentsAt(Point point) { + List components = new ArrayList(); + for (Map.Entry entry : componentAreaMap.entrySet()) { if (entry.getValue().contains(point)) { components.add(entry.getKey()); } @@ -360,20 +402,20 @@ public class Presenter implements IPlugInPort { Point scaledPoint = scalePoint(point); if (componentSlot != null) { try { - instantiateComponent(componentSlot.getComponentInstanceClass(), componentSlot - .getName(), componentSlot.getInstanceNamePrefix(), scaledPoint); + instantiateComponent(componentSlot.getInstanceClass(), componentSlot.getName(), + componentSlot.getNamePrefix(), scaledPoint); } catch (Exception e) { LOG.error("Error instatiating component of type: " - + componentSlot.getComponentInstanceClass().getName()); + + componentSlot.getInstanceClass().getName()); } setNewComponentSlot(null); } else { - List components = findComponentsAt(scaledPoint); + List components = findComponentsAt(scaledPoint); // If there's nothing under mouse cursor deselect all. if (components.isEmpty()) { selectedComponents.clear(); } else { - IComponentInstance component = components.get(0); + IDIYComponent component = components.get(0); // If ctrl is pressed just toggle the component under mouse // cursor. if (ctrlDown) { @@ -395,9 +437,9 @@ public class Presenter implements IPlugInPort { @Override public void mouseMoved(Point point, boolean ctrlDown, boolean shiftDown, boolean altDown) { - Map components = new HashMap(); + Map components = new HashMap(); Point scaledPoint = scalePoint(point); - for (IComponentInstance component : currentProject.getComponents()) { + for (IDIYComponent component : currentProject.getComponents()) { List currentPoints = ComponentProcessor.getInstance() .extractControlPoints(component.getClass()); for (ControlPointWrapper controlPoint : currentPoints) { @@ -431,7 +473,7 @@ public class Presenter implements IPlugInPort { } @Override - public Area getComponentArea(IComponentInstance component) { + public Area getComponentArea(IDIYComponent component) { return componentAreaMap.get(component); } @@ -447,7 +489,7 @@ public class Presenter implements IPlugInPort { preDragProject = cloner.deepClone(currentProject); Point scaledPoint = scalePoint(point); previousDragPoint = scaledPoint; - List components = findComponentsAt(scaledPoint); + List components = findComponentsAt(scaledPoint); if (!componentControlPointMap.isEmpty()) { // If we're dragging control points reset selection. selectedComponents.clear(); @@ -460,7 +502,7 @@ public class Presenter implements IPlugInPort { messageDispatcher.dispatchMessage(EventType.SELECTION_CHANGED, selectedComponents); messageDispatcher.dispatchMessage(EventType.REPAINT); } else { - IComponentInstance component = components.get(0); + IDIYComponent component = components.get(0); // If the component under the cursor is not already selected, make // it into the only selected component. if (!selectedComponents.contains(component)) { @@ -479,8 +521,8 @@ public class Presenter implements IPlugInPort { } Point scaledPoint = scalePoint(point); if (!componentControlPointMap.isEmpty()) { - // We're dragging control point(s). - IComponentInstance firstComponent = componentControlPointMap.keySet().iterator().next(); + // We're dragging control point(s). + IDIYComponent firstComponent = componentControlPointMap.keySet().iterator().next(); ControlPointWrapper controlPoint = componentControlPointMap.get(firstComponent); if (controlPoint == null) { LOG.warn("Control point not found in the map!"); @@ -499,11 +541,11 @@ public class Presenter implements IPlugInPort { / Constants.GRID) * Constants.GRID); previousDragPoint.setLocation(x, y); - for (Entry entry : componentControlPointMap + for (Entry entry : componentControlPointMap .entrySet()) { try { controlPoint = entry.getValue(); - IComponentInstance component = entry.getKey(); + IDIYComponent component = entry.getKey(); controlPoint.readFrom(component); if (controlPoint.isEditable()) { controlPoint.getValue().setLocation(x, y); @@ -543,7 +585,7 @@ public class Presenter implements IPlugInPort { this.selectionRect = Utils.createRectangle(scaledPoint, previousDragPoint); } selectedComponents.clear(); - for (IComponentInstance component : currentProject.getComponents()) { + for (IDIYComponent component : currentProject.getComponents()) { Area area = componentAreaMap.get(component); if ((area != null) && area.intersects(selectionRect)) { selectedComponents.add(component); @@ -571,7 +613,7 @@ public class Presenter implements IPlugInPort { int dx = (int) (Math.round((toPoint.x - fromPoint.x) / zoomLevel / Constants.GRID) * Constants.GRID); int dy = (int) (Math.round((toPoint.y - fromPoint.y) / zoomLevel / Constants.GRID) * Constants.GRID); fromPoint.translate(dx, dy); - for (IComponentInstance component : selectedComponents) { + for (IDIYComponent component : selectedComponents) { List controlPoints = ComponentProcessor.getInstance() .extractControlPoints(component.getClass()); for (ControlPointWrapper controlPoint : controlPoints) { @@ -595,7 +637,7 @@ public class Presenter implements IPlugInPort { } @Override - public void addComponents(List components, Point preferredPoint) { + public void addComponents(List components, Point preferredPoint) { LOG.debug(String.format("addComponents(%s)", components)); Project oldProject = cloner.deepClone(currentProject); currentProject.getComponents().addAll(components); @@ -634,7 +676,7 @@ public class Presenter implements IPlugInPort { @Override // @Override // public Object getDefaultPropertyValue( - // Class componentClass, + // Class componentClass, // String propertyName) { // return configuration.getDefaultPropertyValues().get( // componentClass.getName() + ":" + propertyName); @@ -647,7 +689,7 @@ public class Presenter implements IPlugInPort { defaultMap = new HashMap(); ConfigurationManager.getInstance().setConfigurationItem(DEFAULTS_KEY, defaultMap); } - for (IComponentInstance component : selectedComponents) { + for (IDIYComponent component : selectedComponents) { String className = component.getClass().getName(); LOG.debug("Default property value set for " + className + ":" + propertyName); defaultMap.put(className + ":" + propertyName, value); @@ -655,14 +697,14 @@ public class Presenter implements IPlugInPort { } @SuppressWarnings("unchecked") - private void instantiateComponent(Class componentClass, + private void instantiateComponent(Class componentClass, String componentTypeName, String namePrefix, Point point) throws Exception { LOG.info("Instatiating component of type: " + componentClass.getName()); Project oldProject = cloner.deepClone(currentProject); // Instantiate the component. - IComponentInstance component = componentClass.newInstance(); + IDIYComponent component = componentClass.newInstance(); // Find the next available name for the component. int i = 0; @@ -671,7 +713,7 @@ public class Presenter implements IPlugInPort { i++; String name = namePrefix + i; exists = false; - for (IComponentInstance c : currentProject.getComponents()) { + for (IDIYComponent c : currentProject.getComponents()) { String cName = ComponentProcessor.getInstance().extractBomName(c); if (cName.equals(name)) { exists = true; @@ -735,7 +777,7 @@ public class Presenter implements IPlugInPort { LOG.debug(String.format("applyPropertiesToSelection(%s)", properties)); Project oldProject = cloner.deepClone(currentProject); try { - for (IComponentInstance component : selectedComponents) { + for (IDIYComponent component : selectedComponents) { for (PropertyWrapper property : properties) { property.writeTo(component); } @@ -751,7 +793,7 @@ public class Presenter implements IPlugInPort { } @Override - public void setNewComponentSlot(IComponentType componentType) { + public void setNewComponentSlot(ComponentType componentType) { LOG.debug(String.format("setNewComponentSlot(%s)", componentType == null ? null : componentType.getName())); this.componentSlot = componentType; @@ -771,8 +813,7 @@ public class Presenter implements IPlugInPort { (int) (point.y / zoomLevel)); } - private boolean shouldShowControlPoint(ControlPointWrapper controlPoint, - IComponentInstance component) { + private boolean shouldShowControlPoint(ControlPointWrapper controlPoint, IDIYComponent component) { return controlPoint.getVisibilityPolicy().equals(VisibilityPolicy.ALWAYS) || ((controlPoint.getVisibilityPolicy().equals(VisibilityPolicy.WHEN_SELECTED)) && (getSelectedComponents() .contains(component))); diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/test/org/diylc/plugins/file/BomMakerTest.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/test/org/diylc/plugins/file/BomMakerTest.java index 2a1b90be..c7f172a0 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/test/org/diylc/plugins/file/BomMakerTest.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/test/org/diylc/plugins/file/BomMakerTest.java @@ -5,8 +5,8 @@ import static org.junit.Assert.*; import java.util.ArrayList; import java.util.List; -import org.diylc.components.MockComponentInstance; -import org.diylc.core.IComponentInstance; +import org.diylc.components.MockDIYComponent; +import org.diylc.core.IDIYComponent; import org.diylc.core.measures.Capacitance; import org.diylc.core.measures.CapacitanceUnit; import org.diylc.plugins.file.BomEntry; @@ -18,12 +18,12 @@ public class BomMakerTest { @Test public void testCreateBom() { - List components = new ArrayList(); - MockComponentInstance c1 = new MockComponentInstance(); + List components = new ArrayList(); + MockDIYComponent c1 = new MockDIYComponent(); c1.setC(new Capacitance(3d, CapacitanceUnit.pF)); components.add(c1); - components.add(new MockComponentInstance()); - components.add(new MockComponentInstance()); + components.add(new MockDIYComponent()); + components.add(new MockDIYComponent()); List bom = BomMaker.getInstance().createBom(components); assertNotNull(bom); assertEquals(2, bom.size()); diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/test/org/diylc/presenter/ClassProcessorTest.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/test/org/diylc/presenter/ClassProcessorTest.java index 8a261575..e8ba6b7a 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/test/org/diylc/presenter/ClassProcessorTest.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/test/org/diylc/presenter/ClassProcessorTest.java @@ -7,7 +7,7 @@ import java.util.List; import org.diylc.common.ControlPointWrapper; import org.diylc.common.PropertyWrapper; -import org.diylc.components.MockComponentInstance; +import org.diylc.components.MockDIYComponent; import org.diylc.presenter.ComponentProcessor; import org.junit.Test; @@ -17,7 +17,7 @@ public class ClassProcessorTest { @Test public void testExtractProperties() { List properties = ComponentProcessor.getInstance().extractProperties( - MockComponentInstance.class); + MockDIYComponent.class); assertNotNull(properties); assertEquals(4, properties.size()); }; @@ -25,7 +25,7 @@ public class ClassProcessorTest { @Test public void testExtractControlPoints() { List controlPoints = ComponentProcessor.getInstance() - .extractControlPoints(MockComponentInstance.class); + .extractControlPoints(MockDIYComponent.class); assertNotNull(controlPoints); assertEquals(1, controlPoints.size()); };