From 69e2296c23b76b69f10fae5a36e4408f8107db54 Mon Sep 17 00:00:00 2001 From: bancika Date: Sat, 27 Aug 2011 20:36:37 +0000 Subject: [PATCH] show mutual properties across different component types --- .../DIYLC/library/main.jar | Bin 99864 -> 99869 bytes .../src/org/diylc/common/PropertyWrapper.java | 24 ++++++++++++------ .../diylc/presenter/ComponentProcessor.java | 4 +-- .../diylc/presenter/InstantiationManager.java | 4 ++- .../DIYLC/update.xml | 6 ++++- .../components/connectivity/CurvedTrace.java | 5 ++-- .../org/diylc/components/tube/TubeSocket.java | 2 +- 7 files changed, 29 insertions(+), 16 deletions(-) diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/library/main.jar b/ diy-layout-creator --username bancika@gmail.com/DIYLC/library/main.jar index 01864256b369d7409696ea2bdf37f3d669a1510b..6686875dc1dd7065acc4fcb77964afbc8ce559e4 100644 GIT binary patch delta 4147 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 type; private Object value; - private Method setter; - private Method getter; + private String setter; + private String getter; private boolean defaultable; private IPropertyValidator validator; + private boolean unique = true; - public PropertyWrapper(String name, Class type, Method getter, Method setter, + public PropertyWrapper(String name, Class type, String getter, String setter, boolean defaultable, IPropertyValidator validator) { super(); this.name = name; @@ -33,8 +33,8 @@ public class PropertyWrapper implements Cloneable { } public void readFrom(Object object) throws IllegalArgumentException, IllegalAccessException, - InvocationTargetException { - this.value = getter.invoke(object); + InvocationTargetException, SecurityException, NoSuchMethodException { + this.value = object.getClass().getMethod(getter).invoke(object); } // public void readUniqueFrom(IDIYComponent component) @@ -47,8 +47,8 @@ public class PropertyWrapper implements Cloneable { // } public void writeTo(Object object) throws IllegalArgumentException, IllegalAccessException, - InvocationTargetException { - setter.invoke(object, value); + InvocationTargetException, SecurityException, NoSuchMethodException { + object.getClass().getMethod(setter, this.value.getClass()).invoke(object, this.value); } public String getName() { @@ -74,6 +74,14 @@ public class PropertyWrapper implements Cloneable { public IPropertyValidator getValidator() { return validator; } + + public boolean isUnique() { + return unique; + } + + public void setUnique(boolean unique) { + this.unique = unique; + } // @Override // public Object clone() throws CloneNotSupportedException { 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 8f1c9d49..d25efcf4 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 @@ -141,8 +141,8 @@ public class ComponentProcessor { Method setter = clazz.getMethod("set" + method.getName().substring(3), method.getReturnType()); PropertyWrapper property = new PropertyWrapper(name, - method.getReturnType(), method, setter, annotation.defaultable(), - validator); + method.getReturnType(), method.getName(), setter.getName(), + annotation.defaultable(), validator); properties.add(property); } } catch (NoSuchMethodException e) { diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/InstantiationManager.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/InstantiationManager.java index 1b248dea..260d4a87 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/InstantiationManager.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/InstantiationManager.java @@ -173,9 +173,11 @@ public class InstantiationManager { * @throws IllegalArgumentException * @throws IllegalAccessException * @throws InvocationTargetException + * @throws NoSuchMethodException + * @throws SecurityException */ public void fillWithDefaultProperties(Object object) throws IllegalArgumentException, - IllegalAccessException, InvocationTargetException { + IllegalAccessException, InvocationTargetException, SecurityException, NoSuchMethodException { // Extract properties. List properties = ComponentProcessor.getInstance().extractProperties( object.getClass()); diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/update.xml b/ diy-layout-creator --username bancika@gmail.com/DIYLC/update.xml index f81f6be5..680e3b80 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/update.xml +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/update.xml @@ -324,7 +324,11 @@ IMPROVEMENT - Ctrl+click should not cleanup selection when clicked on the canvas + Component edit dialog should show mutual properties when components of different types are selected (e.g. curved trace and straight trace witdth) + + + IMPROVEMENT + Ctrl+click should not clear selection when clicked on the canvas IMPROVEMENT diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/CurvedTrace.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/CurvedTrace.java index 0255f09f..7d580ba8 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/CurvedTrace.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/CurvedTrace.java @@ -8,7 +8,6 @@ import org.diylc.common.ObjectCache; import org.diylc.components.AbstractCurvedComponent; import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; -import org.diylc.core.Theme; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Size; @@ -40,11 +39,11 @@ public class CurvedTrace extends AbstractCurvedComponent { } @EditableProperty(name = "Width") - public Size getSize() { + public Size getThickness() { return size; } - public void setSize(Size size) { + public void setThickness(Size size) { this.size = size; } diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/tube/TubeSocket.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/tube/TubeSocket.java index 235f2c30..e6b51cba 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/tube/TubeSocket.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/tube/TubeSocket.java @@ -105,7 +105,7 @@ public class TubeSocket extends AbstractTransparentComponent { break; case B9A: pinCount = 9; - pinCircleDiameter = getClosestOdd(new Size(14d, SizeUnit.mm).convertToPixels()); + pinCircleDiameter = getClosestOdd(new Size(21d, SizeUnit.mm).convertToPixels()); hasEmptySpace = true; break; default: