diff options
Diffstat (limited to 'MS_0.1.4_20080103/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/TaskEditor.java')
-rw-r--r-- | MS_0.1.4_20080103/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/TaskEditor.java | 114 |
1 files changed, 106 insertions, 8 deletions
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/TaskEditor.java b/MS_0.1.4_20080103/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/TaskEditor.java index 4f8cf438b16..ae080f090f8 100644 --- a/MS_0.1.4_20080103/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/TaskEditor.java +++ b/MS_0.1.4_20080103/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/TaskEditor.java @@ -11,19 +11,28 @@ package org.eclipse.osee.ats.editor; import java.sql.SQLException; +import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.List; import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; +import org.eclipse.core.runtime.jobs.Job; import org.eclipse.osee.ats.AtsPlugin; import org.eclipse.osee.ats.artifact.TaskArtifact; +import org.eclipse.osee.ats.util.DefaultTeamState; import org.eclipse.osee.ats.util.widgets.dialog.TaskResOptionDefinition; import org.eclipse.osee.ats.util.widgets.task.IXTaskViewer; +import org.eclipse.osee.ats.world.search.WorldSearchItem; +import org.eclipse.osee.ats.world.search.WorldSearchItem.SearchType; +import org.eclipse.osee.framework.skynet.core.artifact.Artifact; import org.eclipse.osee.framework.skynet.core.event.SkynetEventManager; import org.eclipse.osee.framework.ui.plugin.event.Event; import org.eclipse.osee.framework.ui.plugin.event.IEventReceiver; import org.eclipse.osee.framework.ui.plugin.util.AWorkbench; import org.eclipse.osee.framework.ui.plugin.util.Displays; +import org.eclipse.osee.framework.ui.plugin.util.db.ConnectionHandler; import org.eclipse.osee.framework.ui.skynet.SkynetContributionItem; import org.eclipse.osee.framework.ui.skynet.artifact.editor.AbstractArtifactEditor; import org.eclipse.osee.framework.ui.skynet.util.OSEELog; @@ -54,13 +63,21 @@ public class TaskEditor extends AbstractArtifactEditor implements IDirtiableEdit onDirtied(); } - public static void editArtifacts(TaskEditorInput input) { - IWorkbenchPage page = AWorkbench.getActivePage(); - try { - page.openEditor(input, EDITOR_ID); - } catch (PartInitException ex) { - OSEELog.logException(AtsPlugin.class, ex, true); - } + public static void editArtifacts(final TaskEditorInput input) { + Displays.ensureInDisplayThread(new Runnable() { + /* (non-Javadoc) + * @see java.lang.Runnable#run() + */ + public void run() { + IWorkbenchPage page = AWorkbench.getActivePage(); + try { + page.openEditor(input, EDITOR_ID); + } catch (PartInitException ex) { + OSEELog.logException(AtsPlugin.class, ex, true); + } + } + }); + } public boolean isSaveOnCloseNeeded() { @@ -170,7 +187,8 @@ public class TaskEditor extends AbstractArtifactEditor implements IDirtiableEdit * @see org.eclipse.osee.ats.util.widgets.task.IXTaskViewer#getOptions() */ public List<TaskResOptionDefinition> getResOptions() { - return ((TaskEditorInput) (IEditorInput) getEditorInput()).getResOptions(); + if (((TaskEditorInput) (IEditorInput) getEditorInput()).getResOptions() != null) return ((TaskEditorInput) (IEditorInput) getEditorInput()).getResOptions(); + return new ArrayList<TaskResOptionDefinition>(); } /* @@ -225,4 +243,84 @@ public class TaskEditor extends AbstractArtifactEditor implements IDirtiableEdit return true; } + public static void loadTable(WorldSearchItem searchItem, boolean sort) { + searchItem.setCancelled(false); + if (!ConnectionHandler.isConnected()) { + AWorkbench.popup("ERROR", "DB Connection Unavailable"); + return; + } + + if (searchItem == null) return; + + searchItem.performUI(SearchType.Search); + if (searchItem.isCancelled()) return; + + LoadTableJob job = null; + try { + job = new LoadTableJob(searchItem, SearchType.Search, sort); + job.setUser(false); + job.setPriority(Job.LONG); + job.schedule(); + } catch (Exception ex) { + OSEELog.logException(AtsPlugin.class, "Load Table Failed", ex, true); + } + } + + private static class LoadTableJob extends Job { + + @SuppressWarnings("unused") + private final boolean sort; + private final WorldSearchItem searchItem; + private boolean cancel = false; + private final SearchType searchType; + + public LoadTableJob(WorldSearchItem searchItem, SearchType searchType, boolean sort) { + super("Loading \"" + searchItem.getSelectedName(searchType) + "\"..."); + this.searchItem = searchItem; + this.searchType = searchType; + this.sort = sort; + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor) + */ + @Override + protected IStatus run(IProgressMonitor monitor) { + cancel = false; + searchItem.setCancelled(cancel); + final Collection<Artifact> artifacts; + try { + artifacts = searchItem.performSearchGetResults(false, searchType); + if (artifacts.size() == 0) { + if (searchItem.isCancelled()) { + monitor.done(); + return Status.CANCEL_STATUS; + } else { + monitor.done(); + return new Status(Status.ERROR, AtsPlugin.PLUGIN_ID, -1, "No Tasks Found", null); + } + } + List<TaskArtifact> taskArts = new ArrayList<TaskArtifact>(); + for (Artifact artifact : artifacts) + if (artifact instanceof TaskArtifact) taskArts.add((TaskArtifact) artifact); + TaskEditorInput input = + new TaskEditorInput( + "Tasks for \"" + (searchItem.getSelectedName(searchType) != null ? searchItem.getSelectedName(searchType) : "") + "\"", + taskArts, + taskArts.iterator().next().getParentTeamWorkflow().getSmaMgr().getWorkPage( + DefaultTeamState.Implement.name()).getTaskResDef() != null ? taskArts.iterator().next().getParentTeamWorkflow().getSmaMgr().getWorkPage( + DefaultTeamState.Implement.name()).getTaskResDef().getOptions() : null); + TaskEditor.editArtifacts(input); + + } catch (final Exception ex) { + monitor.done(); + return new Status(Status.ERROR, AtsPlugin.PLUGIN_ID, -1, "Can't load tasks", ex); + } + monitor.done(); + return Status.OK_STATUS; + } + } + } |