Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.osee.ote.ui.test.manager/src/org/eclipse/osee/ote/ui/test/manager/configuration/SaveWidget.java')
-rw-r--r--org.eclipse.osee.ote.ui.test.manager/src/org/eclipse/osee/ote/ui/test/manager/configuration/SaveWidget.java140
1 files changed, 140 insertions, 0 deletions
diff --git a/org.eclipse.osee.ote.ui.test.manager/src/org/eclipse/osee/ote/ui/test/manager/configuration/SaveWidget.java b/org.eclipse.osee.ote.ui.test.manager/src/org/eclipse/osee/ote/ui/test/manager/configuration/SaveWidget.java
new file mode 100644
index 000000000..10f285473
--- /dev/null
+++ b/org.eclipse.osee.ote.ui.test.manager/src/org/eclipse/osee/ote/ui/test/manager/configuration/SaveWidget.java
@@ -0,0 +1,140 @@
+/*******************************************************************************
+ * 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.osee.ote.ui.test.manager.configuration;
+
+import java.io.File;
+import org.eclipse.osee.framework.jdk.core.util.Strings;
+import org.eclipse.osee.framework.ui.plugin.OseeUiActivator;
+import org.eclipse.osee.framework.ui.swt.ImageManager;
+import org.eclipse.osee.ote.ui.test.manager.OteTestManagerImage;
+import org.eclipse.osee.ote.ui.test.manager.core.TestManagerEditor;
+import org.eclipse.osee.ote.ui.test.manager.internal.TestManagerPlugin;
+import org.eclipse.osee.ote.ui.test.manager.pages.ScriptPage;
+import org.eclipse.osee.ote.ui.test.manager.pages.StatusWindowWidget;
+import org.eclipse.osee.ote.ui.test.manager.pages.TestManagerPage;
+import org.eclipse.osee.ote.ui.test.manager.util.Dialogs;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.ToolBar;
+import org.eclipse.swt.widgets.ToolItem;
+
+public class SaveWidget {
+ public static final OseeUiActivator plugin = TestManagerPlugin.getInstance();
+ private StatusWindowWidget statusWindow;
+ private String selectedFile;
+ private final TestManagerPage tmPage;
+
+ public SaveWidget(TestManagerPage tmPage) {
+ this.tmPage = tmPage;
+ selectedFile = null;
+ statusWindow = null;
+ }
+
+ public void createToolItem(final ToolBar toolBar) {
+ final Shell shell = toolBar.getShell();
+
+ final Menu menu = new Menu(shell, SWT.POP_UP);
+
+ MenuItem saveAsMenuItem = new MenuItem(menu, SWT.PUSH);
+ saveAsMenuItem.setText("SaveAs...");
+ saveAsMenuItem.setImage(ImageManager.getImage(OteTestManagerImage.SAVEAS_EDIT));
+ saveAsMenuItem.addSelectionListener(new SelectionListener() {
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ widgetSelected(e);
+ }
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ String[] filterExtensions = {"*.xml"};
+ FileDialog fileDialog = new FileDialog(shell, SWT.SAVE);
+ fileDialog.setText("Save " + tmPage.getPageName() + "Page Settings To...");
+ fileDialog.setFilterExtensions(filterExtensions);
+
+ String defaultConfigDir = statusWindow.getValue(ScriptPage.UpdateableLabel.CONFIGPATHLABEL.name());
+
+ File dir = new File(defaultConfigDir);
+ if (dir.isFile() || dir.isDirectory()) {
+ fileDialog.setFilterPath(defaultConfigDir);
+ } else {
+ fileDialog.setFilterPath("Y:\\");
+ }
+
+ String result = fileDialog.open();
+
+ if (Strings.isValid(result)) {
+ selectedFile = result;
+ if (statusWindow != null) {
+ statusWindow.setValue(ScriptPage.UpdateableLabel.CONFIGPATHLABEL.name(), selectedFile);
+ TestManagerEditor tm = tmPage.getTestManager();
+ tm.storeValue(tm.configFileName, selectedFile);
+ statusWindow.refresh();
+ handleSaveEvent();
+ } else {
+ handleFileSelectError();
+ }
+ }
+ }
+ });
+
+ final ToolItem item = new ToolItem(toolBar, SWT.DROP_DOWN);
+ item.setImage(ImageManager.getImage(OteTestManagerImage.SAVE_EDIT));
+ item.setToolTipText("Saves current page configuration to file");
+ item.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent event) {
+ // If they clicked the arrow, we show the list
+ if (event.detail == SWT.ARROW) {
+ // Determine where to put the dropdown list
+ ToolItem item = (ToolItem) event.widget;
+ Rectangle rect = item.getBounds();
+ Point pt = item.getParent().toDisplay(new Point(rect.x, rect.y));
+ menu.setLocation(pt.x, pt.y + rect.height);
+ menu.setVisible(true);
+ } else {
+ handleSaveEvent();
+ }
+ }
+ });
+ toolBar.pack();
+ }
+
+ public void setStatusLabel(StatusWindowWidget statusWindow) {
+ this.statusWindow = statusWindow;
+ selectedFile = statusWindow.getValue(ScriptPage.UpdateableLabel.CONFIGPATHLABEL.name());
+ }
+
+ private void handleFileSelectError() {
+ Dialogs.popupError("Save Configuration File", "Invalid Configuration File Selected");
+ }
+
+ private void handleSaveEvent() {
+ TestManagerEditor tm = tmPage.getTestManager();
+ String configFile = tm.loadValue(tm.configFileName);
+
+ ISaveConfig saveConfig = ConfigFactory.getInstance().getSaveConfigHandler(tmPage);
+ try {
+
+ saveConfig.saveConfig(new File(configFile));
+ } catch (Exception ex) {
+ Dialogs.popupError("Error Saving File",
+ String.format("Error saving file: [%s]\n%s", configFile, OseeUiActivator.getStackMessages(ex)));
+ }
+ }
+}

Back to the top