package org.nightlabs.jfire.issuetracking.ui.issue.create; import javax.jdo.FetchPlan; import javax.jdo.JDOHelper; import org.nightlabs.base.ui.editor.Editor2PerspectiveRegistry; import org.nightlabs.base.ui.wizard.AbstractWizardDelegate; import org.nightlabs.base.ui.wizard.IPageProvider; import org.nightlabs.jdo.NLJDOHelper; import org.nightlabs.jfire.base.login.ui.Login; import org.nightlabs.jfire.idgenerator.IDGenerator; import org.nightlabs.jfire.issue.Issue; import org.nightlabs.jfire.issue.IssueLocal; import org.nightlabs.jfire.issue.dao.IssueDAO; import org.nightlabs.jfire.issue.id.IssueID; import org.nightlabs.jfire.issuetracking.ui.issue.editor.IssueEditor; import org.nightlabs.jfire.issuetracking.ui.issue.editor.IssueEditorInput; import org.nightlabs.jfire.jbpm.graph.def.Statable; import org.nightlabs.jfire.jbpm.graph.def.StatableLocal; import org.nightlabs.jfire.jbpm.graph.def.State; import org.nightlabs.jfire.security.User; import org.nightlabs.progress.NullProgressMonitor; /** * @author Daniel Mazurek * */ public class CreateIssueWizardDelegate extends AbstractWizardDelegate { private static String[] FETCH_GROUP = new String[]{ FetchPlan.DEFAULT, Issue.FETCH_GROUP_STATE, Issue.FETCH_GROUP_STATES, Issue.FETCH_GROUP_ISSUE_LOCAL, Issue.FETCH_GROUP_ISSUE_TYPE, IssueLocal.FETCH_GROUP_STATE, IssueLocal.FETCH_GROUP_STATES, Statable.FETCH_GROUP_STATE, Issue.FETCH_GROUP_ISSUE_LINKS, StatableLocal.FETCH_GROUP_STATE, State.FETCH_GROUP_STATE_DEFINITION, }; protected Issue newIssue; public CreateIssueWizardDelegate() { newIssue = new Issue(IDGenerator.getOrganisationID(), IDGenerator.nextID(Issue.class)); newIssue.setReporter(Login.sharedInstance().getUser(new String[]{User.FETCH_GROUP_NAME}, NLJDOHelper.MAX_FETCH_DEPTH_NO_LIMIT, new NullProgressMonitor())); } @Override protected IPageProvider createPageProvider() { return new CreateIssueWizardPageProvider(newIssue); } /* (non-Javadoc) * @see org.nightlabs.eclipse.ui.wizard.IWizardActionHandler#performFinish(org.eclipse.core.runtime.IProgressMonitor) */ @Override public boolean performFinish() { Issue issue = IssueDAO.sharedInstance().storeIssue(newIssue, true, FETCH_GROUP, NLJDOHelper.MAX_FETCH_DEPTH_NO_LIMIT, new NullProgressMonitor()); IssueEditorInput editorInput = new IssueEditorInput((IssueID)JDOHelper.getObjectId(issue)); try { Editor2PerspectiveRegistry.sharedInstance().openEditor(editorInput, IssueEditor.EDITOR_ID); } catch (Exception e) { throw new RuntimeException(e); } return true; } // @Override // public void prepare(IProgressMonitor monitor) // { // newIssue = new Issue(IDGenerator.getOrganisationID(), IDGenerator.nextID(Issue.class)); // newIssue.setReporter(Login.sharedInstance().getUser(new String[]{User.FETCH_GROUP_NAME}, NLJDOHelper.MAX_FETCH_DEPTH_NO_LIMIT, monitor)); // } }