[141066] make extensions property sheet work properly
diff --git a/bundles/org.eclipse.wst.wsdl.ui/.classpath b/bundles/org.eclipse.wst.wsdl.ui/.classpath
index 9b3ddea..b18995c 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/.classpath
+++ b/bundles/org.eclipse.wst.wsdl.ui/.classpath
@@ -5,5 +5,6 @@
<classpathentry kind="src" path="src-asd"/>
<classpathentry kind="src" path="src-asd-wsdl11"/>
<classpathentry kind="src" path="src-refactor"/>
+ <classpathentry kind="src" path="src-soap"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/extensions/INodeReconciler.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/extensions/INodeReconciler.java
index 63b2547..4692d3e 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/extensions/INodeReconciler.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/extensions/INodeReconciler.java
@@ -12,7 +12,9 @@
import org.w3c.dom.Element;
-
+/**
+ * @depreacted
+ */
public interface INodeReconciler
{
public void notifyChanged(Object modelObject, Element element, int eventType, Object feature, Object oldValue, Object newValue, int index);
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/properties/sections/W11ExtensionsSection.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/properties/sections/W11ExtensionsSection.java
index bf47483..b80146d 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/properties/sections/W11ExtensionsSection.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/properties/sections/W11ExtensionsSection.java
@@ -28,6 +28,7 @@
import org.eclipse.wst.wsdl.ui.internal.WSDLEditorPlugin;
import org.eclipse.wst.wsdl.ui.internal.commands.AddExtensionElementCommand;
import org.eclipse.wst.wsdl.ui.internal.filter.ExtensiblityElementFilter;
+import org.eclipse.wst.wsdl.ui.internal.text.WSDLModelAdapter;
import org.eclipse.wst.xsd.ui.internal.common.commands.AddExtensionCommand;
import org.eclipse.wst.xsd.ui.internal.common.properties.sections.AbstractExtensionsSection;
import org.eclipse.wst.xsd.ui.internal.common.properties.sections.appinfo.AddExtensionsComponentDialog;
@@ -40,6 +41,8 @@
public class W11ExtensionsSection extends AbstractExtensionsSection
{
+ WSDLModelAdapter modelAdapter;
+
public W11ExtensionsSection()
{
super();
@@ -84,6 +87,12 @@
if (input instanceof ExtensibleElement)
{
isReadOnly = false;
+ Element element = ((ExtensibleElement)input).getElement();
+ if (element != null)
+ {
+ modelAdapter = WSDLModelAdapter.lookupOrCreateModelAdapter(element.getOwnerDocument());
+ modelAdapter.getModelReconcileAdapter().addListener(internalNodeAdapter);
+ }
//addButton.setEnabled(true);
//removeButton.setEnabled(true);
}
@@ -94,6 +103,15 @@
//removeButton.setEnabled(false);
}
}
+
+ public void dispose()
+ {
+ super.dispose();
+ if (modelAdapter != null)
+ {
+ modelAdapter.getModelReconcileAdapter().removeListener(internalNodeAdapter);
+ }
+ }
protected AddExtensionsComponentDialog createAddExtensionsComponentDialog()
{
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/text/WSDLModelAdapter.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/text/WSDLModelAdapter.java
index 754fe02..5e3d7b6 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/text/WSDLModelAdapter.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/text/WSDLModelAdapter.java
@@ -24,6 +24,7 @@
import org.eclipse.wst.wsdl.ui.internal.util.WSDLEditorUtil;
import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
+import org.eclipse.wst.xsd.ui.internal.util.ModelReconcileAdapter;
import org.eclipse.wst.xsd.ui.internal.util.XSDSchemaLocationResolverAdapterFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
@@ -32,6 +33,7 @@
{
protected ResourceSet resourceSet;
protected Definition definition;
+ private ModelReconcileAdapter modelReconcileAdapter;
public Definition getDefinition()
{
@@ -104,7 +106,7 @@
// attach an adapter to keep the WSDL model and DOM in sync
//
- new WSDLModelReconcileAdapter(document, definition);
+ modelReconcileAdapter = new WSDLModelReconcileAdapter(document, definition);
// TODO... CS : revisit this line
@@ -119,4 +121,25 @@
}
return definition;
}
+
+ public ModelReconcileAdapter getModelReconcileAdapter()
+ {
+ return modelReconcileAdapter;
+ }
+
+ public static WSDLModelAdapter lookupOrCreateModelAdapter(Document document)
+ {
+ WSDLModelAdapter adapter = null;
+ if (document instanceof INodeNotifier)
+ {
+ INodeNotifier notifier = (INodeNotifier)document;
+ adapter = (WSDLModelAdapter)notifier.getAdapterFor(WSDLModelAdapter.class);
+ if (adapter == null)
+ {
+ adapter = new WSDLModelAdapter();
+ notifier.addAdapter(adapter);
+ }
+ }
+ return adapter;
+ }
}