You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@taverna.apache.org by re...@apache.org on 2015/03/27 16:33:37 UTC
[09/11] incubator-taverna-workbench git commit:
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/bf8a7ea2/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/actions/OpenWorkflowAction.java
----------------------------------------------------------------------
diff --git a/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/actions/OpenWorkflowAction.java b/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/actions/OpenWorkflowAction.java
deleted file mode 100644
index 39f0e97..0000000
--- a/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/actions/OpenWorkflowAction.java
+++ /dev/null
@@ -1,395 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 The University of Manchester
- *
- * Modifications to the initial code base are copyright of their
- * respective authors, or their employers as appropriate.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- ******************************************************************************/
-package net.sf.taverna.t2.workbench.file.impl.actions;
-
-import static java.awt.Toolkit.getDefaultToolkit;
-import static java.awt.event.KeyEvent.VK_O;
-import static java.util.prefs.Preferences.userNodeForPackage;
-import static javax.swing.JFileChooser.APPROVE_OPTION;
-import static javax.swing.JOptionPane.CANCEL_OPTION;
-import static javax.swing.JOptionPane.ERROR_MESSAGE;
-import static javax.swing.JOptionPane.QUESTION_MESSAGE;
-import static javax.swing.JOptionPane.WARNING_MESSAGE;
-import static javax.swing.JOptionPane.YES_NO_CANCEL_OPTION;
-import static javax.swing.JOptionPane.YES_OPTION;
-import static javax.swing.JOptionPane.showMessageDialog;
-import static javax.swing.JOptionPane.showOptionDialog;
-import static javax.swing.KeyStroke.getKeyStroke;
-import static javax.swing.SwingUtilities.invokeLater;
-import static org.apache.taverna.workbench.icons.WorkbenchIcons.openIcon;
-
-import java.awt.Component;
-import java.awt.event.ActionEvent;
-import java.io.File;
-import java.util.Arrays;
-import java.util.List;
-import java.util.prefs.Preferences;
-
-import javax.swing.AbstractAction;
-import javax.swing.JFileChooser;
-import javax.swing.filechooser.FileFilter;
-
-import org.apache.taverna.workbench.file.FileManager;
-import org.apache.taverna.workbench.file.FileType;
-import org.apache.taverna.workbench.file.exceptions.OpenException;
-import net.sf.taverna.t2.workbench.file.impl.FileTypeFileFilter;
-
-import org.apache.log4j.Logger;
-
-import org.apache.taverna.scufl2.api.container.WorkflowBundle;
-
-/**
- * An action for opening a workflow from a file. All file types exposed by the
- * {@link FileManager} as compatible with the {@link File} type are supported.
- *
- * @author Stian Soiland-Reyes
- */
-public class OpenWorkflowAction extends AbstractAction {
- private static final long serialVersionUID = 103237694130052153L;
- private static Logger logger = Logger.getLogger(OpenWorkflowAction.class);
- private static final String OPEN_WORKFLOW = "Open workflow...";
-
- public final OpenCallback DUMMY_OPEN_CALLBACK = new OpenCallbackAdapter();
- protected FileManager fileManager;
-
- public OpenWorkflowAction(FileManager fileManager) {
- super(OPEN_WORKFLOW, openIcon);
- this.fileManager = fileManager;
- putValue(
- ACCELERATOR_KEY,
- getKeyStroke(VK_O, getDefaultToolkit().getMenuShortcutKeyMask()));
- putValue(MNEMONIC_KEY, VK_O);
- }
-
- @Override
- public void actionPerformed(ActionEvent e) {
- final Component parentComponent;
- if (e.getSource() instanceof Component)
- parentComponent = (Component) e.getSource();
- else
- parentComponent = null;
- openWorkflows(parentComponent);
- }
-
- /**
- * Pop up an Open-dialogue to select one or more workflow files to open.
- * <p>
- * Note that the file opening occurs in a separate thread. If you want to
- * check if the file was opened or not, which workflow was opened, etc, use
- * {@link #openWorkflows(Component, OpenCallback)} instead.
- *
- * @see #openWorkflows(Component, OpenCallback)
- * @param parentComponent
- * The UI parent component to use for pop up dialogues
- *
- * @return <code>false</code> if no files were selected or the dialogue was
- * cancelled, or <code>true</code> if the process of opening one or
- * more files has been started.
- */
- public void openWorkflows(Component parentComponent) {
- openWorkflows(parentComponent, DUMMY_OPEN_CALLBACK);
- }
-
- /**
- * Open an array of workflow files.
- *
- * @param parentComponent
- * Parent component for UI dialogues
- * @param files
- * Array of files to be opened
- * @param fileType
- * {@link FileType} of the files that are to be opened, for
- * instance
- * {@link net.sf.taverna.t2.workbench.file.impl.T2FlowFileType},
- * or <code>null</code> to guess.
- * @param openCallback
- * An {@link OpenCallback} to be invoked during and after opening
- * the file. Use {@link OpenWorkflowAction#DUMMY_OPEN_CALLBACK}
- * if no callback is needed.
- */
- public void openWorkflows(final Component parentComponent, File[] files,
- FileType fileType, OpenCallback openCallback) {
- ErrorLoggingOpenCallbackWrapper callback = new ErrorLoggingOpenCallbackWrapper(
- openCallback);
- for (File file : files)
- try {
- Object canonicalSource = fileManager.getCanonical(file);
- WorkflowBundle alreadyOpen = fileManager.getDataflowBySource(canonicalSource);
- if (alreadyOpen != null) {
- /*
- * The workflow from the same source is already opened - ask
- * the user if they want to switch to it or open another
- * copy...
- */
-
- Object[] options = { "Switch to opened", "Open new copy",
- "Cancel" };
- switch (showOptionDialog(
- null,
- "The workflow from the same location is already opened.\n"
- + "Do you want to switch to it or open a new copy?",
- "File Manager Alert", YES_NO_CANCEL_OPTION,
- QUESTION_MESSAGE, null, options, // the titles of buttons
- options[0])) { // default button title
- case YES_OPTION:
- fileManager.setCurrentDataflow(alreadyOpen);
- return;
- case CANCEL_OPTION:
- // do nothing
- return;
- }
- // else open the workflow as usual
- }
-
- callback.aboutToOpenDataflow(file);
- WorkflowBundle workflowBundle = fileManager.openDataflow(fileType, file);
- callback.openedDataflow(file, workflowBundle);
- } catch (RuntimeException ex) {
- logger.warn("Failed to open workflow from " + file, ex);
- if (!callback.couldNotOpenDataflow(file, ex))
- showErrorMessage(parentComponent, file, ex);
- } catch (Exception ex) {
- logger.warn("Failed to open workflow from " + file, ex);
- if (!callback.couldNotOpenDataflow(file, ex))
- showErrorMessage(parentComponent, file, ex);
- return;
- }
- }
-
- /**
- * Pop up an Open-dialogue to select one or more workflow files to open.
- *
- * @param parentComponent
- * The UI parent component to use for pop up dialogues
- * @param openCallback
- * An {@link OpenCallback} to be called during the file opening.
- * The callback will be invoked for each file that has been
- * opened, as file opening happens in a separate thread that
- * might execute after the return of this method.
- * @return <code>false</code> if no files were selected or the dialogue was
- * cancelled, or <code>true</code> if the process of opening one or
- * more files has been started.
- */
- public boolean openWorkflows(final Component parentComponent,
- OpenCallback openCallback) {
- JFileChooser fileChooser = new JFileChooser();
- Preferences prefs = userNodeForPackage(getClass());
- String curDir = prefs
- .get("currentDir", System.getProperty("user.home"));
- fileChooser.setDialogTitle(OPEN_WORKFLOW);
-
- fileChooser.resetChoosableFileFilters();
- fileChooser.setAcceptAllFileFilterUsed(false);
- List<FileFilter> fileFilters = fileManager.getOpenFileFilters();
- if (fileFilters.isEmpty()) {
- logger.warn("No file types found for opening workflow");
- showMessageDialog(parentComponent,
- "No file types found for opening workflow.", "Error",
- ERROR_MESSAGE);
- return false;
- }
- for (FileFilter fileFilter : fileFilters)
- fileChooser.addChoosableFileFilter(fileFilter);
- fileChooser.setFileFilter(fileFilters.get(0));
- fileChooser.setCurrentDirectory(new File(curDir));
- fileChooser.setMultiSelectionEnabled(true);
-
- int returnVal = fileChooser.showOpenDialog(parentComponent);
- if (returnVal == APPROVE_OPTION) {
- prefs.put("currentDir", fileChooser.getCurrentDirectory()
- .toString());
- final File[] selectedFiles = fileChooser.getSelectedFiles();
- if (selectedFiles.length == 0) {
- logger.warn("No files selected");
- return false;
- }
- FileFilter fileFilter = fileChooser.getFileFilter();
- FileType fileType;
- if (fileFilter instanceof FileTypeFileFilter)
- fileType = ((FileTypeFileFilter) fileChooser.getFileFilter())
- .getFileType();
- else
- // Unknown filetype, try all of them
- fileType = null;
- new FileOpenerThread(parentComponent, selectedFiles, fileType,
- openCallback).start();
- return true;
- }
- return false;
- }
-
- /**
- * Show an error message if a file could not be opened
- *
- * @param parentComponent
- * @param file
- * @param throwable
- */
- protected void showErrorMessage(final Component parentComponent,
- final File file, final Throwable throwable) {
- invokeLater(new Runnable() {
- @Override
- public void run() {
- Throwable cause = throwable;
- while (cause.getCause() != null)
- cause = cause.getCause();
- showMessageDialog(
- parentComponent,
- "Failed to open workflow from " + file + ": \n"
- + cause.getMessage(), "Warning",
- WARNING_MESSAGE);
- }
- });
-
- }
-
- /**
- * Callback interface for openWorkflows().
- * <p>
- * The callback will be invoked during the invocation of
- * {@link OpenWorkflowAction#openWorkflows(Component, OpenCallback)} and
- * {@link OpenWorkflowAction#openWorkflows(Component, File[], FileType, OpenCallback)}
- * as file opening happens in a separate thread.
- *
- * @author Stian Soiland-Reyes
- */
- public interface OpenCallback {
- /**
- * Called before a workflowBundle is to be opened from the given file
- *
- * @param file
- * File which workflowBundle is to be opened
- */
- void aboutToOpenDataflow(File file);
-
- /**
- * Called if an exception happened while attempting to open the
- * workflowBundle.
- *
- * @param file
- * File which was attempted to be opened
- * @param ex
- * An {@link OpenException} or a {@link RuntimeException}.
- * @return <code>true</code> if the error has been handled, or
- * <code>false</code>3 if a UI warning dialogue is to be opened.
- */
- boolean couldNotOpenDataflow(File file, Exception ex);
-
- /**
- * Called when a workflowBundle has been successfully opened. The workflowBundle
- * will be registered in {@link FileManager#getOpenDataflows()}.
- *
- * @param file
- * File from which workflowBundle was opened
- * @param workflowBundle
- * WorkflowBundle that was opened
- */
- void openedDataflow(File file, WorkflowBundle workflowBundle);
- }
-
- /**
- * Adapter for {@link OpenCallback}
- *
- * @author Stian Soiland-Reyes
- */
- public static class OpenCallbackAdapter implements OpenCallback {
- @Override
- public void aboutToOpenDataflow(File file) {
- }
-
- @Override
- public boolean couldNotOpenDataflow(File file, Exception ex) {
- return false;
- }
-
- @Override
- public void openedDataflow(File file, WorkflowBundle workflowBundle) {
- }
- }
-
- private final class FileOpenerThread extends Thread {
- private final File[] files;
- private final FileType fileType;
- private final OpenCallback openCallback;
- private final Component parentComponent;
-
- private FileOpenerThread(Component parentComponent,
- File[] selectedFiles, FileType fileType,
- OpenCallback openCallback) {
- super("Opening workflows(s) " + Arrays.asList(selectedFiles));
- this.parentComponent = parentComponent;
- this.files = selectedFiles;
- this.fileType = fileType;
- this.openCallback = openCallback;
- }
-
- @Override
- public void run() {
- openWorkflows(parentComponent, files, fileType, openCallback);
- }
- }
-
- /**
- * A wrapper for {@link OpenCallback} implementations that logs exceptions
- * thrown without disrupting the caller of the callback.
- *
- * @author Stian Soiland-Reyes
- */
- protected class ErrorLoggingOpenCallbackWrapper implements OpenCallback {
- private final OpenCallback wrapped;
-
- public ErrorLoggingOpenCallbackWrapper(OpenCallback wrapped) {
- this.wrapped = wrapped;
- }
-
- @Override
- public void aboutToOpenDataflow(File file) {
- try {
- wrapped.aboutToOpenDataflow(file);
- } catch (RuntimeException wrapperEx) {
- logger.warn("Failed OpenCallback " + wrapped
- + ".aboutToOpenDataflow(File)", wrapperEx);
- }
- }
-
- @Override
- public boolean couldNotOpenDataflow(File file, Exception ex) {
- try {
- return wrapped.couldNotOpenDataflow(file, ex);
- } catch (RuntimeException wrapperEx) {
- logger.warn("Failed OpenCallback " + wrapped
- + ".couldNotOpenDataflow(File, Exception)", wrapperEx);
- return false;
- }
- }
-
- @Override
- public void openedDataflow(File file, WorkflowBundle workflowBundle) {
- try {
- wrapped.openedDataflow(file, workflowBundle);
- } catch (RuntimeException wrapperEx) {
- logger.warn("Failed OpenCallback " + wrapped
- + ".openedDataflow(File, Dataflow)", wrapperEx);
- }
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/bf8a7ea2/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/actions/OpenWorkflowFromURLAction.java
----------------------------------------------------------------------
diff --git a/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/actions/OpenWorkflowFromURLAction.java b/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/actions/OpenWorkflowFromURLAction.java
deleted file mode 100644
index 83efa74..0000000
--- a/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/actions/OpenWorkflowFromURLAction.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2008 The University of Manchester
- *
- * Modifications to the initial code base are copyright of their
- * respective authors, or their employers as appropriate.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- ******************************************************************************/
-package net.sf.taverna.t2.workbench.file.impl.actions;
-
-import static java.awt.Toolkit.getDefaultToolkit;
-import static java.awt.event.KeyEvent.VK_L;
-import static javax.swing.JOptionPane.CANCEL_OPTION;
-import static javax.swing.JOptionPane.ERROR_MESSAGE;
-import static javax.swing.JOptionPane.QUESTION_MESSAGE;
-import static javax.swing.JOptionPane.YES_NO_CANCEL_OPTION;
-import static javax.swing.JOptionPane.YES_OPTION;
-import static javax.swing.JOptionPane.showInputDialog;
-import static javax.swing.JOptionPane.showMessageDialog;
-import static javax.swing.JOptionPane.showOptionDialog;
-import static javax.swing.KeyStroke.getKeyStroke;
-import static org.apache.taverna.workbench.icons.WorkbenchIcons.openurlIcon;
-
-import java.awt.Component;
-import java.awt.event.ActionEvent;
-import java.net.URL;
-import java.util.prefs.Preferences;
-
-import javax.swing.AbstractAction;
-
-import org.apache.taverna.workbench.file.FileManager;
-
-import org.apache.log4j.Logger;
-
-import org.apache.taverna.scufl2.api.container.WorkflowBundle;
-
-/**
- * An action for opening a workflow from a url.
- *
- * @author David Withers
- */
-public class OpenWorkflowFromURLAction extends AbstractAction {
- private static final long serialVersionUID = 1474356457949961974L;
- private static Logger logger = Logger
- .getLogger(OpenWorkflowFromURLAction.class);
- private static Preferences prefs = Preferences
- .userNodeForPackage(OpenWorkflowFromURLAction.class);
- private static final String PREF_CURRENT_URL = "currentUrl";
- private static final String ACTION_NAME = "Open workflow location...";
- private static final String ACTION_DESCRIPTION = "Open a workflow from the web into a new workflow";
-
- private Component component;
- private FileManager fileManager;
-
- public OpenWorkflowFromURLAction(final Component component,
- FileManager fileManager) {
- this.component = component;
- this.fileManager = fileManager;
- putValue(SMALL_ICON, openurlIcon);
- putValue(NAME, ACTION_NAME);
- putValue(SHORT_DESCRIPTION, ACTION_DESCRIPTION);
- putValue(MNEMONIC_KEY, VK_L);
- putValue(
- ACCELERATOR_KEY,
- getKeyStroke(VK_L, getDefaultToolkit().getMenuShortcutKeyMask()));
- }
-
- @Override
- public void actionPerformed(ActionEvent e) {
- String currentUrl = prefs.get(PREF_CURRENT_URL, "http://");
-
- final String url = (String) showInputDialog(component,
- "Enter the URL of a workflow definition to load",
- "Workflow URL", QUESTION_MESSAGE, null, null, currentUrl);
- if (url != null)
- new Thread("OpenWorkflowFromURLAction") {
- @Override
- public void run() {
- openFromURL(url);
- }
- }.start();
- }
-
- private void openFromURL(String urlString) {
- try {
- URL url = new URL(urlString);
-
- Object canonicalSource = fileManager.getCanonical(url);
- WorkflowBundle alreadyOpen = fileManager
- .getDataflowBySource(canonicalSource);
- if (alreadyOpen != null) {
- /*
- * The workflow from the same source is already opened - ask the
- * user if they want to switch to it or open another copy.
- */
-
- Object[] options = { "Switch to opened", "Open new copy",
- "Cancel" };
- int iSelected = showOptionDialog(
- null,
- "The workflow from the same location is already opened.\n"
- + "Do you want to switch to it or open a new copy?",
- "File Manager Alert", YES_NO_CANCEL_OPTION,
- QUESTION_MESSAGE, null, options, // the titles of buttons
- options[0]); // default button title
-
- if (iSelected == YES_OPTION) {
- fileManager.setCurrentDataflow(alreadyOpen);
- return;
- } else if (iSelected == CANCEL_OPTION) {
- // do nothing
- return;
- }
- // else open the workflow as usual
- }
-
- fileManager.openDataflow(null, url);
- prefs.put(PREF_CURRENT_URL, urlString);
- } catch (Exception ex) {
- logger.warn("Failed to open the workflow from url " + urlString
- + " \n", ex);
- showMessageDialog(component,
- "Failed to open the workflow from url " + urlString + " \n"
- + ex.getMessage(), "Error!", ERROR_MESSAGE);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/bf8a7ea2/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/actions/PasswordInput.java
----------------------------------------------------------------------
diff --git a/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/actions/PasswordInput.java b/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/actions/PasswordInput.java
deleted file mode 100644
index c4fdc0f..0000000
--- a/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/actions/PasswordInput.java
+++ /dev/null
@@ -1,221 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 The University of Manchester
- *
- * Modifications to the initial code base are copyright of their
- * respective authors, or their employers as appropriate.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- ******************************************************************************/
-package net.sf.taverna.t2.workbench.file.impl.actions;
-
-import static java.awt.EventQueue.invokeLater;
-import static javax.swing.JOptionPane.ERROR_MESSAGE;
-import static javax.swing.JOptionPane.showMessageDialog;
-
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.io.IOException;
-import java.net.HttpURLConnection;
-import java.net.URL;
-
-import javax.swing.JButton;
-import javax.swing.JFrame;
-import javax.swing.JLabel;
-import javax.swing.JPasswordField;
-import javax.swing.JTextField;
-
-import org.apache.taverna.workbench.helper.HelpEnabledDialog;
-
-import org.apache.commons.codec.binary.Base64;
-import org.apache.log4j.Logger;
-
-/**
- * Simple dialogue to handle username/password input for workflow URL requiring
- * http authentication.
- *
- * @author Stuart Owen
- * @author Stian Soiland-Reyes
- * @author Alan R Williams
- */
-@SuppressWarnings("serial")
-public class PasswordInput extends HelpEnabledDialog {
- private static Logger logger = Logger.getLogger(PasswordInput.class);
-
- private String password = null;
- private String username = null;
- private URL url = null;
- private int tryCount = 0;
- private final static int MAX_TRIES = 3;
-
- private JButton cancelButton;
- private JLabel jLabel1;
- private JLabel jLabel2;
- private JLabel messageLabel;
- private JButton okButton;
- private JPasswordField passwordTextField;
- private JLabel urlLabel;
- private JTextField usernameTextField;
-
- public void setUrl(URL url) {
- this.url = url;
- urlLabel.setText(url.toExternalForm());
- }
-
- public String getPassword() {
- return password;
- }
-
- public String getUsername() {
- return username;
- }
-
- public PasswordInput(JFrame parent) {
- super(parent, "Authorization", true, null);
- initComponents();
- }
-
- /** Creates new form PasswordInput */
- public PasswordInput() {
- super((JFrame) null, "Authorization", true, null);
- initComponents();
- }
-
- /**
- * This method is called from within the constructor to initialize the form.
- * WARNING: Do NOT modify this code. The content of this method is always
- * regenerated by the Form Editor.
- */
- private void initComponents() {
- usernameTextField = new javax.swing.JTextField();
- cancelButton = new javax.swing.JButton();
- okButton = new javax.swing.JButton();
- passwordTextField = new javax.swing.JPasswordField();
- jLabel1 = new javax.swing.JLabel();
- jLabel2 = new javax.swing.JLabel();
- messageLabel = new javax.swing.JLabel();
- urlLabel = new javax.swing.JLabel();
-
- getContentPane().setLayout(null);
-
- setModal(true);
- // setResizable(false);
- getContentPane().add(usernameTextField);
- usernameTextField.setBounds(20, 80, 280, 22);
-
- cancelButton.setText("Cancel");
- cancelButton.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent evt) {
- cancelButtonActionPerformed(evt);
- }
- });
-
- getContentPane().add(cancelButton);
- cancelButton.setBounds(230, 160, 75, 29);
-
- okButton.setText("OK");
- okButton.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent evt) {
- okButtonActionPerformed(evt);
- }
- });
-
- getContentPane().add(okButton);
- okButton.setBounds(150, 160, 75, 29);
-
- getContentPane().add(passwordTextField);
- passwordTextField.setBounds(20, 130, 280, 22);
-
- jLabel1.setText("Username");
- getContentPane().add(jLabel1);
- jLabel1.setBounds(20, 60, 70, 16);
-
- jLabel2.setText("Password");
- getContentPane().add(jLabel2);
- jLabel2.setBounds(20, 110, 70, 16);
-
- messageLabel.setText("A username and password is required for:");
- getContentPane().add(messageLabel);
- messageLabel.setBounds(20, 10, 270, 20);
-
- urlLabel.setText("service");
- getContentPane().add(urlLabel);
- urlLabel.setBounds(20, 30, 270, 16);
-
- pack();
- }
-
- private void okButtonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed
- String password = String.valueOf(passwordTextField.getPassword());
- String username = usernameTextField.getText();
- HttpURLConnection connection;
- try {
- connection = (HttpURLConnection) url.openConnection();
- String userPassword = username + ":" + password;
- /*
- * Note: non-latin1 support for basic auth is fragile/unsupported
- * and must be MIME-encoded (RFC2047) according to
- * https://bugzilla.mozilla.org/show_bug.cgi?id=41489
- */
- byte[] encoded = Base64.encodeBase64(userPassword
- .getBytes("latin1"));
- connection.setRequestProperty("Authorization", "Basic "
- + new String(encoded, "ascii"));
- connection.setRequestProperty("Accept", "text/xml");
- int code = connection.getResponseCode();
-
- /*
- * NB: myExperiment gives a 500 response for an invalid
- * username/password
- */
- if (code == 401 || code == 500) {
- tryCount++;
- showMessageDialog(this, "The username and password failed",
- "Invalid username or password", ERROR_MESSAGE);
- if (tryCount >= MAX_TRIES) { // close after 3 attempts.
- this.password = null;
- this.username = null;
- this.setVisible(false);
- }
- } else {
- this.username = username;
- this.password = password;
- this.setVisible(false);
- }
- } catch (IOException ex) {
- logger.error("Could not get password", ex);
- }
- }
-
- private void cancelButtonActionPerformed(ActionEvent evt) {
- this.password = null;
- this.username = null;
- this.setVisible(false);
- }
-
- /**
- * @param args
- * the command line arguments
- */
- public static void main(String args[]) {
- invokeLater(new Runnable() {
- @Override
- public void run() {
- new PasswordInput().setVisible(true);
- }
- });
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/bf8a7ea2/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/actions/SaveAllWorkflowsAction.java
----------------------------------------------------------------------
diff --git a/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/actions/SaveAllWorkflowsAction.java b/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/actions/SaveAllWorkflowsAction.java
deleted file mode 100644
index 1bd8a7a..0000000
--- a/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/actions/SaveAllWorkflowsAction.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 The University of Manchester
- *
- * Modifications to the initial code base are copyright of their
- * respective authors, or their employers as appropriate.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- ******************************************************************************/
-package net.sf.taverna.t2.workbench.file.impl.actions;
-
-import static java.awt.Toolkit.getDefaultToolkit;
-import static java.awt.event.InputEvent.SHIFT_DOWN_MASK;
-import static java.awt.event.KeyEvent.VK_A;
-import static java.awt.event.KeyEvent.VK_S;
-import static javax.swing.KeyStroke.getKeyStroke;
-import static org.apache.taverna.workbench.icons.WorkbenchIcons.saveAllIcon;
-
-import java.awt.Component;
-import java.awt.event.ActionEvent;
-import java.util.Collections;
-import java.util.List;
-
-import javax.swing.AbstractAction;
-
-import org.apache.taverna.lang.observer.Observable;
-import org.apache.taverna.lang.observer.Observer;
-import org.apache.taverna.workbench.edits.EditManager;
-import org.apache.taverna.workbench.file.FileManager;
-import org.apache.taverna.workbench.file.events.FileManagerEvent;
-
-import org.apache.log4j.Logger;
-
-import org.apache.taverna.scufl2.api.container.WorkflowBundle;
-
-@SuppressWarnings("serial")
-public class SaveAllWorkflowsAction extends AbstractAction {
- private final class FileManagerObserver implements
- Observer<FileManagerEvent> {
- @Override
- public void notify(Observable<FileManagerEvent> sender,
- FileManagerEvent message) throws Exception {
- updateEnabled();
- }
- }
-
- @SuppressWarnings("unused")
- private static Logger logger = Logger
- .getLogger(SaveAllWorkflowsAction.class);
- private static final String SAVE_ALL_WORKFLOWS = "Save all workflows";
-
- private final SaveWorkflowAction saveWorkflowAction;
- private FileManager fileManager;
- private FileManagerObserver fileManagerObserver = new FileManagerObserver();
-
- public SaveAllWorkflowsAction(EditManager editManager,
- FileManager fileManager) {
- super(SAVE_ALL_WORKFLOWS, saveAllIcon);
- this.fileManager = fileManager;
- saveWorkflowAction = new SaveWorkflowAction(editManager, fileManager);
- putValue(
- ACCELERATOR_KEY,
- getKeyStroke(VK_S, getDefaultToolkit().getMenuShortcutKeyMask()
- | SHIFT_DOWN_MASK));
- putValue(MNEMONIC_KEY, VK_A);
-
- fileManager.addObserver(fileManagerObserver);
- updateEnabled();
- }
-
- public void updateEnabled() {
- setEnabled(!(fileManager.getOpenDataflows().isEmpty()));
- }
-
- @Override
- public void actionPerformed(ActionEvent ev) {
- Component parentComponent = null;
- if (ev.getSource() instanceof Component)
- parentComponent = (Component) ev.getSource();
- saveAllDataflows(parentComponent);
- }
-
- public void saveAllDataflows(Component parentComponent) {
- // Save in reverse so we save nested workflows first
- List<WorkflowBundle> workflowBundles = fileManager.getOpenDataflows();
- Collections.reverse(workflowBundles);
-
- for (WorkflowBundle workflowBundle : workflowBundles)
- if (!saveWorkflowAction.saveDataflow(parentComponent,
- workflowBundle))
- break;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/bf8a7ea2/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/actions/SaveWorkflowAction.java
----------------------------------------------------------------------
diff --git a/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/actions/SaveWorkflowAction.java b/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/actions/SaveWorkflowAction.java
deleted file mode 100644
index f4291e7..0000000
--- a/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/actions/SaveWorkflowAction.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 The University of Manchester
- *
- * Modifications to the initial code base are copyright of their
- * respective authors, or their employers as appropriate.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- ******************************************************************************/
-package net.sf.taverna.t2.workbench.file.impl.actions;
-
-import static java.awt.Toolkit.getDefaultToolkit;
-import static java.awt.event.KeyEvent.VK_S;
-import static javax.swing.JOptionPane.NO_OPTION;
-import static javax.swing.JOptionPane.WARNING_MESSAGE;
-import static javax.swing.JOptionPane.YES_NO_CANCEL_OPTION;
-import static javax.swing.JOptionPane.YES_OPTION;
-import static javax.swing.JOptionPane.showConfirmDialog;
-import static javax.swing.JOptionPane.showMessageDialog;
-import static javax.swing.KeyStroke.getKeyStroke;
-import static org.apache.taverna.workbench.icons.WorkbenchIcons.saveIcon;
-
-import java.awt.Component;
-import java.awt.event.ActionEvent;
-
-import javax.swing.AbstractAction;
-
-import org.apache.taverna.lang.observer.Observable;
-import org.apache.taverna.lang.observer.Observer;
-import org.apache.taverna.workbench.edits.EditManager;
-import org.apache.taverna.workbench.edits.EditManager.AbstractDataflowEditEvent;
-import org.apache.taverna.workbench.edits.EditManager.EditManagerEvent;
-import org.apache.taverna.workbench.file.FileManager;
-import org.apache.taverna.workbench.file.events.FileManagerEvent;
-import org.apache.taverna.workbench.file.events.SavedDataflowEvent;
-import org.apache.taverna.workbench.file.events.SetCurrentDataflowEvent;
-import org.apache.taverna.workbench.file.exceptions.OverwriteException;
-import org.apache.taverna.workbench.file.exceptions.SaveException;
-
-import org.apache.log4j.Logger;
-
-import org.apache.taverna.scufl2.api.container.WorkflowBundle;
-
-@SuppressWarnings("serial")
-public class SaveWorkflowAction extends AbstractAction {
- private static Logger logger = Logger.getLogger(SaveWorkflowAction.class);
- private static final String SAVE_WORKFLOW = "Save workflow";
-
- private final SaveWorkflowAsAction saveWorkflowAsAction;
- private EditManagerObserver editManagerObserver = new EditManagerObserver();
- private FileManager fileManager;
- private FileManagerObserver fileManagerObserver = new FileManagerObserver();
-
- public SaveWorkflowAction(EditManager editManager, FileManager fileManager) {
- super(SAVE_WORKFLOW, saveIcon);
- this.fileManager = fileManager;
- saveWorkflowAsAction = new SaveWorkflowAsAction(fileManager);
- putValue(
- ACCELERATOR_KEY,
- getKeyStroke(VK_S, getDefaultToolkit().getMenuShortcutKeyMask()));
- putValue(MNEMONIC_KEY, VK_S);
- editManager.addObserver(editManagerObserver);
- fileManager.addObserver(fileManagerObserver);
- updateEnabledStatus(fileManager.getCurrentDataflow());
- }
-
- @Override
- public void actionPerformed(ActionEvent ev) {
- Component parentComponent = null;
- if (ev.getSource() instanceof Component)
- parentComponent = (Component) ev.getSource();
- saveCurrentDataflow(parentComponent);
- }
-
- public boolean saveCurrentDataflow(Component parentComponent) {
- WorkflowBundle workflowBundle = fileManager.getCurrentDataflow();
- return saveDataflow(parentComponent, workflowBundle);
- }
-
- public boolean saveDataflow(Component parentComponent,
- WorkflowBundle workflowBundle) {
- if (!fileManager.canSaveWithoutDestination(workflowBundle))
- return saveWorkflowAsAction.saveDataflow(parentComponent,
- workflowBundle);
-
- try {
- try {
- fileManager.saveDataflow(workflowBundle, true);
- Object workflowBundleSource = fileManager
- .getDataflowSource(workflowBundle);
- logger.info("Saved workflow " + workflowBundle + " to "
- + workflowBundleSource);
- return true;
- } catch (OverwriteException ex) {
- Object workflowBundleSource = fileManager
- .getDataflowSource(workflowBundle);
- logger.info("Workflow was changed on source: "
- + workflowBundleSource);
- fileManager.setCurrentDataflow(workflowBundle);
- String msg = "Workflow destination " + workflowBundleSource
- + " has been changed from elsewhere, "
- + "are you sure you want to overwrite?";
- int ret = showConfirmDialog(parentComponent, msg,
- "Workflow changed", YES_NO_CANCEL_OPTION);
- if (ret == YES_OPTION) {
- fileManager.saveDataflow(workflowBundle, false);
- logger.info("Saved workflow " + workflowBundle
- + " by overwriting " + workflowBundleSource);
- return true;
- } else if (ret == NO_OPTION) {
- // Pop up Save As instead to choose another name
- return saveWorkflowAsAction.saveDataflow(parentComponent,
- workflowBundle);
- } else {
- logger.info("Aborted overwrite of " + workflowBundleSource);
- return false;
- }
- }
- } catch (SaveException ex) {
- logger.warn("Could not save workflow " + workflowBundle, ex);
- showMessageDialog(parentComponent, "Could not save workflow: \n\n"
- + ex.getMessage(), "Warning", WARNING_MESSAGE);
- return false;
- } catch (RuntimeException ex) {
- logger.warn("Could not save workflow " + workflowBundle, ex);
- showMessageDialog(parentComponent, "Could not save workflow: \n\n"
- + ex.getMessage(), "Warning", WARNING_MESSAGE);
- return false;
- }
- }
-
- protected void updateEnabledStatus(WorkflowBundle workflowBundle) {
- setEnabled(workflowBundle != null
- && fileManager.isDataflowChanged(workflowBundle));
- }
-
- private final class EditManagerObserver implements
- Observer<EditManagerEvent> {
- @Override
- public void notify(Observable<EditManagerEvent> sender,
- EditManagerEvent message) throws Exception {
- if (message instanceof AbstractDataflowEditEvent) {
- WorkflowBundle workflowBundle = ((AbstractDataflowEditEvent) message)
- .getDataFlow();
- if (workflowBundle == fileManager.getCurrentDataflow())
- updateEnabledStatus(workflowBundle);
- }
- }
- }
-
- private final class FileManagerObserver implements
- Observer<FileManagerEvent> {
- @Override
- public void notify(Observable<FileManagerEvent> sender,
- FileManagerEvent message) throws Exception {
- if (message instanceof SavedDataflowEvent)
- updateEnabledStatus(((SavedDataflowEvent) message)
- .getDataflow());
- else if (message instanceof SetCurrentDataflowEvent)
- updateEnabledStatus(((SetCurrentDataflowEvent) message)
- .getDataflow());
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/bf8a7ea2/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/actions/SaveWorkflowAsAction.java
----------------------------------------------------------------------
diff --git a/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/actions/SaveWorkflowAsAction.java b/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/actions/SaveWorkflowAsAction.java
deleted file mode 100644
index 8833e16..0000000
--- a/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/actions/SaveWorkflowAsAction.java
+++ /dev/null
@@ -1,219 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 The University of Manchester
- *
- * Modifications to the initial code base are copyright of their
- * respective authors, or their employers as appropriate.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- ******************************************************************************/
-package net.sf.taverna.t2.workbench.file.impl.actions;
-
-import static java.awt.event.KeyEvent.VK_F6;
-import static java.awt.event.KeyEvent.VK_S;
-import static javax.swing.JFileChooser.APPROVE_OPTION;
-import static javax.swing.JOptionPane.ERROR_MESSAGE;
-import static javax.swing.JOptionPane.NO_OPTION;
-import static javax.swing.JOptionPane.WARNING_MESSAGE;
-import static javax.swing.JOptionPane.YES_NO_CANCEL_OPTION;
-import static javax.swing.JOptionPane.YES_OPTION;
-import static javax.swing.JOptionPane.showConfirmDialog;
-import static javax.swing.JOptionPane.showMessageDialog;
-import static javax.swing.KeyStroke.getKeyStroke;
-import static org.apache.taverna.workbench.icons.WorkbenchIcons.saveAsIcon;
-
-import java.awt.Component;
-import java.awt.event.ActionEvent;
-import java.io.File;
-import java.net.URL;
-import java.util.List;
-import java.util.prefs.Preferences;
-
-import javax.swing.AbstractAction;
-import javax.swing.JFileChooser;
-import javax.swing.filechooser.FileFilter;
-
-import org.apache.taverna.lang.observer.Observable;
-import org.apache.taverna.lang.observer.Observer;
-import org.apache.taverna.workbench.file.FileManager;
-import org.apache.taverna.workbench.file.FileType;
-import org.apache.taverna.workbench.file.events.FileManagerEvent;
-import org.apache.taverna.workbench.file.events.SetCurrentDataflowEvent;
-import org.apache.taverna.workbench.file.exceptions.OverwriteException;
-import org.apache.taverna.workbench.file.exceptions.SaveException;
-import net.sf.taverna.t2.workbench.file.impl.FileTypeFileFilter;
-
-import org.apache.log4j.Logger;
-
-import org.apache.taverna.scufl2.api.container.WorkflowBundle;
-import org.apache.taverna.scufl2.api.core.Workflow;
-
-@SuppressWarnings("serial")
-public class SaveWorkflowAsAction extends AbstractAction {
- private static final String SAVE_WORKFLOW_AS = "Save workflow as...";
- private static final String PREF_CURRENT_DIR = "currentDir";
- private static Logger logger = Logger.getLogger(SaveWorkflowAsAction.class);
- private FileManager fileManager;
-
- public SaveWorkflowAsAction(FileManager fileManager) {
- super(SAVE_WORKFLOW_AS, saveAsIcon);
- this.fileManager = fileManager;
- fileManager.addObserver(new FileManagerObserver());
- putValue(ACCELERATOR_KEY, getKeyStroke(VK_F6, 0));
- putValue(MNEMONIC_KEY, VK_S);
- }
-
- @Override
- public void actionPerformed(ActionEvent e) {
- Component parentComponent = null;
- if (e.getSource() instanceof Component)
- parentComponent = (Component) e.getSource();
- WorkflowBundle workflowBundle = fileManager.getCurrentDataflow();
- if (workflowBundle == null) {
- showMessageDialog(parentComponent, "No workflow open yet",
- "No workflow to save", ERROR_MESSAGE);
- return;
- }
- saveCurrentDataflow(parentComponent);
- }
-
- public boolean saveCurrentDataflow(Component parentComponent) {
- WorkflowBundle workflowBundle = fileManager.getCurrentDataflow();
- return saveDataflow(parentComponent, workflowBundle);
- }
-
- private String determineFileName(final WorkflowBundle workflowBundle) {
- String result;
- Object source = fileManager.getDataflowSource(workflowBundle);
- String fileName = null;
- if (source instanceof File)
- fileName = ((File) source).getName();
- else if (source instanceof URL)
- fileName = ((URL) source).getPath();
-
- if (fileName != null) {
- int lastIndex = fileName.lastIndexOf(".");
- if (lastIndex > 0)
- fileName = fileName.substring(0, fileName.lastIndexOf("."));
- result = fileName;
- } else {
- Workflow mainWorkflow = workflowBundle.getMainWorkflow();
- if (mainWorkflow != null)
- result = mainWorkflow.getName();
- else
- result = workflowBundle.getName();
- }
- return result;
- }
-
- public boolean saveDataflow(Component parentComponent, WorkflowBundle workflowBundle) {
- fileManager.setCurrentDataflow(workflowBundle);
- JFileChooser fileChooser = new JFileChooser();
- Preferences prefs = Preferences.userNodeForPackage(getClass());
- String curDir = prefs
- .get(PREF_CURRENT_DIR, System.getProperty("user.home"));
- fileChooser.setDialogTitle(SAVE_WORKFLOW_AS);
-
- fileChooser.resetChoosableFileFilters();
- fileChooser.setAcceptAllFileFilterUsed(false);
-
- List<FileFilter> fileFilters = fileManager
- .getSaveFileFilters(File.class);
- if (fileFilters.isEmpty()) {
- logger.warn("No file types found for saving workflow "
- + workflowBundle);
- showMessageDialog(parentComponent,
- "No file types found for saving workflow.", "Error",
- ERROR_MESSAGE);
- return false;
- }
- for (FileFilter fileFilter : fileFilters)
- fileChooser.addChoosableFileFilter(fileFilter);
- fileChooser.setFileFilter(fileFilters.get(0));
- fileChooser.setCurrentDirectory(new File(curDir));
-
- File possibleName = new File(determineFileName(workflowBundle));
- boolean tryAgain = true;
- while (tryAgain) {
- tryAgain = false;
- fileChooser.setSelectedFile(possibleName);
- int returnVal = fileChooser.showSaveDialog(parentComponent);
- if (returnVal == APPROVE_OPTION) {
- prefs.put(PREF_CURRENT_DIR, fileChooser.getCurrentDirectory()
- .toString());
- File file = fileChooser.getSelectedFile();
- FileTypeFileFilter fileFilter = (FileTypeFileFilter) fileChooser
- .getFileFilter();
- FileType fileType = fileFilter.getFileType();
- String extension = "." + fileType.getExtension();
- if (!file.getName().toLowerCase().endsWith(extension)) {
- String newName = file.getName() + extension;
- file = new File(file.getParentFile(), newName);
- }
-
- // TODO: Open in separate thread to avoid hanging UI
- try {
- try {
- fileManager.saveDataflow(workflowBundle, fileType,
- file, true);
- logger.info("Saved workflow " + workflowBundle + " to "
- + file);
- return true;
- } catch (OverwriteException ex) {
- logger.info("File already exists: " + file);
- String msg = "Are you sure you want to overwrite existing file "
- + file + "?";
- int ret = showConfirmDialog(parentComponent, msg,
- "File already exists", YES_NO_CANCEL_OPTION);
- if (ret == YES_OPTION) {
- fileManager.saveDataflow(workflowBundle, fileType,
- file, false);
- logger.info("Saved workflow " + workflowBundle
- + " by overwriting " + file);
- return true;
- } else if (ret == NO_OPTION) {
- tryAgain = true;
- continue;
- } else {
- logger.info("Aborted overwrite of " + file);
- return false;
- }
- }
- } catch (SaveException ex) {
- logger.warn("Could not save workflow to " + file, ex);
- showMessageDialog(parentComponent,
- "Could not save workflow to " + file + ": \n\n"
- + ex.getMessage(), "Warning",
- WARNING_MESSAGE);
- return false;
- }
- }
- }
- return false;
- }
-
- protected void updateEnabledStatus(WorkflowBundle workflowBundle) {
- setEnabled(workflowBundle != null);
- }
-
- private final class FileManagerObserver implements Observer<FileManagerEvent> {
- @Override
- public void notify(Observable<FileManagerEvent> sender,
- FileManagerEvent message) throws Exception {
- if (message instanceof SetCurrentDataflowEvent)
- updateEnabledStatus(((SetCurrentDataflowEvent) message)
- .getDataflow());
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/bf8a7ea2/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/hooks/CloseWorkflowsOnShutdown.java
----------------------------------------------------------------------
diff --git a/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/hooks/CloseWorkflowsOnShutdown.java b/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/hooks/CloseWorkflowsOnShutdown.java
deleted file mode 100644
index 99d326a..0000000
--- a/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/hooks/CloseWorkflowsOnShutdown.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2010 The University of Manchester
- *
- * Modifications to the initial code base are copyright of their
- * respective authors, or their employers as appropriate.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- ******************************************************************************/
-package net.sf.taverna.t2.workbench.file.impl.hooks;
-
-import org.apache.taverna.workbench.ShutdownSPI;
-import org.apache.taverna.workbench.edits.EditManager;
-import org.apache.taverna.workbench.file.FileManager;
-import net.sf.taverna.t2.workbench.file.impl.actions.CloseAllWorkflowsAction;
-
-/**
- * Close open workflows (and ask the user if she wants to save changes) on
- * shutdown.
- *
- * @author Stian Soiland-Reyes
- */
-public class CloseWorkflowsOnShutdown implements ShutdownSPI {
- private CloseAllWorkflowsAction closeAllWorkflowsAction;
-
- public CloseWorkflowsOnShutdown(EditManager editManager,
- FileManager fileManager) {
- closeAllWorkflowsAction = new CloseAllWorkflowsAction(editManager,
- fileManager);
- }
-
- @Override
- public int positionHint() {
- /*
- * Quite early, we don't want to do various clean-up in case the user
- * clicks Cancel
- */
- return 50;
- }
-
- @Override
- public boolean shutdown() {
- return closeAllWorkflowsAction.closeAllWorkflows(null);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/bf8a7ea2/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/menu/FileCloseAllMenuAction.java
----------------------------------------------------------------------
diff --git a/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/menu/FileCloseAllMenuAction.java b/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/menu/FileCloseAllMenuAction.java
deleted file mode 100644
index 68aade2..0000000
--- a/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/menu/FileCloseAllMenuAction.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 The University of Manchester
- *
- * Modifications to the initial code base are copyright of their
- * respective authors, or their employers as appropriate.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- ******************************************************************************/
-package net.sf.taverna.t2.workbench.file.impl.menu;
-
-import static net.sf.taverna.t2.workbench.file.impl.menu.FileOpenMenuSection.FILE_URI;
-
-import java.net.URI;
-
-import javax.swing.Action;
-
-import org.apache.taverna.ui.menu.AbstractMenuAction;
-import org.apache.taverna.workbench.edits.EditManager;
-import org.apache.taverna.workbench.file.FileManager;
-import net.sf.taverna.t2.workbench.file.impl.actions.CloseAllWorkflowsAction;
-
-public class FileCloseAllMenuAction extends AbstractMenuAction {
- private static final URI FILE_CLOSE_URI = URI
- .create("http://taverna.sf.net/2008/t2workbench/menu#fileCloseAll");
- private final EditManager editManager;
- private final FileManager fileManager;
-
- public FileCloseAllMenuAction(EditManager editManager,
- FileManager fileManager) {
- super(FILE_URI, 39, FILE_CLOSE_URI);
- this.editManager = editManager;
- this.fileManager = fileManager;
- }
-
- @Override
- protected Action createAction() {
- return new CloseAllWorkflowsAction(editManager, fileManager);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/bf8a7ea2/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/menu/FileCloseMenuAction.java
----------------------------------------------------------------------
diff --git a/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/menu/FileCloseMenuAction.java b/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/menu/FileCloseMenuAction.java
deleted file mode 100644
index 1af3d07..0000000
--- a/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/menu/FileCloseMenuAction.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 The University of Manchester
- *
- * Modifications to the initial code base are copyright of their
- * respective authors, or their employers as appropriate.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- ******************************************************************************/
-package net.sf.taverna.t2.workbench.file.impl.menu;
-
-import static net.sf.taverna.t2.workbench.file.impl.menu.FileOpenMenuSection.FILE_URI;
-
-import java.net.URI;
-
-import javax.swing.Action;
-
-import org.apache.taverna.ui.menu.AbstractMenuAction;
-import org.apache.taverna.workbench.edits.EditManager;
-import org.apache.taverna.workbench.file.FileManager;
-import net.sf.taverna.t2.workbench.file.impl.actions.CloseWorkflowAction;
-
-public class FileCloseMenuAction extends AbstractMenuAction {
- private static final URI FILE_CLOSE_URI = URI
- .create("http://taverna.sf.net/2008/t2workbench/menu#fileClose");
- private final EditManager editManager;
- private final FileManager fileManager;
-
- public FileCloseMenuAction(EditManager editManager, FileManager fileManager) {
- super(FILE_URI, 30, FILE_CLOSE_URI);
- this.editManager = editManager;
- this.fileManager = fileManager;
- }
-
- @Override
- protected Action createAction() {
- return new CloseWorkflowAction(editManager, fileManager);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/bf8a7ea2/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/menu/FileNewMenuAction.java
----------------------------------------------------------------------
diff --git a/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/menu/FileNewMenuAction.java b/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/menu/FileNewMenuAction.java
deleted file mode 100644
index 5a3cd2f..0000000
--- a/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/menu/FileNewMenuAction.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 The University of Manchester
- *
- * Modifications to the initial code base are copyright of their
- * respective authors, or their employers as appropriate.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- ******************************************************************************/
-package net.sf.taverna.t2.workbench.file.impl.menu;
-
-import static net.sf.taverna.t2.workbench.file.impl.menu.FileOpenMenuSection.FILE_OPEN_SECTION_URI;
-
-import java.net.URI;
-
-import javax.swing.Action;
-
-import org.apache.taverna.ui.menu.AbstractMenuAction;
-import org.apache.taverna.workbench.file.FileManager;
-import net.sf.taverna.t2.workbench.file.impl.actions.NewWorkflowAction;
-
-public class FileNewMenuAction extends AbstractMenuAction {
- private static final URI FILE_NEW_URI = URI
- .create("http://taverna.sf.net/2008/t2workbench/menu#fileNew");
- private final FileManager fileManager;
-
- public FileNewMenuAction(FileManager fileManager) {
- super(FILE_OPEN_SECTION_URI, 10, FILE_NEW_URI);
- this.fileManager = fileManager;
- }
-
- @Override
- protected Action createAction() {
- return new NewWorkflowAction(fileManager);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/bf8a7ea2/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/menu/FileOpenFromURLMenuAction.java
----------------------------------------------------------------------
diff --git a/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/menu/FileOpenFromURLMenuAction.java b/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/menu/FileOpenFromURLMenuAction.java
deleted file mode 100644
index 7dc3bbc..0000000
--- a/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/menu/FileOpenFromURLMenuAction.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 The University of Manchester
- *
- * Modifications to the initial code base are copyright of their
- * respective authors, or their employers as appropriate.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- ******************************************************************************/
-package net.sf.taverna.t2.workbench.file.impl.menu;
-
-import static net.sf.taverna.t2.workbench.file.impl.menu.FileOpenMenuSection.FILE_OPEN_SECTION_URI;
-
-import java.net.URI;
-
-import javax.swing.Action;
-
-import org.apache.taverna.ui.menu.AbstractMenuAction;
-import org.apache.taverna.workbench.file.FileManager;
-import net.sf.taverna.t2.workbench.file.impl.actions.OpenWorkflowFromURLAction;
-
-public class FileOpenFromURLMenuAction extends AbstractMenuAction {
-
- private static final URI FILE_OPEN_FROM_URL_URI = URI
- .create("http://taverna.sf.net/2008/t2workbench/menu#fileOpenURL");
- private final FileManager fileManager;
-
- public FileOpenFromURLMenuAction(FileManager fileManager) {
- super(FILE_OPEN_SECTION_URI, 30, FILE_OPEN_FROM_URL_URI);
- this.fileManager = fileManager;
- }
-
- @Override
- protected Action createAction() {
- return new OpenWorkflowFromURLAction(null, fileManager);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/bf8a7ea2/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/menu/FileOpenMenuAction.java
----------------------------------------------------------------------
diff --git a/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/menu/FileOpenMenuAction.java b/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/menu/FileOpenMenuAction.java
deleted file mode 100644
index d3c26ed..0000000
--- a/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/menu/FileOpenMenuAction.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 The University of Manchester
- *
- * Modifications to the initial code base are copyright of their
- * respective authors, or their employers as appropriate.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- ******************************************************************************/
-package net.sf.taverna.t2.workbench.file.impl.menu;
-
-import static net.sf.taverna.t2.workbench.file.impl.menu.FileOpenMenuSection.FILE_OPEN_SECTION_URI;
-
-import java.net.URI;
-
-import javax.swing.Action;
-
-import org.apache.taverna.ui.menu.AbstractMenuAction;
-import org.apache.taverna.workbench.file.FileManager;
-import net.sf.taverna.t2.workbench.file.impl.actions.OpenWorkflowAction;
-
-public class FileOpenMenuAction extends AbstractMenuAction {
- private static final URI FILE_OPEN_URI = URI
- .create("http://taverna.sf.net/2008/t2workbench/menu#fileOpen");
- private final FileManager fileManager;
-
- public FileOpenMenuAction(FileManager fileManager) {
- super(FILE_OPEN_SECTION_URI, 20, FILE_OPEN_URI);
- this.fileManager = fileManager;
- }
-
- @Override
- protected Action createAction() {
- return new OpenWorkflowAction(fileManager);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/bf8a7ea2/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/menu/FileOpenMenuSection.java
----------------------------------------------------------------------
diff --git a/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/menu/FileOpenMenuSection.java b/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/menu/FileOpenMenuSection.java
deleted file mode 100644
index 73bfa2b..0000000
--- a/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/menu/FileOpenMenuSection.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 The University of Manchester
- *
- * Modifications to the initial code base are copyright of their
- * respective authors, or their employers as appropriate.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- ******************************************************************************/
-package net.sf.taverna.t2.workbench.file.impl.menu;
-
-import java.net.URI;
-
-import org.apache.taverna.ui.menu.AbstractMenuSection;
-
-public class FileOpenMenuSection extends AbstractMenuSection {
- public static final URI FILE_URI = URI
- .create("http://taverna.sf.net/2008/t2workbench/menu#file");
- public static final URI FILE_OPEN_SECTION_URI = URI
- .create("http://taverna.sf.net/2008/t2workbench/menu#fileOpenSection");
-
- public FileOpenMenuSection() {
- super(FILE_URI, 20, FILE_OPEN_SECTION_URI);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/bf8a7ea2/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/menu/FileOpenRecentMenuAction.java
----------------------------------------------------------------------
diff --git a/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/menu/FileOpenRecentMenuAction.java b/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/menu/FileOpenRecentMenuAction.java
deleted file mode 100644
index 3c49adf..0000000
--- a/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/menu/FileOpenRecentMenuAction.java
+++ /dev/null
@@ -1,418 +0,0 @@
-package net.sf.taverna.t2.workbench.file.impl.menu;
-
-import static java.awt.event.KeyEvent.VK_0;
-import static java.awt.event.KeyEvent.VK_R;
-import static javax.swing.Action.MNEMONIC_KEY;
-import static javax.swing.Action.NAME;
-import static javax.swing.JOptionPane.ERROR_MESSAGE;
-import static javax.swing.JOptionPane.showMessageDialog;
-import static javax.swing.SwingUtilities.invokeLater;
-import static net.sf.taverna.t2.workbench.file.impl.menu.FileOpenMenuSection.FILE_OPEN_SECTION_URI;
-
-import java.awt.Component;
-import java.awt.event.ActionEvent;
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.Serializable;
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.swing.AbstractAction;
-import javax.swing.JMenu;
-import javax.swing.JMenuItem;
-
-import org.apache.taverna.lang.observer.Observable;
-import org.apache.taverna.lang.observer.Observer;
-import org.apache.taverna.ui.menu.AbstractMenuCustom;
-import org.apache.taverna.workbench.file.FileManager;
-import org.apache.taverna.workbench.file.FileType;
-import org.apache.taverna.workbench.file.events.AbstractDataflowEvent;
-import org.apache.taverna.workbench.file.events.ClosedDataflowEvent;
-import org.apache.taverna.workbench.file.events.FileManagerEvent;
-import org.apache.taverna.workbench.file.events.OpenedDataflowEvent;
-import org.apache.taverna.workbench.file.events.SavedDataflowEvent;
-import org.apache.taverna.workbench.file.exceptions.OpenException;
-
-import org.apache.log4j.Logger;
-import org.jdom.Document;
-import org.jdom.JDOMException;
-import org.jdom.input.SAXBuilder;
-
-import uk.org.taverna.configuration.app.ApplicationConfiguration;
-import org.apache.taverna.scufl2.api.container.WorkflowBundle;
-
-public class FileOpenRecentMenuAction extends AbstractMenuCustom implements
- Observer<FileManagerEvent> {
- public static final URI RECENT_URI = URI
- .create("http://taverna.sf.net/2008/t2workbench/menu#fileOpenRecent");
- private static final String CONF = "conf";
- private static Logger logger = Logger
- .getLogger(FileOpenRecentMenuAction.class);
- private static final String RECENT_WORKFLOWS_XML = "recentWorkflows.xml";
- private static final int MAX_ITEMS = 10;
-
- private FileManager fileManager;
- private ApplicationConfiguration applicationConfiguration;
- private JMenu menu;
- private List<Recent> recents = new ArrayList<>();
- private Thread loadRecentThread;
-
- public FileOpenRecentMenuAction(FileManager fileManager) {
- super(FILE_OPEN_SECTION_URI, 30, RECENT_URI);
- this.fileManager = fileManager;
- fileManager.addObserver(this);
- }
-
- @Override
- public void notify(Observable<FileManagerEvent> sender,
- FileManagerEvent message) throws Exception {
- FileManager fileManager = (FileManager) sender;
- if (message instanceof OpenedDataflowEvent
- || message instanceof SavedDataflowEvent) {
- AbstractDataflowEvent dataflowEvent = (AbstractDataflowEvent) message;
- WorkflowBundle dataflow = dataflowEvent.getDataflow();
- Object dataflowSource = fileManager.getDataflowSource(dataflow);
- FileType dataflowType = fileManager.getDataflowType(dataflow);
- addRecent(dataflowSource, dataflowType);
- }
- if (message instanceof ClosedDataflowEvent)
- // Make sure enabled/disabled status is correct
- updateRecentMenu();
- }
-
- public void updateRecentMenu() {
- invokeLater(new Runnable() {
- @Override
- public void run() {
- updateRecentMenuGUI();
- }
- });
- saveRecent();
- }
-
- protected void addRecent(Object dataflowSource, FileType dataflowType) {
- if (dataflowSource == null)
- return;
- if (!(dataflowSource instanceof Serializable)) {
- logger.warn("Can't serialize workflow source for 'Recent workflows': "
- + dataflowSource);
- return;
- }
- synchronized (recents) {
- Recent recent = new Recent((Serializable) dataflowSource, dataflowType);
- if (recents.contains(recent))
- recents.remove(recent);
- recents.add(0, recent); // Add to front
- }
- updateRecentMenu();
- }
-
- @Override
- protected Component createCustomComponent() {
- action = new DummyAction("Recent workflows");
- action.putValue(MNEMONIC_KEY, VK_R);
- menu = new JMenu(action);
- // Disabled until we have loaded the recent workflows
- menu.setEnabled(false);
- loadRecentThread = new Thread("Loading recent workflow menu") {
- // Avoid hanging GUI initialization while deserialising
- @Override
- public void run() {
- loadRecent();
- updateRecentMenu();
- }
- };
- loadRecentThread.start();
- return menu;
- }
-
- protected synchronized void loadRecent() {
- File confDir = new File(applicationConfiguration.getApplicationHomeDir(), CONF);
- confDir.mkdir();
- File recentFile = new File(confDir, RECENT_WORKFLOWS_XML);
- if (!recentFile.isFile())
- return;
- try {
- loadRecent(recentFile);
- } catch (JDOMException|IOException e) {
- logger.warn("Could not read recent workflows from file "
- + recentFile, e);
- }
- }
-
- private void loadRecent(File recentFile) throws FileNotFoundException,
- IOException, JDOMException {
- SAXBuilder builder = new SAXBuilder();
- @SuppressWarnings("unused")
- Document document;
- try (InputStream fileInputStream = new BufferedInputStream(
- new FileInputStream(recentFile))) {
- document = builder.build(fileInputStream);
- }
- synchronized (recents) {
- recents.clear();
- //RecentDeserializer deserialiser = new RecentDeserializer();
- try {
- // recents.addAll(deserialiser.deserializeRecent(document
- // .getRootElement()));
- } catch (Exception e) {
- logger.warn("Could not read recent workflows from file "
- + recentFile, e);
- }
- }
- }
-
- protected synchronized void saveRecent() {
- File confDir = new File(applicationConfiguration.getApplicationHomeDir(), CONF);
- confDir.mkdir();
- File recentFile = new File(confDir, RECENT_WORKFLOWS_XML);
-
- try {
- saveRecent(recentFile);
-// } catch (JDOMException e) {
-// logger.warn("Could not generate XML for recent workflows to file "
-// + recentFile, e);
- } catch (IOException e) {
- logger.warn("Could not write recent workflows to file "
- + recentFile, e);
- }
- }
-
- private void saveRecent(File recentFile) throws FileNotFoundException,
- IOException {
- // RecentSerializer serializer = new RecentSerializer();
- // XMLOutputter outputter = new XMLOutputter();
-
- // Element serializedRecent;
- synchronized (recents) {
- if (recents.size() > MAX_ITEMS)
- // Remove excess entries
- recents.subList(MAX_ITEMS, recents.size()).clear();
- // serializedRecent = serializer.serializeRecent(recents);
- }
- try (OutputStream outputStream = new BufferedOutputStream(
- new FileOutputStream(recentFile))) {
- // outputter.output(serializedRecent, outputStream);
- }
- }
-
- protected void updateRecentMenuGUI() {
- int items = 0;
- menu.removeAll();
- synchronized (recents) {
- for (Recent recent : recents) {
- if (++items >= MAX_ITEMS)
- break;
- OpenRecentAction openRecentAction = new OpenRecentAction(
- recent, fileManager);
- if (fileManager.getDataflowBySource(recent.getDataflowSource()) != null)
- openRecentAction.setEnabled(false);
- // else setEnabled(true)
- JMenuItem menuItem = new JMenuItem(openRecentAction);
- if (items < 10) {
- openRecentAction.putValue(NAME, items + " "
- + openRecentAction.getValue(NAME));
- menuItem.setMnemonic(VK_0 + items);
- }
- menu.add(menuItem);
- }
- }
- menu.setEnabled(items > 0);
- menu.revalidate();
- }
-
- @SuppressWarnings("serial")
- public static class OpenRecentAction extends AbstractAction implements
- Runnable {
- private final Recent recent;
- private Component component = null;
- private final FileManager fileManager;
-
- public OpenRecentAction(Recent recent, FileManager fileManager) {
- this.recent = recent;
- this.fileManager = fileManager;
- Serializable source = recent.getDataflowSource();
- String name;
- if (source instanceof File)
- name = ((File) source).getAbsolutePath();
- else
- name = source.toString();
- this.putValue(NAME, name);
- this.putValue(SHORT_DESCRIPTION, "Open the workflow " + name);
- }
-
- @Override
- public void actionPerformed(ActionEvent e) {
- component = null;
- if (e.getSource() instanceof Component)
- component = (Component) e.getSource();
- setEnabled(false);
- new Thread(this, "Opening workflow from "
- + recent.getDataflowSource()).start();
- }
-
- /**
- * Opening workflow in separate thread
- */
- @Override
- public void run() {
- final Serializable source = recent.getDataflowSource();
- try {
- fileManager.openDataflow(recent.makefileType(), source);
- } catch (OpenException ex) {
- logger.warn("Failed to open the workflow from " + source
- + " \n", ex);
- showMessageDialog(component,
- "Failed to open the workflow from url " + source
- + " \n" + ex.getMessage(), "Error!",
- ERROR_MESSAGE);
- } finally {
- setEnabled(true);
- }
- }
- }
-
- @SuppressWarnings("serial")
- public static class Recent implements Serializable {
- private final class RecentFileType extends FileType {
- @Override
- public String getMimeType() {
- return mimeType;
- }
-
- @Override
- public String getExtension() {
- return extension;
- }
-
- @Override
- public String getDescription() {
- return "File type " + extension + " " + mimeType;
- }
- }
-
- private Serializable dataflowSource;
- private String mimeType;
- private String extension;
-
- public String getMimeType() {
- return mimeType;
- }
-
- public void setMimeType(String mimeType) {
- this.mimeType = mimeType;
- }
-
- public String getExtension() {
- return extension;
- }
-
- public void setExtension(String extension) {
- this.extension = extension;
- }
-
- public Recent() {
- }
-
- public FileType makefileType() {
- if (mimeType == null && extension == null)
- return null;
- return new RecentFileType();
- }
-
- public Recent(Serializable dataflowSource, FileType dataflowType) {
- setDataflowSource(dataflowSource);
- if (dataflowType != null) {
- setMimeType(dataflowType.getMimeType());
- setExtension(dataflowType.getExtension());
- }
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime
- * result
- + ((dataflowSource == null) ? 0 : dataflowSource.hashCode());
- result = prime * result
- + ((extension == null) ? 0 : extension.hashCode());
- result = prime * result
- + ((mimeType == null) ? 0 : mimeType.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (!(obj instanceof Recent))
- return false;
- Recent other = (Recent) obj;
-
- if (dataflowSource == null) {
- if (other.dataflowSource != null)
- return false;
- } else if (!dataflowSource.equals(other.dataflowSource))
- return false;
-
- if (extension == null) {
- if (other.extension != null)
- return false;
- } else if (!extension.equals(other.extension))
- return false;
-
- if (mimeType == null) {
- if (other.mimeType != null)
- return false;
- } else if (!mimeType.equals(other.mimeType))
- return false;
-
- return true;
- }
-
- public Serializable getDataflowSource() {
- return dataflowSource;
- }
-
- public void setDataflowSource(Serializable dataflowSource) {
- this.dataflowSource = dataflowSource;
- }
-
- @Override
- public String toString() {
- return getDataflowSource() + "";
- }
- }
-
- // TODO find new serialization
-// protected static class RecentDeserializer extends AbstractXMLDeserializer {
-// public Collection<Recent> deserializeRecent(Element el) {
-// return (Collection<Recent>) super.createBean(el, getClass()
-// .getClassLoader());
-// }
-// }
-//
-// protected static class RecentSerializer extends AbstractXMLSerializer {
-// public Element serializeRecent(List<Recent> x) throws JDOMException,
-// IOException {
-// Element beanAsElement = super.beanAsElement(x);
-// return beanAsElement;
-// }
-// }
-
- public void setApplicationConfiguration(
- ApplicationConfiguration applicationConfiguration) {
- this.applicationConfiguration = applicationConfiguration;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/bf8a7ea2/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/menu/FileSaveAllMenuAction.java
----------------------------------------------------------------------
diff --git a/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/menu/FileSaveAllMenuAction.java b/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/menu/FileSaveAllMenuAction.java
deleted file mode 100644
index 4b1f3b8..0000000
--- a/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/menu/FileSaveAllMenuAction.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 The University of Manchester
- *
- * Modifications to the initial code base are copyright of their
- * respective authors, or their employers as appropriate.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- ******************************************************************************/
-package net.sf.taverna.t2.workbench.file.impl.menu;
-
-import static net.sf.taverna.t2.workbench.file.impl.menu.FileSaveMenuSection.FILE_SAVE_SECTION_URI;
-
-import javax.swing.Action;
-
-import org.apache.taverna.ui.menu.AbstractMenuAction;
-import org.apache.taverna.workbench.edits.EditManager;
-import org.apache.taverna.workbench.file.FileManager;
-import net.sf.taverna.t2.workbench.file.impl.actions.SaveAllWorkflowsAction;
-
-public class FileSaveAllMenuAction extends AbstractMenuAction {
- private final EditManager editManager;
- private final FileManager fileManager;
-
- public FileSaveAllMenuAction(EditManager editManager,
- FileManager fileManager) {
- super(FILE_SAVE_SECTION_URI, 30);
- this.editManager = editManager;
- this.fileManager = fileManager;
- }
-
- @Override
- protected Action createAction() {
- return new SaveAllWorkflowsAction(editManager, fileManager);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/bf8a7ea2/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/menu/FileSaveAsMenuAction.java
----------------------------------------------------------------------
diff --git a/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/menu/FileSaveAsMenuAction.java b/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/menu/FileSaveAsMenuAction.java
deleted file mode 100644
index 2459870..0000000
--- a/taverna-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/menu/FileSaveAsMenuAction.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 The University of Manchester
- *
- * Modifications to the initial code base are copyright of their
- * respective authors, or their employers as appropriate.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- ******************************************************************************/
-package net.sf.taverna.t2.workbench.file.impl.menu;
-
-import static net.sf.taverna.t2.workbench.file.impl.menu.FileSaveMenuSection.FILE_SAVE_SECTION_URI;
-
-import javax.swing.Action;
-
-import org.apache.taverna.ui.menu.AbstractMenuAction;
-import org.apache.taverna.workbench.file.FileManager;
-import net.sf.taverna.t2.workbench.file.impl.actions.SaveWorkflowAsAction;
-
-public class FileSaveAsMenuAction extends AbstractMenuAction {
- private final FileManager fileManager;
-
- public FileSaveAsMenuAction(FileManager fileManager) {
- super(FILE_SAVE_SECTION_URI, 20);
- this.fileManager = fileManager;
- }
-
- @Override
- protected Action createAction() {
- return new SaveWorkflowAsAction(fileManager);
- }
-}