[142638] Fix the EditPart ordering to avoid cross over of reference lines
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11Service.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11Service.java
index b1a4ca1..a5bade6 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11Service.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11Service.java
@@ -11,9 +11,15 @@
package org.eclipse.wst.wsdl.ui.internal.adapters.basic;
import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Iterator;
import java.util.List;
import org.eclipse.gef.commands.Command;
import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.wsdl.Binding;
+import org.eclipse.wst.wsdl.Port;
+import org.eclipse.wst.wsdl.PortType;
import org.eclipse.wst.wsdl.Service;
import org.eclipse.wst.wsdl.ui.internal.WSDLEditorPlugin;
import org.eclipse.wst.wsdl.ui.internal.actions.OpenInNewEditor;
@@ -30,7 +36,14 @@
public List getEndPoints() {
List adapterList = new ArrayList();
- populateAdapterList(((Service) target).getEPorts(), adapterList);
+ List endPoints = new ArrayList();
+ Iterator it = ((Service) target).getEPorts().iterator();
+ while (it.hasNext()) {
+ endPoints.add(it.next());
+ }
+
+ Collections.sort(endPoints, new EndPointComparator());
+ populateAdapterList(endPoints, adapterList);
return adapterList;
}
@@ -96,4 +109,37 @@
public ITreeElement getParent() {
return null;
}
+
+ private class EndPointComparator implements Comparator {
+ public int compare(Object o1, Object o2) {
+ if (o1 instanceof Port && o2 instanceof Port) {
+ Binding binding1 = ((Port) o1).getEBinding();
+ Binding binding2 = ((Port) o2).getEBinding();
+
+ if (binding1 != null && binding2 == null) {
+ return -1;
+ }
+ else if (binding1 == null && binding2 != null) {
+ return 1;
+ }
+
+ PortType portType1 = binding1.getEPortType();
+ PortType portType2 = binding2.getEPortType();
+
+ if (portType1 != null && portType2 != null) {
+ String name1 = portType1.getQName().getLocalPart();
+ String name2 = portType2.getQName().getLocalPart();
+ return name1.compareTo(name2);
+ }
+ else if (portType1 != null && portType2 == null) {
+ return -1;
+ }
+ else if (portType1 == null && portType2 != null) {
+ return 1;
+ }
+ }
+
+ return 0;
+ }
+ }
}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/model/BindingColumn.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/model/BindingColumn.java
index 2e02054..4ba9ffc 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/model/BindingColumn.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/model/BindingColumn.java
@@ -10,7 +10,14 @@
*******************************************************************************/
package org.eclipse.wst.wsdl.ui.internal.asd.design.editparts.model;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.IBinding;
import org.eclipse.wst.wsdl.ui.internal.asd.facade.IDescription;
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.IInterface;
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.INamedObject;
import org.eclipse.wst.wsdl.ui.internal.asd.outline.ITreeElement;
public class BindingColumn extends AbstractModelCollection {
@@ -19,7 +26,10 @@
}
public ITreeElement[] getChildren() {
- Object array[] = ((IDescription)model).getBindings().toArray();
+ List bindings = ((IDescription)model).getBindings();
+ Collections.sort(bindings, new BindingComparator());
+ Object array[] = bindings.toArray();
+
ITreeElement treeElement[] = new ITreeElement[array.length];
for (int index = 0; index < array.length; index++) {
treeElement[index] = (ITreeElement) array[index];
@@ -27,8 +37,7 @@
return treeElement;
}
-
-
+
public boolean hasChildren() {
ITreeElement treeElement[] = getChildren();
if (treeElement.length > 0) {
@@ -41,4 +50,27 @@
public String getText() {
return "definition"; //$NON-NLS-1$
}
+
+ private class BindingComparator implements Comparator {
+ public int compare(Object o1, Object o2) {
+ if (o1 instanceof IBinding && o2 instanceof IBinding) {
+ IInterface interface1 = ((IBinding) o1).getInterface();
+ IInterface interface2 = ((IBinding) o2).getInterface();
+
+ if (interface1 != null && interface2 != null) {
+ String name1 = ((INamedObject) interface1).getName();
+ String name2 = ((INamedObject) interface2).getName();
+ return name1.compareTo(name2);
+ }
+ else if (interface1 != null && interface2 == null) {
+ return -1;
+ }
+ else if (interface1 == null && interface2 != null) {
+ return 1;
+ }
+ }
+
+ return 0;
+ }
+ }
}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/model/InterfaceColumn.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/model/InterfaceColumn.java
index 0888c1a..ecd0f17 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/model/InterfaceColumn.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/model/InterfaceColumn.java
@@ -10,7 +10,12 @@
*******************************************************************************/
package org.eclipse.wst.wsdl.ui.internal.asd.design.editparts.model;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
import org.eclipse.wst.wsdl.ui.internal.asd.facade.IDescription;
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.INamedObject;
import org.eclipse.wst.wsdl.ui.internal.asd.outline.ITreeElement;
public class InterfaceColumn extends AbstractModelCollection {
@@ -19,7 +24,11 @@
}
public ITreeElement[] getChildren() {
- Object array[] = ((IDescription)model).getInterfaces().toArray();
+ List interfaces = ((IDescription)model).getInterfaces();
+ Comparator compare = new NamedObjectComparator();
+ Collections.sort(interfaces, compare);
+ Object array[] = interfaces.toArray();
+
ITreeElement treeElement[] = new ITreeElement[array.length];
for (int index = 0; index < array.length; index++) {
treeElement[index] = (ITreeElement) array[index];
@@ -27,8 +36,7 @@
return treeElement;
}
-
-
+
public boolean hasChildren() {
ITreeElement treeElement[] = getChildren();
if (treeElement.length > 0) {
@@ -41,4 +49,16 @@
public String getText() {
return "definition"; //$NON-NLS-1$
}
+
+ private class NamedObjectComparator implements Comparator{
+ public int compare(Object o1, Object o2) {
+ if (o1 instanceof INamedObject && o2 instanceof INamedObject) {
+ String name1 = ((INamedObject) o1).getName();
+ String name2 = ((INamedObject) o2).getName();
+ return name1.compareTo(name2);
+ }
+
+ return -1;
+ }
+ }
}