You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gu...@apache.org on 2010/06/09 15:41:15 UTC

svn commit: r953000 - in /commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.modeling.diagram/src/org/apache/commons/scxml/modeling/export: ExportProgressMonitor.java ModelingDocumentExportWizard.java

Author: guixl
Date: Wed Jun  9 13:41:14 2010
New Revision: 953000

URL: http://svn.apache.org/viewvc?rev=953000&view=rev
Log:
add SCXML document export progress monitor 

Added:
    commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.modeling.diagram/src/org/apache/commons/scxml/modeling/export/ExportProgressMonitor.java   (with props)
Modified:
    commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.modeling.diagram/src/org/apache/commons/scxml/modeling/export/ModelingDocumentExportWizard.java

Added: commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.modeling.diagram/src/org/apache/commons/scxml/modeling/export/ExportProgressMonitor.java
URL: http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.modeling.diagram/src/org/apache/commons/scxml/modeling/export/ExportProgressMonitor.java?rev=953000&view=auto
==============================================================================
--- commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.modeling.diagram/src/org/apache/commons/scxml/modeling/export/ExportProgressMonitor.java (added)
+++ commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.modeling.diagram/src/org/apache/commons/scxml/modeling/export/ExportProgressMonitor.java Wed Jun  9 13:41:14 2010
@@ -0,0 +1,56 @@
+package org.apache.commons.scxml.modeling.export;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+
+public class ExportProgressMonitor implements IProgressMonitor{
+
+	/**
+	 * Indicates whether cancel has been requested.
+	 */
+	private boolean cancelled = false;
+	
+	@Override
+	public void beginTask(String name, int totalWork) {
+		
+	}
+
+	@Override
+	public void done() {
+		
+	}
+
+	@Override
+	public void internalWorked(double work) {
+		// TODO Auto-generated method stub
+		
+	}
+
+	@Override
+	public boolean isCanceled() {
+		return cancelled;
+	}
+
+	@Override
+	public void setCanceled(boolean value) {
+		this.cancelled = cancelled;
+	}
+
+	@Override
+	public void setTaskName(String name) {
+		// TODO Auto-generated method stub
+		
+	}
+
+	@Override
+	public void subTask(String name) {
+		// TODO Auto-generated method stub
+		
+	}
+
+	@Override
+	public void worked(int work) {
+		// TODO Auto-generated method stub
+		
+	}
+
+}

Propchange: commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.modeling.diagram/src/org/apache/commons/scxml/modeling/export/ExportProgressMonitor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.modeling.diagram/src/org/apache/commons/scxml/modeling/export/ModelingDocumentExportWizard.java
URL: http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.modeling.diagram/src/org/apache/commons/scxml/modeling/export/ModelingDocumentExportWizard.java?rev=953000&r1=952999&r2=953000&view=diff
==============================================================================
--- commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.modeling.diagram/src/org/apache/commons/scxml/modeling/export/ModelingDocumentExportWizard.java (original)
+++ commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.modeling.diagram/src/org/apache/commons/scxml/modeling/export/ModelingDocumentExportWizard.java Wed Jun  9 13:41:14 2010
@@ -19,7 +19,7 @@ package org.apache.commons.scxml.modelin
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.ArrayList;
+import java.lang.reflect.InvocationTargetException;
 import java.util.LinkedList;
 import java.util.List;
 
@@ -29,23 +29,19 @@ import org.apache.commons.scxml.modeling
 import org.apache.commons.scxml.modeling.diagram.part.ModelingDiagramEditorPlugin;
 import org.apache.commons.scxml.modeling.diagram.part.ModelingDiagramEditorUtil;
 import org.apache.commons.scxml.modeling.diagram.part.ModelingVisualIDRegistry;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.operations.OperationHistoryFactory;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.transaction.TransactionalEditingDomain;
-import org.eclipse.gmf.runtime.common.core.command.CommandResult;
 import org.eclipse.gmf.runtime.diagram.core.services.ViewService;
 import org.eclipse.gmf.runtime.diagram.core.services.view.CreateDiagramViewOperation;
-import org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand;
 import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+import org.eclipse.jface.operation.IRunnableWithProgress;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jface.wizard.Wizard;
 import org.eclipse.osgi.util.NLS;
@@ -53,6 +49,7 @@ import org.eclipse.ui.dialogs.WizardNewF
 
 /**
  * Scxml document export wizard
+ * 
  * @author Gui Xun Long (guixl@apache.org)
  */
 public class ModelingDocumentExportWizard extends Wizard {
@@ -71,18 +68,18 @@ public class ModelingDocumentExportWizar
 	 * @generated
 	 */
 	private TransactionalEditingDomain myEditingDomain;
-	
+
 	/**
-	 * model file 
+	 * model file
 	 */
 	private IFile modelFile;
 
 	/**
 	 * @generated
 	 */
-	public ModelingDocumentExportWizard(IFile file,URI domainModelURI,
+	public ModelingDocumentExportWizard(IFile file, URI domainModelURI,
 			EObject diagramRoot, TransactionalEditingDomain editingDomain) {
-		modelFile=file;
+		modelFile = file;
 		assert domainModelURI != null : "Domain model uri must be specified"; //$NON-NLS-1$
 		assert diagramRoot != null : "Doagram root element must be specified"; //$NON-NLS-1$
 		assert editingDomain != null : "Editing domain must be specified"; //$NON-NLS-1$
@@ -119,23 +116,23 @@ public class ModelingDocumentExportWizar
 		diagramRootElementSelectionPage.setModelElement(diagramRoot);
 
 		myEditingDomain = editingDomain;
-		
+
 	}
-	
+
 	/**
 	 * 
 	 * @param is
 	 * @return change InputStream to String object
 	 * @throws IOException
 	 */
-	public static String inputStream2String(InputStream is) throws IOException {  
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();  
-         int i = -1;  
-         while ((i = is.read()) != -1) {  
-             baos.write(i);  
-         }  
-         return baos.toString();  
-     }
+	public static String inputStream2String(InputStream is) throws IOException {
+		ByteArrayOutputStream baos = new ByteArrayOutputStream();
+		int i = -1;
+		while ((i = is.read()) != -1) {
+			baos.write(i);
+		}
+		return baos.toString();
+	}
 
 	/**
 	 * @generated
@@ -148,51 +145,106 @@ public class ModelingDocumentExportWizar
 	/**
 	 * @generated
 	 */
-	public boolean performFinish() {		
-		List affectedFiles = new LinkedList();
-		final IFile xmlFile = myFileCreationPage.createNewFile();
-		affectedFiles.add(xmlFile);
-		AbstractTransactionalCommand command = new AbstractTransactionalCommand(
-				myEditingDomain,
-				"Export scxml command",
-				affectedFiles) {
-
-			protected CommandResult doExecuteWithResult(
-					IProgressMonitor monitor, IAdaptable info)
-					throws ExecutionException {
-				int diagramVID = ModelingVisualIDRegistry
-						.getDiagramVisualID(diagramRootElementSelectionPage
-								.getModelElement());
-				if (diagramVID != ServiceTemplateEditPart.VISUAL_ID) {
-					return CommandResult
-							.newErrorCommandResult(Messages.ModelingNewScxmlFileWizard_IncorrectRootError);
-				}
-				try {
-					//get target list by regular expression
-					ScxmlExportStreamHandlerAction shc=new ScxmlExportStreamHandlerAction(modelFile.getContents());
-					shc.getTargetList();
-					shc.transferToXpath();
-					shc.getIdMap(modelFile.getContents());
-					shc.updateTargetId();
-					System.out.println(shc.getStreamContnet());
-					String content=shc.ExecuteXSL(shc.getStreamContnet(),this.getClass().getClassLoader().getResourceAsStream("xslt/export.xsl"));
-					xmlFile.setContents(shc.string2InputStream(content), 1, null);
-				}  catch (CoreException e) {
-					e.printStackTrace();
-				}
-				return CommandResult.newOKCommandResult();
-			}
-		};
-
+	public boolean performFinish() {
 		try {
-			OperationHistoryFactory.getOperationHistory().execute(command,new NullProgressMonitor(), null);
-		} catch (ExecutionException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
+			List affectedFiles = new LinkedList();
+			final IFile xmlFile = myFileCreationPage.createNewFile();
+			affectedFiles.add(xmlFile);
+			new ProgressMonitorDialog(null).run(true, false,
+					new ScxmlExportOperation(false,xmlFile));
+		} catch (InvocationTargetException e1) {
+			e1.printStackTrace();
+		} catch (InterruptedException e1) {
+			e1.printStackTrace();
 		}
+
 		return true;
 	}
 
+	class ScxmlExportOperation implements IRunnableWithProgress {
+
+		private boolean indeterminate;
+		private IFile xmlFile;
+
+		/**
+		 * LongRunningOperation constructor
+		 * 
+		 * @param indeterminate
+		 *            whether the animation is unknown
+		 */
+		public ScxmlExportOperation(boolean indeterminate,IFile file) {
+			this.indeterminate = indeterminate;
+			xmlFile=file;
+		}
+		
+		public IFile getXmlFile() {
+			return xmlFile;
+		}
+
+		public void setXmlFile(IFile xmlFile) {
+			this.xmlFile = xmlFile;
+		}
+
+		/**
+		 * Runs the long running operation
+		 * 
+		 * @param monitor
+		 *            the progress monitor
+		 */
+		public void run(IProgressMonitor monitor)
+				throws InvocationTargetException, InterruptedException {
+
+			int diagramVID = ModelingVisualIDRegistry
+					.getDiagramVisualID(diagramRootElementSelectionPage
+							.getModelElement());
+			monitor.beginTask("SCXML document export progress",7);
+			
+			try {
+				
+				
+				// get target list by regular expression
+				ScxmlExportStreamHandlerAction shc = new ScxmlExportStreamHandlerAction(
+						modelFile.getContents());
+				shc.getTargetList();
+				monitor.worked(1);
+				shc.transferToXpath();
+				monitor.worked(1);
+				shc.getIdMap(modelFile.getContents());
+				monitor.worked(1);
+				shc.updateTargetId();
+				monitor.worked(1);
+				System.out.println(shc.getStreamContnet());
+				String content = shc.ExecuteXSL(shc.getStreamContnet(), this
+						.getClass().getClassLoader().getResourceAsStream(
+								"xslt/export.xsl"));
+				monitor.worked(1);
+				xmlFile.setContents(shc.string2InputStream(content), 1, null);
+				monitor.worked(1);
+				if (monitor.isCanceled()) throw new InterruptedException(
+				"The SCXML document export operation was cancelled");
+				
+				monitor.done();
+			} catch (CoreException e) {
+				e.printStackTrace();
+			}
+
+			/*// ¿ªÊ¼´¦Àí½ø¶È£¬Èç¹ûindeterminateΪfalse,Õû¸ö½ø¶ÈΪTOTAL_TIME = 10000
+			// ·ñÔò£¬½ø¶ÈÌõΪ×Ô¶¯Ôö¼ÓµÄ
+			for (int total = 0; total < TOTAL_TIME && !monitor.isCanceled(); total += INCREMENT) {
+				Thread.sleep(INCREMENT);
+				monitor.worked(INCREMENT);
+				// µ½´ïÒ»°ëµÄʱ¼äÏÔʾÏàÓ¦µÄÐÅÏ¢
+				if (total == TOTAL_TIME / 2)
+					monitor.subTask("Doing second half");
+			}
+			// Íê³ÉÈÎÎñ
+			monitor.done();
+			if (monitor.isCanceled())
+				throw new InterruptedException(
+						"The long running operation was cancelled");*/
+		}
+	}
+
 	/**
 	 * @generated
 	 */