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:
authorcsalter2006-07-28 18:04:56 +0000
committercsalter2006-07-28 18:04:56 +0000
commitc42dc0438cf3b54abec52feea47b6426fad40920 (patch)
tree704dd9032108c470964da3ca2cf9c4dab877fa0a /bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui
parent07623ec4da673b272da5a98c5c93185da23f5dff (diff)
downloadwebtools.webservices-c42dc0438cf3b54abec52feea47b6426fad40920.tar.gz
webtools.webservices-c42dc0438cf3b54abec52feea47b6426fad40920.tar.xz
webtools.webservices-c42dc0438cf3b54abec52feea47b6426fad40920.zip
[150268] Provide better feedback and improve responsivness when opening large files
Diffstat (limited to 'bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui')
-rw-r--r--bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/text/WSDLModelAdapter.java52
1 files changed, 47 insertions, 5 deletions
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 169368559..3687ba585 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
@@ -10,10 +10,17 @@
*******************************************************************************/
package org.eclipse.wst.wsdl.ui.internal.text;
+import java.lang.reflect.InvocationTargetException;
+import java.util.Map;
+
+import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.progress.IProgressService;
import org.eclipse.wst.sse.core.internal.provisional.INodeAdapter;
import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
import org.eclipse.wst.wsdl.Definition;
@@ -22,10 +29,12 @@ import org.eclipse.wst.wsdl.internal.impl.DefinitionImpl;
import org.eclipse.wst.wsdl.internal.util.WSDLResourceFactoryImpl;
import org.eclipse.wst.wsdl.ui.internal.extensions.ExtensibleTypeSystemProvider;
import org.eclipse.wst.wsdl.ui.internal.util.WSDLEditorUtil;
+import org.eclipse.wst.wsdl.util.WSDLResourceImpl;
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.eclipse.xsd.util.XSDResourceImpl;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
@@ -62,7 +71,7 @@ public class WSDLModelAdapter implements INodeAdapter
return createDefinition(document);
}
- public Definition createDefinition(Document document)
+ public Definition createDefinition(final Document document)
{
try
{
@@ -94,15 +103,48 @@ public class WSDLModelAdapter implements INodeAdapter
definition = WSDLFactory.eINSTANCE.createDefinition();
definition.setDocumentBaseURI(uri.toString());
definition.setDocument(document);
- definition.setElement(document.getDocumentElement());
-
+
WSDLResourceFactoryImpl resourceFactory = new WSDLResourceFactoryImpl();
Resource resource = resourceFactory.createResource(uri);
resourceSet.getResources().add(resource);
resource.getContents().add(definition);
resource.setModified(false);
- ((DefinitionImpl) definition).reconcileReferences(true);
-
+
+ IRunnableWithProgress setElementOperation = new IRunnableWithProgress()
+ {
+ public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException
+ {
+ // Use the animated flavour as we don't know beforehand how many ticks we need.
+ // The task name will be displayed by the code in WSDLResourceImpl and XSDResourceImpl.
+
+ monitor.beginTask("", IProgressMonitor.UNKNOWN); //$NON-NLS-1$
+
+ Map loadOptions = resourceSet.getLoadOptions();
+
+ loadOptions.put(WSDLResourceImpl.WSDL_PROGRESS_MONITOR, monitor);
+ loadOptions.put(XSDResourceImpl.XSD_PROGRESS_MONITOR, monitor);
+
+ definition.setElement(document.getDocumentElement());
+ ((DefinitionImpl) definition).reconcileReferences(true);
+
+ loadOptions.remove(WSDLResourceImpl.WSDL_PROGRESS_MONITOR);
+ loadOptions.remove(XSDResourceImpl.XSD_PROGRESS_MONITOR);
+ }
+ };
+
+ IProgressService progressService = PlatformUI.getWorkbench().getProgressService();
+ try
+ {
+ progressService.busyCursorWhile(setElementOperation);
+ }
+ catch (InvocationTargetException e)
+ {
+ e.printStackTrace();
+ }
+ catch (InterruptedException e)
+ {
+ e.printStackTrace();
+ }
// attach an adapter to keep the WSDL model and DOM in sync
//

Back to the top