diff options
author | gindik | 2009-04-29 23:50:38 +0000 |
---|---|---|
committer | gindik | 2009-04-29 23:50:38 +0000 |
commit | 2a460be234bed52c2b92538c6ada4af7ae646f66 (patch) | |
tree | edd8aafbb331dba1536b5f99c8b226b9db1510c4 /bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse | |
parent | 3a85e6d2ee9975a381e717980953df65a98076d9 (diff) | |
download | webtools.sourceediting-2a460be234bed52c2b92538c6ada4af7ae646f66.tar.gz webtools.sourceediting-2a460be234bed52c2b92538c6ada4af7ae646f66.tar.xz webtools.sourceediting-2a460be234bed52c2b92538c6ada4af7ae646f66.zip |
[273068] XSD Editor navigation history errors
Diffstat (limited to 'bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse')
3 files changed, 26 insertions, 9 deletions
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/adapters/RedefineCategoryAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/adapters/RedefineCategoryAdapter.java index cfb39e106c..83e8c924ba 100644 --- a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/adapters/RedefineCategoryAdapter.java +++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/adapters/RedefineCategoryAdapter.java @@ -28,12 +28,14 @@ import org.eclipse.xsd.XSDRedefine; public class RedefineCategoryAdapter extends CategoryAdapter { protected XSDRedefine xsdRedefine; + private XSDRedefineAdapter xsdRedefineAdapter; - public RedefineCategoryAdapter(String label, Image image, Collection children, XSDRedefine xsdRedefine, int groupType) + public RedefineCategoryAdapter(String label, Image image, Collection children, XSDRedefine xsdRedefine, XSDRedefineAdapter xsdRedefineAdapter, int groupType) { super(label, image, children, xsdRedefine.getSchema(), groupType); this.xsdRedefine = xsdRedefine; this.target = xsdRedefine; + this.xsdRedefineAdapter = xsdRedefineAdapter; } public XSDRedefine getXSDRedefine() @@ -74,4 +76,10 @@ public class RedefineCategoryAdapter extends CategoryAdapter { return (IModel)XSDAdapterFactory.getInstance().adapt(xsdRedefine.getSchema()); } + + + public XSDRedefineAdapter getXsdRedefineAdapter() { + return xsdRedefineAdapter; + } + }
\ No newline at end of file diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/adapters/XSDRedefineAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/adapters/XSDRedefineAdapter.java index 59aa9dc291..fc5285c169 100644 --- a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/adapters/XSDRedefineAdapter.java +++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/adapters/XSDRedefineAdapter.java @@ -110,19 +110,19 @@ public class XSDRedefineAdapter extends XSDSchemaDirectiveAdapter XSDEditorPlugin xsdEditorPlugin = XSDEditorPlugin.getDefault(); attributesCategory = new RedefineCategoryAdapter( Messages._UI_GRAPH_REDEFINE_ATTRIBUTE_GROUPS, - xsdEditorPlugin.getIconImage("obj16/attributesheader"), attributes, xsdRedefine, CategoryAdapter.ATTRIBUTES); //$NON-NLS-1$ + xsdEditorPlugin.getIconImage("obj16/attributesheader"), attributes, xsdRedefine, this, CategoryAdapter.ATTRIBUTES); //$NON-NLS-1$ attributesCategory.setAllChildren(attributes); registerListener(attributesCategory); typesCategory = new RedefineCategoryAdapter( Messages._UI_GRAPH_REDEFINE_TYPES, - xsdEditorPlugin.getIconImage("obj16/typesheader"), types, xsdRedefine, CategoryAdapter.TYPES); //$NON-NLS-1$ + xsdEditorPlugin.getIconImage("obj16/typesheader"), types, xsdRedefine, this, CategoryAdapter.TYPES); //$NON-NLS-1$ typesCategory.setAllChildren(types); registerListener(typesCategory); groupsCategory = new RedefineCategoryAdapter( Messages._UI_GRAPH_REDEFINE_GROUPS, - xsdEditorPlugin.getIconImage("obj16/groupsheader"), groups, xsdRedefine, CategoryAdapter.GROUPS); //$NON-NLS-1$ + xsdEditorPlugin.getIconImage("obj16/groupsheader"), groups, xsdRedefine, this, CategoryAdapter.GROUPS); //$NON-NLS-1$ groupsCategory.setAllChildren(groups); registerListener(groupsCategory); } diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/navigation/DesignViewNavigationLocation.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/navigation/DesignViewNavigationLocation.java index 3e915023e1..6f256a1437 100644 --- a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/navigation/DesignViewNavigationLocation.java +++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/navigation/DesignViewNavigationLocation.java @@ -245,7 +245,7 @@ public class DesignViewNavigationLocation extends NavigationLocation else if (component instanceof XSDRedefine) { XSDRedefine redefine = (XSDRedefine) component; - pathSegment = new PathSegment(PathSegment.REDEFINE, redefine.toString()); + pathSegment = new PathSegment(PathSegment.REDEFINE, redefine.getSchemaLocation()); } return pathSegment; } @@ -361,7 +361,16 @@ public class DesignViewNavigationLocation extends NavigationLocation } else if (segment.kind == PathSegment.REDEFINE) { - // TODO + Iterator iterator = schema.getContents().iterator(); + while (iterator.hasNext()) + { + Object object = iterator.next(); + if (object instanceof XSDRedefine) + { + XSDRedefine redefine = (XSDRedefine)object; + visitRedefine(redefine); + } + } } } } @@ -438,14 +447,14 @@ public class DesignViewNavigationLocation extends NavigationLocation { if (segment != null) { - String name = redefine.toString(); - if (segment.kind == PathSegment.ATTRIBUTE_GROUP && isMatch(segment.name, name)) + String name = redefine.getSchemaLocation(); + if (segment.kind == PathSegment.REDEFINE && isMatch(segment.name, name)) { result = redefine; incrementSegment(); if (!isDone()) { - super.visitRedefine(redefine); + visitSchema(redefine.getSchema()); } } } |