import org.eclipse.wb.swt.ResourceManager;
import eu.etaxonomy.cdm.model.taxon.Classification;
+import eu.etaxonomy.taxeditor.store.CdmStore;
import eu.etaxonomy.taxeditor.ui.dialog.selection.SelectionDialogFactory;
/**
btnClear.setImage(ResourceManager.getPluginImage("eu.etaxonomy.taxeditor.store", "icons/trash.gif"));
btnClear.addListener(SWT.Selection, this);
- //report
- Label labelReportFile = new Label(composite, SWT.NONE);
- labelReportFile.setText("Report File");
+ if(!CdmStore.getCurrentSessionManager().isRemoting()) {
+ //report
+ Label labelReportFile = new Label(composite, SWT.NONE);
+ labelReportFile.setText("Report File");
- fileDialogReport = new FileDialog(parent.getShell());
+ fileDialogReport = new FileDialog(parent.getShell());
- fileDialogReport.setFilterExtensions(new String[]{"*.*"});
+ fileDialogReport.setFilterExtensions(new String[]{"*.*"});
- textFileReport = new Text(composite, SWT.BORDER);
- textFileReport.setEditable(false);
- textFileReport.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
+ textFileReport = new Text(composite, SWT.BORDER);
+ textFileReport.setEditable(false);
+ textFileReport.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
- Button buttonReport = new Button(composite, SWT.PUSH);
- buttonReport.setText("Browse...");
+ Button buttonReport = new Button(composite, SWT.PUSH);
+ buttonReport.setText("Browse...");
- buttonReport.addSelectionListener(new SelectionAdapter(){
+ buttonReport.addSelectionListener(new SelectionAdapter(){
- /* (non-Javadoc)
- * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
- */
- @Override
- public void widgetSelected(SelectionEvent e) {
- String path = fileDialogReport.open();
- if(path!=null){
- textFileReport.setText(path);
- setPageComplete(true);
- }
- }
-
- });
+ /* (non-Javadoc)
+ * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
+ */
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ String path = fileDialogReport.open();
+ if(path!=null){
+ textFileReport.setText(path);
+ setPageComplete(true);
+ }
+ }
+ });
+ }
setControl(composite);
}
}
public URI getReportUri(){
+ if(textFileReport == null) {
+ return null;
+ }
String text = textFileReport.getText();
if(text==null || text.isEmpty()){
return null;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.SubProgressMonitor;
import org.eclipse.core.runtime.jobs.ISchedulingRule;
+import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.jface.action.IStatusLineManager;
-import org.eclipse.jface.dialogs.ProgressMonitorDialog;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.jface.resource.ColorRegistry;
import org.eclipse.jface.resource.FontRegistry;
import org.eclipse.ui.handlers.IHandlerService;
import org.eclipse.ui.ide.undo.WorkspaceUndoUtil;
import org.eclipse.ui.part.EditorPart;
+import org.eclipse.ui.progress.IProgressConstants;
import org.eclipse.ui.progress.IProgressService;
import org.eclipse.ui.progress.IWorkbenchSiteProgressService;
import org.eclipse.ui.themes.ITheme;
throw new IllegalStateException("Remoting progress monitor is null");
}
- final ProgressMonitorDialog progressDialog = new ProgressMonitorDialog(getShell());
- IRunnableWithProgress runnable = new IRunnableWithProgress() {
+ Job job = new Job(label) {
+
@Override
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- // run the monitor untilthe operation is finished
- IRemotingProgressMonitor remotingMonitor = CdmStore.getProgressMonitorClientManager().pollMonitor(label, uuid, pollInterval, postOp, monitor);
+ public IStatus run(IProgressMonitor monitor) {
+ // run the monitor until the operation is finished
+ IRemotingProgressMonitor remotingMonitor;
+ try {
+ remotingMonitor = CdmStore.getProgressMonitorClientManager().pollMonitor(label, uuid, pollInterval, postOp, monitor);
+ } catch (InterruptedException ie) {
+ return new Status(Status.ERROR, TaxeditorStorePlugin.PLUGIN_ID, "Operation Interrupted", ie);
+ }
final StringBuilder reportSb = new StringBuilder();
// collect reports
for(String report : remotingMonitor.getReports()) {
@Override
public void run() {
// display reports with possibility to save
- ReportTextDialog dialog = new ReportTextDialog(progressDialog.getShell());
+ ReportTextDialog dialog = new ReportTextDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell());
dialog.setTitle(label + " Report");
dialog.setReportText(reportSb.toString());
dialog.open();
}
});
}
+ return Status.OK_STATUS;
+ }
+
+ @Override
+ protected void canceling() {
+ CdmStore.getCurrentApplicationConfiguration().getProgressMonitorService().cancel(uuid);
}
};
- progressDialog.run(true, cancelable, runnable);
+// job.addJobChangeListener(new JobChangeAdapter() {
+// @Override
+// public void done(IJobChangeEvent event) {
+// if(event.getJob().) {
+// logger.warn("in jobc change listener");
+// }
+// }
+// });
+
+ // configure the job
+ job.setProperty(IProgressConstants.KEEP_PROPERTY, true);
+ job.setUser(true);
+ // schedule job
+ job.schedule();
+
} catch (Exception e) {
MessagingUtils.errorDialog("Error executing operation",
AbstractUtility.class,
/**
- *
+ *
*/
package eu.etaxonomy.taxeditor.model;
* @version 1.0
*/
public class CdmProgressMonitorAdapter implements eu.etaxonomy.cdm.common.monitor.IProgressMonitor {
-
+
private IProgressMonitor progressMonitor;
private CdmProgressMonitorAdapter (IProgressMonitor monitor){
if(monitor == null){
monitor = new NullProgressMonitor();
}
-
+
this.progressMonitor = monitor;
}
-
+
/**
* <p>CreateMonitor</p>
*
public static CdmProgressMonitorAdapter CreateMonitor (IProgressMonitor monitor){
return new CdmProgressMonitorAdapter(monitor);
}
-
+
/**
* <p>CreateSubMonitor</p>
*
IProgressMonitor subMonitor = StoreUtil.getSubProgressMonitor(monitor, ticks);
return new CdmProgressMonitorAdapter(subMonitor);
}
-
+
/** {@inheritDoc} */
@Override
public void beginTask(String name, int totalWork) {
public void internalWorked(double arg0) {
progressMonitor.internalWorked(arg0);
}
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void waitForFeedback() {
+ // TODO Auto-generated method stub
+
+ }
}
}
@Test
- public void testMonitLongRunningMethodWithCancellation() throws InterruptedException {
- IllegalStateException ise = new IllegalStateException("Cancelled Exception");
+ public void testMonitLongRunningMethodWithInterrupt() throws InterruptedException {
+ IllegalStateException ise = new IllegalStateException("Interrupted Exception");
final UUID uuid = testService.monitLongRunningMethod(ise);
final int pollInterval = 1000;
final RemotingProgressMonitor expectedMonitor = new RemotingProgressMonitor();
}
+ @Test
+ public void testMonitLongRunningMethodWithCancellation() throws InterruptedException {
+
+ final UUID uuid = testService.monitLongRunningMethod(null);
+ final int pollInterval = 1000;
+ final RemotingProgressMonitor expectedMonitor = new RemotingProgressMonitor();
+ expectedMonitor.setResult("Cancelled");
+ expectedMonitor.setCanceled(true);
+ expectedMonitor.done();
+
+ Thread thread = new Thread() {
+ @Override
+ public void run() {
+ try {
+ IRemotingProgressMonitor remotingMonitor = CdmStore.getProgressMonitorClientManager().pollMonitor("Testing Progress Monitor",
+ uuid,
+ pollInterval,
+ null,
+ new NullProgressMonitor());
+ } catch (InterruptedException e) {
+
+ }
+ }
+
+ };
+ thread.start();
+ while(!progressMonitorService.isMonitorThreadRunning(uuid)) {}
+ progressMonitorService.cancel(uuid);
+ while(progressMonitorService.isMonitorThreadRunning(uuid)) {}
+ IRemotingProgressMonitor remotingMonitor = progressMonitorService.getRemotingMonitor(uuid);
+ new MockPostMoniteredOperationEnabled(expectedMonitor, uuid).postOperation(remotingMonitor);
+
+ }
+
class MockPostMoniteredOperationEnabled implements IPostMoniteredOperationEnabled {