package org.nightlabs.jfire.personrelation.issuetracking.trade.ui.action;
import javax.jdo.JDOHelper;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.ui.IViewActionDelegate;
import org.eclipse.ui.IViewPart;
import org.nightlabs.jdo.ObjectID;
import org.nightlabs.jfire.issue.IssueComment;
import org.nightlabs.jfire.issue.IssueLink;
import org.nightlabs.jfire.issue.id.IssueDescriptionID;
import org.nightlabs.jfire.issue.id.IssueID;
import org.nightlabs.jfire.personrelation.issuetracking.trade.ui.CreateIssueCommentDialog;
import org.nightlabs.jfire.personrelation.ui.tree.PersonRelationTreeNode;
public class CreateIssueCommentAction implements IViewActionDelegate
{
private IViewPart view;
@Override
public void init(IViewPart view) {
this.view = view;
}
@Override
public void run(IAction action) {
if (selectedIssueID == null)
return;
new CreateIssueCommentDialog(view.getSite().getShell(), selectedIssueID).open();
}
private IssueID selectedIssueID;
@Override
public void selectionChanged(IAction action, ISelection selection) {
selectedIssueID = null;
PersonRelationTreeNode node = PersonRelationTreeNode.getPersonRelationTreeNodeFromSelection(selection);
if (node == null) {
action.setEnabled(false);
return;
}
Object jdoObject = node.getJdoObject();
ObjectID objectID = node.getJdoObjectID();
if (jdoObject instanceof IssueLink) {
IssueLink issueLink = (IssueLink) jdoObject;
selectedIssueID = (IssueID) JDOHelper.getObjectId(issueLink.getIssue());
}
else if (objectID instanceof IssueDescriptionID) {
IssueDescriptionID issueDescriptionID = (IssueDescriptionID)objectID;
selectedIssueID = IssueID.create(issueDescriptionID.organisationID, issueDescriptionID.issueID);
}
else if (jdoObject instanceof IssueComment) {
IssueComment issueComment = (IssueComment) jdoObject;
selectedIssueID = issueComment.getIssueID();
}
action.setEnabled(selectedIssueID != null);
}
}