diff options
Diffstat (limited to 'target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse')
97 files changed, 1145 insertions, 1422 deletions
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/controls/FSNavigatorContentProvider.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/controls/FSNavigatorContentProvider.java index 00e34dac5..8246f28ee 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/controls/FSNavigatorContentProvider.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/controls/FSNavigatorContentProvider.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2014 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -11,7 +11,7 @@ package org.eclipse.tcf.te.tcf.filesystem.ui.controls; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.viewers.Viewer; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.tcf.te.tcf.filesystem.ui.activator.UIPlugin; @@ -51,8 +51,8 @@ public class FSNavigatorContentProvider extends NavigatorContentProvider { */ @Override public Object[] getChildren(Object parentElement) { - if (parentElement instanceof FSTreeNode) { - FSTreeNode node = (FSTreeNode)parentElement; + if (parentElement instanceof IFSTreeNode) { + IFSTreeNode node = (IFSTreeNode)parentElement; if (node.isFile()) return NO_ELEMENTS; } return super.getChildren(parentElement); @@ -63,8 +63,8 @@ public class FSNavigatorContentProvider extends NavigatorContentProvider { */ @Override public boolean hasChildren(final Object element) { - if (element instanceof FSTreeNode) { - FSTreeNode node = (FSTreeNode)element; + if (element instanceof IFSTreeNode) { + IFSTreeNode node = (IFSTreeNode)element; if(node.isFile()) { return false; } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/controls/FSTreeViewerSorter.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/controls/FSTreeViewerSorter.java index 2d53be057..1b72f6241 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/controls/FSTreeViewerSorter.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/controls/FSTreeViewerSorter.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2013 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -10,7 +10,7 @@ package org.eclipse.tcf.te.tcf.filesystem.ui.controls; import org.eclipse.jface.viewers.Viewer; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.tcf.te.tcf.filesystem.ui.internal.columns.FSTreeElementComparator; import org.eclipse.tcf.te.ui.trees.TreeViewerSorterCaseInsensitive; @@ -32,7 +32,7 @@ public class FSTreeViewerSorter extends TreeViewerSorterCaseInsensitive { */ @Override public int compare(Viewer viewer, Object e1, Object e2) { - if (e1 instanceof FSTreeNode && e2 instanceof FSTreeNode) { + if (e1 instanceof IFSTreeNode && e2 instanceof IFSTreeNode) { return comparator.compare(e1, e2); } return super.compare(viewer, e1, e2); diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/controls/NavigatorContentProvider.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/controls/NavigatorContentProvider.java index 04416adba..73a90afae 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/controls/NavigatorContentProvider.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/controls/NavigatorContentProvider.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2014 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -9,15 +9,12 @@ *******************************************************************************/ package org.eclipse.tcf.te.tcf.filesystem.ui.controls; -import java.util.ArrayList; -import java.util.List; - import org.eclipse.core.runtime.Assert; import org.eclipse.jface.viewers.ITreeViewerListener; import org.eclipse.jface.viewers.TreeExpansionEvent; import org.eclipse.jface.viewers.Viewer; +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.core.model.AbstractTreeNode; import org.eclipse.tcf.te.tcf.filesystem.core.model.ModelManager; import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerNode; @@ -32,17 +29,18 @@ public abstract class NavigatorContentProvider extends TreeContentProvider impl */ @Override public Object getParent(Object element) { - if (element instanceof AbstractTreeNode) { - AbstractTreeNode node = (AbstractTreeNode) element; - AbstractTreeNode parent = node.getParent(); + if (element instanceof IFSTreeNode) { + IFSTreeNode node = (IFSTreeNode) element; + IFSTreeNode parent = node.getParent(); if (parent != null) { - if (parent.isSystemRoot()) { + if (parent.isFileSystem()) { if (isRootNodeVisible()) return parent; return null; } return parent; } - if (isRootNodeVisible()) return node.peerNode; + if (isRootNodeVisible()) + return node.getPeerNode(); } return null; } @@ -61,13 +59,14 @@ public abstract class NavigatorContentProvider extends TreeContentProvider impl */ @Override public void treeExpanded(TreeExpansionEvent event) { - Object object = event.getElement(); - if(object instanceof AbstractTreeNode) { - AbstractTreeNode parent = (AbstractTreeNode) object; - if (parent.childrenQueried && !parent.childrenQueryRunning) { - parent.refreshChildren(); - } - } +// Object object = event.getElement(); +// if(object instanceof IFSTreeNode) { +// IFSTreeNode parent = (IFSTreeNode) object; +// IFSTreeNode[] children = parent.getChildren(); +// if (children == null) { +// parent.operationRefresh(false).runInJob(null); +// } +// } } /* @@ -100,55 +99,48 @@ public abstract class NavigatorContentProvider extends TreeContentProvider impl if (parentElement instanceof IPeerNode) { final IPeerNode peerNode = (IPeerNode)parentElement; IRuntimeModel model = ModelManager.getRuntimeModel(peerNode); + if (model == null) + return NO_ELEMENTS; + if (isRootNodeVisible()) { - AbstractTreeNode root = model.getRoot(); - if(!root.childrenQueried && !root.childrenQueryRunning) { - root.queryChildren(); - } + IFSTreeNode root = model.getRoot(); return new Object[] { root }; } return getChildren(model.getRoot()); - } else if (parentElement instanceof AbstractTreeNode) { - AbstractTreeNode node = (AbstractTreeNode)parentElement; - List<Object> current = new ArrayList<Object>(node.getChildren()); - if (!node.childrenQueried) { - current.add(getPending(node)); - if (!node.childrenQueryRunning) { - node.queryChildren(); - } + } else if (parentElement instanceof IFSTreeNode) { + IFSTreeNode node = (IFSTreeNode)parentElement; + if (!(node.isDirectory() || node.isFileSystem())) + return NO_ELEMENTS; + + IFSTreeNode[] children = node.getChildren(); + if (children == null) { + node.operationRefresh(false).runInJob(null); + return new Object[] {getPending(node)}; } - return current.toArray(); + return children; } return NO_ELEMENTS; } - /* (non-Javadoc) - * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object) - */ @Override public boolean hasChildren(final Object element) { Assert.isNotNull(element); - boolean hasChildren = false; - - if (element instanceof AbstractTreeNode) { - AbstractTreeNode node = (AbstractTreeNode)element; - if(node.isSystemRoot()) { - hasChildren = true; - } - else { - hasChildren = !node.childrenQueried || super.hasChildren(element); + if (element instanceof IFSTreeNode) { + IFSTreeNode node = (IFSTreeNode)element; + if (node.isFileSystem() || node.isDirectory()) { + return node.getChildren() == null || super.hasChildren(element); } + return false; } - else if (element instanceof IPeerNode) { + + if (element instanceof IPeerNode) { IPeerNode peerNode = (IPeerNode) element; IRuntimeModel model = ModelManager.getRuntimeModel(peerNode); - AbstractTreeNode root = model.getRoot(); - hasChildren = root != null ? hasChildren(root) : true; + return model != null; } - - return hasChildren; + return false; } /** diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/controls/TreeContentProvider.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/controls/TreeContentProvider.java index 3aa693cad..0957cfb96 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/controls/TreeContentProvider.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/controls/TreeContentProvider.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2014 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -9,8 +9,6 @@ *******************************************************************************/ package org.eclipse.tcf.te.tcf.filesystem.ui.controls; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; @@ -35,7 +33,7 @@ import org.eclipse.tcf.te.ui.trees.Pending; /** * The base tree content provider that defines several default methods. */ -public abstract class TreeContentProvider implements ITreeContentProvider, PropertyChangeListener { +public abstract class TreeContentProvider implements ITreeContentProvider { /** * Static reference to the return value representing no elements. @@ -75,13 +73,6 @@ public abstract class TreeContentProvider implements ITreeContentProvider, Prope return pending; } - /* - * (non-Javadoc) - * @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent) - */ - @Override - public void propertyChange(PropertyChangeEvent evt) { - } /* * (non-Javadoc) @@ -91,7 +82,6 @@ public abstract class TreeContentProvider implements ITreeContentProvider, Prope public void dispose() { for(IPropertyChangeProvider provider : providers) { provider.removePropertyChangeListener(commonViewerListener); - provider.removePropertyChangeListener(this); } commonViewerListener.cancel(); providers.clear(); @@ -144,10 +134,20 @@ public abstract class TreeContentProvider implements ITreeContentProvider, Prope */ @Override public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { + if (commonViewerListener != null) { + for (IPropertyChangeProvider provider : providers) { + provider.removePropertyChangeListener(commonViewerListener); + } + } + Assert.isTrue(viewer instanceof TreeViewer); this.viewer = (TreeViewer) viewer; this.commonViewerListener = new CommonViewerListener(this.viewer, this); peerNode = getPeerNode(newInput); + + for (IPropertyChangeProvider provider : providers) { + provider.addPropertyChangeListener(commonViewerListener); + } } protected IPeerNode getPeerNode(Object input) { @@ -168,7 +168,6 @@ public abstract class TreeContentProvider implements ITreeContentProvider, Prope if (commonViewerListener != null) { provider.addPropertyChangeListener(commonViewerListener); } - provider.addPropertyChangeListener(this); providers.add(provider); } } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/dialogs/FSFolderSelectionDialog.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/dialogs/FSFolderSelectionDialog.java index 4ce589429..4d028048b 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/dialogs/FSFolderSelectionDialog.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/dialogs/FSFolderSelectionDialog.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2014 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -38,8 +38,8 @@ import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.Shell; -import org.eclipse.tcf.te.runtime.callback.Callback; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +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.core.model.ModelManager; import org.eclipse.tcf.te.tcf.filesystem.ui.activator.UIPlugin; import org.eclipse.tcf.te.tcf.filesystem.ui.controls.FSTreeContentProvider; @@ -65,7 +65,7 @@ import org.eclipse.ui.dialogs.ISelectionStatusValidator; * ElementTreeSelectionDialog.setInput</code> to specify the peer model of the remote target. In * order to validate the destination folder, you should also specify the nodes to be moved. The file * selection dialog is of single selection. You can get the selected result by calling - * <code>getFirstResult</code>. The type of selected folder is an instance of FSTreeNode. + * <code>getFirstResult</code>. The type of selected folder is an instance of IFSTreeNode. * </p> * <p> * The following is a snippet of example code: @@ -76,17 +76,17 @@ import org.eclipse.ui.dialogs.ISelectionStatusValidator; * dialog.setMovedNodes(nodes); * if (dialog.open() == Window.OK) { * Object obj = dialog.getFirstResult(); - * Assert.isTrue(obj instanceof FSTreeNode); - * FSTreeNode folder = (FSTreeNode) obj; + * Assert.isTrue(obj instanceof IFSTreeNode); + * IFSTreeNode folder = (IFSTreeNode) obj; * // Use folder ... * } * </pre> * * @see MoveFilesHandler */ -public class FSFolderSelectionDialog extends ElementTreeSelectionDialog { +public final class FSFolderSelectionDialog extends ElementTreeSelectionDialog { // The nodes that are being moved. - private List<FSTreeNode> movedNodes; + private List<IFSTreeNode> movedNodes; private final int mode; public static final int MODE_ALL = 0; @@ -144,8 +144,8 @@ public class FSFolderSelectionDialog extends ElementTreeSelectionDialog { static class DirectoryFilter extends ViewerFilter { @Override public boolean select(Viewer viewer, Object parentElement, Object element) { - if (element instanceof FSTreeNode) { - FSTreeNode node = (FSTreeNode) element; + if (element instanceof IFSTreeNode) { + IFSTreeNode node = (IFSTreeNode) element; if(node.isFile()) return false; } return true; @@ -186,7 +186,7 @@ public class FSFolderSelectionDialog extends ElementTreeSelectionDialog { * * @param movedNodes The nodes. */ - public void setMovedNodes(List<FSTreeNode> movedNodes) { + public void setMovedNodes(List<IFSTreeNode> movedNodes) { this.movedNodes = movedNodes; } @@ -251,8 +251,8 @@ public class FSFolderSelectionDialog extends ElementTreeSelectionDialog { Iterator<Object> it = ((IStructuredSelection)sel).iterator(); while (it.hasNext()) { Object node = it.next(); - if (node instanceof FSTreeNode) { - refreshNode((FSTreeNode)node); + if (node instanceof IFSTreeNode) { + refreshNode((IFSTreeNode)node); } else { refreshModel(); @@ -265,34 +265,20 @@ public class FSFolderSelectionDialog extends ElementTreeSelectionDialog { } } - protected void refreshNode(final FSTreeNode treeNode) { - if (!treeNode.childrenQueryRunning) { - treeNode.childrenQueried = false; - treeNode.clearChildren(); - treeNode.refresh(new Callback() { - @Override - protected void internalDone(Object caller, IStatus status) { - getShell().getDisplay().asyncExec(new Runnable() { - @Override - public void run() { - getTreeViewer().refresh(treeNode, true); - getTreeViewer().setSelection(getTreeViewer().getSelection()); - } - }); - } - }); - } + protected void refreshNode(final IFSTreeNode treeNode) { + treeNode.operationRefresh(true).runInJob(null); } protected void refreshModel() { Object input = getTreeViewer().getInput(); if (input instanceof IPeerNode) { - refreshNode(ModelManager.getRuntimeModel((IPeerNode)input).getRoot()); + IRuntimeModel rtm = ModelManager.getRuntimeModel((IPeerNode)input); + if (rtm != null) + refreshNode(rtm.getRoot()); } } - private final static IStatus ok = new Status(IStatus.OK, UIPlugin.getUniqueIdentifier(), null); private final static IStatus error = new Status(IStatus.ERROR, UIPlugin.getUniqueIdentifier(), null); private final static IStatus errorNotWritable = new Status(IStatus.ERROR, UIPlugin.getUniqueIdentifier(), Messages.FSFolderSelectionDialog_notWritable_error); private final static IStatus warningNotWritable = new Status(IStatus.WARNING, UIPlugin.getUniqueIdentifier(), Messages.FSFolderSelectionDialog_notWritable_warning); @@ -307,23 +293,20 @@ public class FSFolderSelectionDialog extends ElementTreeSelectionDialog { if (selection == null || selection.length == 0) { return error; } - if (!(selection[0] instanceof FSTreeNode)) { + if (!(selection[0] instanceof IFSTreeNode)) { return error; } - FSTreeNode target = (FSTreeNode) selection[0]; + IFSTreeNode target = (IFSTreeNode) selection[0]; if (movedNodes != null) { - for (FSTreeNode node : movedNodes) { + for (IFSTreeNode node : movedNodes) { if (node == target || node.isAncestorOf(target)) { return error; } } } if(mode != MODE_ALL && !target.isWritable()) { - if (target.attr == null) { - refreshNode(target); - } return mode == MODE_ONLY_WRITABLE ? errorNotWritable : warningNotWritable; } - return ok; + return Status.OK_STATUS; } } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/dialogs/FSOpenFileDialog.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/dialogs/FSOpenFileDialog.java index 5b2629c27..e461296af 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/dialogs/FSOpenFileDialog.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/dialogs/FSOpenFileDialog.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2014 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -25,8 +25,8 @@ import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.swt.widgets.Composite; 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.core.model.FSTreeNode; import org.eclipse.tcf.te.tcf.filesystem.core.model.ModelManager; import org.eclipse.tcf.te.tcf.filesystem.ui.activator.UIPlugin; import org.eclipse.tcf.te.tcf.filesystem.ui.controls.FSTreeContentProvider; @@ -122,15 +122,15 @@ public class FSOpenFileDialog extends ElementTreeSelectionDialog { Object element = null; IRuntimeModel model = ModelManager.getRuntimeModel((IPeerNode)viewer.getInput()); if (model != null) { - FSTreeNode root = model.getRoot(); + IFSTreeNode root = model.getRoot(); ITreeContentProvider contentProvider = (ITreeContentProvider)viewer.getContentProvider(); Object[] elements = contentProvider.getElements(root); String segment = path.getDevice() != null ? path.getDevice() : path.segmentCount() > 0 ? path.segment(0) : null; if (segment != null) { for (Object elem : elements) { - if (!(elem instanceof FSTreeNode)) break; - FSTreeNode child = (FSTreeNode)elem; - String name = child.name; + if (!(elem instanceof IFSTreeNode)) break; + IFSTreeNode child = (IFSTreeNode)elem; + String name = child.getName(); if (name.endsWith("\\") || name.endsWith("/")) name = name.substring(0, name.length() - 1); //$NON-NLS-1$ //$NON-NLS-2$ boolean matches = child.isWindowsNode() ? name.equalsIgnoreCase(segment) : name.equals(segment); if (matches) { @@ -178,11 +178,11 @@ public class FSOpenFileDialog extends ElementTreeSelectionDialog { * * @return The matching file system node or <code>null</code>. */ - private FSTreeNode findRecursive(FSTreeNode parent, IPath path, int index) { + private IFSTreeNode findRecursive(IFSTreeNode parent, IPath path, int index) { Assert.isNotNull(parent); Assert.isNotNull(path); - FSTreeNode node = null; + IFSTreeNode node = null; ITreeContentProvider contentProvider = (ITreeContentProvider)viewer.getContentProvider(); Object[] elements = contentProvider.getElements(parent); @@ -196,9 +196,9 @@ public class FSOpenFileDialog extends ElementTreeSelectionDialog { String segment = path.segment(index); for (Object element : elements) { - if (!(element instanceof FSTreeNode)) break; - FSTreeNode child = (FSTreeNode)element; - String name = child.name; + if (!(element instanceof IFSTreeNode)) break; + IFSTreeNode child = (IFSTreeNode)element; + String name = child.getName(); if (name.endsWith("\\") || name.endsWith("/")) name = name.substring(0, name.length() - 1); //$NON-NLS-1$ //$NON-NLS-2$ boolean matches = child.isWindowsNode() ? name.equalsIgnoreCase(segment) : name.equals(segment); if (matches) { @@ -251,10 +251,10 @@ public class FSOpenFileDialog extends ElementTreeSelectionDialog { if (selection == null || selection.length == 0) { return error; } - if (!(selection[0] instanceof FSTreeNode)) { + if (!(selection[0] instanceof IFSTreeNode)) { return error; } - FSTreeNode target = (FSTreeNode) selection[0]; + IFSTreeNode target = (IFSTreeNode) selection[0]; if(!target.isFile()) { return error; } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/filters/HiddenFilesViewerFilter.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/filters/HiddenFilesViewerFilter.java index fcd306e6c..a2d9f8530 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/filters/HiddenFilesViewerFilter.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/filters/HiddenFilesViewerFilter.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -11,7 +11,7 @@ package org.eclipse.tcf.te.tcf.filesystem.ui.filters; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerFilter; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; /** * A filter implementation filtering hidden files or directories. @@ -24,12 +24,12 @@ public class HiddenFilesViewerFilter extends ViewerFilter { @Override public boolean select(Viewer viewer, Object parentElement, Object element) { // The element needs to be a tree node, but not a root node - if (element instanceof FSTreeNode && !((FSTreeNode)element).isRoot()) { - FSTreeNode node = (FSTreeNode) element; + if (element instanceof IFSTreeNode && !((IFSTreeNode)element).isRootDirectory()) { + IFSTreeNode node = (IFSTreeNode) element; if(node.isWindowsNode()) { return !node.isHidden(); } - return !node.name.startsWith("."); //$NON-NLS-1$ + return !node.getName().startsWith("."); //$NON-NLS-1$ } // Let pass all other elements unharmed return true; diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/filters/SystemFilesViewerFilter.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/filters/SystemFilesViewerFilter.java index fe805de7e..8335384c2 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/filters/SystemFilesViewerFilter.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/filters/SystemFilesViewerFilter.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -11,7 +11,7 @@ package org.eclipse.tcf.te.tcf.filesystem.ui.filters; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerFilter; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; /** * A filter implementation filtering system files or directories. @@ -24,9 +24,9 @@ public class SystemFilesViewerFilter extends ViewerFilter { @Override public boolean select(Viewer viewer, Object parentElement, Object element) { // The element needs to be a tree node, but not a root node - if (element instanceof FSTreeNode) { - FSTreeNode node = (FSTreeNode)element; - return !node.isSystem(); + if (element instanceof IFSTreeNode) { + IFSTreeNode node = (IFSTreeNode)element; + return !node.isSystemFile(); } // Let pass all other elements unharmed return true; diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/adapters/FSTreeNodeAdapterFactory.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/adapters/FSTreeNodeAdapterFactory.java index 6f2cf59af..2c7e59a06 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/adapters/FSTreeNodeAdapterFactory.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/adapters/FSTreeNodeAdapterFactory.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2014 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -17,7 +17,7 @@ import org.eclipse.core.runtime.Assert; import org.eclipse.core.runtime.IAdapterFactory; import org.eclipse.core.runtime.PlatformObject; import org.eclipse.jface.viewers.ILabelProvider; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.tcf.te.tcf.filesystem.ui.activator.UIPlugin; import org.eclipse.tcf.te.tcf.filesystem.ui.internal.columns.FSTreeElementLabelProvider; import org.eclipse.tcf.te.tcf.filesystem.ui.internal.search.FSTreeNodeSearchable; @@ -29,20 +29,20 @@ import org.eclipse.ui.IActionFilter; import org.eclipse.ui.IPersistableElement; /** - * The adapter factory of <code>FSTreeNode</code> over <code>IActionFilter</code> + * The adapter factory of <code>IFSTreeNode</code> over <code>IActionFilter</code> */ public class FSTreeNodeAdapterFactory implements IAdapterFactory { private static ILabelProvider nodeLabelProvider = new FSTreeElementLabelProvider(); // The fFilters map caching fFilters for FS nodes. - private Map<FSTreeNode, NodeStateFilter> filters; + private Map<IFSTreeNode, NodeStateFilter> filters; public static class FSTreeNodePeerNodeProvider extends PlatformObject implements IPeerNodeProvider { - private final FSTreeNode node; + private final IFSTreeNode node; /** * Constructor */ - public FSTreeNodePeerNodeProvider(FSTreeNode node) { + public FSTreeNodePeerNodeProvider(IFSTreeNode node) { Assert.isNotNull(node); this.node = node; } @@ -52,7 +52,7 @@ public class FSTreeNodeAdapterFactory implements IAdapterFactory { * * @return The associated file system tree node. */ - public final FSTreeNode getFSTreeNode() { + public final IFSTreeNode getFSTreeNode() { return node; } @@ -61,7 +61,7 @@ public class FSTreeNodeAdapterFactory implements IAdapterFactory { */ @Override public final IPeerNode getPeerNode() { - return node.peerNode; + return node.getPeerNode(); } } @@ -69,7 +69,7 @@ public class FSTreeNodeAdapterFactory implements IAdapterFactory { * Constructor. */ public FSTreeNodeAdapterFactory() { - this.filters = Collections.synchronizedMap(new HashMap<FSTreeNode, NodeStateFilter>()); + this.filters = Collections.synchronizedMap(new HashMap<IFSTreeNode, NodeStateFilter>()); } /* @@ -78,8 +78,8 @@ public class FSTreeNodeAdapterFactory implements IAdapterFactory { */ @Override public Object getAdapter(Object adaptableObject, Class adapterType) { - if (adaptableObject instanceof FSTreeNode) { - FSTreeNode node = (FSTreeNode) adaptableObject; + if (adaptableObject instanceof IFSTreeNode) { + IFSTreeNode node = (IFSTreeNode) adaptableObject; if (adapterType == IActionFilter.class) { NodeStateFilter filter = filters.get(node); if (filter == null) { diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/adapters/FSTreeNodeFactory.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/adapters/FSTreeNodeFactory.java index 3b3a67e01..0e1c6b4c7 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/adapters/FSTreeNodeFactory.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/adapters/FSTreeNodeFactory.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2012, 2014 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2012, 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 @@ -9,40 +9,42 @@ *******************************************************************************/ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.adapters; +import static org.eclipse.tcf.te.tcf.locator.model.ModelManager.getPeerModel; + import org.eclipse.core.runtime.IAdaptable; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.IOpExecutor; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.NullOpExecutor; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpParsePath; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.IResultOperation; +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.core.model.ModelManager; import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerNode; -import org.eclipse.tcf.te.tcf.locator.interfaces.services.IPeerModelLookupService; -import org.eclipse.tcf.te.tcf.locator.model.ModelManager; import org.eclipse.ui.IElementFactory; import org.eclipse.ui.IMemento; /** - * The element factory for FSTreeNode used to restore FSTreeNodes persisted + * The element factory for IFSTreeNode used to restore FSTreeNodes persisted * for expanded states. */ public class FSTreeNodeFactory implements IElementFactory { - /* - * (non-Javadoc) - * @see org.eclipse.ui.IElementFactory#createElement(org.eclipse.ui.IMemento) - */ @Override public IAdaptable createElement(IMemento memento) { String peerId = memento.getString("peerId"); //$NON-NLS-1$ - IPeerNode peerNode = ModelManager.getPeerModel().getService(IPeerModelLookupService.class).lkupPeerModelById(peerId); - if(peerNode != null) { - String path = memento.getString("path"); //$NON-NLS-1$ - if(path == null) { - return org.eclipse.tcf.te.tcf.filesystem.core.model.ModelManager.getRuntimeModel(peerNode).getRoot(); - } - OpParsePath op = new OpParsePath(peerNode, path); - IOpExecutor executor = new NullOpExecutor(); - IStatus status = executor.execute(op); - if(status.isOK()) { - return op.getResult(); + if (peerId == null) + return null; + + for (IPeerNode peerNode : getPeerModel().getPeerNodes()) { + if (peerNode.getPeerId().equals(peerId)) { + IRuntimeModel rtm = ModelManager.getRuntimeModel(peerNode); + if (rtm != null) { + String path = memento.getString("path"); //$NON-NLS-1$ + if (path == null) { + return rtm.getRoot(); + } + IResultOperation<IFSTreeNode> op = rtm.operationRestoreFromPath(path); + if (op.run(null).isOK()) { + return op.getResult(); + } + } + return null; } } return null; diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/adapters/FSTreeNodeLoader.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/adapters/FSTreeNodeLoader.java index e04fc7740..5f766df5f 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/adapters/FSTreeNodeLoader.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/adapters/FSTreeNodeLoader.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -12,64 +12,41 @@ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.adapters; import java.lang.reflect.InvocationTargetException; import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.exceptions.TCFException; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.NullOpExecutor; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpRefreshRoots; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.Operation; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.tcf.te.ui.interfaces.ILazyLoader; /** - * The implementation of ILazyLoader for FSTreeNode check its data availability + * The implementation of ILazyLoader for IFSTreeNode check its data availability * and load its children if not ready. */ public class FSTreeNodeLoader implements ILazyLoader { // The node to be checked. - private FSTreeNode node; + private IFSTreeNode node; /** * Constructor - * + * * @param node The file/folder node. */ - public FSTreeNodeLoader(FSTreeNode node) { + public FSTreeNodeLoader(IFSTreeNode node) { this.node = node; } - /* - * (non-Javadoc) - * @see org.eclipse.tcf.te.ui.interfaces.ILazyLoader#isDataLoaded() - */ @Override public boolean isDataLoaded() { - return node.isFile() || (node.isSystemRoot() || node.isDirectory()) && node.childrenQueried; + return node.getChildren() != null; } - /* - * (non-Javadoc) - * @see org.eclipse.tcf.te.ui.interfaces.ILazyLoader#loadData(org.eclipse.core.runtime.IProgressMonitor) - */ @Override public void loadData(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { - try { - if(node.isFile()) return; - if (node.isSystemRoot()) { - new NullOpExecutor().execute(new OpRefreshRoots(node)); - } - else { - new Operation().getChildren(node); - } - } - catch (TCFException e) { - throw new InvocationTargetException(e); - } + node.operationRefresh(false).run(monitor); } - /* - * (non-Javadoc) - * @see org.eclipse.tcf.te.ui.interfaces.ILazyLoader#isLeaf() - */ @Override public boolean isLeaf() { - return node.isFile(); + IFSTreeNode[] children = node.getChildren(); + if (children != null) { + return children.length == 0; + } + return node.isFile(); } } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/adapters/NodeStateFilter.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/adapters/NodeStateFilter.java index 1ca440246..528fe7c62 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/adapters/NodeStateFilter.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/adapters/NodeStateFilter.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2013 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -12,18 +12,18 @@ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.adapters; import java.util.List; import org.eclipse.core.runtime.Assert; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpClipboard; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.tcf.te.tcf.filesystem.core.model.CacheState; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; import org.eclipse.tcf.te.tcf.filesystem.ui.activator.UIPlugin; +import org.eclipse.tcf.te.tcf.filesystem.ui.internal.operations.FsClipboard; import org.eclipse.ui.IActionFilter; /** - * This action filter wraps an FSTreeNode and test its attribute of "cache.state". + * This action filter wraps an IFSTreeNode and test its attribute of "cache.state". * It serves as the expression filter of decorations of Target Explorer. */ public class NodeStateFilter implements IActionFilter { - private FSTreeNode node; + private IFSTreeNode node; /** * Constructor. @@ -31,7 +31,7 @@ public class NodeStateFilter implements IActionFilter { * @param node * The wrapped tree node. Must not be <code>null</code>. */ - public NodeStateFilter(FSTreeNode node) { + public NodeStateFilter(IFSTreeNode node) { Assert.isNotNull(node); this.node = node; } @@ -50,11 +50,11 @@ public class NodeStateFilter implements IActionFilter { return value.equals(state.name()); } else if (name.equals("edit.cut")) { //$NON-NLS-1$ - OpClipboard cb = UIPlugin.getClipboard(); + FsClipboard cb = UIPlugin.getClipboard(); if (!cb.isEmpty()) { if (cb.isCutOp()) { - List<FSTreeNode> files = cb.getFiles(); - for (FSTreeNode file : files) { + List<IFSTreeNode> files = cb.getFiles(); + for (IFSTreeNode file : files) { if (node == file) return true; } } @@ -63,12 +63,12 @@ public class NodeStateFilter implements IActionFilter { else if (name.equals("hidden")) { //$NON-NLS-1$ if (value == null) value = "true"; //$NON-NLS-1$ boolean result = false; - if (!node.isRoot()) { + if (!node.isRootDirectory()) { if (node.isWindowsNode()) { result = node.isHidden(); } else { - result = node.name.startsWith("."); //$NON-NLS-1$ + result = node.getName().startsWith("."); //$NON-NLS-1$ } } return Boolean.toString(result).equals(value); diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/adapters/PersistableNode.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/adapters/PersistableNode.java index 8cc6698d4..0366e967c 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/adapters/PersistableNode.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/adapters/PersistableNode.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2012, 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 @@ -9,23 +9,23 @@ *******************************************************************************/ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.adapters; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.ui.IMemento; import org.eclipse.ui.IPersistableElement; /** - * The adapter class of FSTreeNode for IPersistableElement, used to - * persist an FSTreeNode. + * The adapter class of IFSTreeNode for IPersistableElement, used to + * persist an IFSTreeNode. */ public class PersistableNode implements IPersistableElement { // The node to be persisted. - private FSTreeNode node; + private IFSTreeNode node; /** * Create an instance. - * + * * @param node The node to be persisted. */ - public PersistableNode(FSTreeNode node) { + public PersistableNode(IFSTreeNode node) { this.node = node; } @@ -35,9 +35,9 @@ public class PersistableNode implements IPersistableElement { */ @Override public void saveState(IMemento memento) { - memento.putString("peerId", node.peerNode.getPeerId()); //$NON-NLS-1$ + memento.putString("peerId", node.getPeerNode().getPeerId()); //$NON-NLS-1$ String path = null; - if (!node.isSystemRoot()) path = node.getLocation(); + if (!node.isFileSystem()) path = node.getLocation(); if (path != null) memento.putString("path", path); //$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/autosave/SaveAllListener.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/autosave/SaveAllListener.java index 74ec4d7d8..139f28625 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/autosave/SaveAllListener.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/autosave/SaveAllListener.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2013 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -21,13 +21,9 @@ import org.eclipse.core.commands.NotHandledException; import org.eclipse.core.filesystem.EFS; import org.eclipse.core.filesystem.IFileStore; import org.eclipse.core.runtime.NullProgressMonitor; -import org.eclipse.core.runtime.SafeRunner; -import org.eclipse.jface.util.SafeRunnable; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.IOpExecutor; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.NullOpExecutor; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpParsePath; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpUpload; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.IResultOperation; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.model.ModelManager; import org.eclipse.tcf.te.tcf.filesystem.ui.activator.UIPlugin; import org.eclipse.tcf.te.tcf.filesystem.ui.internal.operations.UiExecutor; import org.eclipse.ui.IEditorInput; @@ -44,12 +40,12 @@ import org.eclipse.ui.handlers.HandlerUtil; */ public class SaveAllListener implements IExecutionListener { // Dirty nodes that should be saved and synchronized. - List<FSTreeNode> fDirtyNodes; + List<IFSTreeNode> fDirtyNodes; /** * Create the listener listening to command "SAVE ALL". */ public SaveAllListener() { - this.fDirtyNodes = new ArrayList<FSTreeNode>(); + this.fDirtyNodes = new ArrayList<IFSTreeNode>(); } /* (non-Javadoc) @@ -59,29 +55,15 @@ public class SaveAllListener implements IExecutionListener { public void postExecuteSuccess(String commandId, Object returnValue) { if (!fDirtyNodes.isEmpty()) { if (UIPlugin.isAutoSaving()) { - FSTreeNode[] nodes = fDirtyNodes.toArray(new FSTreeNode[fDirtyNodes.size()]); - IOpExecutor executor = new UiExecutor(); - executor.execute(new OpUpload(nodes)); - } - else { - SafeRunner.run(new SafeRunnable(){ - @Override - public void handleException(Throwable e) { - // Ignore exception - } - @Override - public void run() throws Exception { - for (FSTreeNode dirtyNode : fDirtyNodes) { - dirtyNode.refresh(); - } - }}); + UiExecutor.execute(ModelManager.operationUpload(fDirtyNodes)); + } else { + for (IFSTreeNode dirtyNode : fDirtyNodes) { + dirtyNode.operationRefresh(false).runInJob(null); + } } } } - /* (non-Javadoc) - * @see org.eclipse.core.commands.IExecutionListener#preExecute(java.lang.String, org.eclipse.core.commands.ExecutionEvent) - */ @Override public void preExecute(String commandId, ExecutionEvent event) { fDirtyNodes.clear(); @@ -92,7 +74,7 @@ public class SaveAllListener implements IExecutionListener { IEditorPart[] editors = page.getDirtyEditors(); for (IEditorPart editor : editors) { IEditorInput input = editor.getEditorInput(); - FSTreeNode node = null; + IFSTreeNode node = null; if (input instanceof IURIEditorInput) { //Get the file that is being edited. IURIEditorInput fileInput = (IURIEditorInput) input; @@ -102,15 +84,15 @@ public class SaveAllListener implements IExecutionListener { File localFile = store.toLocalFile(0, new NullProgressMonitor()); if (localFile != null) { // Get the file's mapped FSTreeNode. - OpParsePath parser = new OpParsePath(localFile.getCanonicalPath()); - new NullOpExecutor().execute(parser); + IResultOperation<IFSTreeNode> parser = ModelManager.operationRestoreFromPath(localFile.getCanonicalPath()); + parser.run(null); node = parser.getResult(); if (node != null) { // If it is a modified node, add it to the dirty node list. fDirtyNodes.add(node); } } - }catch(Exception e){} + } catch(Exception e){} } } } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/autosave/SaveListener.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/autosave/SaveListener.java index 670beb8fb..ad75ae799 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/autosave/SaveListener.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/autosave/SaveListener.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -21,11 +21,9 @@ import org.eclipse.core.filesystem.IFileStore; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.SafeRunner; import org.eclipse.jface.util.SafeRunnable; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.IOpExecutor; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.NullOpExecutor; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpParsePath; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpUpload; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.IResultOperation; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.model.ModelManager; import org.eclipse.tcf.te.tcf.filesystem.ui.activator.UIPlugin; import org.eclipse.tcf.te.tcf.filesystem.ui.internal.operations.UiExecutor; import org.eclipse.ui.IEditorInput; @@ -38,7 +36,7 @@ import org.eclipse.ui.handlers.HandlerUtil; */ public class SaveListener implements IExecutionListener { // Dirty node that should be committed or merged. - FSTreeNode dirtyNode; + IFSTreeNode dirtyNode; /** * Create a SaveListener listening to command "SAVE". @@ -53,8 +51,7 @@ public class SaveListener implements IExecutionListener { public void postExecuteSuccess(String commandId, Object returnValue) { if (dirtyNode != null) { if (UIPlugin.isAutoSaving()) { - IOpExecutor executor = new UiExecutor(); - executor.execute(new OpUpload(dirtyNode)); + UiExecutor.execute(dirtyNode.operationUploadContent(dirtyNode.getCacheFile())); } else { SafeRunner.run(new SafeRunnable(){ @@ -64,7 +61,8 @@ public class SaveListener implements IExecutionListener { } @Override public void run() throws Exception { - if (dirtyNode != null) dirtyNode.refresh(); + if (dirtyNode != null) + dirtyNode.operationRefresh(false).runInJob(null); } }); } @@ -85,8 +83,8 @@ public class SaveListener implements IExecutionListener { IFileStore store = EFS.getStore(uri); File localFile = store.toLocalFile(0, new NullProgressMonitor()); if (localFile != null) { - OpParsePath parser = new OpParsePath(localFile.getCanonicalPath()); - new NullOpExecutor().execute(parser); + IResultOperation<IFSTreeNode> parser = ModelManager.operationRestoreFromPath(localFile.getCanonicalPath()); + parser.run(null); dirtyNode = parser.getResult(); } }catch(Exception e){ diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/celleditor/FSCellModifier.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/celleditor/FSCellModifier.java index b1da8c4ad..b76b4f015 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/celleditor/FSCellModifier.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/celleditor/FSCellModifier.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -12,11 +12,8 @@ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.celleditor; import org.eclipse.core.runtime.Assert; import org.eclipse.jface.viewers.ICellModifier; import org.eclipse.swt.widgets.Item; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.IOpExecutor; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.JobExecutor; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpRename; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; -import org.eclipse.tcf.te.tcf.filesystem.ui.internal.handlers.RenameCallback; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.ui.internal.operations.UiExecutor; /** * FSCellModifier is an <code>ICellModifier</code> of the file system tree of the target explorer. @@ -38,9 +35,9 @@ public class FSCellModifier implements ICellModifier { if (element instanceof Item) { element = ((Item) element).getData(); } - if (element instanceof FSTreeNode) { - FSTreeNode node = (FSTreeNode) element; - if (!node.isRoot()) { + if (element instanceof IFSTreeNode) { + IFSTreeNode node = (IFSTreeNode) element; + if (!node.isRootDirectory()) { return node.isWindowsNode() && !node.isReadOnly() || !node.isWindowsNode() && node.isWritable(); } } @@ -58,9 +55,9 @@ public class FSCellModifier implements ICellModifier { if (element instanceof Item) { element = ((Item) element).getData(); } - if (element instanceof FSTreeNode) { - FSTreeNode node = (FSTreeNode) element; - return node.name; + if (element instanceof IFSTreeNode) { + IFSTreeNode node = (IFSTreeNode) element; + return node.getName(); } } return null; @@ -77,13 +74,11 @@ public class FSCellModifier implements ICellModifier { if (element instanceof Item) { element = ((Item) element).getData(); } - if (element instanceof FSTreeNode) { - FSTreeNode node = (FSTreeNode) element; + if (element instanceof IFSTreeNode) { + IFSTreeNode node = (IFSTreeNode) element; Assert.isTrue(value != null && value instanceof String); String newName = (String) value; - // Rename the node with the new name using an FSRename. - IOpExecutor executor = new JobExecutor(new RenameCallback()); - executor.execute(new OpRename(node, newName)); + UiExecutor.execute(node.operationRename(newName)); } } } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/celleditor/FSCellValidator.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/celleditor/FSCellValidator.java index 85b3de181..4bb211780 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/celleditor/FSCellValidator.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/celleditor/FSCellValidator.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -9,13 +9,11 @@ *******************************************************************************/ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.celleditor; -import java.util.List; - import org.eclipse.core.runtime.Assert; import org.eclipse.jface.viewers.ICellEditorValidator; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.TreeViewer; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.tcf.te.tcf.filesystem.ui.nls.Messages; /** @@ -48,12 +46,12 @@ public class FSCellValidator implements ICellEditorValidator { public String isValid(Object value) { IStructuredSelection selection = (IStructuredSelection) viewer.getSelection(); Object element = selection.getFirstElement(); - Assert.isTrue(element instanceof FSTreeNode); - FSTreeNode node = (FSTreeNode) element; + Assert.isTrue(element instanceof IFSTreeNode); + IFSTreeNode node = (IFSTreeNode) element; if (value == null) return Messages.FSRenamingAssistant_SpecifyNonEmptyName; String text = value.toString().trim(); if (text.length() == 0) return Messages.FSRenamingAssistant_SpecifyNonEmptyName; - if (hasChild(node, text)) { + if (hasSibbling(node, text)) { return Messages.FSRenamingAssistant_NameAlreadyExists; } String formatRegex = node.isWindowsNode() ? WIN_FILENAME_REGEX : UNIX_FILENAME_REGEX; @@ -69,13 +67,19 @@ public class FSCellValidator implements ICellEditorValidator { * @param name The name. * @return true if it has a child with the name. */ - private boolean hasChild(FSTreeNode folder, String name) { - List<FSTreeNode> nodes = folder.getParent().getChildren(); - for (FSTreeNode node : nodes) { + private boolean hasSibbling(IFSTreeNode folder, String name) { + IFSTreeNode[] nodes = folder.getParent().getChildren(); + if (nodes == null) { + return false; + } + for (IFSTreeNode node : nodes) { if (node.isWindowsNode()) { - if (node.name.equalsIgnoreCase(name)) return true; + if (node.getName().equalsIgnoreCase(name)) { + return true; + } + } else if (node.getName().equals(name)) { + return true; } - else if (node.name.equals(name)) return true; } return false; } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/AccessTimeComparator.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/AccessTimeComparator.java index 29374e19c..343e2aba7 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/AccessTimeComparator.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/AccessTimeComparator.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -9,7 +9,7 @@ *******************************************************************************/ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.columns; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; /** * The comparator for the tree column "Date Accessed". @@ -19,12 +19,12 @@ public class AccessTimeComparator extends FSTreeNodeComparator { /* * (non-Javadoc) - * @see org.eclipse.tcf.te.tcf.filesystem.internal.columns.FSTreeNodeComparator#doCompare(org.eclipse.tcf.te.tcf.filesystem.model.FSTreeNode, org.eclipse.tcf.te.tcf.filesystem.model.FSTreeNode) + * @see org.eclipse.tcf.te.tcf.filesystem.internal.columns.FSTreeNodeComparator#doCompare(org.eclipse.tcf.te.tcf.filesystem.model.IFSTreeNode, org.eclipse.tcf.te.tcf.filesystem.model.IFSTreeNode) */ @Override - public int doCompare(FSTreeNode node1, FSTreeNode node2) { - long atime1 = node1.attr != null ? node1.attr.atime : 0; - long atime2 = node2.attr != null ? node2.attr.atime : 0; + public int doCompare(IFSTreeNode node1, IFSTreeNode node2) { + long atime1 = node1.getAccessTime(); + long atime2 = node2.getAccessTime(); return atime1 < atime2 ? -1 : (atime1 > atime2 ? 1 : 0); } } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/AccessTimeLabelProvider.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/AccessTimeLabelProvider.java index ab84b5d73..68bc0cc85 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/AccessTimeLabelProvider.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/AccessTimeLabelProvider.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -13,7 +13,7 @@ import java.text.SimpleDateFormat; import java.util.Date; import org.eclipse.jface.viewers.LabelProvider; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; /** * The label provider for the tree column "Date Accessed". @@ -26,11 +26,12 @@ public class AccessTimeLabelProvider extends LabelProvider { */ @Override public String getText(Object element) { - if (element instanceof FSTreeNode) { - FSTreeNode node = (FSTreeNode) element; - if (node.attr != null) { + if (element instanceof IFSTreeNode) { + IFSTreeNode node = (IFSTreeNode) element; + long atime = node.getAccessTime(); + if (atime != 0) { SimpleDateFormat dateFormat = new SimpleDateFormat("M/d/yyyy h:mm aa"); //$NON-NLS-1$ - return dateFormat.format(new Date(node.attr.atime)); + return dateFormat.format(new Date(atime)); } } return ""; //$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/columns/CacheFileImageUpdater.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/CacheFileImageUpdater.java index 24f70fb77..2d1286bfa 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/CacheFileImageUpdater.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/CacheFileImageUpdater.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2012, 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 @@ -11,8 +11,8 @@ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.columns; import java.io.File; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.utils.CacheManager; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.model.ModelManager; /** * The image update adapter that updates the images of the file which @@ -21,33 +21,33 @@ import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; public class CacheFileImageUpdater implements ImageUpdateAdapter { /* * (non-Javadoc) - * @see org.eclipse.tcf.te.tcf.filesystem.internal.columns.ImageUpdateAdapter#getImageKey(org.eclipse.tcf.te.tcf.filesystem.model.FSTreeNode) + * @see org.eclipse.tcf.te.tcf.filesystem.internal.columns.ImageUpdateAdapter#getImageKey(org.eclipse.tcf.te.tcf.filesystem.model.IFSTreeNode) */ @Override - public String getImageKey(FSTreeNode node) { + public String getImageKey(IFSTreeNode node) { return node.getLocationURL().toExternalForm(); } /* * (non-Javadoc) - * @see org.eclipse.tcf.te.tcf.filesystem.internal.columns.ImageUpdateAdapter#getMirrorFile(org.eclipse.tcf.te.tcf.filesystem.model.FSTreeNode) + * @see org.eclipse.tcf.te.tcf.filesystem.internal.columns.ImageUpdateAdapter#getMirrorFile(org.eclipse.tcf.te.tcf.filesystem.model.IFSTreeNode) */ @Override - public File getMirrorFile(FSTreeNode node) { - return CacheManager.getCacheFile(node); + public File getMirrorFile(IFSTreeNode node) { + return node.getCacheFile(); } /* * (non-Javadoc) - * @see org.eclipse.tcf.te.tcf.filesystem.internal.columns.ImageUpdateAdapter#getImgFile(org.eclipse.tcf.te.tcf.filesystem.model.FSTreeNode) + * @see org.eclipse.tcf.te.tcf.filesystem.internal.columns.ImageUpdateAdapter#getImgFile(org.eclipse.tcf.te.tcf.filesystem.model.IFSTreeNode) */ @Override - public File getImageFile(FSTreeNode node) { - File cacheFile = CacheManager.getCacheFile(node); + public File getImageFile(IFSTreeNode node) { + File cacheFile = node.getCacheFile(); File parentDir = cacheFile.getParentFile(); if (!parentDir.exists() && !parentDir.mkdirs()) { - parentDir = CacheManager.getCacheRoot(); + parentDir = ModelManager.getCacheRoot(); } - return new File(parentDir, node.name + ".png"); //$NON-NLS-1$ + return new File(parentDir, node.getName() + ".png"); //$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/columns/DefaultImageProvider.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/DefaultImageProvider.java index 2f3b78a81..07bc7e7b5 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/DefaultImageProvider.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/DefaultImageProvider.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2012, 2014 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2012, 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 @@ -11,7 +11,7 @@ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.columns; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.swt.graphics.Image; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.tcf.te.tcf.filesystem.ui.activator.UIPlugin; import org.eclipse.tcf.te.tcf.filesystem.ui.internal.ImageConsts; import org.eclipse.ui.IEditorRegistry; @@ -20,7 +20,7 @@ import org.eclipse.ui.PlatformUI; /** * The default implementation of ImageProvider, defining the images - * based on predefined images based on the node simulator. + * based on predefined images based on the node simulator. */ public class DefaultImageProvider implements ImageProvider { // The editor registry used to search a file's image. @@ -28,14 +28,14 @@ public class DefaultImageProvider implements ImageProvider { /* * (non-Javadoc) - * @see org.eclipse.tcf.te.tcf.filesystem.internal.columns.ImageProvider#getImage(org.eclipse.tcf.te.tcf.filesystem.model.FSTreeNode) + * @see org.eclipse.tcf.te.tcf.filesystem.internal.columns.ImageProvider#getImage(org.eclipse.tcf.te.tcf.filesystem.model.IFSTreeNode) */ @Override - public Image getImage(FSTreeNode node) { - if (node.isSystemRoot()) { + public Image getImage(IFSTreeNode node) { + if (node.isFileSystem()) { return UIPlugin.getImage(ImageConsts.ROOT); } - else if (node.isRoot()) { + else if (node.isRootDirectory()) { return UIPlugin.getImage(ImageConsts.ROOT_DRIVE); } else if (node.isDirectory()) { @@ -50,13 +50,13 @@ public class DefaultImageProvider implements ImageProvider { /** * Get a predefined image for the tree node. These images are retrieved from * editor registry. - * + * * @param node The file tree node. * @return The editor image for this simulator. */ - protected Image getPredefinedImage(FSTreeNode node) { + protected Image getPredefinedImage(IFSTreeNode node) { Image image; - String key = node.name; + String key = node.getName(); image = UIPlugin.getImage(key); if (image == null) { ImageDescriptor descriptor = getEditorRegistry().getImageDescriptor(key); diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/FSTreeElementComparator.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/FSTreeElementComparator.java index 5ad79dca1..7be26ef0e 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/FSTreeElementComparator.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/FSTreeElementComparator.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -9,7 +9,7 @@ *******************************************************************************/ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.columns; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; /** * The comparator for the tree column "name". @@ -19,12 +19,12 @@ public class FSTreeElementComparator extends FSTreeNodeComparator { /* * (non-Javadoc) - * @see org.eclipse.tcf.te.tcf.filesystem.internal.columns.FSTreeNodeComparator#doCompare(org.eclipse.tcf.te.tcf.filesystem.model.FSTreeNode, org.eclipse.tcf.te.tcf.filesystem.model.FSTreeNode) + * @see org.eclipse.tcf.te.tcf.filesystem.internal.columns.FSTreeNodeComparator#doCompare(org.eclipse.tcf.te.tcf.filesystem.model.IFSTreeNode, org.eclipse.tcf.te.tcf.filesystem.model.IFSTreeNode) */ @Override - public int doCompare(FSTreeNode node1, FSTreeNode node2) { - String name1 = node1.name; - String name2 = node2.name; + public int doCompare(IFSTreeNode node1, IFSTreeNode node2) { + String name1 = node1.getName(); + String name2 = node2.getName(); if (name1 != null && name2 != null) { if (name1.startsWith(".") && !name2.startsWith(".")) return -1; //$NON-NLS-1$ //$NON-NLS-2$ if (!name1.startsWith(".") && name2.startsWith(".")) return 1; //$NON-NLS-1$ //$NON-NLS-2$ diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/FSTreeElementLabelProvider.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/FSTreeElementLabelProvider.java index 3ae7d9ae4..f9c4c993a 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/FSTreeElementLabelProvider.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/FSTreeElementLabelProvider.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2014 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -12,7 +12,7 @@ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.columns; import org.eclipse.swt.graphics.Image; import org.eclipse.tcf.te.runtime.model.interfaces.IModelNode; import org.eclipse.tcf.te.runtime.utils.Host; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.tcf.te.tcf.filesystem.ui.activator.UIPlugin; import org.eclipse.tcf.te.ui.trees.PendingAwareLabelProvider; @@ -41,8 +41,8 @@ public class FSTreeElementLabelProvider extends PendingAwareLabelProvider { */ @Override public String getText(Object element) { - if (element instanceof FSTreeNode) { - return ((FSTreeNode) element).name; + if (element instanceof IFSTreeNode) { + return ((IFSTreeNode) element).getName(); } else if (element instanceof IModelNode) { return ((IModelNode)element).getName(); @@ -57,8 +57,8 @@ public class FSTreeElementLabelProvider extends PendingAwareLabelProvider { */ @Override public Image getImage(Object element) { - if (element instanceof FSTreeNode) { - FSTreeNode node = (FSTreeNode) element; + if (element instanceof IFSTreeNode) { + IFSTreeNode node = (IFSTreeNode) element; return imgProvider.getImage(node); } else if (element instanceof IModelNode) { diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/FSTreeNodeComparator.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/FSTreeNodeComparator.java index 4aaad28d0..d9fea2ab4 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/FSTreeNodeComparator.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/FSTreeNodeComparator.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2013 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -12,7 +12,7 @@ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.columns; import java.io.Serializable; import java.util.Comparator; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; /** * The base comparator for all the file system tree column. @@ -26,30 +26,19 @@ public abstract class FSTreeNodeComparator implements Comparator<Object>, Serial */ @Override public final int compare(Object o1, Object o2) { - if (!(o1 instanceof FSTreeNode) || !(o2 instanceof FSTreeNode)) return 0; + if (!(o1 instanceof IFSTreeNode) || !(o2 instanceof IFSTreeNode)) + return 0; - FSTreeNode node1 = (FSTreeNode)o1; - FSTreeNode node2 = (FSTreeNode)o2; - - // Get the type labels - String type1 = node1.type; - String type2 = node2.type; + IFSTreeNode node1 = (IFSTreeNode)o1; + IFSTreeNode node2 = (IFSTreeNode)o2; // Group directories and files always together before sorting by name - if ((node1.isRoot() || node1.isDirectory()) && !(node2.isRoot() || node2.isDirectory())) { - return -1; - } - - if ((node2.isRoot() || node2.isDirectory()) && !(node1.isRoot() || node1.isDirectory())) { - return 1; - } - - // If the nodes are of the same type and one entry starts - // with a '.', it comes before the one without a '.' - if (type1 != null && type2 != null && type1.equals(type2)) { - return doCompare(node1, node2); - } - return 0; + boolean d1 = node1.isDirectory(); + boolean d2 = node2.isDirectory(); + if (d1 != d2) + return d1 ? -1 : 1; + + return doCompare(node1, node2); } /** @@ -59,5 +48,5 @@ public abstract class FSTreeNodeComparator implements Comparator<Object>, Serial * @param node2 The second node. * @return The comparison result. */ - public abstract int doCompare(FSTreeNode node1, FSTreeNode node2); + public abstract int doCompare(IFSTreeNode node1, IFSTreeNode node2); } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/FileExtBasedImageUpdater.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/FileExtBasedImageUpdater.java index 90ca5dbe7..c1fd7e4d9 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/FileExtBasedImageUpdater.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/FileExtBasedImageUpdater.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2012, 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 @@ -12,7 +12,7 @@ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.columns; import java.io.File; import java.io.IOException; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; /** * The image update adapter that updates the images of the file which does @@ -21,33 +21,33 @@ import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; public class FileExtBasedImageUpdater implements ImageUpdateAdapter { // The label provider update daemon private LabelProviderUpdateDaemon updateDaemon; - + /** * Create an instance with the specified daemon. - * + * * @param daemon The label provider update daemon. */ public FileExtBasedImageUpdater(LabelProviderUpdateDaemon daemon) { this.updateDaemon = daemon; } - + /** * Get the node's file extension or null if there is no extension. - * + * * @param node The file tree node. * @return The file's extension or null. */ - private String getFileExt(FSTreeNode node) { - String name = node.name; + private String getFileExt(IFSTreeNode node) { + String name = node.getName(); String ext = "noext"; //$NON-NLS-1$ int index = name.lastIndexOf("."); //$NON-NLS-1$ if (index != -1) ext = name.substring(index + 1); return ext; } - + /** * Get the directory to store the temporary mirror files. - * + * * @return The directory to contain the mirror files. */ private File getMirrorDir() { @@ -61,20 +61,20 @@ public class FileExtBasedImageUpdater implements ImageUpdateAdapter { /* * (non-Javadoc) - * @see org.eclipse.tcf.te.tcf.filesystem.internal.columns.ImageUpdateAdapter#getImageKey(org.eclipse.tcf.te.tcf.filesystem.model.FSTreeNode) + * @see org.eclipse.tcf.te.tcf.filesystem.internal.columns.ImageUpdateAdapter#getImageKey(org.eclipse.tcf.te.tcf.filesystem.model.IFSTreeNode) */ @Override - public String getImageKey(FSTreeNode node) { + public String getImageKey(IFSTreeNode node) { String ext = getFileExt(node); return "EXT_IMAGE@" + ext; //$NON-NLS-1$ } /* * (non-Javadoc) - * @see org.eclipse.tcf.te.tcf.filesystem.internal.columns.ImageUpdateAdapter#getMirrorFile(org.eclipse.tcf.te.tcf.filesystem.model.FSTreeNode) + * @see org.eclipse.tcf.te.tcf.filesystem.internal.columns.ImageUpdateAdapter#getMirrorFile(org.eclipse.tcf.te.tcf.filesystem.model.IFSTreeNode) */ @Override - public File getMirrorFile(FSTreeNode node) { + public File getMirrorFile(IFSTreeNode node) { String ext = getFileExt(node); File mrrDir = getMirrorDir(); File file = new File(mrrDir, "mirror" + "." + ext); //$NON-NLS-1$ //$NON-NLS-2$ @@ -90,10 +90,10 @@ public class FileExtBasedImageUpdater implements ImageUpdateAdapter { /* * (non-Javadoc) - * @see org.eclipse.tcf.te.tcf.filesystem.internal.columns.ImageUpdateAdapter#getImgFile(org.eclipse.tcf.te.tcf.filesystem.model.FSTreeNode) + * @see org.eclipse.tcf.te.tcf.filesystem.internal.columns.ImageUpdateAdapter#getImgFile(org.eclipse.tcf.te.tcf.filesystem.model.IFSTreeNode) */ @Override - public File getImageFile(FSTreeNode node) { + public File getImageFile(IFSTreeNode node) { String ext = getFileExt(node); return updateDaemon.getTempImg(ext); } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/FileTypeComparator.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/FileTypeComparator.java index 8b53a6bed..2cd986ee6 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/FileTypeComparator.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/FileTypeComparator.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2014 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -9,7 +9,7 @@ *******************************************************************************/ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.columns; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; /** * The comparator for the tree column "simulator". @@ -19,12 +19,12 @@ public class FileTypeComparator extends FSTreeNodeComparator { /* * (non-Javadoc) - * @see org.eclipse.tcf.te.tcf.filesystem.internal.columns.FSTreeNodeComparator#doCompare(org.eclipse.tcf.te.tcf.filesystem.model.FSTreeNode, org.eclipse.tcf.te.tcf.filesystem.model.FSTreeNode) + * @see org.eclipse.tcf.te.tcf.filesystem.internal.columns.FSTreeNodeComparator#doCompare(org.eclipse.tcf.te.tcf.filesystem.model.IFSTreeNode, org.eclipse.tcf.te.tcf.filesystem.model.IFSTreeNode) */ @Override - public int doCompare(FSTreeNode node1, FSTreeNode node2) { - String type1 = node1.getFileType(); - String type2 = node2.getFileType(); + public int doCompare(IFSTreeNode node1, IFSTreeNode node2) { + String type1 = node1.getFileTypeLabel(); + String type2 = node2.getFileTypeLabel(); return type1.compareTo(type2); } } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/FileTypeLabelProvider.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/FileTypeLabelProvider.java index d97fa3d31..32a2feaa1 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/FileTypeLabelProvider.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/FileTypeLabelProvider.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2014 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -10,22 +10,22 @@ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.columns; import org.eclipse.jface.viewers.LabelProvider; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; /** * The label provider for the tree column "simulator". */ public class FileTypeLabelProvider extends LabelProvider { - + /* * (non-Javadoc) * @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object) */ @Override public String getText(Object element) { - if (element instanceof FSTreeNode) { - FSTreeNode node = (FSTreeNode) element; - return node.getFileType(); + if (element instanceof IFSTreeNode) { + IFSTreeNode node = (IFSTreeNode) element; + return node.getFileTypeLabel(); } return super.getText(element); } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/ImageProvider.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/ImageProvider.java index 9ec98b0c8..68d83c05e 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/ImageProvider.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/ImageProvider.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2012, 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 @@ -10,19 +10,19 @@ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.columns; import org.eclipse.swt.graphics.Image; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; /** * An image provider provides platform specific images for each files/folders. - * It is used by FSTreeElementLabelProvider to provide the images of a file + * It is used by FSTreeElementLabelProvider to provide the images of a file * node. */ public interface ImageProvider { /** * Get the image display for the specified file node. - * + * * @param node The file node. * @return The image that represents the file node. */ - Image getImage(FSTreeNode node); + Image getImage(IFSTreeNode node); } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/ImageUpdateAdapter.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/ImageUpdateAdapter.java index 1457868ad..1a3e81dd4 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/ImageUpdateAdapter.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/ImageUpdateAdapter.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2012, 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 @@ -11,7 +11,7 @@ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.columns; import java.io.File; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; /** * The interface to adapt the process of providing the image for two kinds of @@ -20,27 +20,26 @@ import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; public interface ImageUpdateAdapter { /** - * Get an extension key as the image registry key for the + * Get an extension key as the image registry key for the * specified node. - * + * * @param node The node to get the key for. * @return The key used to cache the image descriptor in the registry. */ - public String getImageKey(FSTreeNode node); - + public String getImageKey(IFSTreeNode node); + /** * Return a mirror file that will be used to retrieve the image from. - * + * * @param node The file system tree node. * @return The corresponding mirror file. */ - public File getMirrorFile(FSTreeNode node); + public File getMirrorFile(IFSTreeNode node); /** * Get the image file object for the specified temporary file name. - * - * @param tmpName The temporary file name. + * * @return The file object. */ - public File getImageFile(FSTreeNode node); + public File getImageFile(IFSTreeNode node); } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/LabelProviderUpdateDaemon.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/LabelProviderUpdateDaemon.java index 5f5e04860..1c7a6a5e5 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/LabelProviderUpdateDaemon.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/LabelProviderUpdateDaemon.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2012, 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 @@ -30,8 +30,8 @@ import org.eclipse.core.runtime.SafeRunner; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.swt.graphics.Image; import org.eclipse.tcf.te.core.interfaces.IPropertyChangeProvider; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.utils.CacheManager; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.model.ModelManager; import org.eclipse.tcf.te.tcf.filesystem.ui.activator.UIPlugin; import org.eclipse.tcf.te.tcf.filesystem.ui.internal.ImageConsts; @@ -46,7 +46,7 @@ public class LabelProviderUpdateDaemon extends Thread { {"windows 8", "win8_rootdrive.png"} //$NON-NLS-1$//$NON-NLS-2$ }; private static String root_drive = createRootImage(getOSEntry()); - + private static int getOSEntry() { String osName = System.getProperty("os.name").toLowerCase(); //$NON-NLS-1$ for(int i = 0; i < os_drives.length;i++) { @@ -54,18 +54,18 @@ public class LabelProviderUpdateDaemon extends Thread { } return 0; } - + private static String createRootImage(int i) { UIPlugin plugin = UIPlugin.getDefault(); URL url = plugin.getBundle().getEntry(ImageConsts.IMAGE_DIR_ROOT + ImageConsts.IMAGE_DIR_OBJ + os_drives[i][1]); plugin.getImageRegistry().put(os_drives[i][0], ImageDescriptor.createFromURL(url)); return os_drives[i][0]; } - + // The dummy AWT component used to render the icon. Component dummyComponent = new JComponent(){private static final long serialVersionUID = 5926798769323111209L;}; //The queue that caches the current file nodes to be updated. - BlockingQueue<FSTreeNode> queueNodes; + BlockingQueue<IFSTreeNode> queueNodes; // The image update adapter for a file which has a local cache copy. ImageUpdateAdapter cacheAdapter; // The image update adapter for a file which does not has a local cache copy. @@ -77,17 +77,17 @@ public class LabelProviderUpdateDaemon extends Thread { public LabelProviderUpdateDaemon() { super("Image Updater Daemon"); //$NON-NLS-1$ setDaemon(true); - this.queueNodes = new LinkedBlockingQueue<FSTreeNode>(); + this.queueNodes = new LinkedBlockingQueue<IFSTreeNode>(); this.cacheAdapter = new CacheFileImageUpdater(); this.extAdapter = new FileExtBasedImageUpdater(this); } /** * Cache the node which is to be updated with its icon in the file tree. - * + * * @param node The node to be enqueued */ - public void enqueue(final FSTreeNode node) { + public void enqueue(final IFSTreeNode node) { SafeRunner.run(new ISafeRunnable() { @Override public void handleException(Throwable exception) { @@ -103,10 +103,10 @@ public class LabelProviderUpdateDaemon extends Thread { /** * Take next node to be processed. - * + * * @return The next node. */ - private FSTreeNode take() { + private IFSTreeNode take() { while (true) { try { return queueNodes.take(); @@ -123,7 +123,7 @@ public class LabelProviderUpdateDaemon extends Thread { @Override public void run() { while (true) { - FSTreeNode node = take(); + IFSTreeNode node = take(); ImageUpdateAdapter adapter = getUpdateAdapter(node); String imgKey = adapter.getImageKey(node); ImageDescriptor image = UIPlugin.getImageDescriptor(imgKey); @@ -133,19 +133,19 @@ public class LabelProviderUpdateDaemon extends Thread { image = createImage(imgKey, mrrFile, imgFile); } if (image != null) { - sendNotification(node, node.name, null, image); + sendNotification(node, node.getName(), null, image); } } } - + /** * Select an image update adapter for the specified node. - * - * @param node The FSTreeNode. + * + * @param node The IFSTreeNode. * @return an image update adapter, either cache based or extension based. */ - private ImageUpdateAdapter getUpdateAdapter(FSTreeNode node) { - File cacheFile = CacheManager.getCacheFile(node); + private ImageUpdateAdapter getUpdateAdapter(IFSTreeNode node) { + File cacheFile = node.getCacheFile(); if (cacheFile.exists()) { return cacheAdapter; } @@ -155,11 +155,11 @@ public class LabelProviderUpdateDaemon extends Thread { /** * Get the image for the specified node from its * image update adapter. - * + * * @param node The file system tree node. * @return The image or null if there's no image yet. */ - public Image getImage(FSTreeNode node) { + public Image getImage(IFSTreeNode node) { ImageUpdateAdapter adapter = getUpdateAdapter(node); String key = adapter.getImageKey(node); return UIPlugin.getImage(key); @@ -168,7 +168,7 @@ public class LabelProviderUpdateDaemon extends Thread { /** * Create an Image Descriptor based on the mirror file and store * it in the imgFile and store it using the specified image key. - * + * * @param imgKey The image key. * @param mrrFile The mirror file used to create the image. * @param imgFile The image file used to store the image data. @@ -194,19 +194,19 @@ public class LabelProviderUpdateDaemon extends Thread { } return image; } - + /** * Get the image of disk drivers on Windows platform. - * + * * @return The disk driver image. */ public Image getDiskImage() { return UIPlugin.getImage(root_drive); } - + /** * Get the folder image on Windows platform. - * + * * @return The folder image. */ public Image getFolderImage() { @@ -223,24 +223,24 @@ public class LabelProviderUpdateDaemon extends Thread { } return UIPlugin.getImage(key); } - + /** * Get the temporary directory store the images and temporary mirror files. * @return */ protected File getTempDir() { - File cacheRoot = CacheManager.getCacheRoot(); + File cacheRoot = ModelManager.getCacheRoot(); File tempDir = new File(cacheRoot, ".tmp"); //$NON-NLS-1$ if (!tempDir.exists() && !tempDir.mkdirs()) { tempDir = cacheRoot; } return tempDir; } - + /** * Get the an image file named "imgName" in the temporary image * directory. - * + * * @param imgName The image's file name. * @return The file object of this image file. */ @@ -254,9 +254,9 @@ public class LabelProviderUpdateDaemon extends Thread { } /** - * Create an image file using "png" format + * Create an image file using "png" format * for the specified temporary file. - * + * * @param icon The icon that is used for the temporary file. * @param tmpfile The temporary file. */ @@ -274,15 +274,15 @@ public class LabelProviderUpdateDaemon extends Thread { /** * Send a notification to inform the file tree for changed images. - * + * * @param node The node whose image has changed. * @param key The key used to store the images. * @param oldImg The old image descriptor. * @param newImg The new image descriptor. */ - private void sendNotification(FSTreeNode node, String key, ImageDescriptor oldImg, ImageDescriptor newImg) { - if (node.peerNode != null) { - IPropertyChangeProvider viewerInput = (IPropertyChangeProvider) node.peerNode.getAdapter(IPropertyChangeProvider.class); + private void sendNotification(IFSTreeNode node, String key, ImageDescriptor oldImg, ImageDescriptor newImg) { + if (node.getPeerNode() != null) { + IPropertyChangeProvider viewerInput = (IPropertyChangeProvider) node.getPeerNode().getAdapter(IPropertyChangeProvider.class); viewerInput.firePropertyChange(new PropertyChangeEvent(node, key, oldImg, newImg)); } } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/ModificationTimeComparator.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/ModificationTimeComparator.java index 6aad6951c..80d916746 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/ModificationTimeComparator.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/ModificationTimeComparator.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -9,7 +9,7 @@ *******************************************************************************/ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.columns; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; /** * The comparator for the tree column "Date Modified". @@ -19,12 +19,12 @@ public class ModificationTimeComparator extends FSTreeNodeComparator { /* * (non-Javadoc) - * @see org.eclipse.tcf.te.tcf.filesystem.internal.columns.FSTreeNodeComparator#doCompare(org.eclipse.tcf.te.tcf.filesystem.model.FSTreeNode, org.eclipse.tcf.te.tcf.filesystem.model.FSTreeNode) + * @see org.eclipse.tcf.te.tcf.filesystem.internal.columns.FSTreeNodeComparator#doCompare(org.eclipse.tcf.te.tcf.filesystem.model.IFSTreeNode, org.eclipse.tcf.te.tcf.filesystem.model.IFSTreeNode) */ @Override - public int doCompare(FSTreeNode node1, FSTreeNode node2) { - long mtime1 = node1.attr != null ? node1.attr.mtime : 0; - long mtime2 = node2.attr != null ? node2.attr.mtime : 0; + public int doCompare(IFSTreeNode node1, IFSTreeNode node2) { + long mtime1 = node1.getModificationTime(); + long mtime2 = node2.getModificationTime(); return mtime1 < mtime2 ? -1 : (mtime1 > mtime2 ? 1 : 0); } } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/ModificationTimeLabelProvider.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/ModificationTimeLabelProvider.java index 0cedfb5b9..d06504332 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/ModificationTimeLabelProvider.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/ModificationTimeLabelProvider.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -13,7 +13,7 @@ import java.text.SimpleDateFormat; import java.util.Date; import org.eclipse.jface.viewers.LabelProvider; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; /** * The label provider for the tree column "Date Modified". @@ -26,11 +26,12 @@ public class ModificationTimeLabelProvider extends LabelProvider { */ @Override public String getText(Object element) { - if (element instanceof FSTreeNode) { - FSTreeNode node = (FSTreeNode) element; - if (node.attr != null) { + if (element instanceof IFSTreeNode) { + IFSTreeNode node = (IFSTreeNode) element; + long mt = node.getModificationTime(); + if (mt != 0) { SimpleDateFormat dateFormat = new SimpleDateFormat("M/d/yyyy h:mm aa"); //$NON-NLS-1$ - return dateFormat.format(new Date(node.attr.mtime)); + return dateFormat.format(new Date(mt)); } } return ""; //$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/columns/SizeComparator.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/SizeComparator.java index af9b227e6..7f23cfeed 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/SizeComparator.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/SizeComparator.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -9,7 +9,7 @@ *******************************************************************************/ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.columns; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; /** * The comparator for the tree column "size". @@ -19,12 +19,12 @@ public class SizeComparator extends FSTreeNodeComparator { /* * (non-Javadoc) - * @see org.eclipse.tcf.te.tcf.filesystem.internal.columns.FSTreeNodeComparator#doCompare(org.eclipse.tcf.te.tcf.filesystem.model.FSTreeNode, org.eclipse.tcf.te.tcf.filesystem.model.FSTreeNode) + * @see org.eclipse.tcf.te.tcf.filesystem.internal.columns.FSTreeNodeComparator#doCompare(org.eclipse.tcf.te.tcf.filesystem.model.IFSTreeNode, org.eclipse.tcf.te.tcf.filesystem.model.IFSTreeNode) */ @Override - public int doCompare(FSTreeNode node1, FSTreeNode node2) { - long size1 = node1.attr != null ? node1.attr.size : 0; - long size2 = node2.attr != null ? node2.attr.size : 0; + public int doCompare(IFSTreeNode node1, IFSTreeNode node2) { + long size1 = node1.getSize(); + long size2 = node2.getSize(); return size1 < size2 ? -1 : (size1 > size2 ? 1 : 0); } } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/SizeLabelProvider.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/SizeLabelProvider.java index 489ce7940..761a3c1a4 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/SizeLabelProvider.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/SizeLabelProvider.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -12,7 +12,7 @@ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.columns; import java.text.DecimalFormat; import org.eclipse.jface.viewers.LabelProvider; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; /** * The label provider for the tree column "size". @@ -27,11 +27,11 @@ public class SizeLabelProvider extends LabelProvider { */ @Override public String getText(Object element) { - if (element instanceof FSTreeNode) { - FSTreeNode node = (FSTreeNode) element; + if (element instanceof IFSTreeNode) { + IFSTreeNode node = (IFSTreeNode) element; // Directory nodes does not have a size - if (node.isFile() && node.attr != null) { - return SIZE_FORMAT.format(node.attr.size / 1024) + " KB"; //$NON-NLS-1$ + if (node.isFile()) { + return SIZE_FORMAT.format(node.getSize() / 1024) + " KB"; //$NON-NLS-1$ } } return ""; //$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/columns/WindowsImageProvider.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/WindowsImageProvider.java index de0529528..e98276bd6 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/WindowsImageProvider.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/WindowsImageProvider.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2012, 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 @@ -10,11 +10,11 @@ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.columns; import org.eclipse.swt.graphics.Image; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; /** * Windows specific image provider extending the default image provider - * to retrieve the file's images based on file extension or cached file. + * to retrieve the file's images based on file extension or cached file. */ public class WindowsImageProvider extends DefaultImageProvider { // The background daemons that updates the images of the file system nodes. @@ -26,11 +26,11 @@ public class WindowsImageProvider extends DefaultImageProvider { /* * (non-Javadoc) - * @see org.eclipse.tcf.te.tcf.filesystem.internal.columns.DefaultImageProvider#getImage(org.eclipse.tcf.te.tcf.filesystem.model.FSTreeNode) + * @see org.eclipse.tcf.te.tcf.filesystem.internal.columns.DefaultImageProvider#getImage(org.eclipse.tcf.te.tcf.filesystem.model.IFSTreeNode) */ @Override - public Image getImage(FSTreeNode node) { - if (node.isRoot()) { + public Image getImage(IFSTreeNode node) { + if (node.isRootDirectory()) { return node.isWindowsNode() ? updateDaemon.getDiskImage() : super.getImage(node); } else if (node.isDirectory()) { diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/compare/EditableSharedDocumentAdapter.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/compare/EditableSharedDocumentAdapter.java index ae087ace0..36354ff7a 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/compare/EditableSharedDocumentAdapter.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/compare/EditableSharedDocumentAdapter.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2005, 2014 IBM Corporation and others. + * Copyright (c) 2005, 2015 IBM Corporation 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 @@ -25,7 +25,7 @@ import org.eclipse.ui.texteditor.IElementStateListener; * provider to ensure that the changes are not lost (see * {@link #hasBufferedContents()}). In order to avoid a leak, the buffer must * either be saved (see - * {@link #saveDocument(IEditorInput, boolean, IProgressMonitor)}) or released + * {@link #saveDocument(IEditorInput, IProgressMonitor)}) or released * (see {@link #releaseBuffer()}). * <p> * This adapter must have a one-to-one correspondence to a typed element. diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/compare/LocalFileSaveable.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/compare/LocalFileSaveable.java index db636b588..0921626c0 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/compare/LocalFileSaveable.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/compare/LocalFileSaveable.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2014 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -30,9 +30,7 @@ import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.jface.util.SafeRunnable; import org.eclipse.swt.graphics.Image; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.IOpExecutor; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpUpload; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.tcf.te.tcf.filesystem.ui.internal.compare.EditableSharedDocumentAdapter.ISharedDocumentAdapterListener; import org.eclipse.tcf.te.tcf.filesystem.ui.internal.operations.UiExecutor; import org.eclipse.ui.IEditorInput; @@ -133,9 +131,8 @@ public class LocalFileSaveable extends Saveable implements saving = false; monitor.done(); //Trigger upload action - FSTreeNode node = fileElement.getFSTreeNode(); - IOpExecutor executor = new UiExecutor(); - executor.execute(new OpUpload(node)); + IFSTreeNode node = fileElement.getFSTreeNode(); + UiExecutor.execute(node.operationUploadContent(node.getCacheFile())); } } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/compare/LocalTypedElement.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/compare/LocalTypedElement.java index 825a66743..88ad9704c 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/compare/LocalTypedElement.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/compare/LocalTypedElement.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2014 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -29,11 +29,11 @@ import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.Platform; import org.eclipse.core.runtime.Status; import org.eclipse.osgi.util.NLS; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.utils.CacheManager; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.tcf.te.tcf.filesystem.ui.activator.UIPlugin; import org.eclipse.tcf.te.tcf.filesystem.ui.internal.compare.EditableSharedDocumentAdapter.ISharedDocumentAdapterListener; import org.eclipse.tcf.te.tcf.filesystem.ui.nls.Messages; @@ -42,7 +42,7 @@ import org.eclipse.ui.ide.FileStoreEditorInput; /** * A <code>LocalTypedElement</code> extends <code>MergeTypedElement</code> and - * wraps an <code>FSTreeNode</code> so that it can be used as the left element + * wraps an <code>IFSTreeNode</code> so that it can be used as the left element * of a <code>MergeEditorInput</code>. It implements the interface * <code>IEditableContent</code> so that it is editable. */ @@ -58,10 +58,8 @@ public class LocalTypedElement extends MergeTypedElement implements /** * Creates a <code>LocalTypedElement</code> for the given resource. * - * @param resource - * the resource */ - public LocalTypedElement(FSTreeNode node) { + public LocalTypedElement(IFSTreeNode node) { super(node); setContent(getContent()); dirty = false; @@ -111,8 +109,7 @@ public class LocalTypedElement extends MergeTypedElement implements @Override protected InputStream createStream() throws CoreException { try { - IPath cachePath = CacheManager.getCachePath(node); - File cacheFile = cachePath.toFile(); + File cacheFile = node.getCacheFile(); return new BufferedInputStream(new FileInputStream(cacheFile)); } catch (FileNotFoundException e) { IStatus error = new Status(IStatus.ERROR, @@ -142,9 +139,6 @@ public class LocalTypedElement extends MergeTypedElement implements * if the element is connected to a shared document. If the element is not * connected, <code>false</code> is returned. * - * @param overwrite - * indicates whether overwrite should be performed while saving - * the given element if necessary * @param monitor * a progress monitor * @throws CoreException @@ -195,7 +189,7 @@ public class LocalTypedElement extends MergeTypedElement implements */ @Override public String toString() { - File cacheFile = CacheManager.getCacheFile(node); + File cacheFile = node.getCacheFile(); return cacheFile.toString(); } @@ -251,7 +245,7 @@ public class LocalTypedElement extends MergeTypedElement implements * @return The editor input. */ public IEditorInput getEditorInput() { - IPath path = CacheManager.getCachePath(node); + IPath path = new Path(node.getCacheFile().getAbsolutePath()); IFileStore fileStore = EFS.getLocalFileSystem().getStore(path); return new FileStoreEditorInput(fileStore); } @@ -263,7 +257,7 @@ public class LocalTypedElement extends MergeTypedElement implements * The monitor that reports the progress. */ public void store2Cache(IProgressMonitor monitor) throws CoreException { - File cacheFile = CacheManager.getCacheFile(node); + File cacheFile = node.getCacheFile(); monitor.beginTask(NLS.bind(Messages.LocalTypedElement_SavingFile, cacheFile.getName()), 100); InputStream is = getContents(); BufferedOutputStream bos = null; diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/compare/MergeEditorInput.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/compare/MergeEditorInput.java index 65f8c5846..0c2c3d832 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/compare/MergeEditorInput.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/compare/MergeEditorInput.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2014 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -147,7 +147,7 @@ public class MergeEditorInput extends CompareEditorInput implements */ @Override public String getToolTipText() { - return NLS.bind(Messages.MergeEditorInput_CompareLeftAndRight, left, right); + return NLS.bind(Messages.MergeEditorInput_CompareLeftAndRight, left, right); } /* (non-Javadoc) @@ -155,7 +155,7 @@ public class MergeEditorInput extends CompareEditorInput implements */ @Override public String getTitle() { - return NLS.bind(Messages.MergeEditorInput_CompareWithLocalCache, left.getName()); + return NLS.bind(Messages.MergeEditorInput_CompareWithLocalCache, left.getName()); } /** @@ -279,11 +279,11 @@ public class MergeEditorInput extends CompareEditorInput implements /** * Get the fSaveable that provides the save behavior for this compare editor - * input. The {@link #createSaveable()} is called to create the fSaveable if + * input. The {@link #getSaveable()} is called to create the fSaveable if * it does not yet exist. This method cannot be called until after the input * is prepared (i.e. until after the {@link #run(IProgressMonitor)} method * is called which will in turn will invoke - * {@link #prepareCompareInput(IProgressMonitor)}. + * {@link #prepareInput(IProgressMonitor)}. * * @return fSaveable that provides the save behavior for this compare editor * input. diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/compare/MergeInput.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/compare/MergeInput.java index 912b777ee..416bb3c1b 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/compare/MergeInput.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/compare/MergeInput.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -23,7 +23,6 @@ import org.eclipse.tcf.te.tcf.filesystem.ui.nls.Messages; /** * An abstract compare input whose purpose is to support change notification - * through a {@link CompareInputChangeNotifier}. */ public class MergeInput implements ICompareInput { diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/compare/MergeTypedElement.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/compare/MergeTypedElement.java index 37e96269d..672597e24 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/compare/MergeTypedElement.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/compare/MergeTypedElement.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -14,15 +14,15 @@ import org.eclipse.compare.BufferedContent; import org.eclipse.compare.CompareUI; import org.eclipse.compare.ITypedElement; import org.eclipse.swt.graphics.Image; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; /** - * A <code>MergeTypedElement</code> wraps an <code>FSTreeNode</code> so that it + * A <code>MergeTypedElement</code> wraps an <code>IFSTreeNode</code> so that it * can be used as input for the differencing engine (<code>ITypedElement</code>). */ public abstract class MergeTypedElement extends BufferedContent implements ITypedElement { // The File System tree node to be wrapped. - protected FSTreeNode node; + protected IFSTreeNode node; /** * Create a MergeTypedElement for the given node. @@ -30,7 +30,7 @@ public abstract class MergeTypedElement extends BufferedContent implements IType * @param node * The node. */ - public MergeTypedElement(FSTreeNode node) { + public MergeTypedElement(IFSTreeNode node) { this.node = node; } @@ -47,7 +47,7 @@ public abstract class MergeTypedElement extends BufferedContent implements IType * * @return The tree node of the file */ - public FSTreeNode getFSTreeNode() { + public IFSTreeNode getFSTreeNode() { return node; } @@ -60,7 +60,7 @@ public abstract class MergeTypedElement extends BufferedContent implements IType if (node.isDirectory()) { return ITypedElement.FOLDER_TYPE; } - String s = node.name; + String s = node.getName(); int dot = s.lastIndexOf('.'); if (dot != -1) s = s.substring(dot + 1); return s; @@ -84,7 +84,7 @@ public abstract class MergeTypedElement extends BufferedContent implements IType */ @Override public String getName() { - return node.name; + return node.getName(); } /* (non-Javadoc) diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/compare/RemoteTypedElement.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/compare/RemoteTypedElement.java index b7e82c474..f645ed458 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/compare/RemoteTypedElement.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/compare/RemoteTypedElement.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -21,15 +21,11 @@ import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; -import org.eclipse.osgi.util.NLS; -import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.IOperation; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpOutStreamOp; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.tcf.te.tcf.filesystem.ui.activator.UIPlugin; -import org.eclipse.tcf.te.tcf.filesystem.ui.nls.Messages; /** - * A <code>RemoteTypedElement</code> wraps an <code>FSTreeNode</code> so that it + * A <code>RemoteTypedElement</code> wraps an <code>IFSTreeNode</code> so that it * can be used as input for the differencing engine (<code>ITypedElement</code>) * as the right element of the comparison editor. * @@ -42,7 +38,7 @@ public class RemoteTypedElement extends MergeTypedElement { * @param node * the tree node. */ - public RemoteTypedElement(FSTreeNode node) { + public RemoteTypedElement(IFSTreeNode node) { super(node); } @@ -78,16 +74,16 @@ public class RemoteTypedElement extends MergeTypedElement { */ public void cacheContents(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { - monitor.beginTask(NLS.bind(Messages.RemoteTypedElement_DowloadingFile, node.name), 100); OutputStream output = null; final ByteArrayOutputStream baos = new ByteArrayOutputStream(); output = new BufferedOutputStream(baos); - monitor.beginTask(Messages.RemoteTypedElement_GettingRemoteContent + node.name, 100); - IOperation operation = new OpOutStreamOp(node, output); - operation.run(monitor); - if (!monitor.isCanceled()) { + if (node.operationDownload(output).run(monitor).isOK()) { setContent(baos.toByteArray()); } + try { + baos.close(); + } catch (IOException e) { + } } /** diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/decorators/PhantomDecorator.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/decorators/PhantomDecorator.java index 8247ef500..a07d8087c 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/decorators/PhantomDecorator.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/decorators/PhantomDecorator.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -12,11 +12,11 @@ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.decorators; import org.eclipse.jface.viewers.ILabelDecorator; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.graphics.Image; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.tcf.te.tcf.filesystem.ui.activator.UIPlugin; import org.eclipse.tcf.te.ui.jface.images.AbstractImageDescriptor; /** - * The label decorator to decorate the FSTreeNodes that are cut or hidden. + * The label decorator to decorate the FSTreeNodes that are cut or hidden. */ public class PhantomDecorator extends LabelProvider implements ILabelDecorator { /* @@ -25,7 +25,7 @@ public class PhantomDecorator extends LabelProvider implements ILabelDecorator { */ @Override public Image decorateImage(Image image, Object element) { - if (element instanceof FSTreeNode && image != null) { + if (element instanceof IFSTreeNode && image != null) { // Create the cut image for the image to be decorated. AbstractImageDescriptor descriptor = new PhantomImageDescriptor(image); return UIPlugin.getSharedImage(descriptor); 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 2a3d832de..b212938f5 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 @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2014 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -9,6 +9,8 @@ *******************************************************************************/ 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; @@ -17,7 +19,6 @@ import org.eclipse.core.runtime.IStatus; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.util.LocalSelectionTransfer; import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.dnd.DND; @@ -27,20 +28,9 @@ import org.eclipse.swt.dnd.TransferData; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; -import org.eclipse.tcf.te.runtime.callback.Callback; -import org.eclipse.tcf.te.runtime.interfaces.callback.ICallback; import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.IConfirmCallback; import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.IOperation; -import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IRuntimeModel; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.IOpExecutor; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.JobExecutor; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpCopy; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpMove; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpRefresh; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpUpload; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.utils.CacheManager; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; -import org.eclipse.tcf.te.tcf.filesystem.core.model.ModelManager; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.tcf.te.tcf.filesystem.ui.activator.UIPlugin; import org.eclipse.tcf.te.tcf.filesystem.ui.internal.ImageConsts; import org.eclipse.tcf.te.tcf.filesystem.ui.internal.handlers.MoveCopyCallback; @@ -78,9 +68,13 @@ public class CommonDnD implements IConfirmCallback { * @return true if it is draggable. */ private boolean isDraggableObject(Object object) { - if (object instanceof FSTreeNode) { - FSTreeNode node = (FSTreeNode) object; - return !node.isRoot() && (node.isWindowsNode() && !node.isReadOnly() || !node.isWindowsNode() && node.isWritable()); + if (object instanceof IFSTreeNode) { + IFSTreeNode node = (IFSTreeNode) object; + if (node.isRootDirectory()) + return false; + if (node.isWindowsNode()) + return !node.isReadOnly(); + return node.isWritable(); } return false; } @@ -94,171 +88,134 @@ public class CommonDnD implements IConfirmCallback { * @param target the target folder the files to be dropped to. * @return true if the dropping is successful. */ - public boolean dropFiles(TreeViewer viewer, String[] files, int operations, FSTreeNode target) { - IOpExecutor executor = null; - if ((operations & DND.DROP_MOVE) != 0) { + public boolean dropFiles(TreeViewer viewer, String[] files, int operations, IFSTreeNode target) { + boolean move = (operations & DND.DROP_MOVE) != 0; + if (move) { String question; if (files.length == 1) { question = NLS.bind(Messages.FSDropTargetListener_MovingWarningSingle, files[0]); - } - else { + } else { question = NLS.bind(Messages.FSDropTargetListener_MovingWarningMultiple, Integer.valueOf(files.length)); } Shell parent = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); - if (MessageDialog.openQuestion(parent, Messages.FSDropTargetListener_ConfirmMoveTitle, question)) { - ICallback callback = getMoveCallback(viewer, files, target); - executor = new UiExecutor(callback); + if (!MessageDialog.openQuestion(parent, Messages.FSDropTargetListener_ConfirmMoveTitle, question)) { + return false; } + } else if ((operations & DND.DROP_COPY) == 0) { + return false; } - else if ((operations & DND.DROP_COPY) != 0) { - ICallback callback = getCopyCallback(viewer, files, target); - executor = new UiExecutor(callback); - } - if (executor != null) { - IStatus status = executor.execute(new OpUpload(files, target, this)); - return status != null && status.isOK(); - } - return false; - } - - /** - * Get the callback that refresh and select the files being dragged when the dragging gesture is - * copying. - * - * @param viewer the tree viewer to be refreshed after dragging. - * @param files The files being dragged. - * @param target The target folder to drag the files to. - * @return callback that handles refreshing and selection. - */ - private ICallback getCopyCallback(final TreeViewer viewer, final String[] files, final FSTreeNode target) { - return new Callback() { - @Override - protected void internalDone(Object caller, IStatus status) { - if (status.isOK()) { - IOpExecutor executor = new JobExecutor(getSelectionCallback(viewer, files, target)); - executor.execute(new OpRefresh(target)); + IStatus status = UiExecutor.execute(target.operationDropFiles(asList(files), this)); + if (move && status.isOK()) { + for (String path : files) { + File file = new File(path); + if (!file.delete()) { } } - }; + } + return status.isOK(); } - /** - * Get the callback that delete the dragged source files, refresh and select the files being - * dragged when the dragging gesture is moving. - * - * @param viewer the tree viewer to be refreshed after dragging. - * @param files The files being dragged. - * @param target The target folder to drag the files to. - * @return callback that handles deletion, refreshing and selection. - */ - private ICallback getMoveCallback(final TreeViewer viewer, final String[] files, final FSTreeNode target) { - return new Callback() { - @Override - protected void internalDone(Object caller, IStatus status) { - if (status.isOK()) { - boolean successful = true; - for (String path : files) { - File file = new File(path); - successful &= file.delete(); - } - if (successful) { - IRuntimeModel model = ModelManager.getRuntimeModel(target.peerNode); - IOpExecutor executor = new JobExecutor(getSelectionCallback(viewer, files, target)); - executor.execute(new OpRefresh(model.getRoot())); - } - } - } - }; - } +// 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)); +// } +// } +// }; +// } - /** - * Get the callback that refresh the files being dragged after moving or copying. - * - * @param viewer the tree viewer to be refreshed after dragging. - * @param paths The paths of the files being dragged. - * @param target The target folder to drag the files to. - * @return callback that handles refreshing and selection. - */ - ICallback getSelectionCallback(final TreeViewer viewer, final String[] paths, final FSTreeNode target) { - return new Callback() { - @Override - protected void internalDone(Object caller, IStatus status) { - if(status.isOK()) { - List<FSTreeNode> nodes = new ArrayList<FSTreeNode>(); - List<FSTreeNode> children = target.getChildren(); - for (String path : paths) { - File file = new File(path); - String name = file.getName(); - for (FSTreeNode child : children) { - if (name.equals(child.name)) { - nodes.add(child); - break; - } - } - } - if (viewer != null) { - updateViewer(viewer, target, nodes); - } - } - } - }; - } +// 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())); +// } +// } +// } +// }; +// } - /** - * Update the tree viewer after DnD and select the nodes that being dropped. - * - * @param viewer The tree viewer in which the DnD takes place. - * @param target The target node that the drop operation happens. - * @param nodes The nodes that are being dropped. - */ - protected void updateViewer(final TreeViewer viewer, final FSTreeNode target, final List<FSTreeNode> 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); - }}); - } - } +// 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. * - * @param aTarget the target Object to be moved to. + * @param target the target Object to be moved to. * @param operations the current dnd operations. * @param selection The local selection being dropped. * @return true if the dropping is successful. */ - public boolean dropLocalSelection(FSTreeNode target, int operations, IStructuredSelection selection) { - List<FSTreeNode> nodes = selection.toList(); - IOpExecutor executor = null; - IOperation operation = null; - if ((operations & DND.DROP_MOVE) != 0) { - operation = new OpMove(nodes, target, new MoveCopyCallback()); - executor = new UiExecutor(new Callback(){ - @Override - protected void internalDone(Object caller, IStatus status) { - UIPlugin.getClipboard().clear(); - } - }); - } - else if ((operations & DND.DROP_COPY) != 0) { - FSTreeNode dest = getCopyDestination(target, nodes); + public boolean dropLocalSelection(IFSTreeNode target, int operations, IStructuredSelection selection) { + List<IFSTreeNode> nodes = selection.toList(); + IOperation operation; + boolean move = (operations & DND.DROP_MOVE) != 0; + if (move) { + operation = target.operationDropMove(nodes, new MoveCopyCallback()); + } else if ((operations & DND.DROP_COPY) != 0) { + IFSTreeNode dest = getCopyDestination(target, nodes); boolean cpPerm = UIPlugin.isCopyPermission(); boolean cpOwn = UIPlugin.isCopyOwnership(); - operation = new OpCopy(nodes, dest, cpPerm, cpOwn, new MoveCopyCallback()); - executor = new UiExecutor(); + operation = dest.operationDropCopy(nodes, cpPerm, cpOwn, new MoveCopyCallback()); + } else { + return false; } - if (operation != null && executor != null) { - IStatus status = executor.execute(operation); - return status != null && status.isOK(); + IStatus status = UiExecutor.execute(operation); + if (move) { + UIPlugin.getClipboard().clear(); } - return false; + return status.isOK(); } /** @@ -271,12 +228,12 @@ public class CommonDnD implements IConfirmCallback { * @param nodes * @return */ - private FSTreeNode getCopyDestination(FSTreeNode hovered, List<FSTreeNode> nodes) { + private IFSTreeNode getCopyDestination(IFSTreeNode hovered, List<IFSTreeNode> nodes) { if (hovered.isFile()) { return hovered.getParent(); } else if (hovered.isDirectory()) { - for (FSTreeNode node : nodes) { + for (IFSTreeNode node : nodes) { if (node == hovered) { return hovered.getParent(); } @@ -299,7 +256,7 @@ public class CommonDnD implements IConfirmCallback { if (elements.length > 0) { boolean moving = (operation & DND.DROP_MOVE) != 0; boolean copying = (operation & DND.DROP_COPY) != 0; - FSTreeNode hovered = (FSTreeNode) target; + IFSTreeNode hovered = (IFSTreeNode) target; if (hovered.isFile() && copying) { hovered = hovered.getParent(); } @@ -317,19 +274,19 @@ public class CommonDnD implements IConfirmCallback { * @return true if it is valid for dropping. */ public boolean validateLocalSelectionDrop(Object target, int operation, TransferData transferType) { - FSTreeNode hovered = (FSTreeNode) target; + IFSTreeNode hovered = (IFSTreeNode) target; LocalSelectionTransfer transfer = LocalSelectionTransfer.getTransfer(); IStructuredSelection selection = (IStructuredSelection) transfer.getSelection(); - List<FSTreeNode> nodes = selection.toList(); + List<IFSTreeNode> nodes = selection.toList(); boolean moving = (operation & DND.DROP_MOVE) != 0; boolean copying = (operation & DND.DROP_COPY) != 0; if (hovered.isDirectory() && hovered.isWritable() && (moving || copying)) { - FSTreeNode head = nodes.get(0); - String hid = head.peerNode.getPeerId(); - String tid = hovered.peerNode.getPeerId(); + IFSTreeNode head = nodes.get(0); + String hid = head.getPeerNode().getPeerId(); + String tid = hovered.getPeerNode().getPeerId(); if (hid.equals(tid)) { - for (FSTreeNode node : nodes) { - if (moving && node == hovered || node.isAncestorOf(hovered)) { + for (IFSTreeNode node : nodes) { + if (moving && node == hovered || node.getParent() == hovered || node.isAncestorOf(hovered)) { return false; } } @@ -357,16 +314,15 @@ public class CommonDnD implements IConfirmCallback { * @see org.eclipse.tcf.te.tcf.filesystem.interfaces.IConfirmCallback#confirms(java.lang.Object) */ @Override - public int confirms(Object object) { + public int confirms(final Object object) { final int[] results = new int[1]; - final File file = (File) object; Display display = PlatformUI.getWorkbench().getDisplay(); display.syncExec(new Runnable() { @Override public void run() { Shell parent = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); String title = Messages.FSUpload_OverwriteTitle; - String message = NLS.bind(Messages.FSUpload_OverwriteConfirmation, file.getName()); + String message = NLS.bind(Messages.FSUpload_OverwriteConfirmation, getName(object)); final Image titleImage = UIPlugin.getImage(ImageConsts.DELETE_READONLY_CONFIRM); MessageDialog qDialog = new MessageDialog(parent, title, null, message, MessageDialog.QUESTION, new String[] {Messages.FSUpload_Yes, @@ -382,6 +338,16 @@ public class CommonDnD implements IConfirmCallback { return results[0]; } + protected String getName(Object object) { + if (object instanceof File) { + return ((File) object).getName(); + } + if (object instanceof IFSTreeNode) { + return ((IFSTreeNode) object).getName(); + } + return String.valueOf(object); + } + /* * (non-Javadoc) * @see org.eclipse.swt.dnd.DragSourceListener#dragSetData(org.eclipse.swt.dnd.DragSourceEvent) @@ -393,10 +359,10 @@ public class CommonDnD implements IConfirmCallback { } else if (FileTransfer.getInstance().isSupportedType(anEvent.dataType)) { IStructuredSelection selection = (IStructuredSelection) LocalSelectionTransfer.getTransfer().getSelection(); - List<FSTreeNode> nodes = selection.toList(); + List<IFSTreeNode> nodes = selection.toList(); List<String> paths = new ArrayList<String>(); - for(FSTreeNode node : nodes) { - File file = CacheManager.getCacheFile(node); + for(IFSTreeNode node : nodes) { + File file = node.getCacheFile(); if(file.exists()) { paths.add(file.getAbsolutePath()); } 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 aaffe7f23..9163a6a39 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 @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -17,7 +17,7 @@ import org.eclipse.swt.dnd.Transfer; import org.eclipse.ui.navigator.CommonDragAdapterAssistant; /** - * The drag assistant used by Target Explorer to extend its DnD support to FSTreeNode elements. + * The drag assistant used by Target Explorer to extend its DnD support to IFSTreeNode elements. */ public class FSDragAdapterAssistant extends CommonDragAdapterAssistant { // The common dnd operation diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/dnd/FSDropAdapterAssistant.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/dnd/FSDropAdapterAssistant.java index d3ab481cb..9cf4929e8 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/dnd/FSDropAdapterAssistant.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/dnd/FSDropAdapterAssistant.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -19,7 +19,7 @@ import org.eclipse.swt.dnd.DropTargetEvent; import org.eclipse.swt.dnd.FileTransfer; import org.eclipse.swt.dnd.TransferData; import org.eclipse.swt.widgets.Display; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.tcf.te.ui.views.interfaces.IUIConstants; import org.eclipse.ui.IViewReference; import org.eclipse.ui.IWorkbenchWindow; @@ -29,7 +29,7 @@ import org.eclipse.ui.navigator.CommonDropAdapterAssistant; import org.eclipse.ui.navigator.CommonNavigator; /** - * The drop assistant used by Target Explorer to extend its DnD support to FSTreeNode elements. + * The drop assistant used by Target Explorer to extend its DnD support to IFSTreeNode elements. */ public class FSDropAdapterAssistant extends CommonDropAdapterAssistant { // The common dnd operation @@ -49,7 +49,7 @@ public class FSDropAdapterAssistant extends CommonDropAdapterAssistant { @Override public IStatus validateDrop(Object target, int operation, TransferData transferType) { boolean valid = false; - if (target instanceof FSTreeNode) { + if (target instanceof IFSTreeNode) { if (LocalSelectionTransfer.getTransfer().isSupportedType(transferType)) { valid = dnd.validateLocalSelectionDrop(target, operation, transferType); } @@ -58,7 +58,7 @@ public class FSDropAdapterAssistant extends CommonDropAdapterAssistant { } } return valid ? Status.OK_STATUS : Status.CANCEL_STATUS; - } + } /* * (non-Javadoc) @@ -82,21 +82,21 @@ public class FSDropAdapterAssistant extends CommonDropAdapterAssistant { if (LocalSelectionTransfer.getTransfer().isSupportedType(transferType)) { IStructuredSelection selection = (IStructuredSelection) aDropTargetEvent.data; int operations = aDropAdapter.getCurrentOperation(); - FSTreeNode target = (FSTreeNode) aTarget; + IFSTreeNode target = (IFSTreeNode) aTarget; sucess = dnd.dropLocalSelection(target, operations, selection); } else if(FileTransfer.getInstance().isSupportedType(transferType)) { String[] files = (String[]) aDropTargetEvent.data; int operations = aDropAdapter.getCurrentOperation(); - FSTreeNode target = (FSTreeNode) aTarget; + IFSTreeNode target = (IFSTreeNode) aTarget; sucess = dnd.dropFiles(getCommonViewer(), files, operations, target); } return sucess ? Status.OK_STATUS : Status.CANCEL_STATUS; } - + /** * Get the tree viewer of Target Explorer view. - * + * * @return The tree viewer of Target Explorer view or null if the view is not found. */ private TreeViewer getCommonViewer() { diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/dnd/FSDropTargetListener.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/dnd/FSDropTargetListener.java index be8185fd0..0c0b91c3e 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/dnd/FSDropTargetListener.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/dnd/FSDropTargetListener.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -17,7 +17,7 @@ import org.eclipse.swt.dnd.DND; import org.eclipse.swt.dnd.DropTargetEvent; import org.eclipse.swt.dnd.FileTransfer; import org.eclipse.swt.dnd.TransferData; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; /** * The drop target listener for the file tree of Target Explorer. @@ -29,7 +29,7 @@ public class FSDropTargetListener extends ViewerDropAdapter { CommonDnD dnd; /** * Create FSDropTargetListener using the viewer. - * + * * @param viewer The file system tree viewer. */ public FSDropTargetListener(TreeViewer viewer) { @@ -57,7 +57,7 @@ public class FSDropTargetListener extends ViewerDropAdapter { */ @Override public boolean validateDrop(Object target, int operation, TransferData transferType) { - if (target instanceof FSTreeNode) { + if (target instanceof IFSTreeNode) { if (LocalSelectionTransfer.getTransfer().isSupportedType(transferType)) { return dnd.validateLocalSelectionDrop(target, operation, transferType); } @@ -79,13 +79,13 @@ public class FSDropTargetListener extends ViewerDropAdapter { if (LocalSelectionTransfer.getTransfer().isSupportedType(transferType)) { IStructuredSelection selection = (IStructuredSelection) data; int operations = getCurrentOperation(); - FSTreeNode target = (FSTreeNode) getCurrentTarget(); + IFSTreeNode target = (IFSTreeNode) getCurrentTarget(); success = dnd.dropLocalSelection(target, operations, selection); } else if(FileTransfer.getInstance().isSupportedType(transferType)) { String[] files = (String[]) data; int operations = getCurrentOperation(); - FSTreeNode target = (FSTreeNode) getCurrentTarget(); + IFSTreeNode target = (IFSTreeNode) getCurrentTarget(); success = dnd.dropFiles(viewer, files, operations, target); } return success; diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/CommitHandler.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/CommitHandler.java index 924ba72f0..1931d78e6 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/CommitHandler.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/CommitHandler.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -14,9 +14,7 @@ import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.IOpExecutor; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpUpload; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.tcf.te.tcf.filesystem.ui.internal.operations.UiExecutor; import org.eclipse.ui.handlers.HandlerUtil; @@ -31,9 +29,8 @@ public class CommitHandler extends AbstractHandler { @Override public Object execute(ExecutionEvent event) throws ExecutionException { IStructuredSelection selection = (IStructuredSelection) HandlerUtil.getCurrentSelectionChecked(event); - FSTreeNode node = (FSTreeNode) selection.getFirstElement(); - IOpExecutor executor = new UiExecutor(); - executor.execute(new OpUpload(node)); + IFSTreeNode node = (IFSTreeNode) selection.getFirstElement(); + UiExecutor.execute(node.operationUploadContent(node.getCacheFile())); return null; } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/CopyFilesHandler.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/CopyFilesHandler.java index 663cf903d..6c8db9c7d 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/CopyFilesHandler.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/CopyFilesHandler.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -15,26 +15,26 @@ import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpClipboard; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.tcf.te.tcf.filesystem.ui.activator.UIPlugin; +import org.eclipse.tcf.te.tcf.filesystem.ui.internal.operations.FsClipboard; import org.eclipse.ui.handlers.HandlerUtil; /** * The handler that copies the selected files or folders to the clip board. */ public class CopyFilesHandler extends AbstractHandler { - + /* * (non-Javadoc) * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent) */ @Override public Object execute(ExecutionEvent event) throws ExecutionException { - OpClipboard cb = UIPlugin.getClipboard(); + FsClipboard cb = UIPlugin.getClipboard(); IStructuredSelection selection = (IStructuredSelection) HandlerUtil.getCurrentSelection(event); if (!selection.isEmpty()) { - List<FSTreeNode> nodes = selection.toList(); + List<IFSTreeNode> nodes = selection.toList(); // Copy these files to the clip board. cb.copyFiles(nodes); } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/CutFilesHandler.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/CutFilesHandler.java index cbca9c47e..18a0127d0 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/CutFilesHandler.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/CutFilesHandler.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -15,26 +15,26 @@ import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpClipboard; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.tcf.te.tcf.filesystem.ui.activator.UIPlugin; +import org.eclipse.tcf.te.tcf.filesystem.ui.internal.operations.FsClipboard; import org.eclipse.ui.handlers.HandlerUtil; /** * The handler that cuts the selected files or folders to the clip board. */ public class CutFilesHandler extends AbstractHandler { - + /* * (non-Javadoc) * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent) */ @Override public Object execute(ExecutionEvent event) throws ExecutionException { - OpClipboard cb = UIPlugin.getClipboard(); + FsClipboard cb = UIPlugin.getClipboard(); IStructuredSelection selection = (IStructuredSelection) HandlerUtil.getCurrentSelection(event); if (!selection.isEmpty()) { - List<FSTreeNode> nodes = selection.toList(); + List<IFSTreeNode> nodes = selection.toList(); // Cut these files to the clip board. cb.cutFiles(nodes); } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/DeleteHandler.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/DeleteHandler.java index 2cf79b44c..7b9591056 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/DeleteHandler.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/DeleteHandler.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2012, 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 @@ -22,9 +22,8 @@ import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.IConfirmCallback; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.IOpExecutor; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpDelete; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.model.ModelManager; import org.eclipse.tcf.te.tcf.filesystem.ui.activator.UIPlugin; import org.eclipse.tcf.te.tcf.filesystem.ui.internal.ImageConsts; import org.eclipse.tcf.te.tcf.filesystem.ui.internal.operations.UiExecutor; @@ -47,27 +46,26 @@ public class DeleteHandler extends AbstractHandler { // Get the current selection ISelection selection = HandlerUtil.getCurrentSelection(event); if (selection instanceof IStructuredSelection && !selection.isEmpty()) { - List<FSTreeNode> nodes = ((IStructuredSelection)selection).toList(); + List<IFSTreeNode> nodes = ((IStructuredSelection)selection).toList(); if(confirmDeletion(nodes)) { - IOpExecutor executor = new UiExecutor(); - executor.execute(new OpDelete(nodes, readonlyCallback)); + UiExecutor.execute(ModelManager.operationDelete(nodes, readonlyCallback)); } } return null; } - + /** * Confirm the deletion of the specified nodes. - * + * * @param nodes The nodes to be deleted. * @return true if the user agrees to delete. */ - private boolean confirmDeletion(List<FSTreeNode> nodes) { + private boolean confirmDeletion(List<IFSTreeNode> nodes) { String question; if (nodes.size() == 1) { - FSTreeNode node = nodes.get(0); - question = NLS.bind(Messages.DeleteFilesHandler_DeleteOneFileConfirmation, node.name); + IFSTreeNode node = nodes.get(0); + question = NLS.bind(Messages.DeleteFilesHandler_DeleteOneFileConfirmation, node.getName()); } else { question = NLS.bind(Messages.DeleteFilesHandler_DeleteMultipleFilesConfirmation, Integer.valueOf(nodes.size())); @@ -90,8 +88,8 @@ public class DeleteHandler extends AbstractHandler { */ @Override public boolean requires(Object object) { - if(object instanceof FSTreeNode) { - FSTreeNode node = (FSTreeNode) object; + if(object instanceof IFSTreeNode) { + IFSTreeNode node = (IFSTreeNode) object; return node.isWindowsNode() && node.isReadOnly() || !node.isWindowsNode() && !node.isWritable(); } return false; @@ -103,7 +101,7 @@ public class DeleteHandler extends AbstractHandler { */ @Override public int confirms(Object object) { - final FSTreeNode node = (FSTreeNode) object; + final IFSTreeNode node = (IFSTreeNode) object; final int[] results = new int[1]; Display display = PlatformUI.getWorkbench().getDisplay(); display.syncExec(new Runnable() { @@ -111,7 +109,7 @@ public class DeleteHandler extends AbstractHandler { public void run() { Shell parent = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); String title = Messages.FSDelete_ConfirmDelete; - String message = NLS.bind(Messages.FSDelete_ConfirmMessage, node.name); + String message = NLS.bind(Messages.FSDelete_ConfirmMessage, node.getName()); final Image titleImage = UIPlugin.getImage(ImageConsts.DELETE_READONLY_CONFIRM); MessageDialog qDialog = new MessageDialog(parent, title, null, message, MessageDialog.QUESTION, new String[] { Messages.FSDelete_ButtonYes, Messages.FSDelete_ButtonYes2All, Messages.FSDelete_ButtonNo, Messages.FSDelete_ButtonCancel }, 0) { @Override diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/MergeHandler.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/MergeHandler.java index 47287db7e..0ecbbd933 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/MergeHandler.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/MergeHandler.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -15,7 +15,7 @@ import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.tcf.te.tcf.filesystem.ui.internal.compare.LocalTypedElement; import org.eclipse.tcf.te.tcf.filesystem.ui.internal.compare.MergeEditorInput; import org.eclipse.tcf.te.tcf.filesystem.ui.internal.compare.RemoteTypedElement; @@ -34,7 +34,7 @@ public class MergeHandler extends AbstractHandler { @Override public Object execute(ExecutionEvent event) throws ExecutionException { IStructuredSelection selection = (IStructuredSelection) HandlerUtil.getCurrentSelectionChecked(event); - FSTreeNode node = (FSTreeNode) selection.getFirstElement(); + IFSTreeNode node = (IFSTreeNode) selection.getFirstElement(); LocalTypedElement local = new LocalTypedElement(node); RemoteTypedElement remote = new RemoteTypedElement(node); IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); 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 004628fbb..d7536402c 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 @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2012, 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 @@ -15,14 +15,14 @@ import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.IConfirmCallback; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.tcf.te.tcf.filesystem.ui.activator.UIPlugin; import org.eclipse.tcf.te.tcf.filesystem.ui.internal.ImageConsts; import org.eclipse.tcf.te.tcf.filesystem.ui.nls.Messages; import org.eclipse.ui.PlatformUI; /** - * The confirmation callback implementation for operation "Move" and "Copy". + * The confirmation callback implementation for operation "Move" and "Copy". */ public class MoveCopyCallback implements IConfirmCallback { @@ -41,7 +41,7 @@ public class MoveCopyCallback implements IConfirmCallback { */ @Override public int confirms(Object object) { - final FSTreeNode node = (FSTreeNode) object; + final IFSTreeNode node = (IFSTreeNode) object; final int[] results = new int[1]; Display display = PlatformUI.getWorkbench().getDisplay(); display.syncExec(new Runnable() { @@ -49,7 +49,7 @@ public class MoveCopyCallback implements IConfirmCallback { 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.name); + String message = NLS.bind(node.isDirectory() ? Messages.FSOperation_ConfirmFolderReplaceMessage : Messages.FSOperation_ConfirmFileReplaceMessage, node.getName()); 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 diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/MoveFilesHandler.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/MoveFilesHandler.java index d62a1d6b1..61da93bdc 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/MoveFilesHandler.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/MoveFilesHandler.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2014 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -18,9 +18,7 @@ import org.eclipse.core.runtime.Assert; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.window.Window; import org.eclipse.swt.widgets.Shell; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.IOpExecutor; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpMove; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.tcf.te.tcf.filesystem.ui.dialogs.FSFolderSelectionDialog; import org.eclipse.tcf.te.tcf.filesystem.ui.internal.operations.UiExecutor; import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerNode; @@ -29,7 +27,7 @@ import org.eclipse.ui.handlers.HandlerUtil; * The handler that moves the selected files or folders to a destination folder. */ public class MoveFilesHandler extends AbstractHandler { - + /* * (non-Javadoc) * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent) @@ -39,16 +37,15 @@ public class MoveFilesHandler extends AbstractHandler { Shell shell = HandlerUtil.getActiveShellChecked(event); FSFolderSelectionDialog dialog = new FSFolderSelectionDialog(shell); IStructuredSelection selection = (IStructuredSelection) HandlerUtil.getCurrentSelection(event); - List<FSTreeNode> nodes = selection.toList(); - IPeerNode peer = nodes.get(0).peerNode; + List<IFSTreeNode> nodes = selection.toList(); + IPeerNode peer = nodes.get(0).getPeerNode(); dialog.setInput(peer); dialog.setMovedNodes(nodes); if (dialog.open() == Window.OK) { Object obj = dialog.getFirstResult(); - Assert.isTrue(obj instanceof FSTreeNode); - FSTreeNode dest = (FSTreeNode) obj; - IOpExecutor executor = new UiExecutor(); - executor.execute(new OpMove(nodes, dest, new MoveCopyCallback())); + Assert.isTrue(obj instanceof IFSTreeNode); + IFSTreeNode dest = (IFSTreeNode) obj; + UiExecutor.execute(dest.operationDropMove(nodes, new MoveCopyCallback())); } return null; } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/OpenFileHandler.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/OpenFileHandler.java index cb046f899..146d7a54b 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/OpenFileHandler.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/OpenFileHandler.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2013 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -18,18 +18,14 @@ import org.eclipse.core.filesystem.EFS; import org.eclipse.core.filesystem.IFileStore; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Path; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.tcf.te.runtime.callback.Callback; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.IOpExecutor; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpCacheUpdate; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.utils.CacheManager; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.utils.ContentTypeHelper; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.utils.PersistenceManager; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.tcf.te.tcf.filesystem.core.model.CacheState; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; 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; @@ -51,20 +47,19 @@ public class OpenFileHandler extends AbstractHandler { @Override public Object execute(ExecutionEvent event) throws ExecutionException { IStructuredSelection selection = (IStructuredSelection) HandlerUtil.getCurrentSelectionChecked(event); - final FSTreeNode node = (FSTreeNode) selection.getFirstElement(); + final IFSTreeNode node = (IFSTreeNode) selection.getFirstElement(); final IWorkbenchPage page = HandlerUtil.getActiveSite(event).getPage(); - if (ContentTypeHelper.isBinaryFile(node)) { + if (node.isBinaryFile()) { // If the file is a binary file. Shell parent = HandlerUtil.getActiveShell(event); MessageDialog.openWarning(parent, Messages.OpenFileHandler_Warning, Messages.OpenFileHandler_OpeningBinaryNotSupported); } else { if (UIPlugin.isAutoSaving()) { - // Refresh the node to determine the cache state correctly - node.refresh(new Callback() { + node.operationRefresh(false).runInJob(new Callback() { @Override protected void internalDone(Object caller, IStatus status) { - File file = CacheManager.getCacheFile(node); + File file = node.getCacheFile(); if (node.getCacheState() == CacheState.outdated) { file.delete(); } @@ -97,15 +92,10 @@ public class OpenFileHandler extends AbstractHandler { * @param page * The workbench page in which the editor is opened. */ - /* default */ void openFile(FSTreeNode node, IWorkbenchPage page) { - File file = CacheManager.getCacheFile(node); - if (!file.exists()) { - // If the file node's local cache does not exist yet, download it. - IOpExecutor executor = new UiExecutor(); - IStatus status = executor.execute(new OpCacheUpdate(node)); - if (!status.isOK()) { - return; - } + /* default */ void openFile(IFSTreeNode node, IWorkbenchPage page) { + File file = node.getCacheFile(); + if (!file.exists() && !UiExecutor.execute(node.operationDownload(null)).isOK()) { + return; } openEditor(page, node); } @@ -118,14 +108,14 @@ public class OpenFileHandler extends AbstractHandler { * @param node * The file node whose local cache file is opened. */ - private void openEditor(final IWorkbenchPage page, final FSTreeNode node) { + private void openEditor(final IWorkbenchPage page, final IFSTreeNode node) { Display display = page.getWorkbenchWindow().getWorkbench().getDisplay(); display.asyncExec(new Runnable() { @Override public void run() { - IPath path = CacheManager.getCachePath(node); + IPath path = new Path(node.getCacheFile().getAbsolutePath()); IFileStore fileStore = EFS.getLocalFileSystem().getStore(path); - String editorID = PersistenceManager.getInstance().getPersistentProperties(node).get(IDE.EDITOR_KEY); + String editorID = node.getPreferredEditorID(); try { if(editorID!=null){ FileStoreEditorInput input = new FileStoreEditorInput(fileStore); diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/OpenWithContribution.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/OpenWithContribution.java index aea1a5b3c..25f08401d 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/OpenWithContribution.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/OpenWithContribution.java @@ -1,11 +1,11 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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: - * William Chen (Wind River) [360494]Provide an "Open With" action in the pop + * William Chen (Wind River) [360494]Provide an "Open With" action in the pop * up menu of file system nodes of Target Explorer. *******************************************************************************/ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.handlers; @@ -15,7 +15,7 @@ import org.eclipse.core.runtime.Assert; import org.eclipse.jface.action.IContributionItem; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.ui.ISources; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.PlatformUI; @@ -69,8 +69,8 @@ public class OpenWithContribution extends CompoundContributionItem implements IW .getVariable(ISources.ACTIVE_CURRENT_SELECTION_NAME); IStructuredSelection iss = (IStructuredSelection) selection; Object obj = iss.getFirstElement(); - Assert.isTrue(obj instanceof FSTreeNode); - FSTreeNode node = (FSTreeNode) obj; + Assert.isTrue(obj instanceof IFSTreeNode); + IFSTreeNode node = (IFSTreeNode) obj; IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); return new IContributionItem[] { new OpenWithMenu(page, node) }; } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/OpenWithMenu.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/OpenWithMenu.java index 14c6679e1..dcc3e6139 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/OpenWithMenu.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/OpenWithMenu.java @@ -1,11 +1,11 @@ /******************************************************************************* - * Copyright (c) 2011, 2014 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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: - * William Chen (Wind River) [360494]Provide an "Open With" action in the pop + * William Chen (Wind River) [360494]Provide an "Open With" action in the pop * up menu of file system nodes of Target Explorer. *******************************************************************************/ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.handlers; @@ -16,14 +16,11 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; -import java.util.Map; import org.eclipse.core.filesystem.EFS; import org.eclipse.core.filesystem.IFileStore; import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.QualifiedName; -import org.eclipse.core.runtime.content.IContentType; +import org.eclipse.core.runtime.Path; import org.eclipse.jface.action.ContributionItem; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.window.Window; @@ -34,12 +31,7 @@ import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.IOpExecutor; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpCacheUpdate; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.utils.CacheManager; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.utils.ContentTypeHelper; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.utils.PersistenceManager; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; 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; @@ -50,7 +42,6 @@ import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.dialogs.EditorSelectionDialog; import org.eclipse.ui.ide.FileStoreEditorInput; -import org.eclipse.ui.ide.IDE; /** * A menu for opening files in the target explorer. @@ -59,7 +50,7 @@ import org.eclipse.ui.ide.IDE; * added for each editor which is applicable to the selected file. If the user selects one of these * items, the corresponding editor is opened on the file. * </p> - * + * * @since 3.7 - Copied and modified based on org.eclipse.ui.actions.OpenWithMenu to avoid * introducing org.eclipse.core.resources */ @@ -85,19 +76,19 @@ public class OpenWithMenu extends ContributionItem { } }; // The selected tree node. - FSTreeNode node; + IFSTreeNode node; // The current workbench page. IWorkbenchPage page; // The editor registry. IEditorRegistry registry; /** - * Create an instance using the specified page and the specified FSTreeNode. - * + * Create an instance using the specified page and the specified IFSTreeNode. + * * @param page The page to open the editor. - * @param node The FSTreeNode to be opened. + * @param node The IFSTreeNode to be opened. */ - public OpenWithMenu(IWorkbenchPage page, FSTreeNode node) { + public OpenWithMenu(IWorkbenchPage page, IFSTreeNode node) { super(ID); this.node = node; this.page = page; @@ -106,7 +97,7 @@ public class OpenWithMenu extends ContributionItem { /** * Returns an image to show for the corresponding editor descriptor. - * + * * @param editorDesc the editor descriptor, or null for the system editor * @return the image or null */ @@ -124,7 +115,7 @@ public class OpenWithMenu extends ContributionItem { private ImageDescriptor getImageDescriptor(IEditorDescriptor editorDesc) { ImageDescriptor imageDesc = null; if (editorDesc == null) { - imageDesc = registry.getImageDescriptor(node.name); + imageDesc = registry.getImageDescriptor(node.getName()); // TODO: is this case valid, and if so, what are the implications for content-simulator // editor bindings? } @@ -133,7 +124,7 @@ public class OpenWithMenu extends ContributionItem { } if (imageDesc == null) { if (editorDesc != null && editorDesc.getId().equals(IEditorRegistry.SYSTEM_EXTERNAL_EDITOR_ID)) { - imageDesc = registry.getSystemExternalEditorImageDescriptor(node.name); + imageDesc = registry.getSystemExternalEditorImageDescriptor(node.getName()); } } return imageDesc; @@ -141,7 +132,7 @@ public class OpenWithMenu extends ContributionItem { /** * Creates the menu item for the editor descriptor. - * + * * @param menu the menu to add the item to * @param descriptor the editor descriptor, or null for the system editor * @param preferredEditor the descriptor of the preferred editor, or <code>null</code> @@ -175,7 +166,7 @@ public class OpenWithMenu extends ContributionItem { /** * Creates the Other... menu item - * + * * @param menu the menu to add the item to */ @SuppressWarnings("unused") @@ -190,7 +181,7 @@ public class OpenWithMenu extends ContributionItem { case SWT.Selection: EditorSelectionDialog dialog = new EditorSelectionDialog(menu.getShell()); dialog.setMessage(NLS - .bind(Messages.OpenWithMenu_ChooseEditorForOpening, node.name)); + .bind(Messages.OpenWithMenu_ChooseEditorForOpening, node.getName())); if (dialog.open() == Window.OK) { IEditorDescriptor editor = dialog.getSelectedEditor(); if (editor != null) { @@ -207,15 +198,14 @@ public class OpenWithMenu extends ContributionItem { } /** - * Get the default editor for this FSTreeNode. - * + * Get the default editor for this IFSTreeNode. + * * @return The descriptor of the default editor. */ private IEditorDescriptor getDefaultEditor() { // Try file specific editor. try { - String editorID = PersistenceManager.getInstance().getPersistentProperties(node) - .get(IDE.EDITOR_KEY); + String editorID = node.getPreferredEditorID(); if (editorID != null) { IEditorDescriptor desc = registry.findEditor(editorID); if (desc != null) { @@ -227,10 +217,8 @@ public class OpenWithMenu extends ContributionItem { // do nothing } - IContentType contentType = null; - contentType = ContentTypeHelper.getContentType(node); // Try lookup with filename - return registry.getDefaultEditor(node.name, contentType); + return registry.getDefaultEditor(node.getName(), node.getContentType()); } /* @@ -243,7 +231,7 @@ public class OpenWithMenu extends ContributionItem { IEditorDescriptor defaultEditor = registry.findEditor(DEFAULT_TEXT_EDITOR); IEditorDescriptor preferredEditor = getDefaultEditor(); - IEditorDescriptor[] editors = registry.getEditors(node.name, ContentTypeHelper.getContentType(node)); + IEditorDescriptor[] editors = registry.getEditors(node.getName(), node.getContentType()); Collections.sort(Arrays.asList(editors), comparer); boolean defaultFound = false; @@ -294,7 +282,7 @@ public class OpenWithMenu extends ContributionItem { /** * Creates the menu item for clearing the current selection. - * + * * @param menu the menu to add the item to * @param file the file being edited */ @@ -309,8 +297,7 @@ public class OpenWithMenu extends ContributionItem { switch (event.type) { case SWT.Selection: if (menuItem.getSelection()) { - PersistenceManager.getInstance().getPersistentProperties(node) - .put(IDE.EDITOR_KEY, null); + node.setPreferredEditorID(null); try { syncOpen(getEditorDescriptor(), false); } @@ -329,9 +316,9 @@ public class OpenWithMenu extends ContributionItem { } /** - * Get an appropriate editor for the FSTreeNode. If the default editor is not found, it will + * Get an appropriate editor for the IFSTreeNode. If the default editor is not found, it will * search the in-place editor, the external editor and finally the default text editor. - * + * * @return An appropriate editor to open the node using "Default Editor". * @throws PartInitException */ @@ -344,12 +331,12 @@ public class OpenWithMenu extends ContributionItem { IEditorDescriptor editorDesc = null; // next check the OS for in-place editor (OLE on Win32) - if (registry.isSystemInPlaceEditorAvailable(node.name)) { + if (registry.isSystemInPlaceEditorAvailable(node.getName())) { editorDesc = registry.findEditor(IEditorRegistry.SYSTEM_INPLACE_EDITOR_ID); } // next check with the OS for an external editor - if (editorDesc == null && registry.isSystemExternalEditorAvailable(node.name)) { + if (editorDesc == null && registry.isSystemExternalEditorAvailable(node.getName())) { editorDesc = registry.findEditor(IEditorRegistry.SYSTEM_EXTERNAL_EDITOR_ID); } @@ -370,19 +357,14 @@ public class OpenWithMenu extends ContributionItem { * Synchronize and open the file using the specified editor descriptor. If openUsingDescriptor * is true, it will try to use an external editor to open it if an eclipse editor is not * available. - * + * * @param editorDescriptor The editor descriptor used to open the node. * @param openUsingDescriptor If an external editor should be used to open the node. */ protected void syncOpen(IEditorDescriptor editorDescriptor, boolean openUsingDescriptor) { - File file = CacheManager.getCacheFile(node); - if (!file.exists()) { - // If the file node's local cache does not exist yet, download it. - IOpExecutor executor = new UiExecutor(); - IStatus status = executor.execute(new OpCacheUpdate(node)); - if (!status.isOK()) { - return; - } + File file = node.getCacheFile(); + if (!file.exists() && !UiExecutor.execute(node.operationDownload(null)).isOK()) { + return; } openInEditor(editorDescriptor, openUsingDescriptor); } @@ -390,13 +372,13 @@ public class OpenWithMenu extends ContributionItem { /** * Open the editor using the specified editor descriptor. If openUsingDescriptor is true, it * will try to use an external editor to open it if an eclipse editor is not available. - * + * * @param editorDescriptor The editor descriptor used to open the node. * @param openUsingDescriptor If an external editor should be used to open the node. */ private void openInEditor(IEditorDescriptor editorDescriptor, boolean openUsingDescriptor) { try { - IPath path = CacheManager.getCachePath(node); + IPath path = new Path(node.getCacheFile().getAbsolutePath()); IFileStore fileStore = EFS.getLocalFileSystem().getStore(path); FileStoreEditorInput input = new FileStoreEditorInput(fileStore); if (openUsingDescriptor) { @@ -407,9 +389,7 @@ public class OpenWithMenu extends ContributionItem { String editorId = IEditorRegistry.SYSTEM_EXTERNAL_EDITOR_ID; if (editorDescriptor != null) editorId = editorDescriptor.getId(); page.openEditor(input, editorId, true, IWorkbenchPage.MATCH_INPUT | IWorkbenchPage.MATCH_ID); - Map<QualifiedName, String> properties = PersistenceManager.getInstance() - .getPersistentProperties(node); - properties.put(IDE.EDITOR_KEY, editorId); + node.setPreferredEditorID(editorId); } } catch (PartInitException e) { diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/PasteFilesHandler.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/PasteFilesHandler.java index b7f62ac59..7d50bde17 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/PasteFilesHandler.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/PasteFilesHandler.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -14,17 +14,12 @@ 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.IStatus; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.swt.dnd.Clipboard; import org.eclipse.swt.dnd.DND; import org.eclipse.swt.dnd.FileTransfer; -import org.eclipse.tcf.te.runtime.callback.Callback; import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.IOperation; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.IOpExecutor; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpCopy; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpMove; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.tcf.te.tcf.filesystem.ui.activator.UIPlugin; import org.eclipse.tcf.te.tcf.filesystem.ui.internal.dnd.CommonDnD; import org.eclipse.tcf.te.tcf.filesystem.ui.internal.operations.FsClipboard; @@ -47,32 +42,25 @@ public class PasteFilesHandler extends AbstractHandler { if (!cb.isEmpty()) { // Get the files/folders from the clip board. IStructuredSelection selection = (IStructuredSelection) HandlerUtil.getCurrentSelectionChecked(event); - List<FSTreeNode> nodes = cb.getFiles(); - IOpExecutor executor = null; - IOperation operation = null; + List<IFSTreeNode> nodes = cb.getFiles(); + IOperation operation; if (cb.isCutOp()) { - FSTreeNode dest = (FSTreeNode) selection.getFirstElement(); - operation = new OpMove(nodes, dest, new MoveCopyCallback()); - executor = new UiExecutor(new Callback(){ - @Override - protected void internalDone(Object caller, IStatus status) { - UIPlugin.getClipboard().clear(); - } - }); - } - else if (cb.isCopyOp()) { - FSTreeNode hovered = (FSTreeNode) selection.getFirstElement(); - FSTreeNode dest = getCopyDestination(hovered, nodes); + IFSTreeNode dest = (IFSTreeNode) selection.getFirstElement(); + operation = dest.operationDropMove(nodes, new MoveCopyCallback()); + } else if (cb.isCopyOp()) { + IFSTreeNode hovered = (IFSTreeNode) selection.getFirstElement(); + IFSTreeNode dest = getCopyDestination(hovered, nodes); boolean cpPerm = UIPlugin.isCopyPermission(); boolean cpOwn = UIPlugin.isCopyOwnership(); - operation = new OpCopy(nodes, dest, cpPerm, cpOwn, new MoveCopyCallback()); - executor = new UiExecutor(); + operation = dest.operationDropCopy(nodes, cpPerm, cpOwn, new MoveCopyCallback()); + } else { + return null; } - if (executor != null && operation != null) { - executor.execute(operation); + UiExecutor.execute(operation); + if (cb.isCutOp()) { + UIPlugin.getClipboard().clear(); } - } - else { + } else { Clipboard clipboard = cb.getSystemClipboard(); Object contents = clipboard.getContents(FileTransfer.getInstance()); if (contents != null) { @@ -80,7 +68,7 @@ public class PasteFilesHandler extends AbstractHandler { // Get the files/folders from the clip board. IStructuredSelection selection = (IStructuredSelection) HandlerUtil .getCurrentSelectionChecked(event); - FSTreeNode hovered = (FSTreeNode) selection.getFirstElement(); + IFSTreeNode hovered = (IFSTreeNode) selection.getFirstElement(); CommonDnD dnd = new CommonDnD(); dnd.dropFiles(null, files, DND.DROP_COPY, hovered); } @@ -90,7 +78,7 @@ public class PasteFilesHandler extends AbstractHandler { /** * Return an appropriate destination directory for copying according to - * the specified hovered node. If the hovered node is a file, then return + * the specified hovered node. If the hovered node is a file, then return * its parent directory. If the hovered node is a directory, then return its * self if it is not a node being copied. Return its parent directory if it is * a node being copied. @@ -98,12 +86,12 @@ public class PasteFilesHandler extends AbstractHandler { * @param nodes * @return */ - private FSTreeNode getCopyDestination(FSTreeNode hovered, List<FSTreeNode> nodes) { + private IFSTreeNode getCopyDestination(IFSTreeNode hovered, List<IFSTreeNode> nodes) { if (hovered.isFile()) { return hovered.getParent(); } else if (hovered.isDirectory()) { - for (FSTreeNode node : nodes) { + for (IFSTreeNode node : nodes) { if (node == hovered) { return hovered.getParent(); } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/RefreshHandler.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/RefreshHandler.java index 1bedafff1..17382ac0e 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/RefreshHandler.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/RefreshHandler.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2012, 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 @@ -16,10 +16,8 @@ import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.IOpExecutor; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.JobExecutor; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpRefresh; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.model.ModelManager; import org.eclipse.ui.handlers.HandlerUtil; /** @@ -27,17 +25,12 @@ import org.eclipse.ui.handlers.HandlerUtil; */ public class RefreshHandler extends AbstractHandler { - /* - * (non-Javadoc) - * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent) - */ @Override public Object execute(ExecutionEvent event) throws ExecutionException { ISelection selection = HandlerUtil.getCurrentSelection(event); if (selection instanceof IStructuredSelection && !selection.isEmpty()) { - List<FSTreeNode> nodes = ((IStructuredSelection) selection).toList(); - IOpExecutor executor = new JobExecutor(); - executor.execute(new OpRefresh(nodes)); + List<IFSTreeNode> nodes = ((IStructuredSelection) selection).toList(); + ModelManager.operationRefresh(nodes, true).runInJob(null); } return null; } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/RefreshViewerHandler.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/RefreshViewerHandler.java index 5cd226d37..5d06d6ae2 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/RefreshViewerHandler.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/RefreshViewerHandler.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2014 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -12,10 +12,7 @@ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.handlers; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.IOpExecutor; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.JobExecutor; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpRefresh; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IRuntimeModel; import org.eclipse.tcf.te.tcf.filesystem.core.model.ModelManager; import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerNode; import org.eclipse.ui.IEditorInput; @@ -26,19 +23,14 @@ import org.eclipse.ui.handlers.HandlerUtil; */ public class RefreshViewerHandler extends AbstractHandler { - /* - * (non-Javadoc) - * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent) - */ @Override public Object execute(ExecutionEvent event) throws ExecutionException { IEditorInput editorInput = HandlerUtil.getActiveEditorInputChecked(event); IPeerNode peer = (IPeerNode) editorInput.getAdapter(IPeerNode.class); if (peer != null) { - FSTreeNode root = ModelManager.getRuntimeModel(peer).getRoot(); - if (root != null) { - IOpExecutor executor = new JobExecutor(); - executor.execute(new OpRefresh(root)); + IRuntimeModel rtm = ModelManager.getRuntimeModel(peer); + if (rtm != null) { + rtm.getRoot().operationRefresh(true).runInJob(null); } } return null; diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/RenameCallback.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/RenameCallback.java deleted file mode 100644 index 274442df0..000000000 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/RenameCallback.java +++ /dev/null @@ -1,46 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2012 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 org.eclipse.core.runtime.IStatus; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.tcf.te.runtime.callback.Callback; -import org.eclipse.tcf.te.tcf.filesystem.ui.nls.Messages; -import org.eclipse.ui.PlatformUI; -/** - * The callback implementation for Renaming. - */ -public class RenameCallback extends Callback implements Runnable { - // The message to be displayed. - private String message; - - /* - * (non-Javadoc) - * @see org.eclipse.tcf.te.runtime.callback.Callback#internalDone(java.lang.Object, org.eclipse.core.runtime.IStatus) - */ - @Override - protected void internalDone(Object caller, IStatus status) { - if (!status.isOK()) { - message = status.getMessage(); - PlatformUI.getWorkbench().getDisplay().asyncExec(this); - } - } - - /* - * (non-Javadoc) - * @see java.lang.Runnable#run() - */ - @Override - public void run() { - Shell parent = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); - MessageDialog.openError(parent, Messages.FSRename_RenameFileFolderTitle, message); - } -} diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/RenameFilesHandler.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/RenameFilesHandler.java index 69b7c52e5..fd5d1a0e7 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/RenameFilesHandler.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/RenameFilesHandler.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -20,12 +20,10 @@ import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.window.Window; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.IOpExecutor; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.JobExecutor; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpRename; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.tcf.te.tcf.filesystem.ui.activator.UIPlugin; import org.eclipse.tcf.te.tcf.filesystem.ui.internal.celleditor.FSCellValidator; +import org.eclipse.tcf.te.tcf.filesystem.ui.internal.operations.UiExecutor; import org.eclipse.tcf.te.tcf.filesystem.ui.nls.Messages; import org.eclipse.tcf.te.ui.dialogs.RenameDialog; import org.eclipse.ui.handlers.HandlerUtil; @@ -45,7 +43,7 @@ public class RenameFilesHandler extends AbstractHandler { public Object execute(ExecutionEvent event) throws ExecutionException { IStructuredSelection sel = (IStructuredSelection) HandlerUtil.getCurrentSelectionChecked(event); if (!sel.isEmpty()) { - FSTreeNode node = (FSTreeNode) sel.getFirstElement(); + IFSTreeNode node = (IFSTreeNode) sel.getFirstElement(); boolean inPlaceEditor = UIPlugin.isInPlaceEditor(); if (inPlaceEditor) { // If it is configured to use in-place editor, then invoke the editor. @@ -62,10 +60,7 @@ public class RenameFilesHandler extends AbstractHandler { int ok = dialog.open(); if (ok == Window.OK) { // Do the renaming. - String newName = dialog.getNewName(); - // Rename the node with the new name using an FSRename. - IOpExecutor executor = new JobExecutor(new RenameCallback()); - executor.execute(new OpRename(node, newName)); + UiExecutor.execute(node.operationRename(dialog.getNewName())); } } } @@ -79,7 +74,7 @@ public class RenameFilesHandler extends AbstractHandler { * @param node The file/folder node. * @return The renaming dialog. */ - private RenameDialog createRenameDialog(Shell shell, FSTreeNode node) { + private RenameDialog createRenameDialog(Shell shell, IFSTreeNode node) { String[] names = getUsedNames(node); String title; if (node.isFile()) { @@ -108,7 +103,7 @@ public class RenameFilesHandler extends AbstractHandler { String prompt = Messages.RenameFilesHandler_RenamePromptMessage; String usedError = Messages.FSRenamingAssistant_NameAlreadyExists; String label = Messages.RenameFilesHandler_PromptNewName; - return new RenameDialog(shell, title, null, prompt, usedError, error, label, node.name, formatRegex, names, null); + return new RenameDialog(shell, title, null, prompt, usedError, error, label, node.getName(), formatRegex, names, null); } /** @@ -117,11 +112,14 @@ public class RenameFilesHandler extends AbstractHandler { * @param folder The folder. * @return Used names. */ - private String[] getUsedNames(FSTreeNode folder) { + private String[] getUsedNames(IFSTreeNode folder) { + IFSTreeNode[] nodes = folder.getParent().getChildren(); + if (nodes == null) + return new String[0]; + List<String> usedNames = new ArrayList<String>(); - List<FSTreeNode> nodes = folder.getParent().getChildren(); - for (FSTreeNode node : nodes) { - usedNames.add(node.name); + for (IFSTreeNode node : nodes) { + usedNames.add(node.getName()); } return usedNames.toArray(new String[usedNames.size()]); } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/UpdateHandler.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/UpdateHandler.java index 0fc8b1b0d..7bff16e35 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/UpdateHandler.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/UpdateHandler.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -10,13 +10,13 @@ *******************************************************************************/ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.handlers; +import java.io.File; + import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.IOpExecutor; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpCacheUpdate; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.tcf.te.tcf.filesystem.ui.internal.operations.UiExecutor; import org.eclipse.ui.handlers.HandlerUtil; @@ -33,9 +33,16 @@ public class UpdateHandler extends AbstractHandler { @Override public Object execute(ExecutionEvent event) throws ExecutionException { IStructuredSelection selection = (IStructuredSelection) HandlerUtil.getCurrentSelectionChecked(event); - FSTreeNode node = (FSTreeNode) selection.getFirstElement(); - IOpExecutor executor = new UiExecutor(); - executor.execute(new OpCacheUpdate(node)); + IFSTreeNode node = (IFSTreeNode) selection.getFirstElement(); + + File file = node.getCacheFile(); + if (file.exists() && !file.canWrite()) { + if (!file.delete()) { + return null; + } + } + + UiExecutor.execute(node.operationDownload(null)); return null; } } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/operations/FsClipboard.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/operations/FsClipboard.java index 3b04debe1..d2b186a04 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/operations/FsClipboard.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/operations/FsClipboard.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -9,61 +9,96 @@ *******************************************************************************/ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.operations; +import java.beans.PropertyChangeEvent; import java.util.List; import org.eclipse.swt.SWTException; import org.eclipse.swt.dnd.Clipboard; import org.eclipse.swt.widgets.Display; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpClipboard; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.core.utils.PropertyChangeProvider; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.ui.PlatformUI; /** * The clip board to which copy or cut files/folders. */ -public class FsClipboard extends OpClipboard { - // The system clipboard. +public class FsClipboard extends PropertyChangeProvider { + // The constants to define the current operation type of the clip board. + private static final int NONE = -1; + private static final int CUT = 0; + private static final int COPY = 1; + // The operation type, CUT, COPY or NONE. + private int operation; + // The currently selected files/folders. + private List<IFSTreeNode> files; + private Clipboard clipboard; /** * Create a clip board instance. */ public FsClipboard() { - super(); clipboard = new Clipboard(PlatformUI.getWorkbench().getDisplay()); + operation = NONE; + } + + public boolean isCutOp() { + return operation == CUT; + } + + public boolean isCopyOp() { + return operation == COPY; + } + + public boolean isEmpty() { + return operation == NONE && (files == null || files.isEmpty()); + } + + /** + * Get the currently selected files/folders to operated. + */ + public List<IFSTreeNode> getFiles() { + return files; } /** * Cut the specified files/folders to the clip board. - * - * @param files The file/folder nodes. */ - @Override - public void cutFiles(List<FSTreeNode> files) { - super.cutFiles(files); + public void cutFiles(List<IFSTreeNode> files) { + operation = CUT; + this.files = files; + PropertyChangeEvent event = new PropertyChangeEvent(this, "cut", null, null); //$NON-NLS-1$ + firePropertyChange(event); + clearSystemClipboard(); } /** * Copy the specified files/folders to the clip board. - * + * * @param files The file/folder nodes. */ - @Override - public void copyFiles(List<FSTreeNode> files) { - super.copyFiles(files); + public void copyFiles(List<IFSTreeNode> files) { + operation = COPY; + this.files = files; + PropertyChangeEvent event = new PropertyChangeEvent(this, "copy", null, null); //$NON-NLS-1$ + firePropertyChange(event); + clearSystemClipboard(); } /** * Clear the clip board. */ - @Override - public void clear() { - super.clear(); + public void clear() { + operation = NONE; + this.files = null; + PropertyChangeEvent event = new PropertyChangeEvent(this, "clear", null, null); //$NON-NLS-1$ + firePropertyChange(event); + clearSystemClipboard(); } - + /** * Make sure the system clip board is cleared in a UI thread. */ @@ -79,11 +114,10 @@ public class FsClipboard extends OpClipboard { }}); } } - + /** * Dispose the clipboard. */ - @Override public void dispose() { if(Display.getCurrent() != null) { if (!clipboard.isDisposed()) { @@ -105,7 +139,7 @@ public class FsClipboard extends OpClipboard { /** * Get the system clipboard. - * + * * @return The system clipboard. */ public Clipboard getSystemClipboard() { 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 e93449524..da365d3ae 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 @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -10,91 +10,66 @@ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.operations; import java.lang.reflect.InvocationTargetException; +import java.util.concurrent.atomic.AtomicReference; import org.eclipse.core.runtime.Assert; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; -import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.dialogs.ErrorDialog; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; -import org.eclipse.tcf.te.runtime.interfaces.callback.ICallback; +import org.eclipse.tcf.te.runtime.utils.StatusHelper; import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.IOperation; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.exceptions.TCFException; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.IOpExecutor; import org.eclipse.tcf.te.tcf.filesystem.ui.activator.UIPlugin; -import org.eclipse.tcf.te.tcf.filesystem.ui.dialogs.TimeTriggeredProgressMonitorDialog; +import org.eclipse.tcf.te.tcf.filesystem.ui.nls.Messages; import org.eclipse.ui.PlatformUI; /** * The operation that is executed in an interactive progress dialog. */ -public class UiExecutor implements IOpExecutor { - // The callback - protected ICallback callback; - - /** - * Create a UI executor with no callback. - */ - public UiExecutor() { - this(null); - } - - /** - * Create a UI executor with a callback that will be - * invoked after execution. - * - * @param callback The callback to be invoked after execution. - */ - public UiExecutor(ICallback callback) { - this.callback = callback; - } +public class UiExecutor { + public static IStatus execute(final IOperation operation) { + final Display display = Display.getCurrent(); + Assert.isNotNull(display); + final Shell parent = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); + final ProgressMonitorDialog dlg = new ProgressMonitorDialog(parent); + dlg.setOpenOnRun(false); - /* - * (non-Javadoc) - * @see org.eclipse.tcf.te.tcf.filesystem.ui.internal.operations.IOpExecutor#execute(org.eclipse.tcf.te.tcf.filesystem.core.interfaces.IOperation) - */ - @Override - public IStatus execute(final IOperation operation) { - Assert.isNotNull(Display.getCurrent()); - Shell parent = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); - TimeTriggeredProgressMonitorDialog dialog = new TimeTriggeredProgressMonitorDialog(parent, 250); - final IRunnableWithProgress runnable = new IRunnableWithProgress() { + display.timerExec(500, new Runnable() { @Override - public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { - try { - monitor.setTaskName(operation.getName()); - monitor.beginTask(operation.getName(), operation.getTotalWork()); - operation.run(monitor); + public void run() { + Shell shell = dlg.getShell(); + if (shell != null && !shell.isDisposed()) { + Shell activeShell = display.getActiveShell(); + if (activeShell == null || activeShell == parent) { + dlg.open(); + } else { + display.timerExec(500, this); + } } - finally { - monitor.done(); - } - }}; - dialog.setCancelable(true); - IStatus status = null; - try { - dialog.run(true, true, runnable); - status = Status.OK_STATUS; - } - catch (InvocationTargetException e) { - // Display the error during copy. - Throwable throwable = e.getTargetException(); - if(throwable instanceof TCFException) { - int severity = ((TCFException)throwable).getSeverity(); - status = new Status(severity, UIPlugin.getUniqueIdentifier(), throwable.getMessage(), throwable); - } - else { - status = new Status(IStatus.ERROR, UIPlugin.getUniqueIdentifier(), throwable.getMessage(), throwable); } - MessageDialog.openError(parent, operation.getName(), throwable.getMessage()); - } - catch (InterruptedException e) { - // It is canceled. - status = Status.OK_STATUS; - } - if (callback != null) callback.done(operation, status); - return status; + }); + final AtomicReference<IStatus> ref = new AtomicReference<IStatus>(); + try { + dlg.run(true, true, new IRunnableWithProgress() { + @Override + public void run(IProgressMonitor monitor) { + ref.set(operation.run(monitor)); + } + }); + } catch (InvocationTargetException e) { + ref.set(StatusHelper.getStatus(e)); + } catch (InterruptedException e) { + return Status.CANCEL_STATUS; + } + IStatus status = ref.get(); + if (!status.isOK() && status.getMessage().length() > 0) { + ErrorDialog.openError(parent, operation.getName(), Messages.UiExecutor_errorRunningOperation, status); + UIPlugin.getDefault().getLog().log(status); + } + return status; } } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/pages/FSExplorerEditorPage.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/pages/FSExplorerEditorPage.java index 60f12d207..343582805 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/pages/FSExplorerEditorPage.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/pages/FSExplorerEditorPage.java @@ -13,6 +13,7 @@ import org.eclipse.core.runtime.Assert; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.tcf.te.runtime.events.ChangeEvent; import org.eclipse.tcf.te.runtime.events.EventManager; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IRuntimeModel; import org.eclipse.tcf.te.tcf.filesystem.core.model.ModelManager; import org.eclipse.tcf.te.tcf.filesystem.ui.nls.Messages; import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerNode; @@ -85,7 +86,12 @@ public class FSExplorerEditorPage extends AbstractTreeViewerExplorerEditorPage { if (peerNode == null && element instanceof IAdaptable) { peerNode = (IPeerNode)((IAdaptable)element).getAdapter(IPeerNode.class); } - return peerNode != null ? ModelManager.getRuntimeModel(peerNode).getRoot() : null; + if (peerNode != null) { + IRuntimeModel rtModel = ModelManager.getRuntimeModel(peerNode); + if (rtModel != null) + return rtModel.getRoot(); + } + return null; } /* (non-Javadoc) diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/pages/FSExplorerEventListener.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/pages/FSExplorerEventListener.java index 909eb167e..a21d1567d 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/pages/FSExplorerEventListener.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/pages/FSExplorerEventListener.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2014 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2014, 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 @@ -17,8 +17,8 @@ import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.tcf.te.core.interfaces.IConnectable; import org.eclipse.tcf.te.runtime.events.ChangeEvent; import org.eclipse.tcf.te.runtime.events.EventManager; +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.core.model.FSTreeNode; import org.eclipse.tcf.te.tcf.filesystem.core.model.ModelManager; import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerNode; import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerNodeProperties; @@ -62,7 +62,7 @@ public class FSExplorerEventListener extends AbstractEventListener { } // Property changes for individual context nodes refreshes the node only - else if (source instanceof FSTreeNode) { + else if (source instanceof IFSTreeNode) { if ("expanded".equals(changeEvent.getEventId())) { //$NON-NLS-1$ // Expansion state of the node changed. boolean expanded = ((Boolean)changeEvent.getNewValue()).booleanValue(); @@ -79,8 +79,10 @@ public class FSExplorerEventListener extends AbstractEventListener { if (changeEvent.getNewValue().equals(Integer.valueOf(IConnectable.STATE_CONNECTED))) { // Get the new runtime model final IRuntimeModel model = ModelManager.getRuntimeModel(getPeerNode()); - // Update the tree viewer input element - treeControl.getViewer().setInput(model.getRoot()); + if (model != null) { + // Update the tree viewer input element + treeControl.getViewer().setInput(model.getRoot()); + } } // Trigger a refresh on the whole viewer to show the "Please connect ..." text treeControl.getViewer().refresh(); diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/properties/AdvancedAttributesDialog.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/properties/AdvancedAttributesDialog.java index 4731034d0..b9321d271 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/properties/AdvancedAttributesDialog.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/properties/AdvancedAttributesDialog.java @@ -1,5 +1,5 @@ /********************************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -23,7 +23,7 @@ import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.IWindowsFileAttributes; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNodeWorkingCopy; import org.eclipse.tcf.te.tcf.filesystem.ui.activator.UIPlugin; import org.eclipse.tcf.te.tcf.filesystem.ui.internal.ImageConsts; import org.eclipse.tcf.te.tcf.filesystem.ui.nls.Messages; @@ -35,7 +35,7 @@ import org.eclipse.tcf.te.tcf.filesystem.ui.nls.Messages; public class AdvancedAttributesDialog extends Dialog { // The file or folder node whose advanced attributes are to be displayed. - FSTreeNode node; + IFSTreeNodeWorkingCopy node; /** * Create the advanced attributes dialog with the specified node and a @@ -46,7 +46,7 @@ public class AdvancedAttributesDialog extends Dialog { * @param node * The file or folder node to be displayed. */ - public AdvancedAttributesDialog(Shell parentShell, FSTreeNode node) { + public AdvancedAttributesDialog(Shell parentShell, IFSTreeNodeWorkingCopy node) { super(parentShell); this.node = node; } @@ -124,7 +124,7 @@ public class AdvancedAttributesDialog extends Dialog { String label = node.isFile() ? Messages.AdvancedAttributesDialog_IndexFile : (node.isDirectory() ? Messages.AdvancedAttributesDialog_IndexFolder : null); - boolean on = !node.isWin32AttrOn(IWindowsFileAttributes.FILE_ATTRIBUTE_NOT_CONTENT_INDEXED); + boolean on = !node.getWin32Attr(IWindowsFileAttributes.FILE_ATTRIBUTE_NOT_CONTENT_INDEXED); createOptionField(group, label, IWindowsFileAttributes.FILE_ATTRIBUTE_NOT_CONTENT_INDEXED, on); } @@ -138,7 +138,7 @@ public class AdvancedAttributesDialog extends Dialog { String label = node.isFile() ? Messages.AdvancedAttributesDialog_FileArchive : (node.isDirectory() ? Messages.AdvancedAttributesDialog_FolderArchive : null); - boolean on = node.isWin32AttrOn(IWindowsFileAttributes.FILE_ATTRIBUTE_ARCHIVE); + boolean on = node.getWin32Attr(IWindowsFileAttributes.FILE_ATTRIBUTE_ARCHIVE); createOptionField(group, label, IWindowsFileAttributes.FILE_ATTRIBUTE_ARCHIVE, on); } @@ -150,7 +150,7 @@ public class AdvancedAttributesDialog extends Dialog { */ private void createEncrypt(Group group) { String label = Messages.AdvancedAttributesDialog_Encrypt; - boolean on = node.isWin32AttrOn(IWindowsFileAttributes.FILE_ATTRIBUTE_ENCRYPTED); + boolean on = node.getWin32Attr(IWindowsFileAttributes.FILE_ATTRIBUTE_ENCRYPTED); createOptionField(group, label, IWindowsFileAttributes.FILE_ATTRIBUTE_ENCRYPTED, on); } @@ -162,7 +162,7 @@ public class AdvancedAttributesDialog extends Dialog { */ private void createCompress(Group group) { String label = Messages.AdvancedAttributesDialog_Compress; - boolean on = node.isWin32AttrOn(IWindowsFileAttributes.FILE_ATTRIBUTE_COMPRESSED); + boolean on = node.getWin32Attr(IWindowsFileAttributes.FILE_ATTRIBUTE_COMPRESSED); createOptionField(group, label, IWindowsFileAttributes.FILE_ATTRIBUTE_COMPRESSED, on); } @@ -208,7 +208,7 @@ public class AdvancedAttributesDialog extends Dialog { * Get the result. * @return The result. */ - public FSTreeNode getResult() { + public IFSTreeNodeWorkingCopy getResult() { return node; } } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/properties/GeneralInformationPage.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/properties/GeneralInformationPage.java index 94624e244..e1854dff5 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/properties/GeneralInformationPage.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/properties/GeneralInformationPage.java @@ -1,5 +1,5 @@ /********************************************************************************************* - * Copyright (c) 2011, 2014 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -16,7 +16,6 @@ import java.util.Date; import org.eclipse.core.runtime.Assert; import org.eclipse.core.runtime.IAdaptable; -import org.eclipse.core.runtime.IStatus; import org.eclipse.jface.window.Window; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.SWT; @@ -29,12 +28,9 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.IOpExecutor; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.JobExecutor; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.NullOpExecutor; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpCommitAttr; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpRefresh; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNodeWorkingCopy; +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.dialogs.PropertyPage; @@ -42,14 +38,12 @@ import org.eclipse.ui.dialogs.PropertyPage; * The general information page of a file's properties dialog. */ public class GeneralInformationPage extends PropertyPage { - // The times of retrying before failure. - private static final int RETRY_TIMES = 3; // The formatter for the size of a file. private static final DecimalFormat SIZE_FORMAT = new DecimalFormat(); // The original node. - FSTreeNode node; + IFSTreeNode node; // Cloned node for modification. - FSTreeNode clone; + IFSTreeNodeWorkingCopy fWorkingCopy; // The button of "Read-Only" Button btnReadOnly; // The button of "Hidden" @@ -147,8 +141,8 @@ public class GeneralInformationPage extends PropertyPage { btnReadOnly.addSelectionListener(new SelectionAdapter(){ @Override public void widgetSelected(SelectionEvent e) { - if(btnReadOnly.getSelection()!=clone.isReadOnly()){ - clone.setReadOnly(btnReadOnly.getSelection()); + if(btnReadOnly.getSelection()!=fWorkingCopy.isReadOnly()){ + fWorkingCopy.setReadOnly(btnReadOnly.getSelection()); } } }); @@ -161,9 +155,7 @@ public class GeneralInformationPage extends PropertyPage { @Override public void widgetSelected(SelectionEvent e) { Button btnHidden = (Button) e.getSource(); - if(btnHidden.getSelection()!=clone.isHidden()){ - clone.setHidden(btnHidden.getSelection()); - } + fWorkingCopy.setHidden(btnHidden.getSelection()); } }); // Advanced Attributes @@ -183,18 +175,18 @@ public class GeneralInformationPage extends PropertyPage { * Update the value of attributes section. */ private void updateAttributes() { - btnReadOnly.setSelection(clone.isReadOnly()); - btnHidden.setSelection(clone.isHidden()); + btnReadOnly.setSelection(fWorkingCopy.isReadOnly()); + btnHidden.setSelection(fWorkingCopy.isHidden()); } /** * Show the advanced attributes dialog for the specified file/folder. */ void showAdvancedAttributes() { - AdvancedAttributesDialog dialog = new AdvancedAttributesDialog(this.getShell(), (FSTreeNode)(clone.clone())); + AdvancedAttributesDialog dialog = new AdvancedAttributesDialog(this.getShell(), fWorkingCopy.createWorkingCopy()); if (dialog.open() == Window.OK) { - FSTreeNode result = dialog.getResult(); - clone.attr = result.attr; + IFSTreeNodeWorkingCopy result = dialog.getResult(); + UiExecutor.execute(result.operationCommit()); } } @@ -271,13 +263,7 @@ public class GeneralInformationPage extends PropertyPage { @Override public void widgetSelected(SelectionEvent e) { int bit = 1 << (8 - index); - boolean on = clone.attr != null && (clone.attr.permissions & bit) != 0; - boolean newOn = btnPermissions[index].getSelection(); - if (newOn != on) { - int permissions = clone.attr != null ? clone.attr.permissions : 0; - permissions = newOn ? (permissions | bit) : (permissions & ~bit); - clone.setPermissions(permissions); - } + fWorkingCopy.setPermission(bit, btnPermissions[index].getSelection()); } }); } @@ -288,8 +274,7 @@ public class GeneralInformationPage extends PropertyPage { private void updatePermissions(){ for (int i = 0; i < 9; i++) { final int bit = 1 << (8 - i); - final boolean on = clone.attr != null && (clone.attr.permissions & bit) != 0; - btnPermissions[i].setSelection(on); + btnPermissions[i].setSelection(fWorkingCopy.getPermission(bit)); } } @@ -299,68 +284,29 @@ public class GeneralInformationPage extends PropertyPage { */ @Override protected void performDefaults() { - clone = (FSTreeNode) node.clone(); + fWorkingCopy = node.createWorkingCopy(); if (node.isWindowsNode()) { updateAttributes(); - } - else { + } else { updatePermissions(); } super.performDefaults(); } - /* - * (non-Javadoc) - * @see org.eclipse.jface.preference.PreferencePage#performOk() - */ @Override public boolean performOk() { if (hasAttrsChanged()) { - IStatus status = commitAttr(); - if(!status.isOK()) { - setErrorMessage(status.getMessage()); - return false; - } + UiExecutor.execute(fWorkingCopy.operationCommit()); } - return true; + return getErrorMessage() == null; } /** - * Commit the new attributes of the file and - * return a status. This operation will try - * several times before reporting failure. - * - * @return The committing status. - */ - private IStatus commitAttr() { - OpCommitAttr op = new OpCommitAttr(node, clone.attr); - IOpExecutor executor = new NullOpExecutor(); - IStatus status = null; - for (int i = 0; i < RETRY_TIMES; i++) { - status = executor.execute(op); - if (status.isOK()) { - if (!node.isRoot()) { - // Refresh the parent so that the filters work! - executor = new JobExecutor(); - executor.execute(new OpRefresh(node.getParent())); - } - return status; - } - } - return status; - } - - /** * If the attributes has been changed. * @return If the attributes has been changed. */ - private boolean hasAttrsChanged(){ - if(node.isWindowsNode()){ - // If it is a Windows file, only check its attributes. - return node.getWin32Attrs() != clone.getWin32Attrs(); - } - // If it is not a Windows file, only check its permissions. - return node.attr != null && clone.attr != null && node.attr.permissions != clone.attr.permissions; + private boolean hasAttrsChanged() { + return fWorkingCopy.isDirty(); } /* (non-Javadoc) @@ -369,33 +315,38 @@ public class GeneralInformationPage extends PropertyPage { @Override protected Control createContents(Composite parent) { IAdaptable element = getElement(); - Assert.isTrue(element instanceof FSTreeNode); + Assert.isTrue(element instanceof IFSTreeNode); - node = (FSTreeNode) element; - clone = (FSTreeNode) node.clone(); + node = (IFSTreeNode) element; + fWorkingCopy = node.createWorkingCopy(); Composite page = new Composite(parent, SWT.NONE); GridLayout gridLayout = new GridLayout(2, false); page.setLayout(gridLayout); // Field "Name" - createField(Messages.GeneralInformationPage_Name, clone.name, page); + createField(Messages.GeneralInformationPage_Name, fWorkingCopy.getName(), page); // Field "Type" - createField(Messages.GeneralInformationPage_Type, clone.getFileType(), page); + String fileType = fWorkingCopy.getFileTypeLabel(); + createField(Messages.GeneralInformationPage_Type, fileType, page); // Field "Location" - String location = clone.isSystemRoot() || clone.isRoot() ? - Messages.GeneralInformationPage_Computer : clone.getLocation(); + + String location = fWorkingCopy.isFileSystem() || fWorkingCopy.isRootDirectory() ? + Messages.GeneralInformationPage_Computer : fWorkingCopy.getLocation(); createField(Messages.GeneralInformationPage_Location, location, page); // Field "Size" - if (clone.isFile()) { - createField(Messages.GeneralInformationPage_Size, clone.attr != null ? getSizeText(clone.attr.size) : "", page); //$NON-NLS-1$ + if (fWorkingCopy.isFile()) { + long size = fWorkingCopy.getSize(); + createField(Messages.GeneralInformationPage_Size, size > 0 ? getSizeText(size) : "", page); //$NON-NLS-1$ } // Field "Modified" - createField(Messages.GeneralInformationPage_Modified, clone.attr != null ? getDateText(clone.attr.mtime) : "", page); //$NON-NLS-1$ + long lm = fWorkingCopy.getModificationTime(); + createField(Messages.GeneralInformationPage_Modified, lm != 0 ? getDateText(lm) : "", page); //$NON-NLS-1$ // Field "Accessed" - if (clone.isFile()) { - createField(Messages.GeneralInformationPage_Accessed, clone.attr != null ? getDateText(clone.attr.atime) : "", page); //$NON-NLS-1$ + if (fWorkingCopy.isFile()) { + long at = fWorkingCopy.getAccessTime(); + createField(Messages.GeneralInformationPage_Accessed, at != 0 ? getDateText(at) : "", page); //$NON-NLS-1$ } createSeparator(page); - if (clone.isWindowsNode()) { + if (fWorkingCopy.isWindowsNode()) { createAttributesSection(page); } else { createPermissionsSection(page); diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/search/FSGeneralSearchable.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/search/FSGeneralSearchable.java index e8c3976ce..4d6b44d44 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/search/FSGeneralSearchable.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/search/FSGeneralSearchable.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2013 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -25,7 +25,7 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.tcf.te.tcf.filesystem.ui.nls.Messages; import org.eclipse.tcf.te.ui.controls.BaseEditBrowseTextControl; import org.eclipse.tcf.te.ui.interfaces.ISearchMatcher; @@ -69,14 +69,14 @@ public class FSGeneralSearchable extends AbstractSearchable { // The current selected target type index. private int fTargetType; // The root directory node. - private FSTreeNode rootNode; + private IFSTreeNode rootNode; /** * Constructor * * @param node the node whose sub tree will be searched. */ - public FSGeneralSearchable(FSTreeNode node) { + public FSGeneralSearchable(IFSTreeNode node) { rootNode = node; } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/search/FSModifiedSearchable.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/search/FSModifiedSearchable.java index df7113707..e1014aab3 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/search/FSModifiedSearchable.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/search/FSModifiedSearchable.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2013 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -21,7 +21,7 @@ import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.tcf.te.tcf.filesystem.ui.nls.Messages; import org.eclipse.tcf.te.ui.controls.BaseEditBrowseTextControl; import org.eclipse.tcf.te.ui.search.TreeViewerSearchDialog; @@ -232,20 +232,20 @@ public class FSModifiedSearchable extends FSBaseSearchable { */ @Override public boolean match(Object element) { - if (element instanceof FSTreeNode) { - FSTreeNode node = (FSTreeNode) element; + if (element instanceof IFSTreeNode) { + IFSTreeNode node = (IFSTreeNode) element; long now = System.currentTimeMillis(); switch (choice) { case OPTION_NOT_REMEMBER: return true; case OPTION_LAST_WEEK: - return node.attr.mtime > now - WEEK; + return node.getModificationTime() > now - WEEK; case OPTION_LAST_MONTH: - return node.attr.mtime > now - MONTH; + return node.getModificationTime() > now - MONTH; case OPTION_LAST_YEAR: - return node.attr.mtime > now - YEAR; + return node.getModificationTime() > now - YEAR; case OPTION_SPECIFIED: - return node.attr.mtime >= fromTime && node.attr.mtime < toTime; + return node.getModificationTime() >= fromTime && node.getModificationTime() < toTime; } } return false; diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/search/FSSizeSearchable.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/search/FSSizeSearchable.java index fbd42c2ce..155ccf31d 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/search/FSSizeSearchable.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/search/FSSizeSearchable.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2013 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -21,7 +21,7 @@ import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.tcf.te.tcf.filesystem.ui.nls.Messages; import org.eclipse.tcf.te.ui.controls.BaseEditBrowseTextControl; import org.eclipse.tcf.te.ui.search.TreeViewerSearchDialog; @@ -235,19 +235,19 @@ public class FSSizeSearchable extends FSBaseSearchable { */ @Override public boolean match(Object element) { - if (element instanceof FSTreeNode) { - FSTreeNode node = (FSTreeNode) element; + if (element instanceof IFSTreeNode) { + IFSTreeNode node = (IFSTreeNode) element; switch (choice) { case OPTION_NOT_REMEMBER: return true; case OPTION_SIZE_SMALL: - return node.attr.size <= SIZE_SMALL; + return node.getSize() <= SIZE_SMALL; case OPTION_SIZE_MEDIUM: - return node.attr.size <= SIZE_MEDIUM; + return node.getSize() <= SIZE_MEDIUM; case OPTION_SIZE_LARGE: - return node.attr.size > SIZE_MEDIUM; + return node.getSize() > SIZE_MEDIUM; case OPTION_SIZE_SPECIFIED: - return node.attr.size >= lowerSize && node.attr.size < upperSize; + return node.getSize() >= lowerSize && node.getSize() < upperSize; } } return false; diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/search/FSTreeNodeMatcher.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/search/FSTreeNodeMatcher.java index 3d2c80d9a..49099a6af 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/search/FSTreeNodeMatcher.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/search/FSTreeNodeMatcher.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2012, 2014 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2012, 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 @@ -9,11 +9,11 @@ *******************************************************************************/ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.search; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.tcf.te.ui.interfaces.ISearchMatcher; import org.eclipse.tcf.te.ui.utils.StringMatcher; /** - * The ISearchMatcher implementation for FSTreeNode. + * The ISearchMatcher implementation for IFSTreeNode. */ public class FSTreeNodeMatcher implements ISearchMatcher { // Whether it is case sensitive @@ -30,10 +30,10 @@ public class FSTreeNodeMatcher implements ISearchMatcher { private boolean fIncludeSystem; // The flag if hidden files should be included private boolean fIncludeHidden; - + /** * Constructor with different option parameters. - * + * * @param caseSensitive Option of case sensitive * @param matchPrecise Option of precise matching * @param targetType Option of the target simulator @@ -41,7 +41,7 @@ public class FSTreeNodeMatcher implements ISearchMatcher { * @param includeSystem Option if system files be included * @param includeHidden Option if hidden files be included */ - public FSTreeNodeMatcher(boolean caseSensitive, boolean matchPrecise, + public FSTreeNodeMatcher(boolean caseSensitive, boolean matchPrecise, int targetType, String targetName, boolean includeSystem, boolean includeHidden) { fCaseSensitive = caseSensitive; fTargetName = targetName; @@ -54,22 +54,23 @@ public class FSTreeNodeMatcher implements ISearchMatcher { fIncludeHidden = includeHidden; } - /* - * (non-Javadoc) - * @see org.eclipse.tcf.te.ui.interfaces.ISearchMatcher#match(java.lang.Object) - */ @Override public boolean match(Object context) { - if (context == null) return false; - if (context instanceof FSTreeNode) { - FSTreeNode node = (FSTreeNode) context; - if(fTargetType == 1 && !node.isFile() || fTargetType == 2 && !node.isDirectory()) return false; - if(!fIncludeSystem && node.isSystem()) return false; - if(!fIncludeHidden && node.isHidden()) return false; - String text = node.name; + if (context instanceof IFSTreeNode) { + IFSTreeNode node = (IFSTreeNode) context; + if (fTargetType == 1 && !node.isFile() || fTargetType == 2 && !node.isDirectory()) + return false; + if (!fIncludeSystem && node.isSystemFile()) + return false; + if (!fIncludeHidden && node.isHidden()) + return false; + + String text = node.getName(); if (text != null) { if (fMatchPrecise) { - return fCaseSensitive ? text.equals(fTargetName) : text.equalsIgnoreCase(fTargetName); + if (fCaseSensitive) + return text.equals(fTargetName); + return text.equalsIgnoreCase(fTargetName); } return fStringMatcher.match(text); } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/search/FSTreeNodeSearchable.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/search/FSTreeNodeSearchable.java index b75fb2e0c..d2bb55286 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/search/FSTreeNodeSearchable.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/search/FSTreeNodeSearchable.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2013 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -10,12 +10,12 @@ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.search; import org.eclipse.osgi.util.NLS; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.tcf.te.tcf.filesystem.ui.nls.Messages; import org.eclipse.tcf.te.ui.utils.CompositeSearchable; /** - * The ISearchable adapter for a FSTreeNode which creates a UI for the user to + * The ISearchable adapter for a IFSTreeNode which creates a UI for the user to * input the matching condition and returns a matcher to do the matching. */ public class FSTreeNodeSearchable extends CompositeSearchable { @@ -25,7 +25,7 @@ public class FSTreeNodeSearchable extends CompositeSearchable { * * @param node The directory node. */ - public FSTreeNodeSearchable(FSTreeNode node) { + public FSTreeNodeSearchable(IFSTreeNode node) { super(); setSearchables(new FSGeneralSearchable(node), new FSModifiedSearchable(), new FSSizeSearchable()); } @@ -45,9 +45,9 @@ public class FSTreeNodeSearchable extends CompositeSearchable { @Override public String getSearchMessage(Object rootElement) { String message = Messages.FSTreeNodeSearchable_FindMessage; - FSTreeNode rootNode = (FSTreeNode) rootElement; + IFSTreeNode rootNode = (IFSTreeNode) rootElement; String rootName = getElementName(rootElement); - if (rootNode != null && !rootNode.isSystemRoot()) rootName = "\"" + rootName + "\""; //$NON-NLS-1$//$NON-NLS-2$ + if (rootNode != null && !rootNode.isFileSystem()) rootName = "\"" + rootName + "\""; //$NON-NLS-1$//$NON-NLS-2$ message = NLS.bind(message, rootName); return message; } @@ -62,11 +62,11 @@ public class FSTreeNodeSearchable extends CompositeSearchable { if(rootElement == null) { return Messages.FSTreeNodeSearchable_SelectedFileSystem; } - FSTreeNode rootNode = (FSTreeNode) rootElement; - if(rootNode.isSystemRoot()) { + IFSTreeNode rootNode = (IFSTreeNode) rootElement; + if(rootNode.isFileSystem()) { return Messages.FSTreeNodeSearchable_SelectedFileSystem; } - return rootNode.name; + return rootNode.getName(); } /* (non-Javadoc) diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/BasicFileSection.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/BasicFileSection.java index 9a78d3b8c..b169a38d5 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/BasicFileSection.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/BasicFileSection.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -42,8 +42,8 @@ public class BasicFileSection extends BasicFolderSection { */ @Override public void refresh() { - SWTControlUtil.setText(sizeText, clone != null ? getSizeText(clone.attr.size) : ""); //$NON-NLS-1$ - SWTControlUtil.setText(accessedText, clone != null ? getDateText(clone.attr.atime) : ""); //$NON-NLS-1$ + SWTControlUtil.setText(sizeText, clone != null ? getSizeText(clone.getSize()) : ""); //$NON-NLS-1$ + SWTControlUtil.setText(accessedText, clone != null ? getDateText(clone.getAccessTime()) : ""); //$NON-NLS-1$ super.refresh(); } } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/BasicFolderSection.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/BasicFolderSection.java index 00748f2ec..284469207 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/BasicFolderSection.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/BasicFolderSection.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2014 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -17,7 +17,8 @@ import org.eclipse.core.runtime.Assert; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Text; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNodeWorkingCopy; import org.eclipse.tcf.te.tcf.filesystem.ui.internal.adapters.FSTreeNodeAdapterFactory.FSTreeNodePeerNodeProvider; import org.eclipse.tcf.te.tcf.filesystem.ui.nls.Messages; import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerNodeProvider; @@ -33,9 +34,9 @@ public class BasicFolderSection extends BaseTitledSection { private static final DecimalFormat SIZE_FORMAT = new DecimalFormat(); // The original node to be displayed and edited. - protected FSTreeNode node; + protected IFSTreeNode node; // The copy used to be edited. - protected FSTreeNode clone; + protected IFSTreeNodeWorkingCopy clone; // The text for the name of the node. protected Text nameText; @@ -66,7 +67,7 @@ public class BasicFolderSection extends BaseTitledSection { protected void updateInput(IPeerNodeProvider input) { Assert.isTrue(input instanceof FSTreeNodePeerNodeProvider); this.node = ((FSTreeNodePeerNodeProvider)input).getFSTreeNode(); - this.clone = (FSTreeNode) node.clone(); + this.clone = node.createWorkingCopy(); } /* @@ -75,11 +76,11 @@ public class BasicFolderSection extends BaseTitledSection { */ @Override public void refresh() { - SWTControlUtil.setText(nameText, clone != null ? clone.name : ""); //$NON-NLS-1$ - SWTControlUtil.setText(typeText, clone != null ? clone.getFileType() : ""); //$NON-NLS-1$ - String location = clone == null || clone.isRoot() ? Messages.GeneralInformationPage_Computer : clone.getLocation(); + SWTControlUtil.setText(nameText, clone != null ? clone.getName() : ""); //$NON-NLS-1$ + SWTControlUtil.setText(typeText, clone != null ? clone.getFileTypeLabel() : ""); //$NON-NLS-1$ + String location = clone == null || clone.isRootDirectory() ? Messages.GeneralInformationPage_Computer : clone.getLocation(); SWTControlUtil.setText(locationText, location); - SWTControlUtil.setText(modifiedText, clone != null && clone.attr != null ? getDateText(clone.attr.mtime) : ""); //$NON-NLS-1$ + SWTControlUtil.setText(modifiedText, clone != null && clone.getModificationTime() != 0 ? getDateText(clone.getModificationTime()) : ""); //$NON-NLS-1$ super.refresh(); } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/FileFilter.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/FileFilter.java index 9ce004377..0ab482999 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/FileFilter.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/FileFilter.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -10,7 +10,7 @@ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.tabbed; import org.eclipse.jface.viewers.IFilter; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; /** * The filter to test if a object is a file. @@ -23,9 +23,9 @@ public class FileFilter implements IFilter { */ @Override public boolean select(Object toTest) { - if(toTest instanceof FSTreeNode) { - FSTreeNode node = (FSTreeNode) toTest; - return !node.isSystemRoot() && node.isFile(); + if(toTest instanceof IFSTreeNode) { + IFSTreeNode node = (IFSTreeNode) toTest; + return !node.isFileSystem() && node.isFile(); } return false; } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/FolderFilter.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/FolderFilter.java index 55b4b3e9c..1d42d703d 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/FolderFilter.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/FolderFilter.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -10,7 +10,7 @@ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.tabbed; import org.eclipse.jface.viewers.IFilter; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; /** * The filter to select the folder from the file system. @@ -23,9 +23,9 @@ public class FolderFilter implements IFilter { */ @Override public boolean select(Object toTest) { - if(toTest instanceof FSTreeNode) { - FSTreeNode node = (FSTreeNode) toTest; - return !node.isSystemRoot() && node.isDirectory(); + if(toTest instanceof IFSTreeNode) { + IFSTreeNode node = (IFSTreeNode) toTest; + return !node.isFileSystem() && node.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/tabbed/LinuxFilter.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/LinuxFilter.java index ffb5b6b78..5ff414985 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/LinuxFilter.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/LinuxFilter.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -10,7 +10,7 @@ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.tabbed; import org.eclipse.jface.viewers.IFilter; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; /** * A filter to test if a object is a linux (non-Windows) node. @@ -23,9 +23,9 @@ public class LinuxFilter implements IFilter { */ @Override public boolean select(Object toTest) { - if(toTest instanceof FSTreeNode) { - FSTreeNode node = (FSTreeNode) toTest; - return !node.isSystemRoot() && !node.isWindowsNode(); + if(toTest instanceof IFSTreeNode) { + IFSTreeNode node = (IFSTreeNode) toTest; + return !node.isFileSystem() && !node.isWindowsNode(); } return false; } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/LinuxPermissionsSection.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/LinuxPermissionsSection.java index 2178562eb..a76ac1519 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/LinuxPermissionsSection.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/LinuxPermissionsSection.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2014 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -17,7 +17,8 @@ import org.eclipse.swt.layout.FormData; import org.eclipse.swt.layout.FormLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNodeWorkingCopy; import org.eclipse.tcf.te.tcf.filesystem.ui.internal.adapters.FSTreeNodeAdapterFactory.FSTreeNodePeerNodeProvider; import org.eclipse.tcf.te.tcf.filesystem.ui.nls.Messages; import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerNodeProvider; @@ -31,9 +32,9 @@ import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage; */ public class LinuxPermissionsSection extends BaseTitledSection { // The original node. - protected FSTreeNode node; + protected IFSTreeNode node; // The copy node to be edited. - protected FSTreeNode clone; + protected IFSTreeNodeWorkingCopy clone; // The button of "Permissions" protected Button[] btnPermissions; @@ -112,7 +113,7 @@ public class LinuxPermissionsSection extends BaseTitledSection { protected void updateInput(IPeerNodeProvider input) { Assert.isTrue(input instanceof FSTreeNodePeerNodeProvider); this.node = ((FSTreeNodePeerNodeProvider)input).getFSTreeNode(); - this.clone = (FSTreeNode) node.clone(); + this.clone = node.createWorkingCopy(); } /* @@ -123,8 +124,7 @@ public class LinuxPermissionsSection extends BaseTitledSection { public void refresh() { for (int i = 0; i < 9; i++) { final int bit = 1 << (8 - i); - final boolean on = clone != null ? (clone.attr.permissions & bit) != 0 : false; - SWTControlUtil.setSelection(btnPermissions[i], on); + SWTControlUtil.setSelection(btnPermissions[i], clone.getPermission(bit)); } } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/WindowsAttributesCESection.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/WindowsAttributesCESection.java index 1c73246b9..95674df55 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/WindowsAttributesCESection.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/WindowsAttributesCESection.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2014 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -16,7 +16,7 @@ import org.eclipse.swt.layout.FormData; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.IWindowsFileAttributes; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.tcf.te.tcf.filesystem.ui.internal.adapters.FSTreeNodeAdapterFactory.FSTreeNodePeerNodeProvider; import org.eclipse.tcf.te.tcf.filesystem.ui.nls.Messages; import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerNodeProvider; @@ -31,7 +31,7 @@ import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage; public class WindowsAttributesCESection extends BaseTitledSection { // The original node. - protected FSTreeNode node; + protected IFSTreeNode node; // The check box to display the compress attribute. protected Button compressButton; @@ -77,10 +77,10 @@ public class WindowsAttributesCESection extends BaseTitledSection { */ @Override public void refresh() { - boolean on = node != null ? node.isWin32AttrOn(IWindowsFileAttributes.FILE_ATTRIBUTE_COMPRESSED) : false; - SWTControlUtil.setSelection(compressButton, on); - on = node != null ? node.isWin32AttrOn(IWindowsFileAttributes.FILE_ATTRIBUTE_ENCRYPTED) : false; - SWTControlUtil.setSelection(encryptButton, on); + SWTControlUtil.setSelection(compressButton, node != null && + node.getWin32Attr(IWindowsFileAttributes.FILE_ATTRIBUTE_COMPRESSED)); + SWTControlUtil.setSelection(encryptButton, node != null && + node.getWin32Attr(IWindowsFileAttributes.FILE_ATTRIBUTE_ENCRYPTED)); } /* diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/WindowsAttributesSection.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/WindowsAttributesSection.java index dfc7a701c..301612947 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/WindowsAttributesSection.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/WindowsAttributesSection.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2014 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -15,7 +15,8 @@ import org.eclipse.swt.layout.FormAttachment; import org.eclipse.swt.layout.FormData; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNodeWorkingCopy; import org.eclipse.tcf.te.tcf.filesystem.ui.internal.adapters.FSTreeNodeAdapterFactory.FSTreeNodePeerNodeProvider; import org.eclipse.tcf.te.tcf.filesystem.ui.nls.Messages; import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerNodeProvider; @@ -29,9 +30,9 @@ import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage; */ public class WindowsAttributesSection extends BaseTitledSection { // The original node. - protected FSTreeNode node; + protected IFSTreeNode fNode; // The copy node. - protected FSTreeNode clone; + protected IFSTreeNodeWorkingCopy fWorkingCopy; // The check box for "Read Only" attribute. protected Button readOnlyButton; // The check box for "Hidden" attribute. @@ -67,8 +68,8 @@ public class WindowsAttributesSection extends BaseTitledSection { @Override protected void updateInput(IPeerNodeProvider input) { Assert.isTrue(input instanceof FSTreeNodePeerNodeProvider); - this.node = ((FSTreeNodePeerNodeProvider)input).getFSTreeNode(); - this.clone = (FSTreeNode) node.clone(); + fNode = ((FSTreeNodePeerNodeProvider)input).getFSTreeNode(); + fWorkingCopy = fNode.createWorkingCopy(); } /* @@ -77,8 +78,8 @@ public class WindowsAttributesSection extends BaseTitledSection { */ @Override public void refresh() { - SWTControlUtil.setSelection(readOnlyButton, clone != null ? clone.isReadOnly() : false); - SWTControlUtil.setSelection(hiddenButton, clone != null ? clone.isHidden(): false); + SWTControlUtil.setSelection(readOnlyButton, fWorkingCopy != null && fWorkingCopy.isReadOnly()); + SWTControlUtil.setSelection(hiddenButton, fWorkingCopy != null && fWorkingCopy.isHidden()); } /* diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/WindowsFileFilter.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/WindowsFileFilter.java index d2694c893..0af6a5e14 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/WindowsFileFilter.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/WindowsFileFilter.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -10,7 +10,7 @@ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.tabbed; import org.eclipse.jface.viewers.IFilter; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; /** * The filter to test if a object is a Windows file. @@ -23,9 +23,9 @@ public class WindowsFileFilter implements IFilter { */ @Override public boolean select(Object toTest) { - if(toTest instanceof FSTreeNode) { - FSTreeNode node = (FSTreeNode) toTest; - return !node.isSystemRoot() && node.isWindowsNode() && node.isFile(); + if(toTest instanceof IFSTreeNode) { + IFSTreeNode node = (IFSTreeNode) toTest; + return !node.isFileSystem() && node.isWindowsNode() && node.isFile(); } return false; } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/WindowsFilter.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/WindowsFilter.java index 85b53dc36..c24dd60b4 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/WindowsFilter.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/WindowsFilter.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -10,7 +10,7 @@ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.tabbed; import org.eclipse.jface.viewers.IFilter; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; /** * The filter to test if a object is a Windows node. @@ -23,9 +23,9 @@ public class WindowsFilter implements IFilter { */ @Override public boolean select(Object toTest) { - if(toTest instanceof FSTreeNode) { - FSTreeNode node = (FSTreeNode) toTest; - return !node.isSystemRoot() && node.isWindowsNode() && (node.isFile() || node.isDirectory()); + if(toTest instanceof IFSTreeNode) { + IFSTreeNode node = (IFSTreeNode) toTest; + return !node.isFileSystem() && node.isWindowsNode() && (node.isFile() || node.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/tabbed/WindowsFolderAISection.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/WindowsFolderAISection.java index 703f33ed9..861f5df37 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/WindowsFolderAISection.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/WindowsFolderAISection.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2014 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -16,7 +16,7 @@ import org.eclipse.swt.layout.FormData; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.IWindowsFileAttributes; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.tcf.te.tcf.filesystem.ui.internal.adapters.FSTreeNodeAdapterFactory.FSTreeNodePeerNodeProvider; import org.eclipse.tcf.te.tcf.filesystem.ui.nls.Messages; import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerNodeProvider; @@ -31,7 +31,7 @@ import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage; public class WindowsFolderAISection extends BaseTitledSection { // The original node. - protected FSTreeNode node; + protected IFSTreeNode node; // The check box for archive attribute. protected Button archiveButton; @@ -97,10 +97,10 @@ public class WindowsFolderAISection extends BaseTitledSection { */ @Override public void refresh() { - boolean on = node != null ? node.isWin32AttrOn(IWindowsFileAttributes.FILE_ATTRIBUTE_ARCHIVE) : false; - SWTControlUtil.setSelection(archiveButton, on); - on = node != null ? !node.isWin32AttrOn(IWindowsFileAttributes.FILE_ATTRIBUTE_NOT_CONTENT_INDEXED) : false; - SWTControlUtil.setSelection(indexButton, on); + SWTControlUtil.setSelection(archiveButton, node != null && + node.getWin32Attr(IWindowsFileAttributes.FILE_ATTRIBUTE_ARCHIVE)); + SWTControlUtil.setSelection(indexButton, node != null && + !node.getWin32Attr(IWindowsFileAttributes.FILE_ATTRIBUTE_NOT_CONTENT_INDEXED)); } /* diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/WindowsFolderFilter.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/WindowsFolderFilter.java index 84d8d1553..8b4c47ddd 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/WindowsFolderFilter.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/WindowsFolderFilter.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -10,7 +10,7 @@ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.tabbed; import org.eclipse.jface.viewers.IFilter; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; /** * The filter to test if the object is a Windows folder. @@ -23,9 +23,9 @@ public class WindowsFolderFilter implements IFilter { */ @Override public boolean select(Object toTest) { - if(toTest instanceof FSTreeNode) { - FSTreeNode node = (FSTreeNode) toTest; - return !node.isSystemRoot() && node.isWindowsNode() && node.isDirectory(); + if(toTest instanceof IFSTreeNode) { + IFSTreeNode node = (IFSTreeNode) toTest; + return !node.isFileSystem() && node.isWindowsNode() && node.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/testers/ClipboardPropertyTester.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/testers/ClipboardPropertyTester.java index b01558655..808a9a512 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/testers/ClipboardPropertyTester.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/testers/ClipboardPropertyTester.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -16,7 +16,7 @@ import org.eclipse.core.runtime.Assert; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.swt.dnd.Clipboard; import org.eclipse.swt.dnd.FileTransfer; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.tcf.te.tcf.filesystem.ui.activator.UIPlugin; import org.eclipse.tcf.te.tcf.filesystem.ui.internal.operations.FsClipboard; /** @@ -40,18 +40,18 @@ public class ClipboardPropertyTester extends PropertyTester { if (property.equals("canPaste")) { //$NON-NLS-1$ FsClipboard cb = UIPlugin.getClipboard(); if (!cb.isEmpty()) { - List<FSTreeNode> nodes = cb.getFiles(); + List<IFSTreeNode> nodes = cb.getFiles(); boolean moving = cb.isCutOp(); boolean copying = cb.isCopyOp(); - List<FSTreeNode> selection = ((IStructuredSelection) receiver).toList(); - FSTreeNode hovered = null; + List<IFSTreeNode> selection = ((IStructuredSelection) receiver).toList(); + IFSTreeNode hovered = null; Assert.isTrue(!selection.isEmpty()); if (selection.size() == 1) { - FSTreeNode node = selection.get(0); + IFSTreeNode node = selection.get(0); if (node.isDirectory() && moving) { hovered = node; } - else if (node.isRoot()) { + else if (node.isRootDirectory()) { hovered = node; } else { @@ -59,17 +59,17 @@ public class ClipboardPropertyTester extends PropertyTester { } } else { - for (FSTreeNode node : selection) { + for (IFSTreeNode node : selection) { if (hovered == null) hovered = node.getParent(); else if (hovered != node.getParent()) return false; } } if (hovered != null && hovered.isDirectory() && hovered.isWritable() && (moving || copying)) { - FSTreeNode head = nodes.get(0); - String hid = head.peerNode.getPeerId(); - String tid = hovered.peerNode.getPeerId(); + IFSTreeNode head = nodes.get(0); + String hid = head.getPeerNode().getPeerId(); + String tid = hovered.getPeerNode().getPeerId(); if (hid.equals(tid)) { - for (FSTreeNode node : nodes) { + for (IFSTreeNode node : nodes) { if (moving && node.getParent() == hovered || node.isAncestorOf(hovered)) { return false; } @@ -82,11 +82,11 @@ public class ClipboardPropertyTester extends PropertyTester { Clipboard clipboard = cb.getSystemClipboard(); Object contents = clipboard.getContents(FileTransfer.getInstance()); if (contents != null) { - List<FSTreeNode> selection = ((IStructuredSelection) receiver).toList(); - FSTreeNode hovered = null; + List<IFSTreeNode> selection = ((IStructuredSelection) receiver).toList(); + IFSTreeNode hovered = null; Assert.isTrue(!selection.isEmpty()); if (selection.size() == 1) { - FSTreeNode node = selection.get(0); + IFSTreeNode node = selection.get(0); if (node.isFile()) { hovered = node.getParent(); } @@ -95,7 +95,7 @@ public class ClipboardPropertyTester extends PropertyTester { } } else { - for (FSTreeNode node : selection) { + for (IFSTreeNode node : selection) { if (hovered == null) hovered = node.getParent(); else if (hovered != node.getParent()) return false; } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/FolderValidator.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/FolderValidator.java index 6ca8422bc..f7733ec1a 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/FolderValidator.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/FolderValidator.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2014 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -11,23 +11,23 @@ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.wizards; import org.eclipse.jface.dialogs.IMessageProvider; import org.eclipse.osgi.util.NLS; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.tcf.te.tcf.filesystem.ui.nls.Messages; import org.eclipse.tcf.te.ui.controls.validator.Validator; /** * The validator to validate the path of the parent directory in the new file/folder wizard * page is valid. It is only when it is not empty and it exists in the target peer. - * + * * @see Validator */ public class FolderValidator extends Validator { // The wizard page to create the new node. private NewNodeWizardPage page; - + /** * Create a folder validator of the specified wizard page. - * + * * @param page The wizard page to create the new file/folder. */ public FolderValidator(NewNodeWizardPage page) { @@ -45,7 +45,7 @@ public class FolderValidator extends Validator { setMessage(Messages.FolderValidator_SpecifyFolder, IMessageProvider.ERROR); return false; } - FSTreeNode folder = page.getInputDir(); + IFSTreeNode folder = page.getInputDir(); if (folder == null) { setMessage(NLS.bind(Messages.FolderValidator_DirNotExist, newText), IMessageProvider.ERROR); return false; diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/NameValidator.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/NameValidator.java index 5329a4f7c..a88ab3720 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/NameValidator.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/NameValidator.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -9,21 +9,15 @@ *******************************************************************************/ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.wizards; -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.core.runtime.SafeRunner; import org.eclipse.jface.dialogs.IMessageProvider; -import org.eclipse.jface.util.SafeRunnable; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.Operation; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.tcf.te.tcf.filesystem.ui.internal.celleditor.FSCellValidator; import org.eclipse.tcf.te.tcf.filesystem.ui.nls.Messages; import org.eclipse.tcf.te.ui.controls.validator.Validator; /** * The validator to validate the name of a file/folder in the file system of Target Explorer. - * + * * @see Validator */ public class NameValidator extends Validator { @@ -32,7 +26,7 @@ public class NameValidator extends Validator { /** * Create a NameValidator with the folder in which the file/folder is created. - * + * * @param wizard The parent folder in which the file/folder is created. */ public NameValidator(NewNodeWizardPage wizard) { @@ -46,7 +40,7 @@ public class NameValidator extends Validator { */ @Override public boolean isValid(String newText) { - FSTreeNode folder = wizard.getInputDir(); + IFSTreeNode folder = wizard.getInputDir(); if(folder == null) { setMessage(Messages.NameValidator_SpecifyFolder, IMessageProvider.INFORMATION); return false; @@ -71,42 +65,25 @@ public class NameValidator extends Validator { /** * To test if the folder has a child with the specified name. - * + * * @param name The name. * @return true if it has a child with the name. */ private boolean hasChild(String name) { - List<FSTreeNode> nodes = getChildren(); - for (FSTreeNode node : nodes) { + final IFSTreeNode folder = wizard.getInputDir(); + IFSTreeNode[] nodes = folder.getChildren(); + if (nodes == null) + return false; + + for (IFSTreeNode node : nodes) { if (node.isWindowsNode()) { - if (node.name.equalsIgnoreCase(name)) return true; + if (node.getName().equalsIgnoreCase(name)) { + return true; + } + } else if (node.getName().equals(name)) { + return true; } - else if (node.name.equals(name)) return true; } return false; } - - /** - * Get the folder's current children. If the children has not yet been loaded, then load it. - * - * @return The current children of the folder. - */ - private List<FSTreeNode> getChildren() { - final FSTreeNode folder = wizard.getInputDir(); - if (folder.childrenQueried) { - return folder.getChildren(); - } - final List<FSTreeNode> result = new ArrayList<FSTreeNode>(); - SafeRunner.run(new SafeRunnable() { - @Override - public void handleException(Throwable e) { - // Ignore exception - } - @Override - public void run() throws Exception { - result.addAll(new Operation().getChildren(folder)); - } - }); - return result; - } } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/NewFileWizard.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/NewFileWizard.java index 3ad1bfb76..da9fd30ea 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/NewFileWizard.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/NewFileWizard.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -9,9 +9,8 @@ *******************************************************************************/ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.wizards; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpCreate; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpCreateFile; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.IResultOperation; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.tcf.te.tcf.filesystem.ui.nls.Messages; /** @@ -30,11 +29,11 @@ public class NewFileWizard extends NewNodeWizard { /* * (non-Javadoc) - * @see org.eclipse.tcf.te.tcf.filesystem.internal.wizards.NewNodeWizard#getCreateOp(org.eclipse.tcf.te.tcf.filesystem.model.FSTreeNode, java.lang.String, org.eclipse.tcf.te.runtime.interfaces.callback.ICallback) + * @see org.eclipse.tcf.te.tcf.filesystem.internal.wizards.NewNodeWizard#getCreateOp(org.eclipse.tcf.te.tcf.filesystem.model.IFSTreeNode, java.lang.String, org.eclipse.tcf.te.runtime.interfaces.callback.ICallback) */ @Override - protected OpCreate getCreateOp(FSTreeNode folder, String name) { - return new OpCreateFile(folder, name); + protected IResultOperation<? extends IFSTreeNode> getCreateOp(IFSTreeNode folder, String name) { + return folder.operationNewFile(name); } /* diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/NewFolderWizard.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/NewFolderWizard.java index 84fb4adc9..7784fe2c4 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/NewFolderWizard.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/NewFolderWizard.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -9,9 +9,8 @@ *******************************************************************************/ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.wizards; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpCreate; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpCreateFolder; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.IResultOperation; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.tcf.te.tcf.filesystem.ui.nls.Messages; /** @@ -30,11 +29,11 @@ public class NewFolderWizard extends NewNodeWizard { /* * (non-Javadoc) - * @see org.eclipse.tcf.te.tcf.filesystem.internal.wizards.NewNodeWizard#getCreateOp(org.eclipse.tcf.te.tcf.filesystem.model.FSTreeNode, java.lang.String, org.eclipse.tcf.te.runtime.interfaces.callback.ICallback) + * @see org.eclipse.tcf.te.tcf.filesystem.internal.wizards.NewNodeWizard#getCreateOp(org.eclipse.tcf.te.tcf.filesystem.model.IFSTreeNode, java.lang.String, org.eclipse.tcf.te.runtime.interfaces.callback.ICallback) */ @Override - protected OpCreate getCreateOp(FSTreeNode folder, String name) { - return new OpCreateFolder(folder, name); + protected IResultOperation<? extends IFSTreeNode> getCreateOp(IFSTreeNode folder, String name) { + return folder.operationNewFolder(name); } /* diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/NewNodeWizard.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/NewNodeWizard.java index ee743fcae..d58be13c6 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/NewNodeWizard.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/NewNodeWizard.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2014 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -12,14 +12,16 @@ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.wizards; import java.lang.reflect.InvocationTargetException; import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.tcf.protocol.Protocol; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpCreate; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.IResultOperation; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IFSTreeNode; import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerNode; import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerNodeProperties; import org.eclipse.tcf.te.ui.views.editor.pages.AbstractTreeViewerExplorerEditorPage; @@ -38,7 +40,7 @@ import org.eclipse.ui.navigator.CommonNavigator; */ public abstract class NewNodeWizard extends AbstractWizard implements INewWizard { // The folder in which the new node is created. - private FSTreeNode folder; + private IFSTreeNode folder; // The target peer where the new node is created. private IPeerNode peer; // The wizard page used to create the new node. @@ -62,13 +64,13 @@ public abstract class NewNodeWizard extends AbstractWizard implements INewWizard setWindowTitle(getTitle()); if (!selection.isEmpty()) { Object element = selection.getFirstElement(); - if (element instanceof FSTreeNode) { - folder = (FSTreeNode) element; + if (element instanceof IFSTreeNode) { + folder = (IFSTreeNode) element; if (folder.isFile()) { // If the selected is a file, then create the node in the parent folder. folder = folder.getParent(); } - peer = folder.peerNode; + peer = folder.getPeerNode(); } else if (element instanceof IPeerNode) { if(hasFileSystem((IPeerNode) element)) { @@ -130,27 +132,30 @@ public abstract class NewNodeWizard extends AbstractWizard implements INewWizard newPage.saveWidgetValues(); // Get the new name and create the node. String name = newPage.getNodeName(); - FSTreeNode dest = newPage.getInputDir(); - final OpCreate create = getCreateOp(dest, name); + IFSTreeNode dest = newPage.getInputDir(); + final IResultOperation<? extends IFSTreeNode> create = getCreateOp(dest, name); + final IStatus[] status = {Status.CANCEL_STATUS}; IRunnableWithProgress runnable = new IRunnableWithProgress() { @Override - public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { - create.run(monitor); - }}; + public void run(IProgressMonitor monitor) { + status[0] = create.run(monitor); + } + }; try { getContainer().run(false, false, runnable); - final FSTreeNode newNode = create.getNode(); - getShell().getDisplay().asyncExec(new Runnable(){ - @Override - public void run() { - selectNewNode(newNode); - }}); - return true; - } - catch (InvocationTargetException e) { - newPage.setErrorMessage(e.getMessage()); - } - catch (InterruptedException e) { + if (status[0].isOK()) { + final IFSTreeNode newNode = create.getResult(); + getShell().getDisplay().asyncExec(new Runnable(){ + @Override + public void run() { + selectNewNode(newNode); + }}); + return true; + } + newPage.setErrorMessage(status[0].getMessage()); + } catch (InvocationTargetException e) { + newPage.setErrorMessage(e.getMessage()); + } catch (InterruptedException e) { } } return false; @@ -161,7 +166,7 @@ public abstract class NewNodeWizard extends AbstractWizard implements INewWizard * * @param node The node to be selected. */ - void selectNewNode(FSTreeNode node) { + void selectNewNode(IFSTreeNode node) { TreeViewer viewer = getFocusedViewer(); if(viewer != null) { viewer.refresh(folder); @@ -211,7 +216,7 @@ public abstract class NewNodeWizard extends AbstractWizard implements INewWizard * @param name The name of the new node. * @return a FSCreate instance to do the creation. */ - protected abstract OpCreate getCreateOp(FSTreeNode folder, String name); + protected abstract IResultOperation<? extends IFSTreeNode> getCreateOp(IFSTreeNode folder, String name); /** * The wizard's title to be used. @@ -244,7 +249,7 @@ public abstract class NewNodeWizard extends AbstractWizard implements INewWizard * * @return the current selected folder. */ - public FSTreeNode getFolder() { + public IFSTreeNode getFolder() { return folder; } } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/NewNodeWizardPage.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/NewNodeWizardPage.java index 7179beddc..4a6b63f0b 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/NewNodeWizardPage.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/NewNodeWizardPage.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2014 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -26,9 +26,10 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.NullOpExecutor; -import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpParsePath; -import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode; +import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.IResultOperation; +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.core.model.ModelManager; import org.eclipse.tcf.te.tcf.filesystem.ui.controls.FSTreeContentProvider; import org.eclipse.tcf.te.tcf.filesystem.ui.controls.FSTreeViewerSorter; import org.eclipse.tcf.te.tcf.filesystem.ui.help.IContextHelpIds; @@ -159,7 +160,7 @@ public abstract class NewNodeWizardPage extends AbstractValidatingWizardPage { folderControl.setupPanel(client); folderControl.setEditFieldValidator(new FolderValidator(this)); NewNodeWizard wizard = getWizard(); - FSTreeNode folder = wizard.getFolder(); + IFSTreeNode folder = wizard.getFolder(); if (folder != null) folderControl.setEditFieldControlText(folder.getLocation()); treeViewer = new TreeViewer(client, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER); @@ -207,8 +208,8 @@ public abstract class NewNodeWizardPage extends AbstractValidatingWizardPage { static class DirectoryFilter extends ViewerFilter { @Override public boolean select(Viewer viewer, Object parentElement, Object element) { - if (element instanceof FSTreeNode) { - FSTreeNode node = (FSTreeNode) element; + if (element instanceof IFSTreeNode) { + IFSTreeNode node = (IFSTreeNode) element; if(node.isFile()) return false; } return true; @@ -250,8 +251,8 @@ public abstract class NewNodeWizardPage extends AbstractValidatingWizardPage { protected void onSelectionChanged() { if (treeViewer.getSelection() instanceof IStructuredSelection) { IStructuredSelection selection = (IStructuredSelection) treeViewer.getSelection(); - if (selection.getFirstElement() instanceof FSTreeNode) { - FSTreeNode folder = (FSTreeNode) selection.getFirstElement(); + if (selection.getFirstElement() instanceof IFSTreeNode) { + IFSTreeNode folder = (IFSTreeNode) selection.getFirstElement(); folderControl.setEditFieldControlText(folder.getLocation()); } else { @@ -343,16 +344,19 @@ public abstract class NewNodeWizardPage extends AbstractValidatingWizardPage { * * @return The directory node if it exists or else null. */ - public FSTreeNode getInputDir() { + public IFSTreeNode getInputDir() { NewNodeWizard wizard = getWizard(); IPeerNode peer = wizard.getPeer(); if (peer == null) return null; final String text = folderControl.getEditFieldControlText(); if (text != null) { String path = text.trim(); - OpParsePath parser = new OpParsePath(peer, path); - new NullOpExecutor().execute(parser); - return parser.getResult(); + IRuntimeModel rtm = ModelManager.getRuntimeModel(peer); + if (rtm != null) { + IResultOperation<IFSTreeNode> operation = rtm.operationRestoreFromPath(path); + operation.run(null); + return operation.getResult(); + } } return null; } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/TargetPatternFilter.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/TargetPatternFilter.java index 82baf5e34..c5b2472fe 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/TargetPatternFilter.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/TargetPatternFilter.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2005, 2014 IBM Corporation and others. + * Copyright (c) 2005, 2015 IBM Corporation 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 @@ -25,7 +25,6 @@ public class TargetPatternFilter extends PatternFilter { private DelegatingLabelProvider targetLabelProvider = new DelegatingLabelProvider(); /** * Create a new instance of a WizardPatternFilter - * @param isMatchItem */ public TargetPatternFilter() { super(); diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/TargetSelectionPage.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/TargetSelectionPage.java index d3b268055..fdf717bdb 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/TargetSelectionPage.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/TargetSelectionPage.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2014 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -82,11 +82,6 @@ public class TargetSelectionPage extends AbstractValidatingWizardPage { } } - /** - * Constructor. - * - * @param wizardRegistry The new target wizard registry. Must not be <code>null</code>. - */ public TargetSelectionPage() { super(TargetSelectionPage.class.getSimpleName()); setTitle(getDefaultTitle()); 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 8d68fec45..53f8ac980 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 @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2014 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 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 @@ -235,6 +235,8 @@ public class Messages extends NLS { public static String NewFolderWizardPage_NewFolderWizardPageNameLabel; public static String NewFolderWizardPage_NewFolderWizardPageTitle; public static String NewNodeWizardPage_PromptFolderLabel; + public static String SaveAllListener_message_uploadFile; + public static String SaveAllListener_message_uploadFiles; public static String SizeValidator_ErrorIncorrectFormat; public static String SizeValidator_ErrorSizeOutofRange; public static String SizeValidator_InfoPrompt; @@ -247,5 +249,6 @@ public class Messages extends NLS { public static String TreeViewerSearchDialog_BtnPreciseText; public static String ContentProvider_notConnected; + public static String UiExecutor_errorRunningOperation; } 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 17171148a..89b2d4a7d 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 @@ -1,5 +1,5 @@ ############################################################################### -# Copyright (c) 2012, 2014 Wind River Systems, Inc. and others. All rights reserved. +# Copyright (c) 2012, 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 @@ -157,6 +157,8 @@ NewFolderWizardPage_NewFolderWizardPageDescription=Create a new folder in the di NewFolderWizardPage_NewFolderWizardPageNameLabel=Folder name: NewFolderWizardPage_NewFolderWizardPageTitle=New Folder NewNodeWizardPage_PromptFolderLabel=Enter or select the parent folder: +SaveAllListener_message_uploadFile=Uploading file {0} +SaveAllListener_message_uploadFiles=Uploading {0} files SizeValidator_ErrorIncorrectFormat=The format of the size entered is not correct. SizeValidator_ErrorSizeOutofRange=The size entered is not in the expected range. SizeValidator_InfoPrompt=Please enter a size number. @@ -169,3 +171,4 @@ TreeViewerSearchDialog_BtnCaseText=Case sensitive TreeViewerSearchDialog_BtnPreciseText=Precise matching ContentProvider_notConnected=Please connect to see the filesystem on the target. +UiExecutor_errorRunningOperation=Operation completed with errors |