/** * */ package org.nightlabs.jfire.issuetracking.ui.overview.action; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Iterator; import javax.jdo.JDOHelper; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.ui.IWorkbenchPart; import org.nightlabs.base.ui.action.WorkbenchPartSelectionAction; import org.nightlabs.jfire.issue.id.IssueID; /** * @author Alexander Bieber <!-- alex [AT] nightlabs [DOT] de --> * */ public abstract class AbstractIssueAction extends WorkbenchPartSelectionAction { private Collection<IssueID> selectedIssueIDs = Collections.emptyList(); /** * */ public AbstractIssueAction() { } /** * @param activePart */ public AbstractIssueAction(IWorkbenchPart activePart) { super(activePart); } /** * @param text */ public AbstractIssueAction(String text) { super(text); } /** * @param text * @param image */ public AbstractIssueAction(String text, ImageDescriptor image) { super(text, image); } /** * @param text * @param style */ public AbstractIssueAction(String text, int style) { super(text, style); } @Override public void setSelection(ISelection selection) { super.setSelection(selection); if (!getSelection().isEmpty() && getSelection() instanceof StructuredSelection) { StructuredSelection sel = (StructuredSelection) getSelection(); selectedIssueIDs = new ArrayList<IssueID>(); for (Iterator it = sel.iterator(); it.hasNext(); ) { Object objectID = JDOHelper.getObjectId(it.next()); if (objectID instanceof IssueID) { selectedIssueIDs.add((IssueID) objectID); } } } else if (getSelection().isEmpty()) { selectedIssueIDs = Collections.emptyList(); } } public Collection<IssueID> getSelectedIssueIDs() { return selectedIssueIDs; } public void setSelectedIssueIDs(Collection<IssueID> issueIDs) { this.selectedIssueIDs = issueIDs; } /* (non-Javadoc) * @see org.nightlabs.base.ui.action.IUpdateActionOrContributionItem#calculateEnabled() */ public boolean calculateEnabled() { return getSelectedIssueIDs().size() > 0; } /* (non-Javadoc) * @see org.nightlabs.base.ui.action.IUpdateActionOrContributionItem#calculateVisible() */ public boolean calculateVisible() { return true; } }