From 09e4862bcce2294f14448f15a2a31f8d234726fd Mon Sep 17 00:00:00 2001 From: bancika Date: Wed, 12 Jan 2011 17:46:57 +0000 Subject: [PATCH] grouping improvement --- .../src/org/diylc/presenter/Presenter.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) 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 ea5fb9c9..ae61fb0d 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 @@ -412,8 +412,9 @@ public class Presenter implements IPlugInPort { IDIYComponent component = currentProject.getComponents().get(i); for (int pointIndex = 0; pointIndex < component.getControlPointCount(); pointIndex++) { Point controlPoint = component.getControlPoint(pointIndex); - // Only consider selected components. - if (selectedComponents.contains(component)) { + // Only consider selected components that are not grouped. + if (selectedComponents.contains(component) + && findAllGroupedComponents(component).size() == 1) { try { if (scaledPoint.distance(controlPoint) < CONTROL_POINT_SIZE) { Set indices = new HashSet(); @@ -715,12 +716,23 @@ public class Presenter implements IPlugInPort { } } + /** + * Finds all components that are grouped with the specified component. This + * should be called any time components are added or removed from the + * selection. + * + * @param component + * @return set of all components that belong to the same group with the + * specified component. At the minimum, set contains that single + * component. + */ private Set> findAllGroupedComponents(IDIYComponent component) { Set> components = new HashSet>(); components.add(component); for (Set> group : currentProject.getGroups()) { if (group.contains(component)) { components.addAll(group); + break; } } return components; @@ -907,6 +919,9 @@ public class Presenter implements IPlugInPort { if (!componentType.isStretchable()) { return false; } + if (findAllGroupedComponents(component).size() > 1) { + return false; + } return selectedComponents.contains(component); // return // controlPoint.getVisibilityPolicy().equals(VisibilityPolicy.ALWAYS)