Bug Fix in result browser navigation
diff --git a/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/ui/ResultNavigator.java b/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/ui/ResultNavigator.java
index b994381..c42aa8b 100644
--- a/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/ui/ResultNavigator.java
+++ b/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/ui/ResultNavigator.java
@@ -7,6 +7,7 @@
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExecutableExtension;
+import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.dialogs.MessageDialog;
@@ -142,9 +143,9 @@
EObject element = sh;
while (element instanceof SpecHierarchy) {
EObject container = element.eContainer();
- int pos = container.eContents().indexOf(element);
- if (pos < container.eContents().size() - 1) {
- return (SpecHierarchy) container.eContents().get(pos +1);
+ int pos = getSpecHierarchies(container).indexOf(element);
+ if (pos < getSpecHierarchies(container).size() - 1) {
+ return (SpecHierarchy) getSpecHierarchies(container).get(pos +1);
} else {
element = container;
}
@@ -166,9 +167,12 @@
EObject element = sh;
while (element instanceof SpecHierarchy) {
EObject container = element.eContainer();
- int pos = container.eContents().indexOf(element);
+ if (! (container instanceof SpecHierarchy || container instanceof Specification)) {
+ return null;
+ }
+ int pos = getSpecHierarchies(container).indexOf(element);
if (pos > 0) {
- sh = (SpecHierarchy) container.eContents().get(pos - 1);
+ sh = (SpecHierarchy) getSpecHierarchies(container).get(pos - 1);
while (sh.getChildren().size() > 0) {
sh = sh.getChildren().get(sh.getChildren().size() - 1);
}
@@ -185,4 +189,14 @@
return null;
}
+ private EList<SpecHierarchy> getSpecHierarchies(EObject eObject) {
+ if (eObject instanceof SpecHierarchy) {
+ return ((SpecHierarchy)eObject).getChildren();
+ }
+ if (eObject instanceof Specification) {
+ return ((Specification)eObject).getChildren();
+ }
+ return null;
+ }
+
}