Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
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.java114
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;
+ }
+ }
+
}

Back to the top