/** {@inheritDoc} */ public void doSave(IProgressMonitor monitor) { monitor.beginTask(Messages.EditorsSaveEditors, IProgressMonitor.UNKNOWN); try { EditSupport editSupport = getEditorHelper().getEditSupport(); final IPersistentObject perObj = editSupport.getWorkVersion(); TimestampBP.refreshTimestamp((ITimestampPO) perObj); editSupport.saveWorkVersion(); getEditorHelper().resetEditableState(); getEditorHelper().setDirty(false); } catch (IncompatibleTypeException pmce) { handlePMCompNameException(pmce); } catch (PMException e) { PMExceptionHandler.handlePMExceptionForMasterSession(e); try { reOpenEditor(((NodeEditorInput) getEditorInput()).getNode()); } catch (PMException e1) { PMExceptionHandler.handlePMExceptionForEditor(e, this); } } catch (ProjectDeletedException e) { PMExceptionHandler.handleProjectDeletedException(); } finally { monitor.done(); } }
/** * Creates a new project, stops a started AUT, closes all opened editors. * * @param newProjectName the name for this project * @param monitor The progress monitor for this potentially long-running operation. * @throws InterruptedException if the operation is canceled. */ private void createNewProject(final String newProjectName, IProgressMonitor monitor) throws InterruptedException { Plugin.closeAllOpenedJubulaEditors(false); m_newProject.setIsReusable(m_projectSettingWizardPage.isProjectReusable()); m_newProject.setIsProtected(m_projectSettingWizardPage.isProjectProtected()); if (m_autMain.getName() == null || StringConstants.EMPTY.equals(m_autMain.getName())) { m_newProject.removeAUTMain(m_autMain); } if (m_autConfig.getName() == null || StringConstants.EMPTY.equals(m_autConfig.getName())) { m_autMain.removeAutConfig(m_autConfig); } ParamNameBPDecorator paramNameMapper = new ParamNameBPDecorator(ParamNameBP.getInstance()); final IWritableComponentNameMapper compNamesMapper = new ProjectComponentNameMapper(new ComponentNamesDecorator(null), m_newProject); List<INameMapper> mapperList = new ArrayList<INameMapper>(); List<IWritableComponentNameMapper> compNameCacheList = new ArrayList<IWritableComponentNameMapper>(); addUnboundModules(m_newProject); mapperList.add(paramNameMapper); compNameCacheList.add(compNamesMapper); try { GeneralStorage.getInstance().reset(); ProjectPM.attachProjectToROSession( m_newProject, newProjectName, mapperList, compNameCacheList, monitor); } catch (PMSaveException e) { PMExceptionHandler.handlePMExceptionForMasterSession( new PMSaveException(e.getMessage(), MessageIDs.E_CREATE_NEW_PROJECT_FAILED)); } catch (PMException e) { PMExceptionHandler.handlePMExceptionForMasterSession(e); } catch (ProjectDeletedException e) { PMExceptionHandler.handleProjectDeletedException(); } catch (InterruptedException ie) { throw ie; } }
/** * Deletes all selected items unless an error occurs. * * @param selection The selected items to delete. */ private void deleteSelection(IStructuredSelection selection) { // cleanup set for entries, that are children of other contained nodes Set<INodePO> set = new HashSet<INodePO>(selection.toList()); Set<INodePO> topNodesToDelete = new HashSet<INodePO>(); for (INodePO node : set) { if (!containsParent(set, node)) { topNodesToDelete.add(node); } } // determine all nodes, which have to be deleted // (children of selected nodes which are CategoryPO or SpecTestCasePO List<INodePO> nodesToDelete = new ArrayList<INodePO>(); for (INodePO node : topNodesToDelete) { MultipleNodePM.collectAffectedNodes(nodesToDelete, node); } // reverse List, to get the right order of deletion (child first) Collections.reverse(nodesToDelete); List<AbstractCmdHandle> cmds = getDeleteCommands(nodesToDelete); if (!cmds.isEmpty()) { try { MultipleNodePM.getInstance().executeCommands(cmds); List<DataChangedEvent> eventList = new ArrayList<DataChangedEvent>(); for (INodePO node : topNodesToDelete) { eventList.add(new DataChangedEvent(node, DataState.Deleted, UpdateState.all)); } DataEventDispatcher.getInstance() .fireDataChangedListener(eventList.toArray(new DataChangedEvent[0])); } catch (PMException e) { PMExceptionHandler.handlePMExceptionForMasterSession(e); } catch (ProjectDeletedException e) { PMExceptionHandler.handleProjectDeletedException(); } } }