package org.nightlabs.jfire.issuetracking.trade.ui.action; import org.eclipse.jface.window.Window; import org.eclipse.swt.graphics.Point; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.forms.editor.IFormPage; import org.nightlabs.base.ui.util.RCPUtil; import org.nightlabs.base.ui.wizard.DynamicPathWizardDialog; import org.nightlabs.jfire.issuetracking.trade.ui.issuelink.ShowLinkedIssuePage; import org.nightlabs.jfire.issuetracking.ui.issuelink.attach.AttachIssueToObjectWizard; import org.nightlabs.jfire.trade.ArticleContainer; import org.nightlabs.jfire.trade.ui.articlecontainer.detail.ArticleContainerEditor; import org.nightlabs.jfire.trade.ui.articlecontainer.detail.action.ArticleContainerAction; public class IssueAttachAction extends ArticleContainerAction { public boolean calculateVisible() { return true; } @Override public boolean calculateEnabled() { return true; } @Override public void run() { ArticleContainer articleContainer = this.getArticleContainer(); AttachIssueToObjectWizard attachIssueToObjectWizard = new AttachIssueToObjectWizard(articleContainer); DynamicPathWizardDialog dialog = new DynamicPathWizardDialog(attachIssueToObjectWizard) { @Override protected Point getInitialSize() { return new Point(convertHorizontalDLUsToPixels(600), convertVerticalDLUsToPixels(450)); } }; dialog.open(); // Update the table in the Section inside ShowLinkedIssuePage. if (dialog.getReturnCode() == Window.OK) { // != Window.CANCEL) { IEditorPart activeEditor = RCPUtil.getActiveWorkbenchPage().getActiveEditor(); if (activeEditor instanceof ArticleContainerEditor) { ArticleContainerEditor articleContainerEditor = (ArticleContainerEditor) activeEditor; if (getArticleContainer().equals(articleContainerEditor.getArticleContainerEdit().getArticleContainer())) { IFormPage page = articleContainerEditor.setActivePage(ShowLinkedIssuePage.PAGE_ID); ((ShowLinkedIssuePage)page).setHighlightIssueEntry( attachIssueToObjectWizard.getSelectedIssue() ); // <-- Attempt to highlight the latest entry in the table. } } } } }