diff options
author | kchong | 2006-08-02 21:30:21 +0000 |
---|---|---|
committer | kchong | 2006-08-02 21:30:21 +0000 |
commit | da83110f231b987ef52c5e6c0bdc6cc547e5ef93 (patch) | |
tree | f60113cce9d3bbd6eebd1974971b23b141bd1050 /bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/editor | |
parent | 2acc758e990f724ea4ed15115937e51d4b5f7aad (diff) | |
download | webtools.sourceediting-da83110f231b987ef52c5e6c0bdc6cc547e5ef93.tar.gz webtools.sourceediting-da83110f231b987ef52c5e6c0bdc6cc547e5ef93.tar.xz webtools.sourceediting-da83110f231b987ef52c5e6c0bdc6cc547e5ef93.zip |
[143528] Certain XSD constructs are not updated when modifying from the source view
Diffstat (limited to 'bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/editor')
-rw-r--r-- | bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/editor/XSDTabbedPropertySheetPage.java | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/editor/XSDTabbedPropertySheetPage.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/editor/XSDTabbedPropertySheetPage.java index 2afd2eff22..9bb4545bd8 100644 --- a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/editor/XSDTabbedPropertySheetPage.java +++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/editor/XSDTabbedPropertySheetPage.java @@ -16,17 +16,21 @@ import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.views.properties.tabbed.ITabbedPropertySheetPageContributor; import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage; +import org.eclipse.wst.sse.core.internal.provisional.INodeAdapter; +import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier; import org.eclipse.wst.xsd.ui.internal.adapters.XSDAdapterFactory; import org.eclipse.wst.xsd.ui.internal.adapters.XSDBaseAdapter; import org.eclipse.wst.xsd.ui.internal.adapters.XSDElementDeclarationAdapter; import org.eclipse.wst.xsd.ui.internal.adapters.XSDParticleAdapter; import org.eclipse.wst.xsd.ui.internal.adt.facade.IADTObjectListener; +import org.eclipse.wst.xsd.ui.internal.text.XSDModelAdapter; import org.eclipse.xsd.XSDConcreteComponent; import org.eclipse.xsd.XSDElementDeclaration; public class XSDTabbedPropertySheetPage extends TabbedPropertySheetPage implements IADTObjectListener { XSDBaseAdapter oldSelection; + XSDModelAdapter xsdModelAdapter; public XSDTabbedPropertySheetPage(ITabbedPropertySheetPageContributor tabbedPropertySheetPageContributor) { super(tabbedPropertySheetPageContributor); @@ -81,6 +85,16 @@ public class XSDTabbedPropertySheetPage extends TabbedPropertySheetPage implemen adapter.registerListener(this); oldSelection = adapter; Object model = adapter.getTarget(); + + if (xsdModelAdapter != null) + xsdModelAdapter.getModelReconcileAdapter().removeListener(internalNodeAdapter); + + xsdModelAdapter = XSDModelAdapter.lookupOrCreateModelAdapter(((XSDConcreteComponent)adapter.getTarget()).getElement().getOwnerDocument()); + if (xsdModelAdapter != null) + { + xsdModelAdapter.getModelReconcileAdapter().addListener(internalNodeAdapter); + } + if (model instanceof XSDConcreteComponent) { selection = new StructuredSelection(model); @@ -98,5 +112,28 @@ public class XSDTabbedPropertySheetPage extends TabbedPropertySheetPage implemen refresh(); } } + + public void dispose() + { + if (xsdModelAdapter != null) + { + xsdModelAdapter.getModelReconcileAdapter().removeListener(internalNodeAdapter); + xsdModelAdapter = null; + } + super.dispose(); + } + protected INodeAdapter internalNodeAdapter = new InternalNodeAdapter(); + class InternalNodeAdapter implements INodeAdapter + { + public boolean isAdapterForType(Object type) + { + return false; + } + + public void notifyChanged(INodeNotifier notifier, int eventType, Object changedFeature, Object oldValue, Object newValue, int pos) + { + refresh(); + } + } } |