Skip to main content

This CGIT instance is deprecated, and repositories have been moved to Gitlab or Github. See the repository descriptions for specific locations.

summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkchong2006-08-02 21:30:21 +0000
committerkchong2006-08-02 21:30:21 +0000
commitda83110f231b987ef52c5e6c0bdc6cc547e5ef93 (patch)
treef60113cce9d3bbd6eebd1974971b23b141bd1050 /bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/editor
parent2acc758e990f724ea4ed15115937e51d4b5f7aad (diff)
downloadwebtools.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.java37
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();
+ }
+ }
}

Back to the top