feature: Add DTE launch and kill functionality
Signed-off-by: Dominic Guss <Dominic.Guss@boeing.com>
diff --git a/org.eclipse.osee.ote.ui.test.manager/META-INF/MANIFEST.MF b/org.eclipse.osee.ote.ui.test.manager/META-INF/MANIFEST.MF
index f79c326..b5d9ce4 100644
--- a/org.eclipse.osee.ote.ui.test.manager/META-INF/MANIFEST.MF
+++ b/org.eclipse.osee.ote.ui.test.manager/META-INF/MANIFEST.MF
@@ -44,7 +44,8 @@
org.eclipse.osee.ote.runtimeManager
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Import-Package: org.apache.xml.serialize,
+Import-Package: com.boeing.ote.common.f18,
+ org.apache.xml.serialize,
org.eclipse.core.filesystem,
org.eclipse.jdt.core,
org.eclipse.nebula.widgets.xviewer.core.model,
diff --git a/org.eclipse.osee.ote.ui.test.manager/src/org/eclipse/osee/ote/ui/test/manager/pages/ScriptPage.java b/org.eclipse.osee.ote.ui.test.manager/src/org/eclipse/osee/ote/ui/test/manager/pages/ScriptPage.java
index effdc54..b7f72ae 100644
--- a/org.eclipse.osee.ote.ui.test.manager/src/org/eclipse/osee/ote/ui/test/manager/pages/ScriptPage.java
+++ b/org.eclipse.osee.ote.ui.test.manager/src/org/eclipse/osee/ote/ui/test/manager/pages/ScriptPage.java
@@ -10,10 +10,12 @@
*******************************************************************************/
package org.eclipse.osee.ote.ui.test.manager.pages;
+import java.io.IOException;
import java.rmi.RemoteException;
import java.util.Timer;
import java.util.TimerTask;
import java.util.logging.Level;
+
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.osee.framework.jdk.core.util.Lib;
@@ -49,6 +51,9 @@
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;
+import com.boeing.ote.common.f18.Kill_DTE;
+import com.boeing.ote.common.f18.Launch_DTE;
+
public abstract class ScriptPage extends TestManagerPage {
private static final String NOT_CONNECTED = "<< NOT_CONNECTED >>";
@@ -68,6 +73,8 @@
private Label hostConnectLabel;
private LoadWidget loadWidget;
protected ToolItem runButton;
+ protected ToolItem launchDTEButton;
+ protected ToolItem cleanUpDTEButton;
private SaveWidget saveWidget;
private ScriptTableViewer scriptTable;
private StatusWindowWidget statusWindow;
@@ -294,6 +301,76 @@
}
});
abortBatchButton.setEnabled(false);
+
+ // Create and configure the "Launch DTE" button
+ launchDTEButton = new ToolItem(controlsToolBar, SWT.PUSH | SWT.CENTER);
+ launchDTEButton.setImage(ImageManager.getImage(TestManagerImage.SEL_RUN_EXEC));
+ launchDTEButton.setDisabledImage(ImageManager.getImage(TestManagerImage.UNSEL_ABORT_STOP));
+ launchDTEButton.setText("Launch DTE");
+ launchDTEButton.setToolTipText("Launch DTE application");
+ launchDTEButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ try {
+ handleLaunchDTEButton();
+ launchDTEButton.setEnabled(false);
+ } catch (IOException e1) {
+ // TODO Auto-generated catch block
+ e1.printStackTrace();
+ }
+ }
+ });
+ launchDTEButton.addListener(SWT.MouseUp, new Listener() {
+ @Override
+ public void handleEvent(Event e) {
+ if (e.button == 3) {
+ try {
+ handleLaunchDTEButton();
+ launchDTEButton.setEnabled(false);
+ } catch (IOException e1) {
+ // TODO Auto-generated catch block
+ e1.printStackTrace();
+ }
+ }
+ }
+ });
+ launchDTEButton.setEnabled(true);
+
+ // Create and configure the "Clean Up DTE" button
+ cleanUpDTEButton = new ToolItem(controlsToolBar, SWT.PUSH | SWT.CENTER);
+ cleanUpDTEButton.setImage(ImageManager.getImage(TestManagerImage.SEL_BATCH_ABORT_STOP));
+ cleanUpDTEButton.setDisabledImage(ImageManager.getImage(TestManagerImage.UNSEL_ABORT_STOP));
+ cleanUpDTEButton.setText("Clean UP\n DTE");
+ cleanUpDTEButton.setToolTipText("Clean up and close DTE");
+ cleanUpDTEButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ try {
+ handleCleanUpDTEButton();
+ cleanUpDTEButton.setEnabled(false);
+ launchDTEButton.setEnabled(true);
+ } catch (IOException e1) {
+ // TODO Auto-generated catch block
+ e1.printStackTrace();
+ }
+ }
+ });
+ cleanUpDTEButton.addListener(SWT.MouseUp, new Listener() {
+ @Override
+ public void handleEvent(Event e) {
+ if (e.button == 3) {
+ try {
+ handleCleanUpDTEButton();
+ cleanUpDTEButton.setEnabled(false);
+ launchDTEButton.setEnabled(true);
+ } catch (IOException e1) {
+ // TODO Auto-generated catch block
+ e1.printStackTrace();
+ }
+ }
+ }
+ });
+ cleanUpDTEButton.setEnabled(true);
controlsToolBar.pack();
@@ -378,7 +455,19 @@
MessageDialog.openError(Displays.getActiveShell(), "Error", runJob.getErrorMessage());
}
}
-
+
+ private void handleLaunchDTEButton() throws IOException {
+ Launch_DTE dte = new Launch_DTE();
+ Thread t = new Thread(dte);
+ t.start();
+ }
+
+ private void handleCleanUpDTEButton() throws IOException {
+ Kill_DTE dte = new Kill_DTE();
+ Thread t = new Thread(dte);
+ t.start();
+ }
+
private class EnabledAbortsTimer extends TimerTask {
@Override
diff --git a/org.eclipse.ote.test.manager/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.ote.test.manager/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/org.eclipse.ote.test.manager/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.ote.test.manager/src/org/eclipse/ote/test/manager/navigate/AutomatedTestManagerAction.java b/org.eclipse.ote.test.manager/src/org/eclipse/ote/test/manager/navigate/AutomatedTestManagerAction.java
new file mode 100644
index 0000000..332fec4
--- /dev/null
+++ b/org.eclipse.ote.test.manager/src/org/eclipse/ote/test/manager/navigate/AutomatedTestManagerAction.java
@@ -0,0 +1,158 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.ote.test.manager.navigate;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.PipedInputStream;
+import java.io.PipedOutputStream;
+import java.io.PrintStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.logging.Level;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.osee.framework.core.data.OseeData;
+import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.ui.swt.Displays;
+import org.eclipse.osee.framework.ui.ws.AWorkspace;
+import org.eclipse.osee.ote.ui.test.manager.core.TestManagerEditorInput;
+import org.eclipse.ote.test.manager.OteTestManagerFactory;
+import org.eclipse.ote.test.manager.internal.OteTestManagerPlugin;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.dialogs.ElementListSelectionDialog;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class AutomatedTestManagerAction extends Action {
+
+ private IFile inputFile;
+
+ public AutomatedTestManagerAction() {
+ super("Open DTE Automated Test Manager");
+ }
+
+ @Override
+ public void run() {
+
+ inputFile = null;
+
+ // ElementListSelection
+ Displays.pendInDisplayThread(new Runnable() {
+ @Override
+ public void run() {
+ ElementListSelectionDialog dlg =
+ new ElementListSelectionDialog(Displays.getActiveShell(), new ILabelProvider() {
+ @Override
+ public Image getImage(Object element) {
+ return null;
+ }
+
+ @Override
+ public String getText(Object element) {
+ if (element instanceof IFile) {
+ return ((IFile) element).getFullPath().toString();
+ } else {
+ return element.toString();
+ }
+ }
+
+ @Override
+ public void addListener(ILabelProviderListener listener) {
+ // INTENTIONALLY EMPTY BLOCK
+ }
+
+ @Override
+ public void dispose() {
+ // INTENTIONALLY EMPTY BLOCK
+ }
+
+ @Override
+ public boolean isLabelProperty(Object element, String property) {
+ return false;
+ }
+
+ @Override
+ public void removeListener(ILabelProviderListener listener) {
+ // INTENTIONALLY EMPTY BLOCK
+ }
+ });
+ try {
+ List<Object> files = new ArrayList<>();
+ files.addAll(AWorkspace.findWorkspaceFileMatch(".*\\.ote"));
+ if (files.isEmpty()) {
+ files.add(new String("Create a new configuration file (none found in workspace)"));
+ }
+ dlg.setMultipleSelection(false);
+ dlg.setElements(files.toArray());
+ dlg.setInitialSelections(new Object[] {files.get(0)});
+ dlg.setTitle("Test Manager Configuration Files");
+ dlg.setMessage("Select a test manager configuration file to open.");
+ dlg.open();
+ Object[] results = dlg.getResult();
+ if (results != null) {
+ System.out.println();
+
+ if (results.length > 0) {
+ if (results[0] instanceof IFile) {
+ inputFile = (IFile) results[0];
+ } else if (results[0] instanceof String) {
+ PipedOutputStream pos = new PipedOutputStream();
+ PrintStream ps = new PrintStream(pos);
+ InputStream in = new PipedInputStream(pos);
+ ps.println(getDefaultTMData());
+ ps.close();
+ try {
+ inputFile = OseeData.getIFile(
+ OteTestManagerFactory.TEST_MANAGER_FILENAME + "." + OteTestManagerFactory.TEST_MANAGER_EXTENSION,
+ in);
+ } catch (OseeCoreException ex) {
+ OseeLog.log(OteTestManagerPlugin.class, Level.SEVERE, ex);
+ }
+
+ }
+ }
+
+ }
+ } catch (IOException ex) {
+ OseeLog.log(OteTestManagerPlugin.class, Level.SEVERE, ex);
+ }
+ }
+ });
+
+ if (inputFile != null) {
+
+ IEditorInput editorInput = new TestManagerEditorInput(inputFile);
+ IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+ try {
+ page.openEditor(editorInput, OteTestManagerFactory.EDITOR_ID);
+ } catch (PartInitException ex) {
+ OseeLog.log(OteTestManagerPlugin.class, Level.SEVERE, ex);
+ }
+ }
+ }
+
+ protected String getDefaultTMData() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("<automatedTestManager>\n");
+ sb.append("</automatedTestManager>\n");
+ return sb.toString();
+ }
+}
diff --git a/org.eclipse.ote.test.manager/src/org/eclipse/ote/test/manager/navigate/TestManagerAction.java b/org.eclipse.ote.test.manager/src/org/eclipse/ote/test/manager/navigate/TestManagerAction.java
index 12fcce4..daae45a 100644
--- a/org.eclipse.ote.test.manager/src/org/eclipse/ote/test/manager/navigate/TestManagerAction.java
+++ b/org.eclipse.ote.test.manager/src/org/eclipse/ote/test/manager/navigate/TestManagerAction.java
@@ -18,8 +18,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
-import org.eclipse.ote.test.manager.OteTestManagerFactory;
-import org.eclipse.ote.test.manager.internal.OteTestManagerPlugin;
+
import org.eclipse.core.resources.IFile;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.viewers.ILabelProvider;
@@ -30,6 +29,8 @@
import org.eclipse.osee.framework.ui.swt.Displays;
import org.eclipse.osee.framework.ui.ws.AWorkspace;
import org.eclipse.osee.ote.ui.test.manager.core.TestManagerEditorInput;
+import org.eclipse.ote.test.manager.OteTestManagerFactory;
+import org.eclipse.ote.test.manager.internal.OteTestManagerPlugin;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IWorkbenchPage;
diff --git a/org.eclipse.ote.test.manager/src/org/eclipse/ote/test/manager/navigate/TestManagerNavigateViewItems.java b/org.eclipse.ote.test.manager/src/org/eclipse/ote/test/manager/navigate/TestManagerNavigateViewItems.java
index e61ef4f..0dc39b2 100644
--- a/org.eclipse.ote.test.manager/src/org/eclipse/ote/test/manager/navigate/TestManagerNavigateViewItems.java
+++ b/org.eclipse.ote.test.manager/src/org/eclipse/ote/test/manager/navigate/TestManagerNavigateViewItems.java
@@ -12,6 +12,7 @@
import java.util.ArrayList;
import java.util.List;
+
import org.eclipse.osee.framework.ui.plugin.xnavigate.IXNavigateContainer;
import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateItem;
import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateItemAction;
@@ -30,6 +31,7 @@
List<XNavigateItem> items = new ArrayList<>();
items.add(new XNavigateItemAction(null, new TestManagerAction(), TestManagerImage.TEST_MANAGER, false));
+ items.add(new XNavigateItemAction(null, new AutomatedTestManagerAction(), TestManagerImage.TEST_MANAGER, false));
return items;
}