Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org')
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/dnd/CommonDnD.java88
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/dnd/FSDragAdapterAssistant.java3
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/DownloadFilesHandler.java82
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/MoveCopyCallback.java25
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/operations/UiExecutor.java2
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/nls/Messages.java2
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/nls/Messages.properties2
7 files changed, 110 insertions, 94 deletions
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/dnd/CommonDnD.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/dnd/CommonDnD.java
index b212938f5..ce23977a6 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/dnd/CommonDnD.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/dnd/CommonDnD.java
@@ -12,7 +12,6 @@ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.dnd;
import static java.util.Arrays.asList;
import java.io.File;
-import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.runtime.IStatus;
@@ -115,80 +114,6 @@ public class CommonDnD implements IConfirmCallback {
return status.isOK();
}
-// private ICallback getCopyCallback(final TreeViewer viewer, final String[] files, final IFSTreeNode target) {
-// return new Callback() {
-// @Override
-// protected void internalDone(Object caller, IStatus status) {
-// // mstodo handle via notifications
-// if (status.isOK()) {
-// IOpExecutor executor = new JobExecutor(getSelectionCallback(viewer, files, target));
-// executor.execute(new OpRefresh(target));
-// }
-// }
-// };
-// }
-
-// private ICallback getMoveCallback(final TreeViewer viewer, final String[] files, final IFSTreeNode target) {
-// return new Callback() {
-// @Override
-// protected void internalDone(Object caller, IStatus status) {
-// if (status.isOK()) {
-// for (String path : files) {
-// File file = new File(path);
-// if (!file.delete()) {
-// }
-// }
- // mstodo handle via notifications
-// if (successful) {
-// IRuntimeModel model = ModelManager.getRuntimeModel(target.getPeerNode());
-// IOpExecutor executor = new JobExecutor(getSelectionCallback(viewer, files, target));
-// executor.execute(new OpRefresh(model.getRoot()));
-// }
-// }
-// }
-// };
-// }
-
-// ICallback getSelectionCallback(final TreeViewer viewer, final String[] paths, final IFSTreeNode target) {
-// return new Callback() {
-// @Override
-// protected void internalDone(Object caller, IStatus status) {
-// if(status.isOK()) {
-// List<IFSTreeNode> nodes = new ArrayList<IFSTreeNode>();
-// IFSTreeNode[] children = target.getChildren(true);
-// for (String path : paths) {
-// File file = new File(path);
-// String name = file.getName();
-// for (IFSTreeNode child : children) {
-// if (name.equals(child.getName())) {
-// nodes.add(child);
-// break;
-// }
-// }
-// }
-// if (viewer != null) {
-// updateViewer(viewer, target, nodes);
-// }
-// }
-// }
-// };
-// }
-
-// protected void updateViewer(final TreeViewer viewer, final IFSTreeNode target, final List<IFSTreeNode> nodes) {
-// if (Display.getCurrent() != null) {
-// viewer.refresh(target);
-// IStructuredSelection selection = new StructuredSelection(nodes.toArray());
-// viewer.setSelection(selection, true);
-// }
-// else {
-// PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable(){
-// @Override
-// public void run() {
-// updateViewer(viewer, target, nodes);
-// }});
-// }
-// }
-
/**
* Perform the drop operation over dragged selection.
*
@@ -357,19 +282,6 @@ public class CommonDnD implements IConfirmCallback {
anEvent.data = LocalSelectionTransfer.getTransfer().getSelection();
return true;
}
- else if (FileTransfer.getInstance().isSupportedType(anEvent.dataType)) {
- IStructuredSelection selection = (IStructuredSelection) LocalSelectionTransfer.getTransfer().getSelection();
- List<IFSTreeNode> nodes = selection.toList();
- List<String> paths = new ArrayList<String>();
- for(IFSTreeNode node : nodes) {
- File file = node.getCacheFile();
- if(file.exists()) {
- paths.add(file.getAbsolutePath());
- }
- }
- if (!paths.isEmpty()) anEvent.data = paths.toArray(new String[paths.size()]);
- return !paths.isEmpty();
- }
return false;
}
}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/dnd/FSDragAdapterAssistant.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/dnd/FSDragAdapterAssistant.java
index 9163a6a39..d0d9d74eb 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/dnd/FSDragAdapterAssistant.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/dnd/FSDragAdapterAssistant.java
@@ -12,7 +12,6 @@ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.dnd;
import org.eclipse.jface.util.LocalSelectionTransfer;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.dnd.DragSourceEvent;
-import org.eclipse.swt.dnd.FileTransfer;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.ui.navigator.CommonDragAdapterAssistant;
@@ -46,7 +45,7 @@ public class FSDragAdapterAssistant extends CommonDragAdapterAssistant {
*/
@Override
public Transfer[] getSupportedTransferTypes() {
- return new Transfer[] {FileTransfer.getInstance()};
+ return new Transfer[] {};
}
/*
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/DownloadFilesHandler.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/DownloadFilesHandler.java
new file mode 100644
index 000000000..85f8e1717
--- /dev/null
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/DownloadFilesHandler.java
@@ -0,0 +1,82 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Wind River Systems, Inc. and others. 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:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tcf.te.tcf.filesystem.ui.internal.handlers;
+
+import java.io.File;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.util.List;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.URIUtil;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osgi.service.datalocation.Location;
+import org.eclipse.swt.widgets.DirectoryDialog;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode;
+import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IRuntimeModel;
+import org.eclipse.tcf.te.tcf.filesystem.ui.activator.UIPlugin;
+import org.eclipse.tcf.te.tcf.filesystem.ui.internal.operations.UiExecutor;
+import org.eclipse.tcf.te.tcf.filesystem.ui.nls.Messages;
+import org.eclipse.ui.handlers.HandlerUtil;
+/**
+ * The handler that downloads the selected files or folders to a local destination folder.
+ */
+public class DownloadFilesHandler extends AbstractHandler {
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ Shell shell = HandlerUtil.getActiveShellChecked(event);
+ DirectoryDialog dlg = new DirectoryDialog(shell);
+ dlg.setFilterPath(getFilterPath());
+ dlg.setText(Messages.DownloadFilesHandler_folderDlg_text);
+ dlg.setMessage(Messages.DownloadFilesHandler_folderDlg_message);
+
+ String destination = dlg.open();
+ if (destination == null)
+ return null;
+
+ File destinationFile = new File(destination);
+ saveFilterPath(destinationFile);
+
+ IStructuredSelection selection = (IStructuredSelection) HandlerUtil.getCurrentSelection(event);
+ List<IFSTreeNode> nodes = selection.toList();
+ IRuntimeModel peer = nodes.get(0).getRuntimeModel();
+ UiExecutor.execute(peer.operationDownload(nodes, destinationFile, new MoveCopyCallback()));
+ return null;
+ }
+
+ private String getFilterPath() {
+ String lastFolder = UIPlugin.getDefault().getDialogSettings().get(getClass().getName() + ".lastFolder"); //$NON-NLS-1$
+ if (lastFolder != null)
+ return lastFolder;
+ Location loc = Platform.getInstanceLocation();
+ if (loc != null) {
+ URL url = loc.getURL();
+ try {
+ File file = URIUtil.toFile(url.toURI());
+ if (file != null)
+ return file.getPath();
+ } catch (URISyntaxException e) {
+ }
+ }
+ return null;
+ }
+
+ private void saveFilterPath(File destinationFile) {
+ if (destinationFile != null) {
+ UIPlugin.getDefault().getDialogSettings().put(getClass().getName() + ".lastFolder", destinationFile.getPath()); //$NON-NLS-1$
+ }
+ }
+
+}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/MoveCopyCallback.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/MoveCopyCallback.java
index d7536402c..b47d4e898 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/MoveCopyCallback.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/MoveCopyCallback.java
@@ -9,6 +9,8 @@
*******************************************************************************/
package org.eclipse.tcf.te.tcf.filesystem.ui.internal.handlers;
+import java.io.File;
+
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.graphics.Image;
@@ -41,15 +43,16 @@ public class MoveCopyCallback implements IConfirmCallback {
*/
@Override
public int confirms(Object object) {
- final IFSTreeNode node = (IFSTreeNode) object;
+ final boolean isDirectory = isDirectory(object);
+ final String name = getName(object);
final int[] results = new int[1];
Display display = PlatformUI.getWorkbench().getDisplay();
display.syncExec(new Runnable() {
@Override
public void run() {
Shell parent = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
- String title = node.isDirectory() ? Messages.FSOperation_ConfirmFolderReplaceTitle : Messages.FSOperation_ConfirmFileReplace;
- String message = NLS.bind(node.isDirectory() ? Messages.FSOperation_ConfirmFolderReplaceMessage : Messages.FSOperation_ConfirmFileReplaceMessage, node.getName());
+ String title = isDirectory ? Messages.FSOperation_ConfirmFolderReplaceTitle : Messages.FSOperation_ConfirmFileReplace;
+ String message = NLS.bind(isDirectory ? Messages.FSOperation_ConfirmFolderReplaceMessage : Messages.FSOperation_ConfirmFileReplaceMessage, name);
final Image titleImage = UIPlugin.getImage(ImageConsts.REPLACE_FOLDER_CONFIRM);
MessageDialog qDialog = new MessageDialog(parent, title, null, message, MessageDialog.QUESTION, new String[] { Messages.FSOperation_ConfirmDialogYes, Messages.FSOperation_ConfirmDialogYesToAll, Messages.FSOperation_ConfirmDialogNo, Messages.FSOperation_ConfirmDialogCancel }, 0) {
@Override
@@ -63,4 +66,20 @@ public class MoveCopyCallback implements IConfirmCallback {
return results[0];
}
+ private String getName(Object object) {
+ if (object instanceof IFSTreeNode)
+ return ((IFSTreeNode) object).getName();
+ if (object instanceof File)
+ return ((File) object).getName();
+ return String.valueOf(object);
+ }
+
+ private boolean isDirectory(Object object) {
+ if (object instanceof IFSTreeNode)
+ return ((IFSTreeNode) object).isDirectory();
+ if (object instanceof File)
+ return ((File) object).isDirectory();
+ return false;
+ }
+
}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/operations/UiExecutor.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/operations/UiExecutor.java
index da365d3ae..38931ed20 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/operations/UiExecutor.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/operations/UiExecutor.java
@@ -61,7 +61,7 @@ public class UiExecutor {
}
});
} catch (InvocationTargetException e) {
- ref.set(StatusHelper.getStatus(e));
+ ref.set(StatusHelper.getStatus(e.getTargetException()));
} catch (InterruptedException e) {
return Status.CANCEL_STATUS;
}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/nls/Messages.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/nls/Messages.java
index 53f8ac980..3fd9bf9c7 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/nls/Messages.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/nls/Messages.java
@@ -114,6 +114,8 @@ public class Messages extends NLS {
public static String DeleteFilesHandler_DeleteMultipleFilesConfirmation;
public static String DeleteFilesHandler_DeleteOneFileConfirmation;
public static String DeleteFilesHandler_ConfirmDialogTitle;
+ public static String DownloadFilesHandler_folderDlg_message;
+ public static String DownloadFilesHandler_folderDlg_text;
public static String FSRenamingAssistant_NameAlreadyExists;
public static String FSRenamingAssistant_SpecifyNonEmptyName;
public static String FSRenamingAssistant_UnixIllegalCharacters;
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/nls/Messages.properties b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/nls/Messages.properties
index 89b2d4a7d..33a0fe182 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/nls/Messages.properties
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/nls/Messages.properties
@@ -36,6 +36,8 @@ DateValidator_YearOutofRange=The year is a number which is bigger than zero.
DeleteFilesHandler_ConfirmDialogTitle=Confirm Delete
DeleteFilesHandler_DeleteMultipleFilesConfirmation=Are you sure you want to delete these {0} files/folders?
DeleteFilesHandler_DeleteOneFileConfirmation=Are you sure you want to delete ''{0}''?
+DownloadFilesHandler_folderDlg_message=Select the destination folder:
+DownloadFilesHandler_folderDlg_text=Download Files
FSRenamingAssistant_NameAlreadyExists=A file/folder with the name you specified already exists\! Specify a different name.
FSRenamingAssistant_SpecifyNonEmptyName=Specify a non-empty name.
FSRenamingAssistant_UnixIllegalCharacters=File or folder name cannot contain any of the following characters:\n/

Back to the top