/** * */ package org.nightlabs.jfire.issuetracking.ui.issue; import java.util.ArrayList; import java.util.Collection; import java.util.Set; import javax.jdo.FetchPlan; import org.eclipse.swt.graphics.Image; import org.nightlabs.base.ui.resource.SharedImages; import org.nightlabs.jdo.NLJDOHelper; import org.nightlabs.jdo.ObjectIDUtil; import org.nightlabs.jfire.issue.Issue; import org.nightlabs.jfire.issue.IssueLink; import org.nightlabs.jfire.issue.dao.IssueDAO; import org.nightlabs.jfire.issue.id.IssueID; import org.nightlabs.jfire.issuetracking.ui.IssueTrackingPlugin; import org.nightlabs.jfire.issuetracking.ui.issuelink.AbstractIssueLinkHandler; import org.nightlabs.jfire.issuetracking.ui.overview.action.EditIssueAction; import org.nightlabs.jfire.issuetracking.ui.resource.Messages; import org.nightlabs.progress.ProgressMonitor; /** * @author Chairat Kongarayawetchakun <!-- chairat [AT] nightlabs [DOT] de --> * */ public class IssueLinkHandlerIssue extends AbstractIssueLinkHandler<IssueID, Issue> { @Override public String getLinkedObjectName(IssueLink issueLink, Issue linkedObject) { return String.format( Messages.getString("org.nightlabs.jfire.issuetracking.ui.issue.IssueLinkHandlerIssue.linkedObjectName"), //$NON-NLS-1$ "(ID:" + ObjectIDUtil.longObjectIDFieldToString(linkedObject.getIssueID()) + ") " //$NON-NLS-1$ //$NON-NLS-2$ + linkedObject.getSubject().getText() ); } @Override public Image getLinkedObjectImage(IssueLink issueLink, Issue linkedObject) { return SharedImages.getSharedImageDescriptor( IssueTrackingPlugin.getDefault(), IssueLinkHandlerIssue.class, "LinkedObject").createImage(); //$NON-NLS-1$ } @Override public void openLinkedObject(IssueLink issueLink, IssueID linkedObjectID) { EditIssueAction editAction = new EditIssueAction(); Collection<IssueID> ids = new ArrayList<IssueID>(); ids.add(linkedObjectID); editAction.setSelectedIssueIDs(ids); editAction.run(); } @Override protected Collection<Issue> _getLinkedObjects( Set<IssueLink> issueLinks, Set<IssueID> linkedObjectIDs, ProgressMonitor monitor) { return IssueDAO.sharedInstance().getIssues( linkedObjectIDs, new String[] { FetchPlan.DEFAULT, Issue.FETCH_GROUP_SUBJECT }, // TODO do we need more? NLJDOHelper.MAX_FETCH_DEPTH_NO_LIMIT, monitor); } }