/** * {@inheritDoc} * * @see org.eclipse.jface.wizard.Wizard#canFinish() */ @Override public boolean canFinish() { if (existingSession != null && representationWizardPage.get() != null) { if (selectElementPage.getSelectedElement() != null) { return true; } } return super.canFinish(); }
/** * {@inheritDoc} * * @see org.eclipse.jface.wizard.Wizard#performFinish() */ @Override public boolean performFinish() { EObject element = selectElementPage.getSelectedElement(); if (element != null && representationWizardPage.get() != null) { try { final String representationName = selectElementPage.get(); IRunnableWithProgress representationCreationRunnable = new IRunnableWithProgress() { public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { try { monitor.beginTask( org.eclipse.sirius.viewpoint.provider.Messages .CreateRepresentationAction_creationTask, 5); CreateRepresentationCommand createRepresentationCommand = new CreateRepresentationCommand( existingSession, representationWizardPage.get(), selectElementPage.getSelectedElement(), representationName, new SubProgressMonitor(monitor, 4)); IEditingSession editingSession = SessionUIManager.INSTANCE.getUISession(existingSession); editingSession.notify( EditingSessionEvent.REPRESENTATION_ABOUT_TO_BE_CREATED_BEFORE_OPENING); existingSession .getTransactionalEditingDomain() .getCommandStack() .execute(createRepresentationCommand); editingSession.notify(EditingSessionEvent.REPRESENTATION_CREATED_BEFORE_OPENING); createdDRepresentation = createRepresentationCommand.getCreatedRepresentation(); monitor.worked(1); } finally { monitor.done(); } } }; getContainer().run(true, false, representationCreationRunnable); IRunnableWithProgress runnable = new IRunnableWithProgress() { public void run(final IProgressMonitor monitor) { try { monitor.beginTask( org.eclipse.sirius.viewpoint.provider.Messages .CreateRepresentationAction_openingTask, 1); DialectUIManager.INSTANCE.openEditor( existingSession, createdDRepresentation, new SubProgressMonitor(monitor, 1)); } finally { monitor.done(); } } }; Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); IRunnableContext context = new ProgressMonitorDialog(shell); PlatformUI.getWorkbench().getProgressService().runInUI(context, runnable, null); } catch (final InvocationTargetException e) { SiriusEditPlugin.getPlugin() .getLog() .log(new Status(IStatus.ERROR, SiriusEditPlugin.ID, e.getLocalizedMessage(), e)); } catch (final InterruptedException e) { SiriusEditPlugin.getPlugin() .getLog() .log(new Status(IStatus.ERROR, SiriusEditPlugin.ID, e.getLocalizedMessage(), e)); } } return true; }