diff --git a/diylc/diylc-core/src/org/diylc/presenter/ComparatorFactory.java b/diylc/diylc-core/src/org/diylc/presenter/ComparatorFactory.java index bf0a50a3..e5326b8f 100644 --- a/diylc/diylc-core/src/org/diylc/presenter/ComparatorFactory.java +++ b/diylc/diylc-core/src/org/diylc/presenter/ComparatorFactory.java @@ -22,10 +22,11 @@ package org.diylc.presenter; import java.util.Comparator; - + import org.diylc.common.ComponentType; import org.diylc.common.PropertyWrapper; import org.diylc.core.IDIYComponent; +import org.diylc.core.Project; public class ComparatorFactory { @@ -127,5 +128,17 @@ public class ComparatorFactory { }; } return componentZOrderComparator; + } + + public Comparator> getComponentProjectZOrderComparator(final Project project) { + return new Comparator>() { + + @Override + public int compare(IDIYComponent o1, IDIYComponent o2) { + int index1 = project.getComponents().indexOf(o1); + int index2 = project.getComponents().indexOf(o2); + return new Integer(index1).compareTo(index2); + } + }; } } diff --git a/diylc/diylc-core/src/org/diylc/presenter/Presenter.java b/diylc/diylc-core/src/org/diylc/presenter/Presenter.java index ad3370f7..eba2a4d8 100644 --- a/diylc/diylc-core/src/org/diylc/presenter/Presenter.java +++ b/diylc/diylc-core/src/org/diylc/presenter/Presenter.java @@ -831,7 +831,9 @@ public class Presenter implements IPlugInPort { @Override public Collection> getSelectedComponents() { - return selectedComponents; + List> selection = new ArrayList>(selectedComponents); + Collections.sort(selection, ComparatorFactory.getInstance().getComponentProjectZOrderComparator(currentProject)); + return selection; } @SuppressWarnings("unchecked") diff --git a/diylc/diylc-library/lib/diylc-core.jar b/diylc/diylc-library/lib/diylc-core.jar index efad334d..4385de15 100644 Binary files a/diylc/diylc-library/lib/diylc-core.jar and b/diylc/diylc-library/lib/diylc-core.jar differ diff --git a/diylc/diylc-swing/lib/diylc-core.jar b/diylc/diylc-swing/lib/diylc-core.jar index efad334d..4385de15 100644 Binary files a/diylc/diylc-swing/lib/diylc-core.jar and b/diylc/diylc-swing/lib/diylc-core.jar differ diff --git a/diylc/diylc-swing/update.xml b/diylc/diylc-swing/update.xml index bc41eab9..80877500 100644 --- a/diylc/diylc-swing/update.xml +++ b/diylc/diylc-swing/update.xml @@ -1878,6 +1878,10 @@ NEW_FEATURE Holding "shift" key switches mouse wheel scrolling from vertical to horizontal + + IMPROVEMENT + Preserve z-order of components when copy-pasting + BUG_FIX "Cut Line" component sometimes disappears