/** * Handles a PO that has been modified. * * @param po The modified object. * @return <code>false</code> if an error occurs during handling. Otherwise, <code>true</code>. */ private boolean handleStructureModified(IPersistentObject po) { if (po instanceof ITestSuitePO) { final ITestSuitePO testsuitePO = (ITestSuitePO) po; final INodePO workVersion = (INodePO) getEditorHelper().getEditSupport().getWorkVersion(); final List<IRefTestSuitePO> refTestSuites = NodePM.getInternalRefTestSuites(testsuitePO.getGuid(), testsuitePO.getParentProjectId()); if (!refTestSuites.isEmpty() && containsWorkVersionReuses(workVersion, testsuitePO)) { if (Plugin.getActiveEditor() != this && isDirty()) { ErrorHandlingUtil.createMessageDialog( MessageIDs.I_SAVE_AND_REOPEN_EDITOR, new Object[] {getTitle(), testsuitePO.getName()}, null); return false; } try { reOpenEditor(getEditorHelper().getEditSupport().getOriginal()); } catch (PMException e) { ErrorHandlingUtil.createMessageDialog( MessageIDs.E_REFRESH_FAILED, null, new String[] {Messages.ErrorMessageEDITOR_CLOSE}); getSite().getPage().closeEditor(this, false); } return false; } } return true; }
/** {@inheritDoc} */ public void run(IMarker marker) { INodePO node = NodePM.getNode(GeneralStorage.getInstance().getProject().getId(), m_nodeGUID); if (node != null) { while (!(NodeBP.isEditable(node) && (node instanceof ITestSuitePO || node instanceof ITestJobPO || node instanceof ISpecTestCasePO))) { node = node.getParentNode(); } AbstractOpenHandler.openEditor(node); } }