From 3e7bc9fefb2d3e8e5abbb593a81c08b827f63e88 Mon Sep 17 00:00:00 2001
From: Uwe Stieber
Date: Tue, 17 Feb 2015 10:32:24 +0100
Subject: Terminals: Move terminals plugins and features into separate
directory structure
---
pom.xml | 26 +-
.../org.eclipse.tcf.te.terminals.feature/.project | 28 -
.../build.properties | 13 -
.../feature.properties | 38 -
.../feature.xml | 95 -
.../org.eclipse.tcf.te.terminals.feature/p2.inf | 22 -
.../org.eclipse.tcf.te.terminals.feature/pom.xml | 21 -
.../.project | 28 -
.../build.properties | 12 -
.../feature.properties | 37 -
.../feature.xml | 48 -
.../pom.xml | 21 -
.../.project | 33 -
.../build.properties | 12 -
.../feature.properties | 37 -
.../feature.xml | 38 -
.../pom.xml | 21 -
.../.project | 33 -
.../build.properties | 12 -
.../feature.properties | 38 -
.../feature.xml | 80 -
.../pom.xml | 21 -
.../org.eclipse.tcf.te.filesystem.core/.classpath | 7 +
.../org.eclipse.tcf.te.filesystem.core/.project | 28 +
.../.settings/org.eclipse.jdt.core.prefs | 77 +
.../.settings/org.eclipse.jdt.ui.prefs | 54 +
.../.settings/org.eclipse.pde.prefs | 32 +
.../META-INF/MANIFEST.MF | 38 +
.../org.eclipse.tcf.te.filesystem.core/about.html | 28 +
.../build.properties | 16 +
.../plugin.properties | 16 +
.../org.eclipse.tcf.te.filesystem.core/plugin.xml | 108 ++
.../org.eclipse.tcf.te.filesystem.core/pom.xml | 17 +
.../tcf/filesystem/core/activator/CorePlugin.java | 93 +
.../core/interfaces/IConfirmCallback.java | 42 +
.../tcf/filesystem/core/interfaces/IOperation.java | 61 +
.../core/interfaces/IWindowsFileAttributes.java | 97 +
.../core/interfaces/runtime/IRuntimeModel.java | 28 +
.../steps/IFileSystemStepAttributes.java | 26 +
.../tcf/filesystem/core/internal/UserAccount.java | 95 +
.../core/internal/callbacks/CallbackBase.java | 35 +
.../core/internal/callbacks/QueryDoneOpen.java | 82 +
.../internal/callbacks/QueryDoneOpenChannel.java | 93 +
.../core/internal/callbacks/QueryDoneReadDir.java | 96 +
.../core/internal/callbacks/QueryDoneRoots.java | 64 +
.../callbacks/RefreshStateDoneOpenChannel.java | 88 +
.../internal/callbacks/RefreshStateDoneStat.java | 111 ++
.../internal/exceptions/TCFChannelException.java | 44 +
.../core/internal/exceptions/TCFException.java | 73 +
.../exceptions/TCFFileSystemException.java | 45 +
.../core/internal/operations/IOpExecutor.java | 28 +
.../core/internal/operations/JobExecutor.java | 100 +
.../core/internal/operations/NullOpExecutor.java | 79 +
.../internal/operations/OpCacheFileDigest.java | 112 ++
.../core/internal/operations/OpCacheUpdate.java | 76 +
.../core/internal/operations/OpClipboard.java | 113 ++
.../core/internal/operations/OpCommitAttr.java | 85 +
.../core/internal/operations/OpCopy.java | 258 +++
.../core/internal/operations/OpCreate.java | 192 ++
.../core/internal/operations/OpCreateFile.java | 81 +
.../core/internal/operations/OpCreateFolder.java | 72 +
.../core/internal/operations/OpDelete.java | 232 +++
.../core/internal/operations/OpDownload.java | 206 ++
.../core/internal/operations/OpMove.java | 205 ++
.../core/internal/operations/OpOutStreamOp.java | 98 +
.../core/internal/operations/OpParsePath.java | 227 +++
.../core/internal/operations/OpRefresh.java | 193 ++
.../core/internal/operations/OpRefreshRoots.java | 77 +
.../core/internal/operations/OpRename.java | 125 ++
.../core/internal/operations/OpStreamOp.java | 74 +
.../internal/operations/OpTargetFileDigest.java | 110 ++
.../core/internal/operations/OpUpload.java | 431 +++++
.../core/internal/operations/OpUser.java | 167 ++
.../core/internal/operations/Operation.java | 618 ++++++
.../internal/testers/FSTreeNodePropertyTester.java | 116 ++
.../internal/testers/TargetPropertyTester.java | 68 +
.../core/internal/url/TcfInputStream.java | 148 ++
.../core/internal/url/TcfOutputStream.java | 119 ++
.../core/internal/url/TcfURLConnection.java | 306 +++
.../internal/url/TcfURLStreamHandlerService.java | 216 +++
.../internal/utils/BlockingFileSystemProxy.java | 880 +++++++++
.../core/internal/utils/CacheManager.java | 204 ++
.../core/internal/utils/ContentTypeHelper.java | 120 ++
.../filesystem/core/internal/utils/FileState.java | 257 +++
.../core/internal/utils/PersistenceManager.java | 203 ++
.../internal/utils/PersistenceManagerDelegate.java | 289 +++
.../filesystem/core/model/AbstractTreeNode.java | 342 ++++
.../te/tcf/filesystem/core/model/CacheState.java | 22 +
.../te/tcf/filesystem/core/model/FSTreeNode.java | 681 +++++++
.../te/tcf/filesystem/core/model/ModelManager.java | 108 ++
.../te/tcf/filesystem/core/model/RuntimeModel.java | 228 +++
.../te/tcf/filesystem/core/model/UserAccount.java | 95 +
.../tcf/te/tcf/filesystem/core/nls/Messages.java | 121 ++
.../te/tcf/filesystem/core/nls/Messages.properties | 100 +
.../core/services/FileTransferService.java | 523 +++++
.../filesystem/core/steps/DisposeModelStep.java | 45 +
.../filesystem/core/steps/FileTransferStep.java | 79 +
.../filesystem/core/steps/InitializeModelStep.java | 71 +
.../org.eclipse.tcf.te.filesystem.ui/.classpath | 7 +
.../org.eclipse.tcf.te.filesystem.ui/.project | 39 +
.../.settings/org.eclipse.jdt.core.prefs | 362 ++++
.../.settings/org.eclipse.jdt.ui.prefs | 56 +
.../.settings/org.eclipse.pde.prefs | 32 +
.../META-INF/MANIFEST.MF | 57 +
.../org.eclipse.tcf.te.filesystem.ui/about.html | 28 +
.../build.properties | 17 +
.../icons/obj16/error.gif | Bin 0 -> 354 bytes
.../icons/obj16/folder.gif | Bin 0 -> 216 bytes
.../icons/obj16/hidden_file_filter.png | Bin 0 -> 438 bytes
.../icons/obj16/newfile_wiz.gif | Bin 0 -> 353 bytes
.../icons/obj16/newfolder_wiz.gif | Bin 0 -> 349 bytes
.../icons/obj16/refresh.gif | Bin 0 -> 327 bytes
.../icons/obj16/root.gif | Bin 0 -> 909 bytes
.../icons/obj16/rootdrive.gif | Bin 0 -> 336 bytes
.../icons/obj16/synch_synch.gif | Bin 0 -> 353 bytes
.../icons/obj16/system_file_filter.png | Bin 0 -> 243 bytes
.../icons/obj16/win7_rootdrive.png | Bin 0 -> 250 bytes
.../icons/obj16/win8_rootdrive.png | Bin 0 -> 250 bytes
.../icons/obj16/xp_rootdrive.png | Bin 0 -> 525 bytes
.../icons/obj32/banner.png | Bin 0 -> 2315 bytes
.../icons/obj32/delete_readonly.png | Bin 0 -> 367 bytes
.../icons/obj32/replace_confirm.png | Bin 0 -> 847 bytes
.../icons/ovr/ovr_conflict.png | Bin 0 -> 98 bytes
.../icons/ovr/ovr_modified.png | Bin 0 -> 97 bytes
.../icons/ovr/ovr_outdated.png | Bin 0 -> 98 bytes
.../plugin.properties | 119 ++
.../org.eclipse.tcf.te.filesystem.ui/plugin.xml | 1997 ++++++++++++++++++++
.../org.eclipse.tcf.te.filesystem.ui/pom.xml | 17 +
.../te/tcf/filesystem/ui/activator/UIPlugin.java | 251 +++
.../ui/controls/FSNavigatorContentProvider.java | 74 +
.../ui/controls/FSTreeContentProvider.java | 25 +
.../filesystem/ui/controls/FSTreeViewerSorter.java | 40 +
.../ui/controls/NavigatorContentProvider.java | 162 ++
.../ui/controls/TreeContentProvider.java | 209 ++
.../ui/dialogs/FSFolderSelectionDialog.java | 329 ++++
.../filesystem/ui/dialogs/FSOpenFileDialog.java | 263 +++
.../TimeTriggeredProgressMonitorDialog.java | 240 +++
.../ui/filters/HiddenFilesViewerFilter.java | 38 +
.../ui/filters/SystemFilesViewerFilter.java | 35 +
.../te/tcf/filesystem/ui/help/IContextHelpIds.java | 33 +
.../tcf/filesystem/ui/interfaces/IFSConstants.java | 31 +
.../ui/interfaces/IFileSystemUIDelegate.java | 77 +
.../ui/interfaces/preferences/IPreferenceKeys.java | 48 +
.../te/tcf/filesystem/ui/internal/ImageConsts.java | 85 +
.../adapters/FSTreeNodeAdapterFactory.java | 121 ++
.../ui/internal/adapters/FSTreeNodeFactory.java | 50 +
.../ui/internal/adapters/FSTreeNodeLoader.java | 75 +
.../ui/internal/adapters/NodeStateFilter.java | 78 +
.../ui/internal/adapters/PeerNodeViewerInput.java | 40 +
.../ui/internal/adapters/PersistableNode.java | 52 +
.../adapters/ViewerInputAdapterFactory.java | 81 +
.../ui/internal/autosave/SaveAllListener.java | 131 ++
.../ui/internal/autosave/SaveListener.java | 110 ++
.../ui/internal/celleditor/FSCellListener.java | 91 +
.../ui/internal/celleditor/FSCellModifier.java | 90 +
.../ui/internal/celleditor/FSCellValidator.java | 82 +
.../celleditor/FSViewerCellEditorFactory.java | 100 +
.../ui/internal/columns/AccessTimeComparator.java | 30 +
.../internal/columns/AccessTimeLabelProvider.java | 38 +
.../ui/internal/columns/CacheFileImageUpdater.java | 53 +
.../ui/internal/columns/DefaultImageProvider.java | 84 +
.../internal/columns/FSTreeElementComparator.java | 35 +
.../columns/FSTreeElementLabelProvider.java | 70 +
.../ui/internal/columns/FSTreeNodeComparator.java | 63 +
.../internal/columns/FileExtBasedImageUpdater.java | 100 +
.../ui/internal/columns/FileTypeComparator.java | 30 +
.../ui/internal/columns/FileTypeLabelProvider.java | 32 +
.../ui/internal/columns/ImageProvider.java | 28 +
.../ui/internal/columns/ImageUpdateAdapter.java | 46 +
.../columns/LabelProviderUpdateDaemon.java | 289 +++
.../columns/ModificationTimeComparator.java | 30 +
.../columns/ModificationTimeLabelProvider.java | 38 +
.../ui/internal/columns/SizeComparator.java | 30 +
.../ui/internal/columns/SizeLabelProvider.java | 39 +
.../ui/internal/columns/WindowsImageProvider.java | 49 +
.../compare/EditableSharedDocumentAdapter.java | 256 +++
.../ui/internal/compare/LocalFileSaveable.java | 481 +++++
.../ui/internal/compare/LocalTypedElement.java | 307 +++
.../ui/internal/compare/MergeEditorInput.java | 419 ++++
.../filesystem/ui/internal/compare/MergeInput.java | 158 ++
.../ui/internal/compare/MergeTypedElement.java | 99 +
.../ui/internal/compare/RemoteTypedElement.java | 102 +
.../ui/internal/decorators/PhantomDecorator.java | 45 +
.../decorators/PhantomImageDescriptor.java | 224 +++
.../tcf/filesystem/ui/internal/dnd/CommonDnD.java | 409 ++++
.../ui/internal/dnd/FSDragAdapterAssistant.java | 60 +
.../ui/internal/dnd/FSDragSourceListener.java | 64 +
.../ui/internal/dnd/FSDropAdapterAssistant.java | 115 ++
.../ui/internal/dnd/FSDropTargetListener.java | 93 +
.../ui/internal/handlers/CommitHandler.java | 40 +
.../ui/internal/handlers/CopyFilesHandler.java | 43 +
.../ui/internal/handlers/CutFilesHandler.java | 43 +
.../ui/internal/handlers/DeleteHandler.java | 128 ++
.../ui/internal/handlers/MergeHandler.java | 46 +
.../ui/internal/handlers/MoveCopyCallback.java | 66 +
.../ui/internal/handlers/MoveFilesHandler.java | 55 +
.../ui/internal/handlers/NewFileHandler.java | 28 +
.../ui/internal/handlers/NewFolderHandler.java | 28 +
.../ui/internal/handlers/NewNodeHandler.java | 62 +
.../ui/internal/handlers/OpenFileHandler.java | 141 ++
.../ui/internal/handlers/OpenWithContribution.java | 77 +
.../ui/internal/handlers/OpenWithMenu.java | 419 ++++
.../ui/internal/handlers/PasteFilesHandler.java | 114 ++
.../ui/internal/handlers/RefreshHandler.java | 44 +
.../ui/internal/handlers/RefreshViewerHandler.java | 46 +
.../ui/internal/handlers/RenameCallback.java | 46 +
.../ui/internal/handlers/RenameFilesHandler.java | 138 ++
.../ui/internal/handlers/UpdateHandler.java | 41 +
.../ui/internal/operations/FsClipboard.java | 114 ++
.../ui/internal/operations/UiExecutor.java | 100 +
.../ui/internal/pages/FSExplorerEditorPage.java | 106 ++
.../ui/internal/pages/FSExplorerEventListener.java | 101 +
.../ui/internal/preferences/PreferencePage.java | 63 +
.../preferences/PreferencesInitializer.java | 50 +
.../properties/AdvancedAttributesDialog.java | 214 +++
.../properties/GeneralInformationPage.java | 405 ++++
.../ui/internal/search/DateValidator.java | 108 ++
.../ui/internal/search/FSBaseSearchable.java | 77 +
.../ui/internal/search/FSGeneralSearchable.java | 302 +++
.../ui/internal/search/FSModifiedSearchable.java | 253 +++
.../ui/internal/search/FSSizeSearchable.java | 255 +++
.../ui/internal/search/FSTreeNodeMatcher.java | 79 +
.../ui/internal/search/FSTreeNodeSearchable.java | 87 +
.../ui/internal/search/NameValidator.java | 41 +
.../ui/internal/search/SizeValidator.java | 29 +
.../ui/internal/tabbed/BasicFileSection.java | 49 +
.../ui/internal/tabbed/BasicFolderSection.java | 116 ++
.../filesystem/ui/internal/tabbed/FileFilter.java | 33 +
.../ui/internal/tabbed/FolderFilter.java | 33 +
.../filesystem/ui/internal/tabbed/LinuxFilter.java | 33 +
.../internal/tabbed/LinuxPermissionsSection.java | 139 ++
.../tabbed/WindowsAttributesCESection.java | 94 +
.../internal/tabbed/WindowsAttributesSection.java | 92 +
.../ui/internal/tabbed/WindowsFileAISection.java | 35 +
.../ui/internal/tabbed/WindowsFileFilter.java | 33 +
.../ui/internal/tabbed/WindowsFilter.java | 33 +
.../ui/internal/tabbed/WindowsFolderAISection.java | 114 ++
.../ui/internal/tabbed/WindowsFolderFilter.java | 33 +
.../ui/internal/testers/CachePropertyTester.java | 38 +
.../internal/testers/ClipboardPropertyTester.java | 112 ++
.../EditorActivationEventPropertyTester.java | 42 +
.../ui/internal/wizards/FolderValidator.java | 60 +
.../ui/internal/wizards/NameValidator.java | 112 ++
.../ui/internal/wizards/NewFileWizard.java | 48 +
.../ui/internal/wizards/NewFileWizardPage.java | 52 +
.../ui/internal/wizards/NewFolderWizard.java | 48 +
.../ui/internal/wizards/NewFolderWizardPage.java | 52 +
.../ui/internal/wizards/NewNodeWizard.java | 250 +++
.../ui/internal/wizards/NewNodeWizardPage.java | 359 ++++
.../ui/internal/wizards/TargetPatternFilter.java | 57 +
.../ui/internal/wizards/TargetSelectionPage.java | 305 +++
.../tcf/te/tcf/filesystem/ui/nls/Messages.java | 251 +++
.../te/tcf/filesystem/ui/nls/Messages.properties | 171 ++
.../.classpath | 7 -
.../org.eclipse.tcf.te.ui.terminals.local/.options | 1 -
.../org.eclipse.tcf.te.ui.terminals.local/.project | 39 -
.../.settings/org.eclipse.jdt.core.prefs | 362 ----
.../.settings/org.eclipse.jdt.ui.prefs | 56 -
.../.settings/org.eclipse.pde.prefs | 32 -
.../META-INF/MANIFEST.MF | 29 -
.../META-INF/p2.inf | 82 -
.../about.html | 28 -
.../build.properties | 17 -
.../contexts.xml | 6 -
.../icons/eview16/terminal_view.gif | Bin 938 -> 0 bytes
.../plugin.properties | 23 -
.../plugin.xml | 130 --
.../org.eclipse.tcf.te.ui.terminals.local/pom.xml | 17 -
.../te/ui/terminals/local/activator/UIPlugin.java | 127 --
.../controls/LocalWizardConfigurationPanel.java | 195 --
.../ui/terminals/local/help/IContextHelpIds.java | 29 -
.../local/launcher/LocalLauncherDelegate.java | 374 ----
.../local/launcher/LocalLauncherHandler.java | 60 -
.../local/launcher/LocalMementoHandler.java | 40 -
.../tcf/te/ui/terminals/local/nls/Messages.java | 58 -
.../te/ui/terminals/local/nls/Messages.properties | 38 -
.../local/showin/DynamicContributionItems.java | 129 --
.../local/showin/ExternalExecutablesDialog.java | 460 -----
.../showin/ExternalExecutablesInitializer.java | 88 -
.../local/showin/ExternalExecutablesManager.java | 181 --
.../interfaces/IExternalExecutablesProperties.java | 41 -
.../local/showin/interfaces/IPreferenceKeys.java | 40 -
.../local/showin/preferences/PreferencePage.java | 490 -----
.../showin/preferences/PreferencesInitializer.java | 37 -
.../.classpath | 7 -
.../.options | 1 -
.../.project | 39 -
.../.settings/org.eclipse.jdt.core.prefs | 362 ----
.../.settings/org.eclipse.jdt.ui.prefs | 56 -
.../.settings/org.eclipse.pde.prefs | 32 -
.../META-INF/MANIFEST.MF | 24 -
.../META-INF/p2.inf | 82 -
.../about.html | 28 -
.../build.properties | 16 -
.../plugin.properties | 22 -
.../plugin.xml | 24 -
.../pom.xml | 17 -
.../te/ui/terminals/process/ProcessConnector.java | 301 ---
.../terminals/process/ProcessLauncherDelegate.java | 134 --
.../te/ui/terminals/process/ProcessMonitor.java | 106 --
.../te/ui/terminals/process/ProcessSettings.java | 299 ---
.../ui/terminals/process/ProcessSettingsPage.java | 196 --
.../ui/terminals/process/activator/UIPlugin.java | 113 --
.../ui/terminals/process/help/IContextHelpIds.java | 31 -
.../tcf/te/ui/terminals/process/nls/Messages.java | 34 -
.../ui/terminals/process/nls/Messages.properties | 12 -
.../org.eclipse.tcf.te.ui.terminals.rse/.classpath | 7 -
.../org.eclipse.tcf.te.ui.terminals.rse/.options | 1 -
.../org.eclipse.tcf.te.ui.terminals.rse/.project | 39 -
.../.settings/org.eclipse.jdt.core.prefs | 362 ----
.../.settings/org.eclipse.jdt.ui.prefs | 56 -
.../.settings/org.eclipse.pde.prefs | 32 -
.../META-INF/MANIFEST.MF | 23 -
.../org.eclipse.tcf.te.ui.terminals.rse/about.html | 28 -
.../build.properties | 17 -
.../icons/eview16/terminal_view.gif | Bin 938 -> 0 bytes
.../plugin.properties | 22 -
.../org.eclipse.tcf.te.ui.terminals.rse/plugin.xml | 111 --
.../org.eclipse.tcf.te.ui.terminals.rse/pom.xml | 17 -
.../te/ui/terminals/rse/activator/UIPlugin.java | 113 --
.../rse/internal/LaunchTerminalHandler.java | 90 -
.../ui/terminals/rse/internal/PropertyTester.java | 60 -
.../TerminalContextPropertiesProvider.java | 67 -
.../tcf/te/ui/terminals/rse/nls/Messages.java | 32 -
.../te/ui/terminals/rse/nls/Messages.properties | 10 -
.../.classpath | 7 -
.../.options | 2 -
.../.project | 28 -
.../.settings/org.eclipse.jdt.core.prefs | 362 ----
.../.settings/org.eclipse.jdt.ui.prefs | 56 -
.../.settings/org.eclipse.pde.prefs | 32 -
.../META-INF/MANIFEST.MF | 25 -
.../about.html | 28 -
.../build.properties | 16 -
.../plugin.properties | 16 -
.../plugin.xml | 24 -
.../org.eclipse.tcf.te.ui.terminals.serial/pom.xml | 17 -
.../te/ui/terminals/serial/activator/UIPlugin.java | 111 --
.../serial/controls/SerialConfigurationPanel.java | 134 --
.../terminals/serial/controls/SerialLinePanel.java | 789 --------
.../serial/controls/SerialPortAddressDialog.java | 689 -------
.../ui/terminals/serial/interfaces/ITraceIds.java | 22 -
.../serial/interfaces/IWireTypeSerial.java | 51 -
.../serial/launcher/SerialLauncherDelegate.java | 160 --
.../serial/launcher/SerialMementoHandler.java | 64 -
.../tcf/te/ui/terminals/serial/nls/Messages.java | 68 -
.../te/ui/terminals/serial/nls/Messages.properties | 46 -
.../org.eclipse.tcf.te.ui.terminals.ssh/.classpath | 7 -
.../org.eclipse.tcf.te.ui.terminals.ssh/.options | 1 -
.../org.eclipse.tcf.te.ui.terminals.ssh/.project | 39 -
.../.settings/org.eclipse.jdt.core.prefs | 362 ----
.../.settings/org.eclipse.jdt.ui.prefs | 56 -
.../.settings/org.eclipse.pde.prefs | 32 -
.../META-INF/MANIFEST.MF | 23 -
.../org.eclipse.tcf.te.ui.terminals.ssh/about.html | 28 -
.../build.properties | 16 -
.../plugin.properties | 20 -
.../org.eclipse.tcf.te.ui.terminals.ssh/plugin.xml | 24 -
.../org.eclipse.tcf.te.ui.terminals.ssh/pom.xml | 17 -
.../te/ui/terminals/ssh/activator/UIPlugin.java | 111 --
.../ssh/controls/SshWizardConfigurationPanel.java | 425 -----
.../ssh/launcher/SshLauncherDelegate.java | 181 --
.../terminals/ssh/launcher/SshMementoHandler.java | 133 --
.../tcf/te/ui/terminals/ssh/nls/Messages.java | 37 -
.../te/ui/terminals/ssh/nls/Messages.properties | 14 -
.../.classpath | 7 -
.../.options | 1 -
.../.project | 39 -
.../.settings/org.eclipse.jdt.core.prefs | 362 ----
.../.settings/org.eclipse.jdt.ui.prefs | 56 -
.../.settings/org.eclipse.pde.prefs | 32 -
.../META-INF/MANIFEST.MF | 23 -
.../about.html | 28 -
.../build.properties | 16 -
.../plugin.properties | 16 -
.../plugin.xml | 24 -
.../org.eclipse.tcf.te.ui.terminals.telnet/pom.xml | 17 -
.../te/ui/terminals/telnet/activator/UIPlugin.java | 112 --
.../controls/TelnetWizardConfigurationPanel.java | 214 ---
.../telnet/launcher/TelnetLauncherDelegate.java | 171 --
.../telnet/launcher/TelnetMementoHandler.java | 56 -
.../tcf/te/ui/terminals/telnet/nls/Messages.java | 35 -
.../te/ui/terminals/telnet/nls/Messages.properties | 12 -
.../org.eclipse.tcf.te.ui.terminals/.classpath | 7 -
.../org.eclipse.tcf.te.ui.terminals/.options | 3 -
.../org.eclipse.tcf.te.ui.terminals/.project | 39 -
.../.settings/org.eclipse.jdt.core.prefs | 362 ----
.../.settings/org.eclipse.jdt.ui.prefs | 56 -
.../.settings/org.eclipse.pde.prefs | 32 -
.../META-INF/MANIFEST.MF | 35 -
.../org.eclipse.tcf.te.ui.terminals/about.html | 28 -
.../build.properties | 19 -
.../org.eclipse.tcf.te.ui.terminals/contexts.xml | 9 -
.../icons/clcl16/command_input_field.gif | Bin 385 -> 0 bytes
.../icons/dlcl16/command_input_field.gif | Bin 239 -> 0 bytes
.../icons/dlcl16/disconnect.gif | Bin 139 -> 0 bytes
.../icons/elcl16/command_input_field.gif | Bin 239 -> 0 bytes
.../icons/elcl16/disconnect.gif | Bin 890 -> 0 bytes
.../icons/eview16/terminal_view.gif | Bin 938 -> 0 bytes
.../plugin.properties | 53 -
.../org.eclipse.tcf.te.ui.terminals/plugin.xml | 315 ---
.../org.eclipse.tcf.te.ui.terminals/pom.xml | 17 -
.../schema/launcherDelegates.exsd | 215 ---
.../te/ui/terminals/actions/AbstractAction.java | 189 --
.../te/ui/terminals/actions/PinTerminalAction.java | 49 -
.../ui/terminals/actions/SelectEncodingAction.java | 80 -
.../ui/terminals/actions/TabScrollLockAction.java | 59 -
.../actions/ToggleCommandFieldAction.java | 85 -
.../tcf/te/ui/terminals/activator/UIPlugin.java | 265 ---
.../controls/ConfigurationPanelControl.java | 448 -----
.../ui/terminals/controls/NoteCompositeHelper.java | 173 --
.../tcf/te/ui/terminals/help/IContextHelpIds.java | 34 -
.../terminals/interfaces/IConfigurationPanel.java | 141 --
.../interfaces/IConfigurationPanelContainer.java | 35 -
.../ui/terminals/interfaces/ILauncherDelegate.java | 93 -
.../ui/terminals/interfaces/IMementoHandler.java | 36 -
.../ui/terminals/interfaces/IPreferenceKeys.java | 25 -
.../te/ui/terminals/interfaces/ITerminalsView.java | 52 -
.../te/ui/terminals/interfaces/IUIConstants.java | 21 -
.../te/ui/terminals/interfaces/ImageConsts.java | 96 -
.../ui/terminals/interfaces/tracing/ITraceIds.java | 26 -
.../terminals/internal/PreferencesInitializer.java | 37 -
.../te/ui/terminals/internal/PropertyTester.java | 59 -
.../te/ui/terminals/internal/SettingsStore.java | 69 -
.../internal/dialogs/EncodingSelectionDialog.java | 231 ---
.../dialogs/LaunchTerminalSettingsDialog.java | 569 ------
.../handler/AbstractTriggerCommandHandler.java | 67 -
.../handler/DisconnectTerminalCommandHandler.java | 62 -
.../handler/LaunchTerminalCommandHandler.java | 157 --
.../internal/handler/MaximizeViewHandler.java | 29 -
.../internal/handler/QuickAccessHandler.java | 29 -
.../launcher/AbstractLauncherDelegate.java | 143 --
.../launcher/LauncherDelegateManager.java | 421 -----
.../listeners/AbstractWindowListener.java | 130 --
.../terminals/listeners/WorkbenchPartListener.java | 112 --
.../listeners/WorkbenchWindowListener.java | 27 -
.../te/ui/terminals/manager/ConsoleManager.java | 641 -------
.../eclipse/tcf/te/ui/terminals/nls/Messages.java | 115 --
.../tcf/te/ui/terminals/nls/Messages.properties | 75 -
.../panels/AbstractConfigurationPanel.java | 202 --
.../panels/AbstractExtendedConfigurationPanel.java | 615 ------
.../te/ui/terminals/services/TerminalService.java | 359 ----
.../streams/AbstractStreamsConnector.java | 174 --
.../ui/terminals/streams/InputStreamMonitor.java | 368 ----
.../ui/terminals/streams/OutputStreamMonitor.java | 319 ----
.../te/ui/terminals/streams/StreamsConnector.java | 117 --
.../terminals/streams/StreamsLauncherDelegate.java | 115 --
.../te/ui/terminals/streams/StreamsSettings.java | 202 --
.../ui/terminals/tabs/TabCommandFieldHandler.java | 102 -
.../te/ui/terminals/tabs/TabDisposeListener.java | 73 -
.../tcf/te/ui/terminals/tabs/TabFolderManager.java | 794 --------
.../te/ui/terminals/tabs/TabFolderMenuHandler.java | 385 ----
.../terminals/tabs/TabFolderSelectionListener.java | 55 -
.../ui/terminals/tabs/TabFolderToolbarHandler.java | 371 ----
.../te/ui/terminals/tabs/TabTerminalListener.java | 132 --
.../tcf/te/ui/terminals/view/TerminalsView.java | 705 -------
.../view/TerminalsViewMementoHandler.java | 210 --
.../org.eclipse.tcf.te.terminals.feature/.project | 28 +
.../build.properties | 13 +
.../feature.properties | 38 +
.../feature.xml | 95 +
.../org.eclipse.tcf.te.terminals.feature/p2.inf | 22 +
.../org.eclipse.tcf.te.terminals.feature/pom.xml | 21 +
.../.project | 28 +
.../build.properties | 12 +
.../feature.properties | 37 +
.../feature.xml | 48 +
.../pom.xml | 21 +
.../.project | 33 +
.../build.properties | 12 +
.../feature.properties | 37 +
.../feature.xml | 38 +
.../pom.xml | 21 +
.../.project | 33 +
.../build.properties | 12 +
.../feature.properties | 38 +
.../feature.xml | 80 +
.../pom.xml | 21 +
.../.classpath | 7 +
.../org.eclipse.tcf.te.ui.terminals.local/.options | 1 +
.../org.eclipse.tcf.te.ui.terminals.local/.project | 39 +
.../.settings/org.eclipse.jdt.core.prefs | 362 ++++
.../.settings/org.eclipse.jdt.ui.prefs | 56 +
.../.settings/org.eclipse.pde.prefs | 32 +
.../META-INF/MANIFEST.MF | 29 +
.../META-INF/p2.inf | 82 +
.../about.html | 28 +
.../build.properties | 17 +
.../contexts.xml | 6 +
.../icons/eview16/terminal_view.gif | Bin 0 -> 938 bytes
.../plugin.properties | 23 +
.../plugin.xml | 130 ++
.../org.eclipse.tcf.te.ui.terminals.local/pom.xml | 17 +
.../te/ui/terminals/local/activator/UIPlugin.java | 127 ++
.../controls/LocalWizardConfigurationPanel.java | 195 ++
.../ui/terminals/local/help/IContextHelpIds.java | 29 +
.../local/launcher/LocalLauncherDelegate.java | 374 ++++
.../local/launcher/LocalLauncherHandler.java | 60 +
.../local/launcher/LocalMementoHandler.java | 40 +
.../tcf/te/ui/terminals/local/nls/Messages.java | 58 +
.../te/ui/terminals/local/nls/Messages.properties | 38 +
.../local/showin/DynamicContributionItems.java | 129 ++
.../local/showin/ExternalExecutablesDialog.java | 460 +++++
.../showin/ExternalExecutablesInitializer.java | 88 +
.../local/showin/ExternalExecutablesManager.java | 181 ++
.../interfaces/IExternalExecutablesProperties.java | 41 +
.../local/showin/interfaces/IPreferenceKeys.java | 40 +
.../local/showin/preferences/PreferencePage.java | 490 +++++
.../showin/preferences/PreferencesInitializer.java | 37 +
.../.classpath | 7 +
.../.options | 1 +
.../.project | 39 +
.../.settings/org.eclipse.jdt.core.prefs | 362 ++++
.../.settings/org.eclipse.jdt.ui.prefs | 56 +
.../.settings/org.eclipse.pde.prefs | 32 +
.../META-INF/MANIFEST.MF | 24 +
.../META-INF/p2.inf | 82 +
.../about.html | 28 +
.../build.properties | 16 +
.../plugin.properties | 22 +
.../plugin.xml | 24 +
.../pom.xml | 17 +
.../te/ui/terminals/process/ProcessConnector.java | 301 +++
.../terminals/process/ProcessLauncherDelegate.java | 134 ++
.../te/ui/terminals/process/ProcessMonitor.java | 106 ++
.../te/ui/terminals/process/ProcessSettings.java | 299 +++
.../ui/terminals/process/ProcessSettingsPage.java | 196 ++
.../ui/terminals/process/activator/UIPlugin.java | 113 ++
.../ui/terminals/process/help/IContextHelpIds.java | 31 +
.../tcf/te/ui/terminals/process/nls/Messages.java | 34 +
.../ui/terminals/process/nls/Messages.properties | 12 +
.../org.eclipse.tcf.te.ui.terminals.rse/.classpath | 7 +
.../org.eclipse.tcf.te.ui.terminals.rse/.options | 1 +
.../org.eclipse.tcf.te.ui.terminals.rse/.project | 39 +
.../.settings/org.eclipse.jdt.core.prefs | 362 ++++
.../.settings/org.eclipse.jdt.ui.prefs | 56 +
.../.settings/org.eclipse.pde.prefs | 32 +
.../META-INF/MANIFEST.MF | 23 +
.../org.eclipse.tcf.te.ui.terminals.rse/about.html | 28 +
.../build.properties | 17 +
.../icons/eview16/terminal_view.gif | Bin 0 -> 938 bytes
.../plugin.properties | 22 +
.../org.eclipse.tcf.te.ui.terminals.rse/plugin.xml | 111 ++
.../org.eclipse.tcf.te.ui.terminals.rse/pom.xml | 17 +
.../te/ui/terminals/rse/activator/UIPlugin.java | 113 ++
.../rse/internal/LaunchTerminalHandler.java | 90 +
.../ui/terminals/rse/internal/PropertyTester.java | 60 +
.../TerminalContextPropertiesProvider.java | 67 +
.../tcf/te/ui/terminals/rse/nls/Messages.java | 32 +
.../te/ui/terminals/rse/nls/Messages.properties | 10 +
.../.classpath | 7 +
.../.options | 2 +
.../.project | 28 +
.../.settings/org.eclipse.jdt.core.prefs | 362 ++++
.../.settings/org.eclipse.jdt.ui.prefs | 56 +
.../.settings/org.eclipse.pde.prefs | 32 +
.../META-INF/MANIFEST.MF | 25 +
.../about.html | 28 +
.../build.properties | 16 +
.../plugin.properties | 16 +
.../plugin.xml | 24 +
.../org.eclipse.tcf.te.ui.terminals.serial/pom.xml | 17 +
.../te/ui/terminals/serial/activator/UIPlugin.java | 111 ++
.../serial/controls/SerialConfigurationPanel.java | 134 ++
.../terminals/serial/controls/SerialLinePanel.java | 789 ++++++++
.../serial/controls/SerialPortAddressDialog.java | 689 +++++++
.../ui/terminals/serial/interfaces/ITraceIds.java | 22 +
.../serial/interfaces/IWireTypeSerial.java | 51 +
.../serial/launcher/SerialLauncherDelegate.java | 160 ++
.../serial/launcher/SerialMementoHandler.java | 64 +
.../tcf/te/ui/terminals/serial/nls/Messages.java | 68 +
.../te/ui/terminals/serial/nls/Messages.properties | 46 +
.../org.eclipse.tcf.te.ui.terminals.ssh/.classpath | 7 +
.../org.eclipse.tcf.te.ui.terminals.ssh/.options | 1 +
.../org.eclipse.tcf.te.ui.terminals.ssh/.project | 39 +
.../.settings/org.eclipse.jdt.core.prefs | 362 ++++
.../.settings/org.eclipse.jdt.ui.prefs | 56 +
.../.settings/org.eclipse.pde.prefs | 32 +
.../META-INF/MANIFEST.MF | 23 +
.../org.eclipse.tcf.te.ui.terminals.ssh/about.html | 28 +
.../build.properties | 16 +
.../plugin.properties | 20 +
.../org.eclipse.tcf.te.ui.terminals.ssh/plugin.xml | 24 +
.../org.eclipse.tcf.te.ui.terminals.ssh/pom.xml | 17 +
.../te/ui/terminals/ssh/activator/UIPlugin.java | 111 ++
.../ssh/controls/SshWizardConfigurationPanel.java | 425 +++++
.../ssh/launcher/SshLauncherDelegate.java | 181 ++
.../terminals/ssh/launcher/SshMementoHandler.java | 133 ++
.../tcf/te/ui/terminals/ssh/nls/Messages.java | 37 +
.../te/ui/terminals/ssh/nls/Messages.properties | 14 +
.../.classpath | 7 +
.../.options | 1 +
.../.project | 39 +
.../.settings/org.eclipse.jdt.core.prefs | 362 ++++
.../.settings/org.eclipse.jdt.ui.prefs | 56 +
.../.settings/org.eclipse.pde.prefs | 32 +
.../META-INF/MANIFEST.MF | 23 +
.../about.html | 28 +
.../build.properties | 16 +
.../plugin.properties | 16 +
.../plugin.xml | 24 +
.../org.eclipse.tcf.te.ui.terminals.telnet/pom.xml | 17 +
.../te/ui/terminals/telnet/activator/UIPlugin.java | 112 ++
.../controls/TelnetWizardConfigurationPanel.java | 214 +++
.../telnet/launcher/TelnetLauncherDelegate.java | 171 ++
.../telnet/launcher/TelnetMementoHandler.java | 56 +
.../tcf/te/ui/terminals/telnet/nls/Messages.java | 35 +
.../te/ui/terminals/telnet/nls/Messages.properties | 12 +
.../org.eclipse.tcf.te.ui.terminals/.classpath | 7 +
.../org.eclipse.tcf.te.ui.terminals/.options | 3 +
.../org.eclipse.tcf.te.ui.terminals/.project | 39 +
.../.settings/org.eclipse.jdt.core.prefs | 362 ++++
.../.settings/org.eclipse.jdt.ui.prefs | 56 +
.../.settings/org.eclipse.pde.prefs | 32 +
.../META-INF/MANIFEST.MF | 35 +
.../org.eclipse.tcf.te.ui.terminals/about.html | 28 +
.../build.properties | 19 +
.../org.eclipse.tcf.te.ui.terminals/contexts.xml | 9 +
.../icons/clcl16/command_input_field.gif | Bin 0 -> 385 bytes
.../icons/dlcl16/command_input_field.gif | Bin 0 -> 239 bytes
.../icons/dlcl16/disconnect.gif | Bin 0 -> 139 bytes
.../icons/elcl16/command_input_field.gif | Bin 0 -> 239 bytes
.../icons/elcl16/disconnect.gif | Bin 0 -> 890 bytes
.../icons/eview16/terminal_view.gif | Bin 0 -> 938 bytes
.../plugin.properties | 53 +
.../org.eclipse.tcf.te.ui.terminals/plugin.xml | 315 +++
.../org.eclipse.tcf.te.ui.terminals/pom.xml | 17 +
.../schema/launcherDelegates.exsd | 215 +++
.../te/ui/terminals/actions/AbstractAction.java | 189 ++
.../te/ui/terminals/actions/PinTerminalAction.java | 49 +
.../ui/terminals/actions/SelectEncodingAction.java | 80 +
.../ui/terminals/actions/TabScrollLockAction.java | 59 +
.../actions/ToggleCommandFieldAction.java | 85 +
.../tcf/te/ui/terminals/activator/UIPlugin.java | 265 +++
.../controls/ConfigurationPanelControl.java | 448 +++++
.../ui/terminals/controls/NoteCompositeHelper.java | 173 ++
.../tcf/te/ui/terminals/help/IContextHelpIds.java | 34 +
.../terminals/interfaces/IConfigurationPanel.java | 141 ++
.../interfaces/IConfigurationPanelContainer.java | 35 +
.../ui/terminals/interfaces/ILauncherDelegate.java | 93 +
.../ui/terminals/interfaces/IMementoHandler.java | 36 +
.../ui/terminals/interfaces/IPreferenceKeys.java | 25 +
.../te/ui/terminals/interfaces/ITerminalsView.java | 52 +
.../te/ui/terminals/interfaces/IUIConstants.java | 21 +
.../te/ui/terminals/interfaces/ImageConsts.java | 96 +
.../ui/terminals/interfaces/tracing/ITraceIds.java | 26 +
.../terminals/internal/PreferencesInitializer.java | 37 +
.../te/ui/terminals/internal/PropertyTester.java | 59 +
.../te/ui/terminals/internal/SettingsStore.java | 69 +
.../internal/dialogs/EncodingSelectionDialog.java | 231 +++
.../dialogs/LaunchTerminalSettingsDialog.java | 569 ++++++
.../handler/AbstractTriggerCommandHandler.java | 67 +
.../handler/DisconnectTerminalCommandHandler.java | 62 +
.../handler/LaunchTerminalCommandHandler.java | 157 ++
.../internal/handler/MaximizeViewHandler.java | 29 +
.../internal/handler/QuickAccessHandler.java | 29 +
.../launcher/AbstractLauncherDelegate.java | 143 ++
.../launcher/LauncherDelegateManager.java | 421 +++++
.../listeners/AbstractWindowListener.java | 130 ++
.../terminals/listeners/WorkbenchPartListener.java | 112 ++
.../listeners/WorkbenchWindowListener.java | 27 +
.../te/ui/terminals/manager/ConsoleManager.java | 641 +++++++
.../eclipse/tcf/te/ui/terminals/nls/Messages.java | 115 ++
.../tcf/te/ui/terminals/nls/Messages.properties | 75 +
.../panels/AbstractConfigurationPanel.java | 202 ++
.../panels/AbstractExtendedConfigurationPanel.java | 615 ++++++
.../te/ui/terminals/services/TerminalService.java | 359 ++++
.../streams/AbstractStreamsConnector.java | 174 ++
.../ui/terminals/streams/InputStreamMonitor.java | 368 ++++
.../ui/terminals/streams/OutputStreamMonitor.java | 319 ++++
.../te/ui/terminals/streams/StreamsConnector.java | 117 ++
.../terminals/streams/StreamsLauncherDelegate.java | 115 ++
.../te/ui/terminals/streams/StreamsSettings.java | 202 ++
.../ui/terminals/tabs/TabCommandFieldHandler.java | 102 +
.../te/ui/terminals/tabs/TabDisposeListener.java | 73 +
.../tcf/te/ui/terminals/tabs/TabFolderManager.java | 794 ++++++++
.../te/ui/terminals/tabs/TabFolderMenuHandler.java | 385 ++++
.../terminals/tabs/TabFolderSelectionListener.java | 55 +
.../ui/terminals/tabs/TabFolderToolbarHandler.java | 371 ++++
.../te/ui/terminals/tabs/TabTerminalListener.java | 132 ++
.../tcf/te/ui/terminals/view/TerminalsView.java | 705 +++++++
.../view/TerminalsViewMementoHandler.java | 210 ++
682 files changed, 51168 insertions(+), 23801 deletions(-)
delete mode 100644 target_explorer/features/org.eclipse.tcf.te.terminals.feature/.project
delete mode 100644 target_explorer/features/org.eclipse.tcf.te.terminals.feature/build.properties
delete mode 100644 target_explorer/features/org.eclipse.tcf.te.terminals.feature/feature.properties
delete mode 100644 target_explorer/features/org.eclipse.tcf.te.terminals.feature/feature.xml
delete mode 100644 target_explorer/features/org.eclipse.tcf.te.terminals.feature/p2.inf
delete mode 100644 target_explorer/features/org.eclipse.tcf.te.terminals.feature/pom.xml
delete mode 100644 target_explorer/features/org.eclipse.tcf.te.terminals.rse.feature/.project
delete mode 100644 target_explorer/features/org.eclipse.tcf.te.terminals.rse.feature/build.properties
delete mode 100644 target_explorer/features/org.eclipse.tcf.te.terminals.rse.feature/feature.properties
delete mode 100644 target_explorer/features/org.eclipse.tcf.te.terminals.rse.feature/feature.xml
delete mode 100644 target_explorer/features/org.eclipse.tcf.te.terminals.rse.feature/pom.xml
delete mode 100644 target_explorer/features/org.eclipse.tcf.te.terminals.rse.sdk.feature/.project
delete mode 100644 target_explorer/features/org.eclipse.tcf.te.terminals.rse.sdk.feature/build.properties
delete mode 100644 target_explorer/features/org.eclipse.tcf.te.terminals.rse.sdk.feature/feature.properties
delete mode 100644 target_explorer/features/org.eclipse.tcf.te.terminals.rse.sdk.feature/feature.xml
delete mode 100644 target_explorer/features/org.eclipse.tcf.te.terminals.rse.sdk.feature/pom.xml
delete mode 100644 target_explorer/features/org.eclipse.tcf.te.terminals.sdk.feature/.project
delete mode 100644 target_explorer/features/org.eclipse.tcf.te.terminals.sdk.feature/build.properties
delete mode 100644 target_explorer/features/org.eclipse.tcf.te.terminals.sdk.feature/feature.properties
delete mode 100644 target_explorer/features/org.eclipse.tcf.te.terminals.sdk.feature/feature.xml
delete mode 100644 target_explorer/features/org.eclipse.tcf.te.terminals.sdk.feature/pom.xml
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/.classpath
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/.project
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/.settings/org.eclipse.jdt.core.prefs
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/.settings/org.eclipse.jdt.ui.prefs
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/.settings/org.eclipse.pde.prefs
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/META-INF/MANIFEST.MF
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/about.html
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/build.properties
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/plugin.properties
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/plugin.xml
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/pom.xml
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/activator/CorePlugin.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/interfaces/IConfirmCallback.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/interfaces/IOperation.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/interfaces/IWindowsFileAttributes.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/interfaces/runtime/IRuntimeModel.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/interfaces/steps/IFileSystemStepAttributes.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/UserAccount.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/callbacks/CallbackBase.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/callbacks/QueryDoneOpen.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/callbacks/QueryDoneOpenChannel.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/callbacks/QueryDoneReadDir.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/callbacks/QueryDoneRoots.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/callbacks/RefreshStateDoneOpenChannel.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/callbacks/RefreshStateDoneStat.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/exceptions/TCFChannelException.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/exceptions/TCFException.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/exceptions/TCFFileSystemException.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/IOpExecutor.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/JobExecutor.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/NullOpExecutor.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/OpCacheFileDigest.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/OpCacheUpdate.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/OpClipboard.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/OpCommitAttr.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/OpCopy.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/OpCreate.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/OpCreateFile.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/OpCreateFolder.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/OpDelete.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/OpDownload.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/OpMove.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/OpOutStreamOp.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/OpParsePath.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/OpRefresh.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/OpRefreshRoots.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/OpRename.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/OpStreamOp.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/OpTargetFileDigest.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/OpUpload.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/OpUser.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/Operation.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/testers/FSTreeNodePropertyTester.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/testers/TargetPropertyTester.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/url/TcfInputStream.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/url/TcfOutputStream.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/url/TcfURLConnection.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/url/TcfURLStreamHandlerService.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/utils/BlockingFileSystemProxy.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/utils/CacheManager.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/utils/ContentTypeHelper.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/utils/FileState.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/utils/PersistenceManager.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/utils/PersistenceManagerDelegate.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/model/AbstractTreeNode.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/model/CacheState.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/model/FSTreeNode.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/model/ModelManager.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/model/RuntimeModel.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/model/UserAccount.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/nls/Messages.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/nls/Messages.properties
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/services/FileTransferService.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/steps/DisposeModelStep.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/steps/FileTransferStep.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/steps/InitializeModelStep.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/.classpath
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/.project
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/.settings/org.eclipse.jdt.core.prefs
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/.settings/org.eclipse.jdt.ui.prefs
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/.settings/org.eclipse.pde.prefs
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/META-INF/MANIFEST.MF
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/about.html
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/build.properties
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/icons/obj16/error.gif
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/icons/obj16/folder.gif
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/icons/obj16/hidden_file_filter.png
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/icons/obj16/newfile_wiz.gif
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/icons/obj16/newfolder_wiz.gif
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/icons/obj16/refresh.gif
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/icons/obj16/root.gif
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/icons/obj16/rootdrive.gif
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/icons/obj16/synch_synch.gif
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/icons/obj16/system_file_filter.png
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/icons/obj16/win7_rootdrive.png
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/icons/obj16/win8_rootdrive.png
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/icons/obj16/xp_rootdrive.png
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/icons/obj32/banner.png
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/icons/obj32/delete_readonly.png
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/icons/obj32/replace_confirm.png
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/icons/ovr/ovr_conflict.png
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/icons/ovr/ovr_modified.png
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/icons/ovr/ovr_outdated.png
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/plugin.properties
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/plugin.xml
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/pom.xml
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/activator/UIPlugin.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/controls/FSNavigatorContentProvider.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/controls/FSTreeContentProvider.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/controls/FSTreeViewerSorter.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/controls/NavigatorContentProvider.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/controls/TreeContentProvider.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/dialogs/FSFolderSelectionDialog.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/dialogs/FSOpenFileDialog.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/dialogs/TimeTriggeredProgressMonitorDialog.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/filters/HiddenFilesViewerFilter.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/filters/SystemFilesViewerFilter.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/help/IContextHelpIds.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/interfaces/IFSConstants.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/interfaces/IFileSystemUIDelegate.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/interfaces/preferences/IPreferenceKeys.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/ImageConsts.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/adapters/FSTreeNodeAdapterFactory.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/adapters/FSTreeNodeFactory.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/adapters/FSTreeNodeLoader.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/adapters/NodeStateFilter.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/adapters/PeerNodeViewerInput.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/adapters/PersistableNode.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/adapters/ViewerInputAdapterFactory.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/autosave/SaveAllListener.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/autosave/SaveListener.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/celleditor/FSCellListener.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/celleditor/FSCellModifier.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/celleditor/FSCellValidator.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/celleditor/FSViewerCellEditorFactory.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/AccessTimeComparator.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/AccessTimeLabelProvider.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/CacheFileImageUpdater.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/DefaultImageProvider.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/FSTreeElementComparator.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/FSTreeElementLabelProvider.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/FSTreeNodeComparator.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/FileExtBasedImageUpdater.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/FileTypeComparator.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/FileTypeLabelProvider.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/ImageProvider.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/ImageUpdateAdapter.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/LabelProviderUpdateDaemon.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/ModificationTimeComparator.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/ModificationTimeLabelProvider.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/SizeComparator.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/SizeLabelProvider.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/columns/WindowsImageProvider.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/compare/EditableSharedDocumentAdapter.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/compare/LocalFileSaveable.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/compare/LocalTypedElement.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/compare/MergeEditorInput.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/compare/MergeInput.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/compare/MergeTypedElement.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/compare/RemoteTypedElement.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/decorators/PhantomDecorator.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/decorators/PhantomImageDescriptor.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/dnd/CommonDnD.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/dnd/FSDragAdapterAssistant.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/dnd/FSDragSourceListener.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/dnd/FSDropAdapterAssistant.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/dnd/FSDropTargetListener.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/CommitHandler.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/CopyFilesHandler.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/CutFilesHandler.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/DeleteHandler.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/MergeHandler.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/MoveCopyCallback.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/MoveFilesHandler.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/NewFileHandler.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/NewFolderHandler.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/NewNodeHandler.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/OpenFileHandler.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/OpenWithContribution.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/OpenWithMenu.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/PasteFilesHandler.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/RefreshHandler.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/RefreshViewerHandler.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/RenameCallback.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/RenameFilesHandler.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/handlers/UpdateHandler.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/operations/FsClipboard.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/operations/UiExecutor.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/pages/FSExplorerEditorPage.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/pages/FSExplorerEventListener.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/preferences/PreferencePage.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/preferences/PreferencesInitializer.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/properties/AdvancedAttributesDialog.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/properties/GeneralInformationPage.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/search/DateValidator.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/search/FSBaseSearchable.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/search/FSGeneralSearchable.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/search/FSModifiedSearchable.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/search/FSSizeSearchable.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/search/FSTreeNodeMatcher.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/search/FSTreeNodeSearchable.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/search/NameValidator.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/search/SizeValidator.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/BasicFileSection.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/BasicFolderSection.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/FileFilter.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/FolderFilter.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/LinuxFilter.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/LinuxPermissionsSection.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/WindowsAttributesCESection.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/WindowsAttributesSection.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/WindowsFileAISection.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/WindowsFileFilter.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/WindowsFilter.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/WindowsFolderAISection.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/tabbed/WindowsFolderFilter.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/testers/CachePropertyTester.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/testers/ClipboardPropertyTester.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/testers/EditorActivationEventPropertyTester.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/FolderValidator.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/NameValidator.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/NewFileWizard.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/NewFileWizardPage.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/NewFolderWizard.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/NewFolderWizardPage.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/NewNodeWizard.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/NewNodeWizardPage.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/TargetPatternFilter.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/wizards/TargetSelectionPage.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/nls/Messages.java
create mode 100644 target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/nls/Messages.properties
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.local/.classpath
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.local/.options
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.local/.project
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.local/.settings/org.eclipse.jdt.core.prefs
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.local/.settings/org.eclipse.jdt.ui.prefs
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.local/.settings/org.eclipse.pde.prefs
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.local/META-INF/MANIFEST.MF
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.local/META-INF/p2.inf
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.local/about.html
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.local/build.properties
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.local/contexts.xml
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.local/icons/eview16/terminal_view.gif
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.local/plugin.properties
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.local/plugin.xml
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.local/pom.xml
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.local/src/org/eclipse/tcf/te/ui/terminals/local/activator/UIPlugin.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.local/src/org/eclipse/tcf/te/ui/terminals/local/controls/LocalWizardConfigurationPanel.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.local/src/org/eclipse/tcf/te/ui/terminals/local/help/IContextHelpIds.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.local/src/org/eclipse/tcf/te/ui/terminals/local/launcher/LocalLauncherDelegate.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.local/src/org/eclipse/tcf/te/ui/terminals/local/launcher/LocalLauncherHandler.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.local/src/org/eclipse/tcf/te/ui/terminals/local/launcher/LocalMementoHandler.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.local/src/org/eclipse/tcf/te/ui/terminals/local/nls/Messages.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.local/src/org/eclipse/tcf/te/ui/terminals/local/nls/Messages.properties
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.local/src/org/eclipse/tcf/te/ui/terminals/local/showin/DynamicContributionItems.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.local/src/org/eclipse/tcf/te/ui/terminals/local/showin/ExternalExecutablesDialog.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.local/src/org/eclipse/tcf/te/ui/terminals/local/showin/ExternalExecutablesInitializer.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.local/src/org/eclipse/tcf/te/ui/terminals/local/showin/ExternalExecutablesManager.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.local/src/org/eclipse/tcf/te/ui/terminals/local/showin/interfaces/IExternalExecutablesProperties.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.local/src/org/eclipse/tcf/te/ui/terminals/local/showin/interfaces/IPreferenceKeys.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.local/src/org/eclipse/tcf/te/ui/terminals/local/showin/preferences/PreferencePage.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.local/src/org/eclipse/tcf/te/ui/terminals/local/showin/preferences/PreferencesInitializer.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.process/.classpath
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.process/.options
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.process/.project
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.process/.settings/org.eclipse.jdt.core.prefs
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.process/.settings/org.eclipse.jdt.ui.prefs
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.process/.settings/org.eclipse.pde.prefs
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.process/META-INF/MANIFEST.MF
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.process/META-INF/p2.inf
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.process/about.html
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.process/build.properties
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.process/plugin.properties
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.process/plugin.xml
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.process/pom.xml
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.process/src/org/eclipse/tcf/te/ui/terminals/process/ProcessConnector.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.process/src/org/eclipse/tcf/te/ui/terminals/process/ProcessLauncherDelegate.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.process/src/org/eclipse/tcf/te/ui/terminals/process/ProcessMonitor.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.process/src/org/eclipse/tcf/te/ui/terminals/process/ProcessSettings.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.process/src/org/eclipse/tcf/te/ui/terminals/process/ProcessSettingsPage.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.process/src/org/eclipse/tcf/te/ui/terminals/process/activator/UIPlugin.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.process/src/org/eclipse/tcf/te/ui/terminals/process/help/IContextHelpIds.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.process/src/org/eclipse/tcf/te/ui/terminals/process/nls/Messages.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.process/src/org/eclipse/tcf/te/ui/terminals/process/nls/Messages.properties
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.rse/.classpath
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.rse/.options
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.rse/.project
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.rse/.settings/org.eclipse.jdt.core.prefs
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.rse/.settings/org.eclipse.jdt.ui.prefs
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.rse/.settings/org.eclipse.pde.prefs
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.rse/META-INF/MANIFEST.MF
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.rse/about.html
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.rse/build.properties
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.rse/icons/eview16/terminal_view.gif
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.rse/plugin.properties
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.rse/plugin.xml
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.rse/pom.xml
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.rse/src/org/eclipse/tcf/te/ui/terminals/rse/activator/UIPlugin.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.rse/src/org/eclipse/tcf/te/ui/terminals/rse/internal/LaunchTerminalHandler.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.rse/src/org/eclipse/tcf/te/ui/terminals/rse/internal/PropertyTester.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.rse/src/org/eclipse/tcf/te/ui/terminals/rse/internal/TerminalContextPropertiesProvider.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.rse/src/org/eclipse/tcf/te/ui/terminals/rse/nls/Messages.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.rse/src/org/eclipse/tcf/te/ui/terminals/rse/nls/Messages.properties
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.serial/.classpath
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.serial/.options
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.serial/.project
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.serial/.settings/org.eclipse.jdt.core.prefs
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.serial/.settings/org.eclipse.jdt.ui.prefs
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.serial/.settings/org.eclipse.pde.prefs
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.serial/META-INF/MANIFEST.MF
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.serial/about.html
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.serial/build.properties
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.serial/plugin.properties
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.serial/plugin.xml
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.serial/pom.xml
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.serial/src/org/eclipse/tcf/te/ui/terminals/serial/activator/UIPlugin.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.serial/src/org/eclipse/tcf/te/ui/terminals/serial/controls/SerialConfigurationPanel.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.serial/src/org/eclipse/tcf/te/ui/terminals/serial/controls/SerialLinePanel.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.serial/src/org/eclipse/tcf/te/ui/terminals/serial/controls/SerialPortAddressDialog.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.serial/src/org/eclipse/tcf/te/ui/terminals/serial/interfaces/ITraceIds.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.serial/src/org/eclipse/tcf/te/ui/terminals/serial/interfaces/IWireTypeSerial.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.serial/src/org/eclipse/tcf/te/ui/terminals/serial/launcher/SerialLauncherDelegate.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.serial/src/org/eclipse/tcf/te/ui/terminals/serial/launcher/SerialMementoHandler.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.serial/src/org/eclipse/tcf/te/ui/terminals/serial/nls/Messages.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.serial/src/org/eclipse/tcf/te/ui/terminals/serial/nls/Messages.properties
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.ssh/.classpath
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.ssh/.options
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.ssh/.project
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.ssh/.settings/org.eclipse.jdt.core.prefs
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.ssh/.settings/org.eclipse.jdt.ui.prefs
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.ssh/.settings/org.eclipse.pde.prefs
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.ssh/META-INF/MANIFEST.MF
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.ssh/about.html
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.ssh/build.properties
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.ssh/plugin.properties
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.ssh/plugin.xml
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.ssh/pom.xml
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.ssh/src/org/eclipse/tcf/te/ui/terminals/ssh/activator/UIPlugin.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.ssh/src/org/eclipse/tcf/te/ui/terminals/ssh/controls/SshWizardConfigurationPanel.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.ssh/src/org/eclipse/tcf/te/ui/terminals/ssh/launcher/SshLauncherDelegate.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.ssh/src/org/eclipse/tcf/te/ui/terminals/ssh/launcher/SshMementoHandler.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.ssh/src/org/eclipse/tcf/te/ui/terminals/ssh/nls/Messages.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.ssh/src/org/eclipse/tcf/te/ui/terminals/ssh/nls/Messages.properties
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.telnet/.classpath
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.telnet/.options
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.telnet/.project
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.telnet/.settings/org.eclipse.jdt.core.prefs
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.telnet/.settings/org.eclipse.jdt.ui.prefs
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.telnet/.settings/org.eclipse.pde.prefs
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.telnet/META-INF/MANIFEST.MF
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.telnet/about.html
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.telnet/build.properties
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.telnet/plugin.properties
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.telnet/plugin.xml
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.telnet/pom.xml
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.telnet/src/org/eclipse/tcf/te/ui/terminals/telnet/activator/UIPlugin.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.telnet/src/org/eclipse/tcf/te/ui/terminals/telnet/controls/TelnetWizardConfigurationPanel.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.telnet/src/org/eclipse/tcf/te/ui/terminals/telnet/launcher/TelnetLauncherDelegate.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.telnet/src/org/eclipse/tcf/te/ui/terminals/telnet/launcher/TelnetMementoHandler.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.telnet/src/org/eclipse/tcf/te/ui/terminals/telnet/nls/Messages.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals.telnet/src/org/eclipse/tcf/te/ui/terminals/telnet/nls/Messages.properties
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/.classpath
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/.options
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/.project
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/.settings/org.eclipse.jdt.core.prefs
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/.settings/org.eclipse.jdt.ui.prefs
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/.settings/org.eclipse.pde.prefs
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/META-INF/MANIFEST.MF
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/about.html
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/build.properties
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/contexts.xml
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/icons/clcl16/command_input_field.gif
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/icons/dlcl16/command_input_field.gif
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/icons/dlcl16/disconnect.gif
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/icons/elcl16/command_input_field.gif
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/icons/elcl16/disconnect.gif
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/icons/eview16/terminal_view.gif
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/plugin.properties
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/plugin.xml
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/pom.xml
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/schema/launcherDelegates.exsd
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/actions/AbstractAction.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/actions/PinTerminalAction.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/actions/SelectEncodingAction.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/actions/TabScrollLockAction.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/actions/ToggleCommandFieldAction.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/activator/UIPlugin.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/controls/ConfigurationPanelControl.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/controls/NoteCompositeHelper.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/help/IContextHelpIds.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/interfaces/IConfigurationPanel.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/interfaces/IConfigurationPanelContainer.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/interfaces/ILauncherDelegate.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/interfaces/IMementoHandler.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/interfaces/IPreferenceKeys.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/interfaces/ITerminalsView.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/interfaces/IUIConstants.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/interfaces/ImageConsts.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/interfaces/tracing/ITraceIds.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/internal/PreferencesInitializer.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/internal/PropertyTester.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/internal/SettingsStore.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/internal/dialogs/EncodingSelectionDialog.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/internal/dialogs/LaunchTerminalSettingsDialog.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/internal/handler/AbstractTriggerCommandHandler.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/internal/handler/DisconnectTerminalCommandHandler.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/internal/handler/LaunchTerminalCommandHandler.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/internal/handler/MaximizeViewHandler.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/internal/handler/QuickAccessHandler.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/launcher/AbstractLauncherDelegate.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/launcher/LauncherDelegateManager.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/listeners/AbstractWindowListener.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/listeners/WorkbenchPartListener.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/listeners/WorkbenchWindowListener.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/manager/ConsoleManager.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/nls/Messages.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/nls/Messages.properties
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/panels/AbstractConfigurationPanel.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/panels/AbstractExtendedConfigurationPanel.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/services/TerminalService.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/streams/AbstractStreamsConnector.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/streams/InputStreamMonitor.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/streams/OutputStreamMonitor.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/streams/StreamsConnector.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/streams/StreamsLauncherDelegate.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/streams/StreamsSettings.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/tabs/TabCommandFieldHandler.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/tabs/TabDisposeListener.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/tabs/TabFolderManager.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/tabs/TabFolderMenuHandler.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/tabs/TabFolderSelectionListener.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/tabs/TabFolderToolbarHandler.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/tabs/TabTerminalListener.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/view/TerminalsView.java
delete mode 100644 target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/view/TerminalsViewMementoHandler.java
create mode 100644 terminals/features/org.eclipse.tcf.te.terminals.feature/.project
create mode 100644 terminals/features/org.eclipse.tcf.te.terminals.feature/build.properties
create mode 100644 terminals/features/org.eclipse.tcf.te.terminals.feature/feature.properties
create mode 100644 terminals/features/org.eclipse.tcf.te.terminals.feature/feature.xml
create mode 100644 terminals/features/org.eclipse.tcf.te.terminals.feature/p2.inf
create mode 100644 terminals/features/org.eclipse.tcf.te.terminals.feature/pom.xml
create mode 100644 terminals/features/org.eclipse.tcf.te.terminals.rse.feature/.project
create mode 100644 terminals/features/org.eclipse.tcf.te.terminals.rse.feature/build.properties
create mode 100644 terminals/features/org.eclipse.tcf.te.terminals.rse.feature/feature.properties
create mode 100644 terminals/features/org.eclipse.tcf.te.terminals.rse.feature/feature.xml
create mode 100644 terminals/features/org.eclipse.tcf.te.terminals.rse.feature/pom.xml
create mode 100644 terminals/features/org.eclipse.tcf.te.terminals.rse.sdk.feature/.project
create mode 100644 terminals/features/org.eclipse.tcf.te.terminals.rse.sdk.feature/build.properties
create mode 100644 terminals/features/org.eclipse.tcf.te.terminals.rse.sdk.feature/feature.properties
create mode 100644 terminals/features/org.eclipse.tcf.te.terminals.rse.sdk.feature/feature.xml
create mode 100644 terminals/features/org.eclipse.tcf.te.terminals.rse.sdk.feature/pom.xml
create mode 100644 terminals/features/org.eclipse.tcf.te.terminals.sdk.feature/.project
create mode 100644 terminals/features/org.eclipse.tcf.te.terminals.sdk.feature/build.properties
create mode 100644 terminals/features/org.eclipse.tcf.te.terminals.sdk.feature/feature.properties
create mode 100644 terminals/features/org.eclipse.tcf.te.terminals.sdk.feature/feature.xml
create mode 100644 terminals/features/org.eclipse.tcf.te.terminals.sdk.feature/pom.xml
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.local/.classpath
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.local/.options
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.local/.project
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.local/.settings/org.eclipse.jdt.core.prefs
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.local/.settings/org.eclipse.jdt.ui.prefs
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.local/.settings/org.eclipse.pde.prefs
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.local/META-INF/MANIFEST.MF
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.local/META-INF/p2.inf
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.local/about.html
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.local/build.properties
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.local/contexts.xml
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.local/icons/eview16/terminal_view.gif
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.local/plugin.properties
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.local/plugin.xml
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.local/pom.xml
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.local/src/org/eclipse/tcf/te/ui/terminals/local/activator/UIPlugin.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.local/src/org/eclipse/tcf/te/ui/terminals/local/controls/LocalWizardConfigurationPanel.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.local/src/org/eclipse/tcf/te/ui/terminals/local/help/IContextHelpIds.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.local/src/org/eclipse/tcf/te/ui/terminals/local/launcher/LocalLauncherDelegate.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.local/src/org/eclipse/tcf/te/ui/terminals/local/launcher/LocalLauncherHandler.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.local/src/org/eclipse/tcf/te/ui/terminals/local/launcher/LocalMementoHandler.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.local/src/org/eclipse/tcf/te/ui/terminals/local/nls/Messages.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.local/src/org/eclipse/tcf/te/ui/terminals/local/nls/Messages.properties
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.local/src/org/eclipse/tcf/te/ui/terminals/local/showin/DynamicContributionItems.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.local/src/org/eclipse/tcf/te/ui/terminals/local/showin/ExternalExecutablesDialog.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.local/src/org/eclipse/tcf/te/ui/terminals/local/showin/ExternalExecutablesInitializer.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.local/src/org/eclipse/tcf/te/ui/terminals/local/showin/ExternalExecutablesManager.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.local/src/org/eclipse/tcf/te/ui/terminals/local/showin/interfaces/IExternalExecutablesProperties.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.local/src/org/eclipse/tcf/te/ui/terminals/local/showin/interfaces/IPreferenceKeys.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.local/src/org/eclipse/tcf/te/ui/terminals/local/showin/preferences/PreferencePage.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.local/src/org/eclipse/tcf/te/ui/terminals/local/showin/preferences/PreferencesInitializer.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.process/.classpath
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.process/.options
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.process/.project
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.process/.settings/org.eclipse.jdt.core.prefs
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.process/.settings/org.eclipse.jdt.ui.prefs
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.process/.settings/org.eclipse.pde.prefs
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.process/META-INF/MANIFEST.MF
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.process/META-INF/p2.inf
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.process/about.html
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.process/build.properties
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.process/plugin.properties
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.process/plugin.xml
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.process/pom.xml
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.process/src/org/eclipse/tcf/te/ui/terminals/process/ProcessConnector.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.process/src/org/eclipse/tcf/te/ui/terminals/process/ProcessLauncherDelegate.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.process/src/org/eclipse/tcf/te/ui/terminals/process/ProcessMonitor.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.process/src/org/eclipse/tcf/te/ui/terminals/process/ProcessSettings.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.process/src/org/eclipse/tcf/te/ui/terminals/process/ProcessSettingsPage.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.process/src/org/eclipse/tcf/te/ui/terminals/process/activator/UIPlugin.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.process/src/org/eclipse/tcf/te/ui/terminals/process/help/IContextHelpIds.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.process/src/org/eclipse/tcf/te/ui/terminals/process/nls/Messages.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.process/src/org/eclipse/tcf/te/ui/terminals/process/nls/Messages.properties
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.rse/.classpath
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.rse/.options
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.rse/.project
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.rse/.settings/org.eclipse.jdt.core.prefs
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.rse/.settings/org.eclipse.jdt.ui.prefs
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.rse/.settings/org.eclipse.pde.prefs
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.rse/META-INF/MANIFEST.MF
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.rse/about.html
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.rse/build.properties
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.rse/icons/eview16/terminal_view.gif
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.rse/plugin.properties
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.rse/plugin.xml
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.rse/pom.xml
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.rse/src/org/eclipse/tcf/te/ui/terminals/rse/activator/UIPlugin.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.rse/src/org/eclipse/tcf/te/ui/terminals/rse/internal/LaunchTerminalHandler.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.rse/src/org/eclipse/tcf/te/ui/terminals/rse/internal/PropertyTester.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.rse/src/org/eclipse/tcf/te/ui/terminals/rse/internal/TerminalContextPropertiesProvider.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.rse/src/org/eclipse/tcf/te/ui/terminals/rse/nls/Messages.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.rse/src/org/eclipse/tcf/te/ui/terminals/rse/nls/Messages.properties
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.serial/.classpath
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.serial/.options
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.serial/.project
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.serial/.settings/org.eclipse.jdt.core.prefs
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.serial/.settings/org.eclipse.jdt.ui.prefs
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.serial/.settings/org.eclipse.pde.prefs
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.serial/META-INF/MANIFEST.MF
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.serial/about.html
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.serial/build.properties
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.serial/plugin.properties
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.serial/plugin.xml
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.serial/pom.xml
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.serial/src/org/eclipse/tcf/te/ui/terminals/serial/activator/UIPlugin.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.serial/src/org/eclipse/tcf/te/ui/terminals/serial/controls/SerialConfigurationPanel.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.serial/src/org/eclipse/tcf/te/ui/terminals/serial/controls/SerialLinePanel.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.serial/src/org/eclipse/tcf/te/ui/terminals/serial/controls/SerialPortAddressDialog.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.serial/src/org/eclipse/tcf/te/ui/terminals/serial/interfaces/ITraceIds.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.serial/src/org/eclipse/tcf/te/ui/terminals/serial/interfaces/IWireTypeSerial.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.serial/src/org/eclipse/tcf/te/ui/terminals/serial/launcher/SerialLauncherDelegate.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.serial/src/org/eclipse/tcf/te/ui/terminals/serial/launcher/SerialMementoHandler.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.serial/src/org/eclipse/tcf/te/ui/terminals/serial/nls/Messages.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.serial/src/org/eclipse/tcf/te/ui/terminals/serial/nls/Messages.properties
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.ssh/.classpath
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.ssh/.options
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.ssh/.project
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.ssh/.settings/org.eclipse.jdt.core.prefs
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.ssh/.settings/org.eclipse.jdt.ui.prefs
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.ssh/.settings/org.eclipse.pde.prefs
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.ssh/META-INF/MANIFEST.MF
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.ssh/about.html
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.ssh/build.properties
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.ssh/plugin.properties
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.ssh/plugin.xml
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.ssh/pom.xml
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.ssh/src/org/eclipse/tcf/te/ui/terminals/ssh/activator/UIPlugin.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.ssh/src/org/eclipse/tcf/te/ui/terminals/ssh/controls/SshWizardConfigurationPanel.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.ssh/src/org/eclipse/tcf/te/ui/terminals/ssh/launcher/SshLauncherDelegate.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.ssh/src/org/eclipse/tcf/te/ui/terminals/ssh/launcher/SshMementoHandler.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.ssh/src/org/eclipse/tcf/te/ui/terminals/ssh/nls/Messages.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.ssh/src/org/eclipse/tcf/te/ui/terminals/ssh/nls/Messages.properties
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.telnet/.classpath
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.telnet/.options
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.telnet/.project
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.telnet/.settings/org.eclipse.jdt.core.prefs
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.telnet/.settings/org.eclipse.jdt.ui.prefs
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.telnet/.settings/org.eclipse.pde.prefs
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.telnet/META-INF/MANIFEST.MF
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.telnet/about.html
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.telnet/build.properties
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.telnet/plugin.properties
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.telnet/plugin.xml
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.telnet/pom.xml
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.telnet/src/org/eclipse/tcf/te/ui/terminals/telnet/activator/UIPlugin.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.telnet/src/org/eclipse/tcf/te/ui/terminals/telnet/controls/TelnetWizardConfigurationPanel.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.telnet/src/org/eclipse/tcf/te/ui/terminals/telnet/launcher/TelnetLauncherDelegate.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.telnet/src/org/eclipse/tcf/te/ui/terminals/telnet/launcher/TelnetMementoHandler.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.telnet/src/org/eclipse/tcf/te/ui/terminals/telnet/nls/Messages.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals.telnet/src/org/eclipse/tcf/te/ui/terminals/telnet/nls/Messages.properties
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/.classpath
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/.options
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/.project
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/.settings/org.eclipse.jdt.core.prefs
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/.settings/org.eclipse.jdt.ui.prefs
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/.settings/org.eclipse.pde.prefs
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/META-INF/MANIFEST.MF
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/about.html
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/build.properties
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/contexts.xml
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/icons/clcl16/command_input_field.gif
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/icons/dlcl16/command_input_field.gif
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/icons/dlcl16/disconnect.gif
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/icons/elcl16/command_input_field.gif
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/icons/elcl16/disconnect.gif
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/icons/eview16/terminal_view.gif
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/plugin.properties
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/plugin.xml
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/pom.xml
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/schema/launcherDelegates.exsd
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/actions/AbstractAction.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/actions/PinTerminalAction.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/actions/SelectEncodingAction.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/actions/TabScrollLockAction.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/actions/ToggleCommandFieldAction.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/activator/UIPlugin.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/controls/ConfigurationPanelControl.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/controls/NoteCompositeHelper.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/help/IContextHelpIds.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/interfaces/IConfigurationPanel.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/interfaces/IConfigurationPanelContainer.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/interfaces/ILauncherDelegate.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/interfaces/IMementoHandler.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/interfaces/IPreferenceKeys.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/interfaces/ITerminalsView.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/interfaces/IUIConstants.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/interfaces/ImageConsts.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/interfaces/tracing/ITraceIds.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/internal/PreferencesInitializer.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/internal/PropertyTester.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/internal/SettingsStore.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/internal/dialogs/EncodingSelectionDialog.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/internal/dialogs/LaunchTerminalSettingsDialog.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/internal/handler/AbstractTriggerCommandHandler.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/internal/handler/DisconnectTerminalCommandHandler.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/internal/handler/LaunchTerminalCommandHandler.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/internal/handler/MaximizeViewHandler.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/internal/handler/QuickAccessHandler.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/launcher/AbstractLauncherDelegate.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/launcher/LauncherDelegateManager.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/listeners/AbstractWindowListener.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/listeners/WorkbenchPartListener.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/listeners/WorkbenchWindowListener.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/manager/ConsoleManager.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/nls/Messages.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/nls/Messages.properties
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/panels/AbstractConfigurationPanel.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/panels/AbstractExtendedConfigurationPanel.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/services/TerminalService.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/streams/AbstractStreamsConnector.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/streams/InputStreamMonitor.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/streams/OutputStreamMonitor.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/streams/StreamsConnector.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/streams/StreamsLauncherDelegate.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/streams/StreamsSettings.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/tabs/TabCommandFieldHandler.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/tabs/TabDisposeListener.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/tabs/TabFolderManager.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/tabs/TabFolderMenuHandler.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/tabs/TabFolderSelectionListener.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/tabs/TabFolderToolbarHandler.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/tabs/TabTerminalListener.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/view/TerminalsView.java
create mode 100644 terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/view/TerminalsViewMementoHandler.java
diff --git a/pom.xml b/pom.xml
index 4d4007350..c13e985f3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -76,13 +76,6 @@
May 24, 2012
+The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise +indicated below, the Content is provided to you under the terms and conditions of the +Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available +at http://www.eclipse.org/legal/epl-v10.html. +For purposes of the EPL, "Program" will mean the Content.
+ +If you did not receive this Content directly from the Eclipse Foundation, the Content is +being redistributed by another party ("Redistributor") and different terms and conditions may +apply to your use of any object code in the Content. Check the Redistributor's license that was +provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise +indicated below, the terms and conditions of the EPL still apply to any source code in the Content +and such source code may be obtained at http://www.eclipse.org.
+ + + \ No newline at end of file diff --git a/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/build.properties b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/build.properties new file mode 100644 index 000000000..221a2d955 --- /dev/null +++ b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/build.properties @@ -0,0 +1,16 @@ +############################################################################### +# 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 +############################################################################### +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + plugin.properties,\ + plugin.xml,\ + about.html diff --git a/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/plugin.properties b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/plugin.properties new file mode 100644 index 000000000..3b7f461be --- /dev/null +++ b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/plugin.properties @@ -0,0 +1,16 @@ +################################################################################## +# Copyright (c) 2012, 2014 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 +################################################################################## + +providerName = Eclipse.org - Target Explorer +pluginName = Target Explorer, TCF File System Extensions Core + +FileTransferStep.name=Transfer File +InitializeModelStep.name=Initialize Filesystem Runtime Model +DisposeModelStep.name=Dispose Filesystem Runtime Model diff --git a/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/plugin.xml b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/plugin.xml new file mode 100644 index 000000000..5f982e785 --- /dev/null +++ b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/plugin.xml @@ -0,0 +1,108 @@ + + +InterruptedException
.
+ *
+ * @param monitor the progress monitor to use to display progress and receive
+ * requests for cancellation
+ * @exception InvocationTargetException if the run method must propagate a checked exception,
+ * it should wrap it inside an InvocationTargetException
; runtime exceptions are automatically
+ * wrapped in an InvocationTargetException
by the calling context
+ * @exception InterruptedException if the operation detects a request to cancel,
+ * using IProgressMonitor.isCanceled()
, it should exit by throwing
+ * InterruptedException
+ *
+ */
+ public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException;
+
+ /**
+ * Get the operation's name. This name will be used as the task name of
+ * the given monitor.
+ *
+ * @see IProgressMonitor#beginTask(String, int)
+ * @return The name of the operation.
+ */
+ public String getName();
+
+ /**
+ * Get the total amount of work which will used by the progress
+ * monitor to set the total work.
+ *
+ * @see IProgressMonitor#beginTask(String, int)
+ * @return The total amount of work or UNKNOWN if it is in-determinant
+ */
+ public int getTotalWork();
+}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/interfaces/IWindowsFileAttributes.java b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/interfaces/IWindowsFileAttributes.java
new file mode 100644
index 000000000..f333e54f3
--- /dev/null
+++ b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/interfaces/IWindowsFileAttributes.java
@@ -0,0 +1,97 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 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.core.interfaces;
+
+/**
+ * Windows specific file system attribute definitions.
+ *
+ * @see OK
, ERROR
,
+ * INFO
, WARNING
, or CANCEL
+ * @param message
+ * The exception detail message or null
.
+ */
+ public TCFChannelException(int severity, String message) {
+ super(severity, message);
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param severity the severity; one of OK
, ERROR
,
+ * INFO
, WARNING
, or CANCEL
+ * @param message
+ * The exception detail message or null
.
+ * @param cause
+ * The exception cause or null
.
+ */
+ public TCFChannelException(int severity, String message, Throwable cause){
+ super(severity, message, cause);
+ }
+}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/exceptions/TCFException.java b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/exceptions/TCFException.java
new file mode 100644
index 000000000..e42569a5a
--- /dev/null
+++ b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/exceptions/TCFException.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 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
+ * William Chen (Wind River)- [345552] Edit the remote files with a proper editor
+ *******************************************************************************/
+package org.eclipse.tcf.te.tcf.filesystem.core.internal.exceptions;
+
+/**
+ * TCF file system implementation base exception.
+ */
+public class TCFException extends Exception {
+ private static final long serialVersionUID = -220092425137980661L;
+
+ // The severity code of this exception, could be used in job status handling.
+ private int severity;
+
+ /**
+ * Constructor.
+ *
+ * @param severity the severity; one of OK
, ERROR
,
+ * INFO
, WARNING
, or CANCEL
+ * @param message
+ * The exception detail message or null
.
+ */
+ public TCFException(int severity, String message) {
+ super(message);
+ this.severity = severity;
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param severity the severity; one of OK
, ERROR
,
+ * INFO
, WARNING
, or CANCEL
+ * @param message
+ * The exception detail message or null
.
+ * @param cause
+ * The exception cause or null
.
+ */
+ public TCFException(int severity, String message, Throwable cause) {
+ super(message, cause);
+ this.severity = severity;
+ }
+
+ /**
+ * Returns the severity. The severities are as follows (in
+ * descending order):
+ * CANCEL
- cancelation occurredERROR
- a serious error (most severe)WARNING
- a warning (less severe)INFO
- an informational ("fyi") message (least severe)OK
- everything is just fine
+ * The severity of a multi-status is defined to be the maximum
+ * severity of any of its children, or OK
if it has
+ * no children.
+ *
OK
, ERROR
,
+ * INFO
, WARNING
, or CANCEL
+ * @see #matches(int)
+ */
+ public int getSeverity() {
+ return severity;
+ }
+}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/exceptions/TCFFileSystemException.java b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/exceptions/TCFFileSystemException.java
new file mode 100644
index 000000000..85f70b662
--- /dev/null
+++ b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/exceptions/TCFFileSystemException.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 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
+ * William Chen (Wind River)- [345552] Edit the remote files with a proper editor
+ *******************************************************************************/
+package org.eclipse.tcf.te.tcf.filesystem.core.internal.exceptions;
+
+/**
+ * TCF remote file system exception.
+ */
+public class TCFFileSystemException extends TCFException {
+ private static final long serialVersionUID = -5203855887734608373L;
+
+ /**
+ * Constructor.
+ *
+ * @param severity the severity; one of OK
, ERROR
,
+ * INFO
, WARNING
, or CANCEL
+ * @param message
+ * The exception detail message or null
.
+ */
+ public TCFFileSystemException(int severity, String message) {
+ super(severity, message);
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param severity the severity; one of OK
, ERROR
,
+ * INFO
, WARNING
, or CANCEL
+ * @param message
+ * The exception detail message or null
.
+ * @param cause
+ * The exception cause or null
.
+ */
+ public TCFFileSystemException(int severity, String message, Throwable cause) {
+ super(severity, message, cause);
+ }
+
+}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/IOpExecutor.java b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/IOpExecutor.java
new file mode 100644
index 000000000..f88fdb173
--- /dev/null
+++ b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/IOpExecutor.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 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.core.internal.operations;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.IOperation;
+
+/**
+ * The interface is to defined an operation executor, which executes
+ * the given operation providing the context including the progress monitor.
+ */
+public interface IOpExecutor {
+ /**
+ * Execute the specified operation providing an execution
+ * context.
+ *
+ * @param operation The operation to be executed.
+ * @return a result status of the execution.
+ */
+ public IStatus execute(IOperation operation);
+}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/JobExecutor.java b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/JobExecutor.java
new file mode 100644
index 000000000..a46e64e62
--- /dev/null
+++ b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/JobExecutor.java
@@ -0,0 +1,100 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 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.core.internal.operations;
+
+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.core.runtime.jobs.IJobChangeEvent;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.core.runtime.jobs.JobChangeAdapter;
+import org.eclipse.tcf.te.runtime.interfaces.callback.ICallback;
+import org.eclipse.tcf.te.tcf.filesystem.core.activator.CorePlugin;
+import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.IOperation;
+import org.eclipse.tcf.te.tcf.filesystem.core.internal.exceptions.TCFException;
+
+/**
+ * The operation that is executed as a back ground job.
+ */
+public class JobExecutor implements IOpExecutor{
+ // The callback
+ protected ICallback callback;
+
+ /**
+ * Create an instance with no callback.
+ */
+ public JobExecutor() {
+ this(null);
+ }
+
+ /**
+ * Create an instance with the specified callback.
+ *
+ * @param callback called when the creation is done.
+ */
+ public JobExecutor(ICallback callback) {
+ this.callback = callback;
+ }
+
+ /*
+ * (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) {
+ Job job = new Job(operation.getName()){
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ try {
+ monitor.setTaskName(operation.getName());
+ monitor.beginTask(operation.getName(), operation.getTotalWork());
+ operation.run(monitor);
+ return Status.OK_STATUS;
+ }
+ catch (InvocationTargetException e) {
+ Throwable throwable = e.getTargetException();
+ if(throwable instanceof TCFException) {
+ int severity = ((TCFException)throwable).getSeverity();
+ return new Status(severity, CorePlugin.getUniqueIdentifier(), throwable.getMessage(), throwable);
+ }
+ return new Status(IStatus.ERROR, CorePlugin.getUniqueIdentifier(), throwable.getMessage(), throwable);
+ }
+ catch (InterruptedException e) {
+ return Status.CANCEL_STATUS;
+ }
+ finally {
+ monitor.done();
+ }
+ }};
+ job.addJobChangeListener(new JobChangeAdapter(){
+ @Override
+ public void done(final IJobChangeEvent event) {
+ doCallback(operation, event);
+ }
+ });
+ job.schedule();
+ return Status.OK_STATUS;
+ }
+
+ /**
+ * Called when the creation is done.
+ *
+ * @param operation The operation object.
+ * @param event The job change event.
+ */
+ void doCallback(IOperation operation, IJobChangeEvent event) {
+ IStatus status = event.getResult();
+ if(callback != null) {
+ callback.done(operation, status);
+ }
+ }
+}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/NullOpExecutor.java b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/NullOpExecutor.java
new file mode 100644
index 000000000..369b9063b
--- /dev/null
+++ b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/NullOpExecutor.java
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ * 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.core.internal.operations;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.tcf.te.runtime.interfaces.callback.ICallback;
+import org.eclipse.tcf.te.tcf.filesystem.core.activator.CorePlugin;
+import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.IOperation;
+import org.eclipse.tcf.te.tcf.filesystem.core.internal.exceptions.TCFException;
+
+/**
+ * An operation executor that executes an operation directly and silently.
+ */
+public class NullOpExecutor implements IOpExecutor {
+ // The callback being invoked after execution.
+ ICallback callback;
+
+ /**
+ * Empty argument constructor
+ */
+ public NullOpExecutor() {
+ this(null);
+ }
+
+ /**
+ * Create an instance with a callback.
+ *
+ * @param callback The callback to be invoked after execution.
+ */
+ public NullOpExecutor(ICallback callback) {
+ this.callback = callback;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.IOpExecutor#execute(org.eclipse.tcf.te.tcf.filesystem.core.interfaces.IOperation)
+ */
+ @Override
+ public IStatus execute(IOperation operation) {
+ IProgressMonitor monitor = new NullProgressMonitor();
+ IStatus status;
+ try {
+ monitor.setTaskName(operation.getName());
+ monitor.beginTask(operation.getName(), operation.getTotalWork());
+ operation.run(monitor);
+ status = Status.OK_STATUS;
+ }
+ catch (InvocationTargetException e) {
+ Throwable throwable = e.getTargetException();
+ if (throwable instanceof TCFException) {
+ int severity = ((TCFException) throwable).getSeverity();
+ status = new Status(severity, CorePlugin.getUniqueIdentifier(), throwable.getMessage(), throwable);
+ }
+ else {
+ status = new Status(IStatus.ERROR, CorePlugin.getUniqueIdentifier(), throwable.getMessage(), throwable);
+ }
+ }
+ catch (InterruptedException e) {
+ status = Status.CANCEL_STATUS;
+ }
+ finally {
+ monitor.done();
+ }
+ if(callback != null) callback.done(operation, status);
+ return status;
+ }
+}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/OpCacheFileDigest.java b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/OpCacheFileDigest.java
new file mode 100644
index 000000000..7aaca2c18
--- /dev/null
+++ b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/OpCacheFileDigest.java
@@ -0,0 +1,112 @@
+/*******************************************************************************
+ * 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.core.internal.operations;
+
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.security.DigestInputStream;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.IOperation;
+import org.eclipse.tcf.te.tcf.filesystem.core.internal.utils.CacheManager;
+import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode;
+
+/**
+ * The operation to calculate the message digest of a cache file.
+ */
+public class OpCacheFileDigest implements IOperation {
+ // The digest of which is going to be computed.
+ FSTreeNode node;
+ // The computing result
+ byte[] digest;
+
+ /**
+ * Create an operation to compute the digest of its local cache file.
+ *
+ * @param node The file system node.
+ */
+ public OpCacheFileDigest(FSTreeNode node) {
+ this.node = node;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.tcf.te.tcf.filesystem.core.interfaces.IOperation#run(org.eclipse.core.runtime.IProgressMonitor)
+ */
+ @Override
+ public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
+ File file = CacheManager.getCacheFile(node);
+ BufferedInputStream input = null;
+ try {
+ long totalSize = file.length();
+ int chunk_size = (int) totalSize / 100;
+ int percentRead = 0;
+ long bytesRead = 0;
+ MessageDigest digest = MessageDigest.getInstance(MD_ALG);
+ input = new BufferedInputStream(new DigestInputStream(new FileInputStream(file), digest));
+ byte[] data = new byte[OpStreamOp.DEFAULT_CHUNK_SIZE];
+ int length;
+ while ((length = input.read(data)) >= 0){
+ bytesRead += length;
+ if (chunk_size != 0) {
+ int percent = (int) bytesRead / chunk_size;
+ if (percent != percentRead) { // Update the progress.
+ monitor.worked(percent - percentRead);
+ percentRead = percent; // Remember the percentage.
+ }
+ }
+ }
+ this.digest = digest.digest();
+ }
+ catch (NoSuchAlgorithmException e) {
+ throw new InvocationTargetException(e);
+ }
+ catch (IOException e) {
+ throw new InvocationTargetException(e);
+ }
+ finally {
+ if (input != null) {
+ try {input.close();} catch (Exception e) {}
+ }
+ }
+ }
+
+ /**
+ * Get the computing result.
+ *
+ * @return The message digest of this cache file.
+ */
+ public byte[] getDigest() {
+ return digest;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.tcf.te.tcf.filesystem.core.interfaces.IOperation#getName()
+ */
+ @Override
+ public String getName() {
+ return "Update cache digest"; //$NON-NLS-1$
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.tcf.te.tcf.filesystem.core.interfaces.IOperation#getTotalWork()
+ */
+ @Override
+ public int getTotalWork() {
+ return 100;
+ }
+}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/OpCacheUpdate.java b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/OpCacheUpdate.java
new file mode 100644
index 000000000..d9f668c6a
--- /dev/null
+++ b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/OpCacheUpdate.java
@@ -0,0 +1,76 @@
+/*******************************************************************************
+ * 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.core.internal.operations;
+
+import java.io.File;
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.tcf.te.tcf.filesystem.core.internal.utils.CacheManager;
+import org.eclipse.tcf.te.tcf.filesystem.core.internal.utils.FileState;
+import org.eclipse.tcf.te.tcf.filesystem.core.internal.utils.PersistenceManager;
+import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode;
+
+/**
+ * The operation class that updates the local cache to target file systems.
+ */
+public class OpCacheUpdate extends OpDownload {
+
+ /**
+ * Create an instance of an OpCacheUpdate which
+ * updates the specified nodes.
+ *
+ * @param nodes The nodes to be updated.
+ */
+ public OpCacheUpdate(FSTreeNode... nodes) {
+ super(nodes);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpDownload#run(org.eclipse.core.runtime.IProgressMonitor)
+ */
+ @Override
+ public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
+ for (FSTreeNode node : srcNodes) {
+ // Write the data to its local cache file.
+ File file = CacheManager.getCachePath(node).toFile();
+ if (file.exists() && !file.canWrite()) {
+ // If the file exists and is read-only, delete it.
+ deleteFileChecked(file);
+ }
+ }
+ try {
+ super.run(monitor);
+ } finally {
+ if (!monitor.isCanceled()) {
+ for (FSTreeNode node : srcNodes) {
+ File file = CacheManager.getCachePath(node).toFile();
+ if (file.exists()) {
+ // If downloading is successful, update the attributes of the file and
+ // set the last modified time to that of its corresponding file.
+ if (!node.isWritable()) setReadOnlyChecked(file);
+ }
+ }
+ }
+ monitor.done();
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpDownload#updateNodeDigest(org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode, byte[])
+ */
+ @Override
+ protected void updateNodeDigest(FSTreeNode node, byte[] digest) {
+ FileState fdigest = PersistenceManager.getInstance().getFileDigest(node);
+ fdigest.reset(digest);
+ }
+}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/OpClipboard.java b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/OpClipboard.java
new file mode 100644
index 000000000..4b92a59b8
--- /dev/null
+++ b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/OpClipboard.java
@@ -0,0 +1,113 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 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.core.internal.operations;
+
+import java.beans.PropertyChangeEvent;
+import java.util.List;
+
+import org.eclipse.tcf.te.core.utils.PropertyChangeProvider;
+import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode;
+
+/**
+ * The clip board to which copy or cut files/folders.
+ */
+public class OpClipboard 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 Listnull
.
+ * @param name The new node's name. Must not be null
.
+ */
+ public OpCreate(FSTreeNode folder, String name) {
+ Assert.isNotNull(folder);
+ this.folder = folder;
+ Assert.isNotNull(name);
+ this.name = name;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.Operation#run(org.eclipse.core.runtime.IProgressMonitor)
+ */
+ @Override
+ public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
+ super.run(monitor);
+ IChannel channel = null;
+ try {
+ channel = openChannel(folder.peerNode.getPeer());
+ monitor.worked(1);
+ IFileSystem service = getBlockingFileSystem(channel);
+ if (service != null) {
+ if (!folder.childrenQueried) {
+ // If the children of folder is not queried, load it first.
+ loadChildren(folder, service);
+ monitor.worked(1);
+ }
+ monitor.worked(1);
+ create(service);
+ monitor.worked(1);
+ addNode(service);
+ monitor.worked(1);
+ refresh(service);
+ monitor.worked(1);
+ }
+ else {
+ String message = NLS.bind(Messages.Operation_NoFileSystemError, folder.peerNode.getPeerId());
+ throw new TCFFileSystemException(IStatus.ERROR, message);
+ }
+ }
+ catch (TCFException e) {
+ throw new InvocationTargetException(e, e.getMessage());
+ }
+ finally {
+ if (channel != null) Tcf.getChannelManager().closeChannel(channel);
+ monitor.done();
+ }
+ }
+
+ /**
+ * Refresh new node's stat using the file system service.
+ *
+ * @param service The file system service.
+ * @throws TCFFileSystemException Thrown when refreshing the new node's stat.
+ */
+ void refresh(final IFileSystem service) throws TCFFileSystemException {
+ if (node != null) {
+ final TCFFileSystemException[] errors = new TCFFileSystemException[1];
+ String path = node.getLocation(true);
+ service.stat(path, new DoneStat() {
+ @Override
+ public void doneStat(IToken token, FileSystemException error, FileAttrs attrs) {
+ if (error == null) {
+ if (node != null) node.setAttributes(attrs);
+ }
+ else {
+ errors[0] = newTCFException(IStatus.WARNING, error);
+ }
+ }
+ });
+ if (errors[0] != null) {
+ throw errors[0];
+ }
+ }
+ }
+
+ /**
+ * Add the new node to the folder and its RuntimeModel.
+ *
+ * @param service The file system service to be used.
+ * @throws TCFFileSystemException Thrown when adding.
+ */
+ void addNode(final IFileSystem service) throws TCFFileSystemException {
+ if (Protocol.isDispatchThread()) {
+ node = newTreeNode();
+ folder.addChild(node);
+ }
+ else {
+ final TCFFileSystemException[] errors = new TCFFileSystemException[1];
+ Protocol.invokeAndWait(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ addNode(service);
+ }
+ catch (TCFFileSystemException e) {
+ errors[0] = e;
+ }
+ }
+ });
+ if (errors[0] != null) throw errors[0];
+ }
+ }
+
+ /**
+ * Create the new node, either a directory node or a file node.
+ *
+ * @return The new node.
+ */
+ protected abstract FSTreeNode newTreeNode();
+
+ /**
+ * Create the node in the target system.
+ *
+ * @param service The file system service used to create the new node.
+ * @throws TCFFileSystemException Thrown when creating the node.
+ */
+ protected abstract void create(IFileSystem service) throws TCFFileSystemException;
+
+ /**
+ * Get the node that is created by this operation.
+ *
+ * @return the node created.
+ */
+ public FSTreeNode getNode() {
+ return node;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.tcf.te.tcf.filesystem.core.interfaces.IOperation#getName()
+ */
+ @Override
+ public String getName() {
+ return NLS.bind(Messages.OpCreate_TaskName, name);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.tcf.te.tcf.filesystem.core.interfaces.IOperation#getTotalWork()
+ */
+ @Override
+ public int getTotalWork() {
+ return folder.childrenQueried ? 5 : 6;
+ }
+}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/OpCreateFile.java b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/OpCreateFile.java
new file mode 100644
index 000000000..44d9bdc98
--- /dev/null
+++ b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/OpCreateFile.java
@@ -0,0 +1,81 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2014 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.core.internal.operations;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.tcf.protocol.IToken;
+import org.eclipse.tcf.services.IFileSystem;
+import org.eclipse.tcf.services.IFileSystem.DoneClose;
+import org.eclipse.tcf.services.IFileSystem.DoneOpen;
+import org.eclipse.tcf.services.IFileSystem.FileSystemException;
+import org.eclipse.tcf.services.IFileSystem.IFileHandle;
+import org.eclipse.tcf.te.tcf.filesystem.core.internal.exceptions.TCFFileSystemException;
+import org.eclipse.tcf.te.tcf.filesystem.core.model.RuntimeModel;
+import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode;
+import org.eclipse.tcf.te.tcf.filesystem.core.nls.Messages;
+
+/**
+ * The file operation class to create a file in the file system of Target Explorer.
+ */
+public class OpCreateFile extends OpCreate {
+
+ /**
+ * Create an instance to create a file with the name in the folder.
+ *
+ * @param folder The folder in which the file is to be created. Must not be null
.
+ * @param name The new file's name. Must not be null
.
+ */
+ public OpCreateFile(FSTreeNode folder, String name) {
+ super(folder, name);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpCreate#create(org.eclipse.tcf.services.IFileSystem)
+ */
+ @Override
+ protected void create(IFileSystem service) throws TCFFileSystemException {
+ String path = folder.getLocation(true);
+ if (!path.endsWith("/")) path += "/"; //$NON-NLS-1$ //$NON-NLS-2$
+ path += name;
+ final FileSystemException[] errors = new FileSystemException[1];
+ // Open the file.
+ final IFileHandle[] handles = new IFileHandle[1];
+ service.open(path, IFileSystem.TCF_O_WRITE | IFileSystem.TCF_O_CREAT | IFileSystem.TCF_O_TRUNC, null, new DoneOpen() {
+ @Override
+ public void doneOpen(IToken token, FileSystemException error, IFileHandle hdl) {
+ errors[0] = error;
+ handles[0] = hdl;
+ }
+ });
+ if (errors[0] != null) {
+ TCFFileSystemException exception = new TCFFileSystemException(IStatus.ERROR, errors[0].toString());
+ exception.initCause(errors[0]);
+ throw exception;
+ }
+ if (handles[0] == null) {
+ throw new TCFFileSystemException(IStatus.ERROR, Messages.TcfURLConnection_NoFileHandleReturned);
+ }
+ service.close(handles[0], new DoneClose() {
+ @Override
+ public void doneClose(IToken token, FileSystemException error) {
+ }
+ });
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpCreate#newTreeNode()
+ */
+ @Override
+ protected FSTreeNode newTreeNode() {
+ return RuntimeModel.createFileNode(name, folder);
+ }
+}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/OpCreateFolder.java b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/OpCreateFolder.java
new file mode 100644
index 000000000..f2ff3a59b
--- /dev/null
+++ b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/OpCreateFolder.java
@@ -0,0 +1,72 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2014 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.core.internal.operations;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.tcf.protocol.IToken;
+import org.eclipse.tcf.services.IFileSystem;
+import org.eclipse.tcf.services.IFileSystem.DoneMkDir;
+import org.eclipse.tcf.services.IFileSystem.FileSystemException;
+import org.eclipse.tcf.te.tcf.filesystem.core.internal.exceptions.TCFFileSystemException;
+import org.eclipse.tcf.te.tcf.filesystem.core.model.RuntimeModel;
+import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode;
+
+/**
+ * The file operation class to create a folder in the file system of Target Explorer.
+ */
+public class OpCreateFolder extends OpCreate {
+
+ /**
+ * Create an instance to create a folder with the name in the folder.
+ *
+ * @param folder The folder in which the new folder is to be created. Must not be null
.
+ * @param name The name of the new folder. Must not be null
.
+ */
+ public OpCreateFolder(FSTreeNode folder, String name) {
+ super(folder, name);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpCreate#create(org.eclipse.tcf.services.IFileSystem)
+ */
+ @Override
+ protected void create(IFileSystem service) throws TCFFileSystemException {
+ String path = folder.getLocation(true);
+ if (!path.endsWith("/")) path += "/"; //$NON-NLS-1$ //$NON-NLS-2$
+ path += name;
+ final FileSystemException[] errors = new FileSystemException[1];
+ service.mkdir(path, null, new DoneMkDir() {
+ @Override
+ public void doneMkDir(IToken token, FileSystemException error) {
+ if (error != null) {
+ errors[0] = error;
+ }
+ }
+ });
+ if (errors[0] != null) {
+ TCFFileSystemException exception = new TCFFileSystemException(IStatus.ERROR, errors[0].toString());
+ exception.initCause(errors[0]);
+ throw exception;
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpCreate#newTreeNode()
+ */
+ @Override
+ protected FSTreeNode newTreeNode() {
+ FSTreeNode node = RuntimeModel.createFolderNode(name, folder);
+ // Newly created folder does not have any children. Mark it as queried.
+ node.queryDone();
+ return node;
+ }
+}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/OpDelete.java b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/OpDelete.java
new file mode 100644
index 000000000..5dea3e520
--- /dev/null
+++ b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/OpDelete.java
@@ -0,0 +1,232 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 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.core.internal.operations;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicReference;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.ISafeRunnable;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.SafeRunner;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.tcf.protocol.IChannel;
+import org.eclipse.tcf.services.IFileSystem;
+import org.eclipse.tcf.te.tcf.core.Tcf;
+import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.IConfirmCallback;
+import org.eclipse.tcf.te.tcf.filesystem.core.internal.exceptions.TCFException;
+import org.eclipse.tcf.te.tcf.filesystem.core.internal.exceptions.TCFFileSystemException;
+import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode;
+import org.eclipse.tcf.te.tcf.filesystem.core.nls.Messages;
+
+/**
+ * FSDelete deletes the selected FSTreeNode list.
+ */
+public class OpDelete extends Operation {
+ private static final int RETRY_TIMES = 3;
+ //The nodes to be deleted.
+ List
+ * Note: All the method of the returned file system
+ * service must be called outside of the dispatching thread.
+ *
+ * @param channel The channel to get the file system service.
+ * @return The blocking file system service.
+ */
+ public static IFileSystem getBlockingFileSystem(final IChannel channel) {
+ if(Protocol.isDispatchThread()) {
+ IFileSystem service = channel.getRemoteService(IFileSystem.class);
+ return new BlockingFileSystemProxy(service);
+ }
+ final IFileSystem[] service = new IFileSystem[1];
+ Protocol.invokeAndWait(new Runnable(){
+ @Override
+ public void run() {
+ service[0] = getBlockingFileSystem(channel);
+ }});
+ return service[0];
+ }
+
+ /**
+ * Count the total nodes in the node list including their children and grand children
+ * recursively.
+ *
+ * @param service The file system service used to open those folders that are not expanded yet.
+ * @param nodes The node list to be counted.
+ * @return The count of the total nodes.
+ * @throws TCFFileSystemException Thrown when expanding the unexpanded folders.
+ */
+ protected int count(IFileSystem service, List
+ * "testParent" is a property by which the parent or even the grand parent
+ * of a node can be tested. The arguments is a recursive list of the above
+ * test property including "testParent".
+ *
+ * The following is an example of how it is used.
+ *
+ * The above example tests if the parent node is writable.
+ *
+ * The above example tests if the grand parent node is writable.
+ *
+ * And so on, you can test its ancestor recursively:
+ *
+ *
+ *
+ * Note that all method call over the proxy must be made OUTSIDE of
+ * the dispatching thread. If it is called inside of the dispatching thread, the call will be
+ * blocked forever.
+ *
+ * This class is used to replace BlockingProxyCall for better debugability.
+ *
+ * @see BlockingCallProxy
+ */
+public class BlockingFileSystemProxy implements IFileSystem {
+ // The default timeout waiting for blocked invocations.
+ private static final long DEFAULT_TIMEOUT = Operation.DEFAULT_TIMEOUT;
+ // The actual object that provides file system services.
+ IFileSystem service;
+
+ /**
+ * Constructor with an delegating service.
+ *
+ * @param service The delegating service.
+ */
+ public BlockingFileSystemProxy(IFileSystem service) {
+ Assert.isNotNull(service);
+ this.service = service;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tcf.protocol.IService#getName()
+ */
+ @Override
+ public String getName() {
+ return service.getName();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tcf.services.IFileSystem#open(java.lang.String, int, org.eclipse.tcf.services.IFileSystem.FileAttrs, org.eclipse.tcf.services.IFileSystem.DoneOpen)
+ */
+ @Override
+ public IToken open(final String file_name, final int flags, final FileAttrs attrs, final DoneOpen done) {
+ Assert.isTrue(!Protocol.isDispatchThread());
+ final Rendezvous rendezvous = new Rendezvous();
+ final AtomicReference
+ * The preferred location is within the plugin's state location, in example
+ *
+ * If the plug-in is loaded in a RCP workspace-less environment, the fall back strategy is to
+ * use the users home directory.
+ *
+ * @param node The file/folder node.
+ * @return The local path of the node's cached file.
+ */
+ public static IPath getCachePath(FSTreeNode node) {
+ File location = getCacheRoot();
+ String agentId = node.peerNode.getPeerId();
+ // Use Math.abs to avoid negative hash value.
+ String agent = agentId.replace(':', PATH_ESCAPE_CHAR);
+ IPath agentDir = new Path(location.getAbsolutePath()).append(agent);
+ File agentDirFile = agentDir.toFile();
+ mkdirChecked(agentDirFile);
+ return appendNodePath(agentDir, node);
+ }
+
+ /**
+ * Check and make a directory if it does not exist. Record the failure message if making fails.
+ *
+ * @param file The file to be deleted.
+ */
+ static void mkdirChecked(final File dir) {
+ if (!dir.exists()) {
+ SafeRunner.run(new ISafeRunnable() {
+ @Override
+ public void run() throws Exception {
+ if (!dir.mkdir()) {
+ throw new Exception(NLS.bind(Messages.CacheManager_MkdirFailed, dir
+ .getAbsolutePath()));
+ }
+ }
+
+ @Override
+ public void handleException(Throwable exception) {
+ // Ignore on purpose
+ }
+ });
+ }
+ }
+
+ /**
+ * Check if the file exists and delete if it does. Record the failure message if deleting fails.
+ *
+ * @param file The file to be deleted.
+ */
+ static void deleteFileChecked(final File file) {
+ if (file.exists()) {
+ SafeRunner.run(new ISafeRunnable() {
+ @Override
+ public void run() throws Exception {
+ if (!file.delete()) {
+ throw new Exception(NLS.bind(Messages.Operation_DeletingFileFailed, file
+ .getAbsolutePath()));
+ }
+ }
+
+ @Override
+ public void handleException(Throwable exception) {
+ // Ignore on purpose
+ }
+ });
+ }
+ }
+
+ /**
+ * Check if the file exists and set its read-only attribute if it does. Record the failure
+ * message if it fails.
+ *
+ * @param file The file to be set.
+ */
+ static void setReadOnlyChecked(final File file) {
+ if (file.exists()) {
+ SafeRunner.run(new ISafeRunnable() {
+ @Override
+ public void run() throws Exception {
+ if (!file.setReadOnly()) {
+ throw new Exception(NLS.bind(Messages.OpStreamOp_SetReadOnlyFailed, file
+ .getAbsolutePath()));
+ }
+ }
+
+ @Override
+ public void handleException(Throwable exception) {
+ // Ignore on purpose
+ }
+ });
+ }
+ }
+
+ /**
+ * Get the local file of the specified node.
+ *
+ *
+ * The preferred location is within the plugin's state location, in example
+ *
+ * If the plug-in is loaded in a RCP workspace-less environment, the fall back strategy is to
+ * use the users home directory.
+ *
+ * @param node The file/folder node.
+ * @return The file object of the node's local cache.
+ */
+ public static File getCacheFile(FSTreeNode node) {
+ return getCachePath(node).toFile();
+ }
+
+ /**
+ * Get the cache file system's root directory on the local host's file system.
+ *
+ * @return The root folder's location of the cache file system.
+ */
+ public static File getCacheRoot() {
+ File location;
+ try {
+ location = CorePlugin.getDefault().getStateLocation().toFile();
+ }
+ catch (IllegalStateException e) {
+ // An RCP workspace-less environment (-data @none)
+ location = new File(System.getProperty("user.home"), ".tcf"); //$NON-NLS-1$ //$NON-NLS-2$
+ location = new File(location, "fs"); //$NON-NLS-1$
+ }
+
+ // Create the location if it not exist
+ mkdirChecked(location);
+ return location;
+ }
+
+ /**
+ * Append the path with the specified node's context path.
+ *
+ * @param path The path to be appended.
+ * @param node The file/folder node.
+ * @return The path to the node.
+ */
+ private static IPath appendNodePath(IPath path, FSTreeNode node) {
+ if (!node.isRoot() && node.getParent() != null) {
+ path = appendNodePath(path, node.getParent());
+ return appendPathSegment(node, path, node.name);
+ }
+ if (node.isWindowsNode()) {
+ String name = node.name;
+ name = name.substring(0, name.length() - 1);
+ name = name.replace(':', PATH_ESCAPE_CHAR);
+ return appendPathSegment(node, path, name);
+ }
+ return path;
+ }
+
+ /**
+ * Append the path with the segment "name". Create a directory if the node is a directory which
+ * does not yet exist.
+ *
+ * @param node The file/folder node.
+ * @param path The path to appended.
+ * @param name The segment's name.
+ * @return The path with the segment "name" appended.
+ */
+ private static IPath appendPathSegment(FSTreeNode node, IPath path, String name) {
+ IPath newPath = path.append(name);
+ File newFile = newPath.toFile();
+ if (node.isDirectory()) {
+ mkdirChecked(newFile);
+ }
+ return newPath;
+ }
+}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/utils/ContentTypeHelper.java b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/utils/ContentTypeHelper.java
new file mode 100644
index 000000000..24914f38e
--- /dev/null
+++ b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/utils/ContentTypeHelper.java
@@ -0,0 +1,120 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 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:
+ * William Chen (Wind River)- [345387]Open the remote files with a proper editor
+ * 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.core.internal.utils;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+
+import org.eclipse.core.filesystem.EFS;
+import org.eclipse.core.filesystem.IFileStore;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.content.IContentType;
+import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode;
+
+/**
+ * The content type helper used to provide helping methods about the content
+ * types of the files in the remote file system.
+ */
+public class ContentTypeHelper {
+ // The binary content type's id.
+ private static final String CONTENT_TYPE_BINARY_ID = "org.eclipse.cdt.core.binaryFile"; //$NON-NLS-1$
+
+ /**
+ * Judges if the node is a binary file.
+ *
+ * @param node
+ * The file node.
+ * @return true if the node is a binary file or else false.
+ */
+ public static boolean isBinaryFile(FSTreeNode node) {
+ IContentType contentType = getContentType(node);
+ if (contentType != null) {
+ IContentType binaryFile = Platform.getContentTypeManager()
+ .getContentType(CONTENT_TYPE_BINARY_ID);
+ if (binaryFile != null && contentType.isKindOf(binaryFile))
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Get the content type of the specified file node.
+ *
+ * @param node
+ * The file node.
+ * @return The content type of the file node.
+ */
+ public static IContentType getContentType(FSTreeNode node) {
+ if (PersistenceManager.getInstance().isUnresovled(node))
+ // If it is already known unresolvable.
+ return null;
+ IContentType contentType = PersistenceManager.getInstance().getResolved(node);
+ if (contentType != null)
+ // If it is already known to have a certain content type.
+ return contentType;
+ // First check the content type by its name.
+ contentType = Platform.getContentTypeManager().findContentTypeFor(
+ node.name);
+ if (contentType == null) { // Then find the content type by its stream.
+ try {
+ contentType = findContentTypeByStream(node);
+ } catch (Exception e) {
+ }
+ }
+ if (contentType != null) { // If it is resolved, cache it.
+ PersistenceManager.getInstance().addResovled(node, contentType);
+ } else { // Or else, remember it as an unresolvable.
+ PersistenceManager.getInstance().addUnresolved(node);
+ }
+ return contentType;
+ }
+
+ /**
+ * Find the content type of the file using its content stream.
+ *
+ * @param node
+ * The file node.
+ * @return The content type of the file.
+ * @throws CoreException
+ * If the path of its local cache file couldn't be found.
+ * @throws IOException
+ * If something goes wrong during the content type parsing.
+ */
+ private static IContentType findContentTypeByStream(FSTreeNode node) throws CoreException, IOException {
+ InputStream is = null;
+ try {
+ File file = CacheManager.getCacheFile(node);
+ if (file.exists()) {
+ // If the local cache file exits.
+ IPath path = CacheManager.getCachePath(node);
+ IFileStore fileStore = EFS.getLocalFileSystem().getStore(path);
+ is = fileStore.openInputStream(EFS.NONE, null);
+ } else {
+ // Use its URL stream.
+ URL url = node.getLocationURL();
+ is = url.openStream();
+ }
+ return Platform.getContentTypeManager().findContentTypeFor(is, node.name);
+ } finally {
+ if (is != null) {
+ try {
+ is.close();
+ } catch (IOException e) {
+ }
+ }
+ }
+ }
+}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/utils/FileState.java b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/utils/FileState.java
new file mode 100644
index 000000000..dbd7a342f
--- /dev/null
+++ b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/utils/FileState.java
@@ -0,0 +1,257 @@
+/*******************************************************************************
+ * 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.core.internal.utils;
+
+import java.beans.PropertyChangeEvent;
+import java.io.File;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+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.internal.operations.JobExecutor;
+import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.OpCacheFileDigest;
+import org.eclipse.tcf.te.tcf.filesystem.core.model.CacheState;
+import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode;
+
+/**
+ * The state object to describe a file's state.
+ */
+public class FileState {
+ /**
+ * The base digest of the file data.
+ */
+ private byte[] base_digest = null;
+
+ /**
+ * The message digest of the file data.
+ */
+ private byte[] target_digest = null;
+
+ /**
+ * The message digest of the local cache data
+ */
+ private byte[] cache_digest = null;
+
+ /**
+ * The cache file's modification time.
+ */
+ private long cache_mtime;
+
+ /**
+ * If the job that computes the local cache's digest is running.
+ */
+ transient boolean cache_digest_running = false;
+
+ /**
+ * If the job that computes the target file's digest is running.
+ */
+ transient boolean target_digest_running = false;
+
+ /**
+ * The file system node whose state is described.
+ */
+ private transient FSTreeNode node;
+
+ /**
+ * Create a file state using the node.
+ *
+ * @param node The file system node.
+ */
+ public FileState(FSTreeNode node) {
+ this.node = node;
+ }
+
+ /**
+ * Create a file state using the specified state data.
+ *
+ * @param mtime The cache file's modification time.
+ * @param cache_digest The cache file's digest.
+ * @param target_digest The target file's digest.
+ * @param base_digest The baseline digest.
+ */
+ public FileState(long mtime, byte[] cache_digest, byte[] target_digest, byte[]base_digest) {
+ this.cache_mtime = mtime;
+ this.cache_digest = cache_digest;
+ this.target_digest = target_digest;
+ this.base_digest = base_digest;
+ }
+
+ /**
+ * Set the file system node.
+ *
+ * @param node The file system node.
+ */
+ void setNode(FSTreeNode node) {
+ this.node = node;
+ }
+
+ /**
+ * Get the node's target file digest.
+ *
+ * @return The target file digest.
+ */
+ public byte[] getTargetDigest() {
+ return target_digest;
+ }
+
+ /**
+ * Get the node's baseline digest.
+ *
+ * @return The baseline digest.
+ */
+ public byte[] getBaseDigest() {
+ return base_digest;
+ }
+
+ /**
+ * Get the node's cache file modification time.
+ *
+ * @return The cache file's modification time.
+ */
+ public long getCacheMTime() {
+ return cache_mtime;
+ }
+
+ /**
+ * Get the node's cache file digest.
+ *
+ * @return The cache file digest.
+ */
+ public byte[] getCacheDigest() {
+ return cache_digest;
+ }
+
+ /**
+ * Update the cache state of this file and invoke callback once the update is done.
+ * If the callback is null, then do not invoke any callback.
+ *
+ * @param callback Callback invoked after updating.
+ */
+ public synchronized void updateState(final ICallback callback) {
+ File file = CacheManager.getCacheFile(node);
+ if (file.exists()) {
+ long cache_mtime = file.lastModified();
+ if (!cache_digest_running && (cache_digest == null || this.cache_mtime != cache_mtime)) {
+ cache_digest_running = true;
+ this.cache_mtime = cache_mtime;
+ final OpCacheFileDigest op = new OpCacheFileDigest(node);
+ new JobExecutor(new Callback() {
+ @Override
+ protected void internalDone(Object caller, IStatus status) {
+ if (status.isOK()) {
+ updateCacheDigest(op.getDigest());
+ }
+ cache_digest_running = false;
+ if (status.isOK()) {
+ updateState(callback);
+ }
+ else if(callback != null){
+ callback.done(this, status);
+ }
+ }
+ }).execute(op);
+ }
+ else if (!target_digest_running && target_digest == null) {
+ target_digest_running = true;
+ node.refresh(new Callback(){
+ @Override
+ protected void internalDone(Object caller, IStatus status) {
+ target_digest_running = false;
+ if (status.isOK()) {
+ updateState(callback);
+ }
+ else if(callback != null){
+ callback.done(this, status);
+ }
+ }
+ });
+ }
+ else if (callback != null) callback.done(this, Status.OK_STATUS);
+ }
+ else if (callback != null) callback.done(this, Status.OK_STATUS);
+ }
+
+ /**
+ * Get this node's cache state using the current state data.
+ *
+ * @return The state expressed in a CacheState enum value.
+ */
+ public synchronized CacheState getCacheState() {
+ File file = CacheManager.getCacheFile(node);
+ if (!file.exists()) return CacheState.consistent;
+ updateState(null);
+ if (cache_digest == null || target_digest == null) return CacheState.consistent;
+ if(isUnchanged(target_digest, cache_digest)) {
+ base_digest = target_digest;
+ return CacheState.consistent;
+ }
+ if(isUnchanged(base_digest, cache_digest)){
+ return CacheState.outdated;
+ }
+ if (isUnchanged(target_digest, base_digest)) {
+ return CacheState.modified;
+ }
+ return CacheState.conflict;
+ }
+
+ /**
+ * Update the node's target digest and fire an event.
+ *
+ * @param target_digest The new target digest data.
+ */
+ public void updateTargetDigest(byte[] target_digest) {
+ this.target_digest = target_digest;
+ PropertyChangeEvent event = new PropertyChangeEvent(this, "target_digest", null, target_digest); //$NON-NLS-1$
+ node.firePropertyChange(event);
+ }
+
+ /**
+ * Compare the two digests to see if they are equal to each other.
+ *
+ * @param digest1 The first digest.
+ * @param digest2 The second digest.
+ * @return true if they are equal.
+ */
+ private boolean isUnchanged(byte[] digest1, byte[] digest2){
+ if(digest1 != null && digest2 != null && digest1.length == digest2.length) {
+ for (int i = 0; i < digest1.length; i++) {
+ if(digest1[i] != digest2[i]) return false;
+ }
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Update the cache file digest data and fire an event.
+ *
+ * @param cache_digest The new cache file digest data.
+ */
+ public void updateCacheDigest(byte[] cache_digest) {
+ byte[] old_digest = cache_digest;
+ this.cache_digest = cache_digest;
+ PropertyChangeEvent event = new PropertyChangeEvent(node, "cache_digest", old_digest, cache_digest); //$NON-NLS-1$
+ node.firePropertyChange(event);
+ }
+
+ /**
+ * Reset all of the node's digest data to a new digest data.
+ *
+ * @param digest The new digest data.
+ */
+ public void reset(byte[] digest) {
+ cache_digest = digest;
+ target_digest = digest;
+ base_digest = digest;
+ PropertyChangeEvent event = new PropertyChangeEvent(node, "reset_digest", null, digest); //$NON-NLS-1$
+ node.firePropertyChange(event);
+ }
+}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/utils/PersistenceManager.java b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/utils/PersistenceManager.java
new file mode 100644
index 000000000..e28abd4a3
--- /dev/null
+++ b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/utils/PersistenceManager.java
@@ -0,0 +1,203 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 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:
+ * 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.core.internal.utils;
+
+import java.io.File;
+import java.net.URI;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.runtime.ISafeRunnable;
+import org.eclipse.core.runtime.QualifiedName;
+import org.eclipse.core.runtime.SafeRunner;
+import org.eclipse.core.runtime.content.IContentType;
+import org.eclipse.tcf.te.runtime.persistence.interfaces.IURIPersistenceService;
+import org.eclipse.tcf.te.runtime.services.ServiceManager;
+import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode;
+
+/**
+ * A facility class to load and save persistent data such including resolved content types, file's
+ * properties, and time stamps etc.
+ */
+public class PersistenceManager {
+ // The singleton instance.
+ private static volatile PersistenceManager instance;
+
+ // The time stamp for each file.
+ Map
+ * Note: Node construction and child list access is limited to the TCF
+ * event dispatch thread.
+ */
+public final class FSTreeNode extends AbstractTreeNode implements Cloneable, IFilterable {
+ // The constant to access the Windows Attributes.
+ private static final String KEY_WIN32_ATTRS = "Win32Attrs"; //$NON-NLS-1$
+
+ /**
+ * The tree node file system attributes
+ */
+ public IFileSystem.FileAttrs attr = null;
+
+ /**
+ * Create a folder node using the specified parent node, the directory entry
+ * and the flag to indicate if it is a root node.
+ *
+ * @param parentNode The parent node.
+ * @param entry The directory entry.
+ * @param entryIsRootNode If this folder is root folder.
+ */
+ public FSTreeNode(FSTreeNode parentNode, DirEntry entry, boolean entryIsRootNode) {
+ Assert.isNotNull(entry);
+ IFileSystem.FileAttrs attrs = entry.attrs;
+
+ this.attr = attrs;
+ this.name = entry.filename;
+ if (attrs == null || attrs.isDirectory()) {
+ this.type = entryIsRootNode ? "FSRootDirNode" : "FSDirNode"; //$NON-NLS-1$ //$NON-NLS-2$
+ } else if (attrs.isFile()) {
+ this.type = "FSFileNode"; //$NON-NLS-1$
+ }
+ this.parent = parentNode;
+ this.peerNode = parentNode.peerNode;
+ Assert.isTrue(Protocol.isDispatchThread());
+ }
+
+ /**
+ * Constructor.
+ */
+ public FSTreeNode() {
+ Assert.isTrue(Protocol.isDispatchThread());
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see java.lang.Object#clone()
+ */
+ @Override
+ public Object clone() {
+ if (Protocol.isDispatchThread()) {
+ FSTreeNode clone = new FSTreeNode();
+ clone.childrenQueried = childrenQueried;
+ clone.childrenQueryRunning = childrenQueryRunning;
+ clone.name = name;
+ clone.parent = parent;
+ clone.peerNode = peerNode;
+ clone.type = type;
+ if (attr != null) {
+ Map
+ * If not yet initialized, a new runtime model will be initialized before returning.
+ *
+ * @param peerNode The peer model instance. Must not be
+ * Must be called within the TCF dispatch thread.
+ *
+ * @param peerNode The peer model instance. Must not be May 24, 2012 The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at http://www.eclipse.org/legal/epl-v10.html.
+For purposes of the EPL, "Program" will mean the Content. If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at http://www.eclipse.org.
+ * <test
+ * args="isWritable"
+ * property="org.eclipse.tcf.te.tcf.filesystem.propertytester.treenode.testParent">
+ * </test>
+ *
+ *
+ * <test
+ * args="testParent,isWritable"
+ * property="org.eclipse.tcf.te.tcf.filesystem.propertytester.treenode.testParent">
+ * </test>
+ *
+ *
+ * <test
+ * args="testParent,testParent,testParent,...,isWritable"
+ * property="org.eclipse.tcf.te.tcf.filesystem.propertytester.treenode.testParent">
+ * </test>
+ *
+ */
+public class FSTreeNodePropertyTester extends PropertyTester {
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.expressions.IPropertyTester#test(java.lang.Object, java.lang.String, java.lang.Object[], java.lang.Object)
+ */
+ @Override
+ public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
+ if(receiver == null)
+ return false;
+ Assert.isTrue(receiver instanceof FSTreeNode);
+ FSTreeNode node = (FSTreeNode) receiver;
+ if (property.equals("isFile")) { //$NON-NLS-1$
+ return node.isFile();
+ } else if (property.equals("isDirectory")) { //$NON-NLS-1$
+ return node.isDirectory();
+ } else if (property.equals("isBinaryFile")) { //$NON-NLS-1$
+ return ContentTypeHelper.isBinaryFile(node);
+ } else if (property.equals("isReadable")){ //$NON-NLS-1$
+ return node.isReadable();
+ } else if (property.equals("isWritable")){ //$NON-NLS-1$
+ return node.isWritable();
+ } else if (property.equals("isExecutable")){ //$NON-NLS-1$
+ return node.isExecutable();
+ } else if (property.equals("isRoot")) { //$NON-NLS-1$
+ return node.isRoot();
+ } else if (property.equals("isSystemRoot")) { //$NON-NLS-1$
+ return node.isSystemRoot();
+ } else if (property.equals("isWindows")) { //$NON-NLS-1$
+ return node.isWindowsNode();
+ } else if (property.equals("isReadOnly")) { //$NON-NLS-1$
+ return node.isReadOnly();
+ } else if (property.equals("isHidden")) { //$NON-NLS-1$
+ return node.isHidden();
+ } else if (property.equals("testParent")) { //$NON-NLS-1$
+ return testParent(node, args, expectedValue);
+ } else if (property.equals("getCacheState")){ //$NON-NLS-1$
+ File file = CacheManager.getCacheFile(node);
+ if(!file.exists())
+ return false;
+ CacheState state = node.getCacheState();
+ return state.name().equals(expectedValue);
+ }
+ return false;
+ }
+
+ private boolean testParent(FSTreeNode node, Object[] args, Object expectedValue) {
+ if(args == null || args.length == 0)
+ return false;
+ String arg = (String) args[0];
+ Object[] newArgs = new Object[args.length -1];
+ System.arraycopy(args, 1, newArgs, 0, args.length - 1);
+ return test(node.getParent(), arg, newArgs, expectedValue);
+ }
+}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/testers/TargetPropertyTester.java b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/testers/TargetPropertyTester.java
new file mode 100644
index 000000000..3b6ca32b0
--- /dev/null
+++ b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/testers/TargetPropertyTester.java
@@ -0,0 +1,68 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2014 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.core.internal.testers;
+
+import org.eclipse.core.expressions.PropertyTester;
+import org.eclipse.tcf.protocol.Protocol;
+import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerNode;
+
+/**
+ * The property tester to test if the target OS is a Windows OS.
+ */
+public class TargetPropertyTester extends PropertyTester {
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.core.expressions.IPropertyTester#test(java.lang.Object, java.lang.String, java.lang.Object[], java.lang.Object)
+ */
+ @Override
+ public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
+ if(receiver instanceof IPeerNode) {
+ final IPeerNode peerNode = (IPeerNode) receiver;
+ if(property.equals("isWindows")) { //$NON-NLS-1$
+ return isWindows(peerNode);
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Test if the target represented by the peer model is a windows target.
+ *
+ * @param peerNode The peer model of the target.
+ * @return true if it is a windows target.
+ */
+ public static boolean isWindows(final IPeerNode peerNode) {
+ final String osName = getOSName(peerNode);
+ return osName == null ? false : (osName.startsWith("Windows")); //$NON-NLS-1$
+ }
+
+ /**
+ * Get the OS name from the peer model.
+ *
+ * @param peerNode The peer model.
+ * @return OS name.
+ */
+ public static String getOSName(final IPeerNode peerNode) {
+ final String[] osName = new String[1];
+ if (Protocol.isDispatchThread()) {
+ osName[0] = peerNode.getPeer().getOSName();
+ }
+ else {
+ Protocol.invokeAndWait(new Runnable() {
+ @Override
+ public void run() {
+ osName[0] = peerNode.getPeer().getOSName();
+ }
+ });
+ }
+ return osName[0];
+ }
+}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/url/TcfInputStream.java b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/url/TcfInputStream.java
new file mode 100644
index 000000000..613bf6f64
--- /dev/null
+++ b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/url/TcfInputStream.java
@@ -0,0 +1,148 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 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:
+ * William Chen (Wind River)- [345387]Open the remote files with a proper editor
+ *******************************************************************************/
+package org.eclipse.tcf.te.tcf.filesystem.core.internal.url;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.eclipse.tcf.protocol.IToken;
+import org.eclipse.tcf.services.IFileSystem.DoneRead;
+import org.eclipse.tcf.services.IFileSystem.FileSystemException;
+import org.eclipse.tcf.te.tcf.filesystem.core.nls.Messages;
+
+/**
+ * The TCF input stream returned by {@link TcfURLConnection#getInputStream()}.
+ */
+public class TcfInputStream extends InputStream {
+ // Default chunk size while pumping the data.
+ private static final int DEFAULT_CHUNK_SIZE = 5 * 1024;
+
+ // Current reading position
+ long position;
+ // The byte array used to buffer data.
+ byte[] buffer;
+ // The offset being read in the buffer.
+ int offset;
+
+ // If the reading has reached the end of the file.
+ boolean EOF;
+ // If the stream has been closed.
+ boolean closed;
+ // The current error during reading.
+ Exception ERROR;
+
+ // The chunk size of the reading buffer.
+ int chunk_size = 0;
+
+ // The URL Connection
+ TcfURLConnection connection;
+
+ /**
+ * Create a TCF input stream connected the specified peer with specified
+ * path to the remote resource.
+ *
+ * @param peer
+ * The TCF agent peer.
+ * @param path
+ * The path to the remote resource.
+ */
+ public TcfInputStream(TcfURLConnection connection) {
+ this(connection, DEFAULT_CHUNK_SIZE);
+ }
+
+ /**
+ * Create a TCF input stream connected the specified peer with specified
+ * path to the remote resource using the specified buffer size.
+ *
+ * @param peer
+ * The TCF agent peer.
+ * @param path
+ * The path to the remote resource.
+ * @param chunk_size
+ * The buffer size.
+ */
+ public TcfInputStream(TcfURLConnection connection, int chunk_size) {
+ this.connection = connection;
+ this.chunk_size = chunk_size;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.io.InputStream#read()
+ */
+ @Override
+ public int read() throws IOException {
+ if (closed)
+ throw new IOException(Messages.TcfInputStream_StreamClosed);
+ if (ERROR != null) {
+ IOException exception = new IOException(ERROR.toString());
+ exception.initCause(ERROR);
+ throw exception;
+ }
+ if (buffer == null) {
+ if (EOF) {
+ return -1;
+ }
+ readBlock();
+ return read();
+ }
+ if (EOF) {
+ if (offset == buffer.length) {
+ return -1;
+ }
+ // Note that convert the byte to an integer correctly
+ return 0xff & buffer[offset++];
+ }
+ if (offset == buffer.length) {
+ readBlock();
+ return read();
+ }
+ // Note that convert the byte to an integer correctly
+ return 0xff & buffer[offset++];
+ }
+
+ /**
+ * Read a block of data into the buffer. Reset the offset, increase the
+ * current position and remember the EOF status. If there's an error,
+ * remember it for read() to check.
+ */
+ private void readBlock() {
+ connection.service.read(connection.handle, position, chunk_size, new DoneRead() {
+ @Override
+ public void doneRead(IToken token, FileSystemException error, byte[] data, boolean eof) {
+ if (error != null) {
+ ERROR = error;
+ }
+ if (data == null) {
+ ERROR = new IOException(Messages.TcfInputStream_NoDataAvailable);
+ }
+ EOF = eof;
+ buffer = data;
+ if (buffer != null)
+ position += buffer.length;
+ offset = 0;
+ }
+ });
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.io.InputStream#close()
+ */
+ @Override
+ public void close() throws IOException {
+ if (!closed) {
+ connection.closeStream(this);
+ closed = true;
+ }
+ }
+}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/url/TcfOutputStream.java b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/url/TcfOutputStream.java
new file mode 100644
index 000000000..6f1c7e202
--- /dev/null
+++ b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/url/TcfOutputStream.java
@@ -0,0 +1,119 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2014 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) - [345552] Edit the remote files with a proper editor
+ *******************************************************************************/
+package org.eclipse.tcf.te.tcf.filesystem.core.internal.url;
+
+import java.io.IOException;
+import java.io.OutputStream;
+
+import org.eclipse.tcf.protocol.IToken;
+import org.eclipse.tcf.services.IFileSystem.DoneWrite;
+import org.eclipse.tcf.services.IFileSystem.FileSystemException;
+import org.eclipse.tcf.te.tcf.filesystem.core.nls.Messages;
+
+/**
+ * The TCF output stream returned by {@link TcfURLConnection#getOutputStream()}.
+ */
+public class TcfOutputStream extends OutputStream {
+ // Default chunk size while pumping the data.
+ private static final int DEFAULT_CHUNK_SIZE = 5 * 1024;
+
+ // Current writing position
+ long position;
+ // The byte array used to buffer data.
+ byte[] buffer;
+ // The offset being written in the buffer.
+ int offset;
+
+ // If the stream has been closed.
+ boolean closed;
+ // The current error during writing.
+ Exception ERROR;
+
+ // The URL Connection
+ TcfURLConnection connection;
+ /**
+ * Create a TCF output stream connected the specified peer with specified
+ * path to the remote resource.
+ *
+ * @param peer
+ * The TCF agent peer.
+ * @param path
+ * The path to the remote resource.
+ */
+ public TcfOutputStream(TcfURLConnection connection) {
+ this(connection, DEFAULT_CHUNK_SIZE);
+ }
+
+ /**
+ * Create a TCF output stream connected the specified peer with specified
+ * path to the remote resource using the specified buffer size.
+ *
+ * @param peer
+ * The TCF agent peer.
+ * @param path
+ * The path to the remote resource.
+ * @param chunk_size
+ * The buffer size.
+ */
+ public TcfOutputStream(TcfURLConnection connection, int chunk_size) {
+ this.connection = connection;
+ buffer = new byte[chunk_size];
+ offset = 0;
+ }
+
+ /* (non-Javadoc)
+ * @see java.io.OutputStream#write(int)
+ */
+ @Override
+ public void write(int b) throws IOException {
+ if (closed)
+ throw new IOException(Messages.TcfOutputStream_StreamClosed);
+ if (ERROR != null) {
+ IOException exception = new IOException(ERROR.toString());
+ exception.initCause(ERROR);
+ throw exception;
+ }
+ if (offset < buffer.length) {
+ buffer[offset++] = (byte) b;
+ }
+ if (offset == buffer.length)
+ flush();
+ }
+
+ /* (non-Javadoc)
+ * @see java.io.OutputStream#flush()
+ */
+ @Override
+ public void flush() throws IOException {
+ if (offset > 0) {
+ connection.service.write(connection.handle, position, buffer, 0, offset, new DoneWrite() {
+ @Override
+ public void doneWrite(IToken token, FileSystemException error) {
+ if (error != null) {
+ ERROR = error;
+ }
+ position += offset;
+ offset = 0;
+ }
+ });
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see java.io.OutputStream#close()
+ */
+ @Override
+ public void close() throws IOException {
+ if (!closed) {
+ connection.closeStream(this);
+ closed = true;
+ }
+ }
+}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/url/TcfURLConnection.java b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/url/TcfURLConnection.java
new file mode 100644
index 000000000..3d1e53126
--- /dev/null
+++ b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/url/TcfURLConnection.java
@@ -0,0 +1,306 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2014 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)- [345387]Open the remote files with a proper editor
+ *******************************************************************************/
+package org.eclipse.tcf.te.tcf.filesystem.core.internal.url;
+
+import java.io.Closeable;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.concurrent.atomic.AtomicReference;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.tcf.protocol.IChannel;
+import org.eclipse.tcf.protocol.IPeer;
+import org.eclipse.tcf.protocol.IToken;
+import org.eclipse.tcf.protocol.Protocol;
+import org.eclipse.tcf.services.IFileSystem;
+import org.eclipse.tcf.services.IFileSystem.DoneClose;
+import org.eclipse.tcf.services.IFileSystem.DoneOpen;
+import org.eclipse.tcf.services.IFileSystem.FileSystemException;
+import org.eclipse.tcf.services.IFileSystem.IFileHandle;
+import org.eclipse.tcf.te.tcf.core.Tcf;
+import org.eclipse.tcf.te.tcf.filesystem.core.internal.exceptions.TCFChannelException;
+import org.eclipse.tcf.te.tcf.filesystem.core.internal.operations.Operation;
+import org.eclipse.tcf.te.tcf.filesystem.core.nls.Messages;
+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;
+
+/**
+ * The URL connection returned by TCF stream service used to handle "tcf"
+ * stream protocol.
+ */
+public class TcfURLConnection extends URLConnection {
+ // Default connecting timeout.
+ private static final int DEFAULT_CONNECT_TIMEOUT = 5000;
+ // Default file opening timeout.
+ private static final int DEFAULT_OPEN_TIMEOUT = 5000;
+ // Default file reading timeout.
+ private static final int DEFAULT_READ_TIMEOUT = 5000;
+ // Default file closing timeout.
+ private static final int DEFAULT_CLOSE_TIMEOUT = 5000;
+ // The schema name of the stream protocol.
+ public static final String PROTOCOL_SCHEMA = "tcf"; //$NON-NLS-1$
+
+ // The input stream of this connection.
+ private TcfInputStream inputStream;
+ // The output stream of this connection.
+ private TcfOutputStream outputStream;
+
+ // The TCF agent peer of the connection.
+ private IPeer peer;
+ // The path to the resource on the remote file system.
+ String path;
+ // The timeout for opening a file.
+ private int openTimeout;
+ // The timeout for closing a file.
+ private int closeTimeout;
+
+ // The TCF channel used to open and read the resource.
+ IChannel channel;
+ // The file's handle
+ IFileHandle handle;
+ // The file service
+ IFileSystem service;
+
+ /**
+ * Create a TCF URL Connection using the specified url. The format of this
+ * URL should be: tcf:/
+ * TCF_URL = tcf:/PEER_ID/(URL_PATH)?
+ * PEER_ID = (.^/)+
+ * URL_PATH = WIN_PATH | RELATIVE_PATH
+ * WIN_PATH = DISK_SEG / (RELATIVE_PATH)?
+ * DISK_SEG = [a-zA-Z]:
+ * RELATIVE_PATH = PATH_SEG | PATH_SEG/RELATIVE_PATH
+ * Unix/Linux PATH_SEG = (.^[/])+
+ * Windows PATH_SEG = (.^[\/:*?"<>|])+
+ *
+ */
+ @Override
+ protected void parseURL(URL u, String spec, int start, int limit) {
+ if (u.getPath() != null) {
+ String path = u.getPath();
+ if (!path.endsWith("/")) { //$NON-NLS-1$
+ path += "/"; //$NON-NLS-1$
+ }
+ path += spec;
+ setURL(u, u.getProtocol(), u.getHost(), u.getPort(), u.getAuthority(), u.getUserInfo(), path, u.getQuery(), u.getRef());
+ }
+ else {
+ IllegalArgumentException errorFormat = new IllegalArgumentException(Messages.TcfURLStreamHandlerService_ErrorURLFormat);
+ int end = spec.indexOf("/", start); //$NON-NLS-1$
+ if (end == -1) throw errorFormat;
+ start = end + 1;
+ end = spec.indexOf("/", start); //$NON-NLS-1$
+ if (end == -1) throw errorFormat;
+ String peerId = spec.substring(start, end);
+ if (peerId.trim().length() == 0) throw errorFormat;
+ start = end + 1;
+ String path = spec.substring(start);
+ if (path.length() > 0) {
+ if (path.matches(WINPATH_PATTERN)) {
+ String pathext = path.substring(2); // Cut the path after ':'.
+ if (pathext.length() == 0) throw new IllegalArgumentException(Messages.TcfURLStreamHandlerService_OnlyDiskPartError);
+ pathext = pathext.substring(1); // Cut the path after the disk part.
+ checkWinPath(pathext);
+ }
+ else {
+ path = "/" + path; //$NON-NLS-1$
+ }
+ }
+ else {
+ path = "/"; //$NON-NLS-1$
+ }
+ final String path2decode = path;
+ final AtomicReference<state location>agent_
.
+ * <state location>agent_
.
+ * True
if the persistence manager needs disposal, false
otherwise.
+ */
+ public final static boolean needsDisposal() {
+ return instance != null;
+ }
+}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/utils/PersistenceManagerDelegate.java b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/utils/PersistenceManagerDelegate.java
new file mode 100644
index 000000000..28fd5baa1
--- /dev/null
+++ b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/utils/PersistenceManagerDelegate.java
@@ -0,0 +1,289 @@
+/*******************************************************************************
+ * 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.core.internal.utils;
+
+import java.io.IOException;
+import java.net.URI;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.concurrent.atomic.AtomicReference;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.ISafeRunnable;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.QualifiedName;
+import org.eclipse.core.runtime.SafeRunner;
+import org.eclipse.core.runtime.content.IContentType;
+import org.eclipse.tcf.te.runtime.persistence.delegates.GsonMapPersistenceDelegate;
+
+/**
+ * The persistence delegate to persist or restore a map whose keys are URIs.
+ */
+public class PersistenceManagerDelegate extends GsonMapPersistenceDelegate {
+
+ private static final String MAP_KEY_MTIME = "mtime"; //$NON-NLS-1$
+ private static final String MAP_KEY_TARGET = "target"; //$NON-NLS-1$
+ private static final String MAP_KEY_CACHE = "cache"; //$NON-NLS-1$
+ private static final String MAP_KEY_BASE = "base"; //$NON-NLS-1$
+ private static final String MAP_KEY_UNRESOLVED = "unresolved"; //$NON-NLS-1$
+ private static final String MAP_KEY_RESOLVED = "resolved"; //$NON-NLS-1$
+ private static final String MAP_KEY_PROPERTIES = "properties"; //$NON-NLS-1$
+ private static final String MAP_KEY_DIGESTS = "digests"; //$NON-NLS-1$
+
+ /*
+ * (non-Javadoc)
+ * @see
+ * org.eclipse.tcf.te.runtime.persistence.interfaces.IPersistenceDelegate#getPersistedClass(
+ * java.lang.Object)
+ */
+ @Override
+ public Class> getPersistedClass(Object context) {
+ return PersistenceManager.class;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see
+ * org.eclipse.tcf.te.runtime.persistence.AbstractGsonMapPersistenceDelegate#toMap(java.lang
+ * .Object)
+ */
+ @Override
+ protected Mapnull
.
+ */
+ public void refresh() {
+ refresh(null);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.core.runtime.PlatformObject#getAdapter(java.lang.Class)
+ */
+ @SuppressWarnings("rawtypes")
+ @Override
+ public Object getAdapter(Class adapter) {
+ if(IViewerInput.class.equals(adapter)) {
+ return peerNode.getAdapter(IViewerInput.class);
+ }
+ if(IPropertyChangeProvider.class.equals(adapter)) {
+ return peerNode.getAdapter(adapter);
+ }
+ return super.getAdapter(adapter);
+ }
+
+ /**
+ * Recursively refresh the children of the given process context with a callback, which is
+ * called when whole process is finished.
+ *
+ * @param callback The callback object, or null
when callback is not needed.
+ */
+ public void refresh(final ICallback callback) {
+ Mapnull
.
+ * @return The runtime model.
+ */
+ public static IRuntimeModel getRuntimeModel(final IPeerNode peerNode) {
+ Assert.isNotNull(peerNode);
+
+ // The result reference holder
+ final AtomicReferencenull
.
+ * @return The runtime model.
+ */
+ protected static IRuntimeModel initializeRuntimeModel(IPeerNode peerNode) {
+ Assert.isTrue(Protocol.isDispatchThread());
+ IRuntimeModel runtimeModel = new RuntimeModel(peerNode);
+ return runtimeModel;
+ }
+
+ /**
+ * Dispose the runtime model.
+ *
+ * @param peerNode The peer model instance. Must not be null
.
+ */
+ public static void disposeRuntimeModel(final IPeerNode peerNode) {
+ Assert.isNotNull(peerNode);
+
+ Runnable runnable = new Runnable() {
+ @Override
+ public void run() {
+ Assert.isTrue(Protocol.isDispatchThread());
+
+ // Get the peer id
+ String id = peerNode.getPeerId();
+ // Lookup the runtime model instance
+ IRuntimeModel candidate = runtimeModels.remove(id);
+ // Dispose it
+ if (candidate != null) candidate.dispose();
+ }
+ };
+
+ if (Protocol.isDispatchThread()) runnable.run();
+ else Protocol.invokeAndWait(runnable);
+ }
+}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/model/RuntimeModel.java b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/model/RuntimeModel.java
new file mode 100644
index 000000000..359d8c413
--- /dev/null
+++ b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/model/RuntimeModel.java
@@ -0,0 +1,228 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2014 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.core.model;
+
+import java.util.concurrent.atomic.AtomicReference;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.tcf.protocol.Protocol;
+import org.eclipse.tcf.te.core.interfaces.IConnectable;
+import org.eclipse.tcf.te.runtime.model.ContainerModelNode;
+import org.eclipse.tcf.te.runtime.model.factory.Factory;
+import org.eclipse.tcf.te.runtime.model.interfaces.factory.IFactory;
+import org.eclipse.tcf.te.tcf.core.model.interfaces.services.IModelService;
+import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.runtime.IRuntimeModel;
+import org.eclipse.tcf.te.tcf.filesystem.core.nls.Messages;
+import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerNode;
+
+/**
+ * The file system model implementation.
+ */
+public final class RuntimeModel extends ContainerModelNode implements IRuntimeModel {
+ // Flag to mark the model disposed
+ private boolean disposed;
+
+ // Reference to the model node factory
+ private IFactory factory = null;
+
+ // The root node of the peer model
+ private FSTreeNode root;
+ private IPeerNode peerNode;
+
+ /**
+ * Create a File System ModelManager.
+ */
+ public RuntimeModel(IPeerNode peerNode) {
+ disposed = false;
+ this.peerNode = peerNode;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tcf.te.runtime.nodes.PropertiesContainer#checkThreadAccess()
+ */
+ @Override
+ protected boolean checkThreadAccess() {
+ return Protocol.isDispatchThread();
+ }
+
+ /* (non-Javadoc)
+ * @see com.windriver.te.tcf.core.model.interfaces.IModel#dispose()
+ */
+ @Override
+ public void dispose() {
+ Assert.isTrue(checkThreadAccess(), "Illegal Thread Access"); //$NON-NLS-1$
+ disposed = true;
+ }
+
+ /* (non-Javadoc)
+ * @see com.windriver.te.tcf.core.model.interfaces.IModel#isDisposed()
+ */
+ @Override
+ public boolean isDisposed() {
+ Assert.isTrue(checkThreadAccess(), "Illegal Thread Access"); //$NON-NLS-1$
+ return disposed;
+ }
+
+
+ /* (non-Javadoc)
+ * @see com.windriver.te.tcf.core.model.interfaces.IModel#getService(java.lang.Class)
+ */
+ @Override
+ @SuppressWarnings("unchecked")
+ public null
.
+ * @param channel The channel or null
.
+ * @param item The file transfer item, must not be null
.
+ *
+ * @return The target path file attributes or null
.
+ */
+ public static FileAttrs getRemoteFileAttrs(IPeer peer, IChannel channel, IFileTransferItem item) {
+
+ final AtomicReferencenull
.
+ * @param channel The channel or null
.
+ * @param item The file transfer item, must not be null
.
+ * @param monitor The progress monitor or null
.
+ * @param callback The callback or null
.
+ */
+ public static void transfer(IPeer peer, IChannel channel, IFileTransferItem item, IProgressMonitor monitor, ICallback callback) {
+
+ boolean ownChannel = false;
+ IFileSystem fileSystem;
+ try {
+ if (channel == null) {
+ ownChannel = true;
+ channel = Operation.openChannel(peer);
+ }
+ fileSystem = Operation.getBlockingFileSystem(channel);
+
+ Assert.isNotNull(fileSystem);
+
+ // Check the direction of the transfer
+ if (item.getDirection() == IFileTransferItem.TARGET_TO_HOST) {
+ transferToHost(peer, fileSystem, item, monitor, callback);
+ }
+ else {
+ transferToTarget(peer, fileSystem, item, monitor, callback);
+ }
+ if (ownChannel) {
+ closeChannel(peer, channel);
+ }
+ }
+ catch (Exception e) {
+ if (callback != null) {
+ callback.done(peer, StatusHelper.getStatus(e));
+ }
+ }
+ }
+
+ /**
+ * Transfer a file between host and target depending on the {@link IFileTransferItem} data.
+ *
+ * @param peer The peer, must not be null
.
+ * @param item The file transfer item, must not be null
.
+ * @param monitor The progress monitor or null
.
+ * @param callback The callback or null
.
+ */
+ protected static void transfer(IPeer peer, IFileTransferItem item, IProgressMonitor monitor, ICallback callback) {
+
+ // Check if we can skip the transfer
+ if (!item.isEnabled()) {
+ if (callback != null) {
+ callback.done(peer, Status.OK_STATUS);
+ }
+ return;
+ }
+
+ try {
+ IChannel channel = Operation.openChannel(peer);
+ transfer(peer, channel, item, monitor, callback);
+ closeChannel(peer, channel);
+ }
+ catch (Exception e) {
+ if (callback != null) {
+ callback.done(peer, StatusHelper.getStatus(e));
+ }
+ }
+ }
+
+ protected static void transferToHost(IPeer peer, IFileSystem fileSystem, IFileTransferItem item, IProgressMonitor monitor, ICallback callback) {
+
+ IStatus result = Status.OK_STATUS;
+
+ IPath hostPath = item.getHostPath();
+ IPath targetPath = item.getTargetPath();
+
+ BufferedOutputStream outStream = null;
+ TCFFileInputStream inStream = null;
+
+ final IFileSystem.IFileHandle[] handle = new IFileSystem.IFileHandle[1];
+ final FileSystemException[] error = new FileSystemException[1];
+ final IFileSystem.FileAttrs[] attrs = new IFileSystem.FileAttrs[1];
+
+ // Create necessary parent directory structure on host side
+ boolean rc = hostPath.removeLastSegments(1).toFile().exists();
+ if(!rc){
+ rc = hostPath.removeLastSegments(1).toFile().mkdirs();
+ if (!rc) {
+ IOException e = new IOException(NLS.bind(Messages.FileTransferService_error_mkdirFailed, hostPath.removeLastSegments(1).toOSString()));
+ result = StatusHelper.getStatus(e);
+ if (callback != null) callback.done(peer, result);
+ return;
+ }
+ }
+ // If the host file is a directory, append the remote file name
+ if (hostPath.toFile().isDirectory()) {
+ hostPath = item.getHostPath().append(targetPath.lastSegment());
+ }
+
+ // Remember the modification time of the remote file.
+ // We need this value to set the modification time of the host file
+ // _after_ the stream closed.
+ long mtime = -1;
+
+ try {
+ // Open the remote file
+ fileSystem.open(targetPath.toString(), IFileSystem.TCF_O_READ, null, new IFileSystem.DoneOpen() {
+ @Override
+ public void doneOpen(IToken token, FileSystemException e, IFileHandle h) {
+ error[0] = e;
+ handle[0] = h;
+ }
+ });
+ if (error[0] != null) {
+ throw error[0];
+ }
+ // Get the remote file attributes
+ fileSystem.fstat(handle[0], new IFileSystem.DoneStat() {
+ @Override
+ public void doneStat(IToken token, FileSystemException e, FileAttrs a) {
+ error[0] = e;
+ attrs[0] = a;
+ }
+ });
+ if (error[0] != null) {
+ throw error[0];
+ }
+ // Remember the modification time
+ mtime = attrs[0].mtime;
+
+ // Open a output stream to the host file
+ outStream = new BufferedOutputStream(new FileOutputStream(hostPath.toFile()));
+ // And open the input stream to the target file handle
+ inStream = new TCFFileInputStream(handle[0]);
+
+ ProgressHelper.setSubTaskName(monitor, "Transfer '" + targetPath.toString() + "' to '" + hostPath.toOSString() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+
+ long bytesTotal = attrs[0].size;
+ copy(inStream, outStream, bytesTotal, monitor);
+ }
+ catch (OperationCanceledException e) {
+ result = Status.CANCEL_STATUS;
+ }
+ catch (Exception e) {
+ result = StatusHelper.getStatus(e);
+ }
+ finally {
+ // Close all streams and cleanup
+ if (outStream != null) {
+ try {
+ outStream.close();
+ outStream = null;
+ }
+ catch (IOException e) {
+ }
+ }
+ if (inStream != null) {
+ try {
+ inStream.close();
+ inStream = null;
+ }
+ catch (IOException e) {
+ }
+ }
+
+ if (result.isOK()) {
+ if (mtime >= 0) {
+ rc = hostPath.toFile().setLastModified(mtime);
+ if (!rc && Platform.inDebugMode()) {
+ System.err.println("Failed to set mtime for " + hostPath.toOSString()); //$NON-NLS-1$
+ }
+ }
+ }
+ else if (result.getSeverity() == IStatus.ERROR || result.getSeverity() == IStatus.CANCEL) {
+ try {
+ rc = hostPath.toFile().delete();
+ if (!rc && Platform.inDebugMode()) {
+ System.err.println("Failed to delete host file " + hostPath.toOSString()); //$NON-NLS-1$
+ }
+ }
+ catch (Throwable e) {
+ }
+ }
+ }
+ if (callback != null) callback.done(peer, result);
+ }
+
+ protected static void transferToTarget(IPeer peer, IFileSystem fileSystem, IFileTransferItem item, IProgressMonitor monitor, ICallback callback) {
+
+ IStatus result = Status.OK_STATUS;
+
+ IPath targetPath = item.getTargetPath();
+ IPath hostPath = item.getHostPath();
+
+ BufferedInputStream inStream = null;
+ TCFFileOutputStream outStream = null;
+
+ final IFileSystem.IFileHandle[] handle = new IFileSystem.IFileHandle[1];
+ final FileSystemException[] error = new FileSystemException[1];
+ final FileAttrs[] attrs = new FileAttrs[1];
+
+ // Check the target destination directory
+ for (int i = 0; i < targetPath.segmentCount(); i++) {
+ IPath tp = i + 1 < targetPath.segmentCount() ? targetPath.removeLastSegments(targetPath.segmentCount() - (i + 1)) : targetPath;
+
+ error[0] = null;
+ attrs[0] = null;
+
+ fileSystem.stat(tp.toString(), new IFileSystem.DoneStat() {
+ @Override
+ public void doneStat(IToken token, FileSystemException e, FileAttrs a) {
+ error[0] = e;
+ attrs[0] = a;
+ }
+ });
+
+ if (attrs[0] == null && i + 1 < targetPath.segmentCount()) {
+ error[0] = null;
+ attrs[0] = null;
+
+ fileSystem.mkdir(tp.toString(), null, new IFileSystem.DoneMkDir() {
+ @Override
+ public void doneMkDir(IToken token, FileSystemException e) {
+ error[0] = e;
+ }
+ });
+
+ if (error[0] != null) {
+ result = StatusHelper.getStatus(error[0]);
+ if (callback != null) callback.done(peer, result);
+ return;
+ }
+
+ // Read the attributes of the created directory
+ error[0] = null;
+ attrs[0] = null;
+
+ fileSystem.stat(tp.toString(), new IFileSystem.DoneStat() {
+ @Override
+ public void doneStat(IToken token, FileSystemException e, FileAttrs a) {
+ error[0] = e;
+ attrs[0] = a;
+ }
+ });
+ }
+ }
+
+ // If we get the attributes back, the name at least exist in the target file system
+ if (attrs[0] != null && attrs[0].isDirectory()) {
+ targetPath = targetPath.append(item.getHostPath().lastSegment());
+ }
+
+ try {
+ // Open the remote file
+ fileSystem.open(targetPath.toString(), IFileSystem.TCF_O_CREAT | IFileSystem.TCF_O_WRITE | IFileSystem.TCF_O_TRUNC, null, new IFileSystem.DoneOpen() {
+ @Override
+ public void doneOpen(IToken token, FileSystemException e, IFileHandle h) {
+ error[0] = e;
+ handle[0] = h;
+ }
+ });
+ if (error[0] != null) {
+ throw error[0];
+ }
+
+ // Open a input stream from the host file
+ inStream = new BufferedInputStream(new FileInputStream(hostPath.toFile()));
+ // Open the output stream for the target file handle
+ outStream = new TCFFileOutputStream(handle[0]);
+
+ ProgressHelper.setSubTaskName(monitor, "Transfer '" + hostPath.toOSString() + "' to '" + targetPath.toString() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+
+ copy(inStream, outStream, hostPath.toFile().length(), monitor);
+
+ // Get the remote file attributes
+ fileSystem.fstat(handle[0], new IFileSystem.DoneStat() {
+ @Override
+ public void doneStat(IToken token, FileSystemException e, FileAttrs a) {
+ error[0] = e;
+ attrs[0] = a;
+ }
+ });
+ // Update the remote file attributes
+ IFileSystem.FileAttrs newAttrs = new FileAttrs(attrs[0].flags, attrs[0].size, attrs[0].uid, attrs[0].gid, attrs[0].permissions,
+ attrs[0].atime, hostPath.toFile().lastModified(), attrs[0].attributes);
+ // Set the remote file attributes
+ fileSystem.fsetstat(handle[0], newAttrs, new IFileSystem.DoneSetStat() {
+ @Override
+ public void doneSetStat(IToken token, FileSystemException e) {
+ error[0] = e;
+ }
+ });
+ }
+ catch (OperationCanceledException e) {
+ result = Status.CANCEL_STATUS;
+ }
+ catch (Exception e) {
+ result = StatusHelper.getStatus(e);
+ }
+ finally {
+ // Close all streams and cleanup
+ if (outStream != null) {
+ try {
+ outStream.close();
+ outStream = null;
+ }
+ catch (IOException e) {
+ }
+ }
+ if (inStream != null) {
+ try {
+ inStream.close();
+ inStream = null;
+ }
+ catch (IOException e) {
+ }
+ }
+
+ if (result.getSeverity() == IStatus.ERROR || result.getSeverity() == IStatus.CANCEL) {
+ fileSystem.remove(targetPath.toString(), new IFileSystem.DoneRemove() {
+ @Override
+ public void doneRemove(IToken token, FileSystemException error) {
+ }
+ });
+ }
+ }
+ if (callback != null) callback.done(peer, result);
+ }
+
+ private static void copy(InputStream in, OutputStream out, long bytesTotal, IProgressMonitor monitor) throws IOException {
+ long bytesDone = 0;
+ long speed;
+ long startTimeStamp = System.currentTimeMillis();
+ byte[] dataBuffer = new byte[12 * 1024];
+
+ // Copy from the input stream to the output stream (always binary).
+ while (true) {
+ if (ProgressHelper.isCanceled(monitor)) {
+ throw new OperationCanceledException();
+ }
+ // Read the data from the remote file
+ int bytesRead = in.read(dataBuffer);
+ // If reached EOF, we are done and break the loop
+ if (bytesRead < 0) {
+ break;
+ }
+ if (ProgressHelper.isCanceled(monitor)) {
+ throw new OperationCanceledException();
+ }
+ // Write back to the host file
+ out.write(dataBuffer, 0, bytesRead);
+
+ bytesDone += bytesRead;
+ long timestamp = System.currentTimeMillis();
+ speed = ((bytesDone) * 1000) / Math.max(timestamp - startTimeStamp, 1);
+
+ ProgressHelper.worked(monitor, (int)((bytesRead/(bytesTotal > 0 ? bytesTotal : 1000)) * 1000));
+ ProgressHelper.setSubTaskName(monitor, getProgressMessage(bytesDone, bytesTotal, speed));
+ }
+ }
+
+ /**
+ * Close the channel for file transfer.
+ * @param peer
+ * @param channel
+ * @throws TCFChannelException
+ */
+ protected static void closeChannel(final IPeer peer, final IChannel channel) throws TCFChannelException {
+ if (channel != null) {
+ Tcf.getChannelManager().closeChannel(channel);
+ }
+ }
+
+ private static String getProgressMessage(long bytesDone, long bytesTotal, long bytesSpeed) {
+ String done = "B"; //$NON-NLS-1$
+ String total = "B"; //$NON-NLS-1$
+ String speed = "B/s"; //$NON-NLS-1$
+
+ if (bytesDone > 1024) {
+ bytesDone /= 1024;
+ done = "KB"; //$NON-NLS-1$
+ }
+ if (bytesDone > 1024) {
+ bytesDone /= 1024;
+ done = "MB"; //$NON-NLS-1$
+ }
+ if (bytesDone > 1024) {
+ bytesDone /= 1024;
+ done = "GB"; //$NON-NLS-1$
+ }
+
+ if (bytesTotal > 1024) {
+ bytesTotal /= 1024;
+ total = "KB"; //$NON-NLS-1$
+ }
+ if (bytesTotal > 1024) {
+ bytesTotal /= 1024;
+ total = "MB"; //$NON-NLS-1$
+ }
+ if (bytesTotal > 1024) {
+ bytesTotal /= 1024;
+ total = "GB"; //$NON-NLS-1$
+ }
+
+ if (bytesSpeed > 1024) {
+ bytesSpeed /= 1024;
+ speed = "KB/s"; //$NON-NLS-1$
+ }
+ if (bytesSpeed > 1024) {
+ bytesSpeed /= 1024;
+ speed = "MB/s"; //$NON-NLS-1$
+ }
+ if (bytesSpeed > 1024) {
+ bytesSpeed /= 1024;
+ speed = "GB/s"; //$NON-NLS-1$
+ }
+
+ return bytesDone + done + " of " + (bytesTotal > 0 ? Long.toString(bytesTotal) : "N/A") + total + " at " + bytesSpeed + speed; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ }
+
+}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/steps/DisposeModelStep.java b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/steps/DisposeModelStep.java
new file mode 100644
index 000000000..2f03dde9a
--- /dev/null
+++ b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/steps/DisposeModelStep.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2014 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.core.steps;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.tcf.te.runtime.interfaces.callback.ICallback;
+import org.eclipse.tcf.te.runtime.interfaces.properties.IPropertiesContainer;
+import org.eclipse.tcf.te.runtime.stepper.interfaces.IFullQualifiedId;
+import org.eclipse.tcf.te.runtime.stepper.interfaces.IStepContext;
+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.steps.AbstractPeerNodeStep;
+
+/**
+ * Dispose the filesytsem runtime model associated with the peer node.
+ */
+public class DisposeModelStep extends AbstractPeerNodeStep {
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tcf.te.runtime.stepper.interfaces.IStep#execute(org.eclipse.tcf.te.runtime.stepper.interfaces.IStepContext, org.eclipse.tcf.te.runtime.interfaces.properties.IPropertiesContainer, org.eclipse.tcf.te.runtime.stepper.interfaces.IFullQualifiedId, org.eclipse.core.runtime.IProgressMonitor, org.eclipse.tcf.te.runtime.interfaces.callback.ICallback)
+ */
+ @Override
+ public void execute(IStepContext context, IPropertiesContainer data, IFullQualifiedId fullQualifiedId, IProgressMonitor monitor, ICallback callback) {
+ IPeerNode peerNode = getActivePeerModelContext(context, data, fullQualifiedId);
+ if (peerNode != null) ModelManager.disposeRuntimeModel(peerNode);
+ callback.done(this, Status.OK_STATUS);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tcf.te.runtime.stepper.interfaces.IStep#validateExecute(org.eclipse.tcf.te.runtime.stepper.interfaces.IStepContext, org.eclipse.tcf.te.runtime.interfaces.properties.IPropertiesContainer, org.eclipse.tcf.te.runtime.stepper.interfaces.IFullQualifiedId, org.eclipse.core.runtime.IProgressMonitor)
+ */
+ @Override
+ public void validateExecute(IStepContext context, IPropertiesContainer data, IFullQualifiedId fullQualifiedId, IProgressMonitor monitor) throws CoreException {
+ }
+
+}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/steps/FileTransferStep.java b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/steps/FileTransferStep.java
new file mode 100644
index 000000000..f38b862d6
--- /dev/null
+++ b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/steps/FileTransferStep.java
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ * Copyright (c) 2012, 2013 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.core.steps;
+
+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.tcf.protocol.IChannel;
+import org.eclipse.tcf.te.runtime.interfaces.callback.ICallback;
+import org.eclipse.tcf.te.runtime.interfaces.properties.IPropertiesContainer;
+import org.eclipse.tcf.te.runtime.services.interfaces.filetransfer.IFileTransferItem;
+import org.eclipse.tcf.te.runtime.stepper.StepperAttributeUtil;
+import org.eclipse.tcf.te.runtime.stepper.interfaces.IFullQualifiedId;
+import org.eclipse.tcf.te.runtime.stepper.interfaces.IStepContext;
+import org.eclipse.tcf.te.tcf.core.interfaces.steps.ITcfStepAttributes;
+import org.eclipse.tcf.te.tcf.core.steps.AbstractPeerStep;
+import org.eclipse.tcf.te.tcf.filesystem.core.activator.CorePlugin;
+import org.eclipse.tcf.te.tcf.filesystem.core.interfaces.steps.IFileSystemStepAttributes;
+import org.eclipse.tcf.te.tcf.filesystem.core.services.FileTransferService;
+
+/**
+ * Launch process step implementation.
+ */
+public class FileTransferStep extends AbstractPeerStep {
+
+ /**
+ * Constructor.
+ */
+ public FileTransferStep() {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tcf.te.runtime.stepper.interfaces.IExtendedStep#validateExecute(org.eclipse.tcf.te.runtime.stepper.interfaces.IStepContext, org.eclipse.tcf.te.runtime.interfaces.properties.IPropertiesContainer, org.eclipse.tcf.te.runtime.stepper.interfaces.IFullQualifiedId, org.eclipse.core.runtime.IProgressMonitor)
+ */
+ @Override
+ public void validateExecute(IStepContext context, IPropertiesContainer data, IFullQualifiedId fullQualifiedId, IProgressMonitor monitor) throws CoreException {
+ IChannel channel = (IChannel)StepperAttributeUtil.getProperty(ITcfStepAttributes.ATTR_CHANNEL, fullQualifiedId, data);
+ if (channel == null || channel.getState() != IChannel.STATE_OPEN) {
+ throw new CoreException(new Status(IStatus.ERROR, CorePlugin.getUniqueIdentifier(), "missing or closed channel")); //$NON-NLS-1$
+ }
+
+ Object item = StepperAttributeUtil.getProperty(IFileSystemStepAttributes.ATTR_FILE_TRANSFER_ITEM, fullQualifiedId, data);
+ if (!(item instanceof IFileTransferItem)) {
+ throw new CoreException(new Status(IStatus.ERROR, CorePlugin.getUniqueIdentifier(), "missing file transfer item")); //$NON-NLS-1$
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tcf.te.runtime.stepper.interfaces.IStep#execute(org.eclipse.tcf.te.runtime.stepper.interfaces.IStepContext, org.eclipse.tcf.te.runtime.interfaces.properties.IPropertiesContainer, org.eclipse.tcf.te.runtime.stepper.interfaces.IFullQualifiedId, org.eclipse.core.runtime.IProgressMonitor, org.eclipse.tcf.te.runtime.interfaces.callback.ICallback)
+ */
+ @Override
+ public void execute(IStepContext context, IPropertiesContainer data, IFullQualifiedId fullQualifiedId, IProgressMonitor monitor, final ICallback callback) {
+ final IChannel channel = (IChannel)StepperAttributeUtil.getProperty(ITcfStepAttributes.ATTR_CHANNEL, fullQualifiedId, data);
+ final IFileTransferItem item = (IFileTransferItem)StepperAttributeUtil.getProperty(IFileSystemStepAttributes.ATTR_FILE_TRANSFER_ITEM, fullQualifiedId, data);
+
+ if (item.isEnabled()) {
+ FileTransferService.transfer(getActivePeerContext(context, data, fullQualifiedId), channel, item, monitor, callback);
+ }
+ else {
+ callback.done(this, Status.OK_STATUS);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tcf.te.runtime.stepper.extensions.AbstractStep#getTotalWork(org.eclipse.tcf.te.runtime.stepper.interfaces.IStepContext, org.eclipse.tcf.te.runtime.interfaces.properties.IPropertiesContainer)
+ */
+ @Override
+ public int getTotalWork(IStepContext context, IPropertiesContainer data) {
+ return 1000;
+ }
+}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/steps/InitializeModelStep.java b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/steps/InitializeModelStep.java
new file mode 100644
index 000000000..fa5ea991d
--- /dev/null
+++ b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/steps/InitializeModelStep.java
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2014 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.core.steps;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.tcf.protocol.IChannel;
+import org.eclipse.tcf.protocol.Protocol;
+import org.eclipse.tcf.te.runtime.interfaces.callback.ICallback;
+import org.eclipse.tcf.te.runtime.interfaces.properties.IPropertiesContainer;
+import org.eclipse.tcf.te.runtime.stepper.interfaces.IFullQualifiedId;
+import org.eclipse.tcf.te.runtime.stepper.interfaces.IStepContext;
+import org.eclipse.tcf.te.runtime.utils.StatusHelper;
+import org.eclipse.tcf.te.tcf.core.model.interfaces.services.IModelChannelService;
+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.steps.AbstractPeerNodeStep;
+
+/**
+ * Initialize the filesystem runtime model associated with the peer node.
+ */
+public class InitializeModelStep extends AbstractPeerNodeStep {
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tcf.te.runtime.stepper.interfaces.IStep#execute(org.eclipse.tcf.te.runtime.stepper.interfaces.IStepContext, org.eclipse.tcf.te.runtime.interfaces.properties.IPropertiesContainer, org.eclipse.tcf.te.runtime.stepper.interfaces.IFullQualifiedId, org.eclipse.core.runtime.IProgressMonitor, org.eclipse.tcf.te.runtime.interfaces.callback.ICallback)
+ */
+ @Override
+ public void execute(IStepContext context, IPropertiesContainer data, IFullQualifiedId fullQualifiedId, IProgressMonitor monitor, final ICallback callback) {
+ IPeerNode peerNode = getActivePeerModelContext(context, data, fullQualifiedId);
+ if (peerNode != null) {
+ IRuntimeModel model = ModelManager.getRuntimeModel(peerNode);
+ final IModelChannelService service = model != null ? model.getService(IModelChannelService.class) : null;
+ if (service != null) {
+ Runnable runnable = new Runnable() {
+ @Override
+ public void run() {
+ service.openChannel(new IModelChannelService.DoneOpenChannel() {
+ @Override
+ public void doneOpenChannel(Throwable error, IChannel channel) {
+ callback.done(InitializeModelStep.this, StatusHelper.getStatus(error));
+ }
+ });
+ }
+ };
+
+ Protocol.invokeLater(runnable);
+ } else {
+ callback.done(InitializeModelStep.this, Status.OK_STATUS);
+ }
+ } else {
+ callback.done(InitializeModelStep.this, Status.OK_STATUS);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tcf.te.runtime.stepper.interfaces.IStep#validateExecute(org.eclipse.tcf.te.runtime.stepper.interfaces.IStepContext, org.eclipse.tcf.te.runtime.interfaces.properties.IPropertiesContainer, org.eclipse.tcf.te.runtime.stepper.interfaces.IFullQualifiedId, org.eclipse.core.runtime.IProgressMonitor)
+ */
+ @Override
+ public void validateExecute(IStepContext context, IPropertiesContainer data, IFullQualifiedId fullQualifiedId, IProgressMonitor monitor) throws CoreException {
+ }
+
+}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/.classpath b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/.classpath
new file mode 100644
index 000000000..ad32c83a7
--- /dev/null
+++ b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/.classpath
@@ -0,0 +1,7 @@
+
+About This Content
+
+License
+
+Image
object instance.
+ *
+ * @param key The key the image is registered with.
+ * @return The Image
object instance or null
.
+ */
+ public static Image getImage(String key) {
+ return getDefault().getImageRegistry().get(key);
+ }
+
+ /**
+ * Loads the image registered under the specified key from the image
+ * registry and returns the ImageDescriptor
object instance.
+ *
+ * @param key The key the image is registered with.
+ * @return The ImageDescriptor
object instance or null
.
+ */
+ public static ImageDescriptor getImageDescriptor(String key) {
+ return getDefault().getImageRegistry().getDescriptor(key);
+ }
+
+ /**
+ * Loads the image given by the specified image descriptor from the image
+ * registry. If the image has been loaded ones before already, the cached
+ * Image
object instance is returned. Otherwise, the
+ * Image
object instance will be created and cached before returned.
+ *
+ * @param descriptor The image descriptor.
+ * @return The corresponding Image
object instance or null
.
+ */
+ public static Image getSharedImage(AbstractImageDescriptor descriptor) {
+ ImageRegistry registry = getDefault().getImageRegistry();
+
+ String imageKey = descriptor.getDecriptorKey();
+ Image image = registry.get(imageKey);
+ if (image == null) {
+ registry.put(imageKey, descriptor);
+ image = registry.get(imageKey);
+ }
+
+ return image;
+ }
+
+ /**
+ * If the option of "autosaving" is set to on.
+ *
+ * @return true if it is auto saving or else false.
+ */
+ public static boolean isAutoSaving() {
+ IPreferenceStore preferenceStore = getDefault().getPreferenceStore();
+ boolean autoSaving = preferenceStore.getBoolean(PREF_AUTOSAVING);
+ return autoSaving;
+ }
+
+ /**
+ * If the option of "expanded_persisted" is set to on.
+ *
+ * @return true if the expanded state should be persisted or else false.
+ */
+ public static boolean isExpandedPersisted() {
+ IPreferenceStore preferenceStore = getDefault().getPreferenceStore();
+ boolean persisted = preferenceStore.getBoolean(PREF_EXPANDED_PERSISTED);
+ return persisted;
+ }
+
+ /**
+ * If the option of "in-place editor" is set to on.
+ *
+ * @return true if it uses in-place editor when renaming files/folders.
+ */
+ public static boolean isInPlaceEditor() {
+ IPreferenceStore preferenceStore = getDefault().getPreferenceStore();
+ boolean inPlaceEditor = preferenceStore.getBoolean(PREF_RENAMING_IN_PLACE_EDITOR);
+ return inPlaceEditor;
+ }
+
+ /**
+ * If the option of "copy permissions" is set to on.
+ *
+ * @return true if it should copy source file permissions.
+ */
+ public static boolean isCopyPermission() {
+ IPreferenceStore preferenceStore = getDefault().getPreferenceStore();
+ boolean copyPermission = preferenceStore.getBoolean(PREF_COPY_PERMISSION);
+ return copyPermission;
+ }
+
+ /**
+ * If the option of "copy ownership" is set to on.
+ *
+ * @return true if it should copy source file ownership.
+ */
+ public static boolean isCopyOwnership() {
+ IPreferenceStore preferenceStore = getDefault().getPreferenceStore();
+ boolean copyOwnership = preferenceStore.getBoolean(PREF_COPY_OWNERSHIP);
+ return copyOwnership;
+ }
+}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/controls/FSNavigatorContentProvider.java b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/controls/FSNavigatorContentProvider.java
new file mode 100644
index 000000000..00e34dac5
--- /dev/null
+++ b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/controls/FSNavigatorContentProvider.java
@@ -0,0 +1,74 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2014 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.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.ui.activator.UIPlugin;
+
+
+/**
+ * File system content provider for the common navigator of Target Explorer.
+ */
+public class FSNavigatorContentProvider extends NavigatorContentProvider {
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.tcf.te.ui.trees.TreeContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
+ */
+ @Override
+ public void inputChanged(final Viewer viewer, Object oldInput, Object newInput) {
+ super.inputChanged(viewer, oldInput, newInput);
+ UIPlugin.getClipboard().addPropertyChangeListener(commonViewerListener);
+ UIPlugin plugin = UIPlugin.getDefault();
+ IPreferenceStore preferenceStore = plugin.getPreferenceStore();
+ preferenceStore.addPropertyChangeListener(commonViewerListener);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.tcf.te.ui.trees.TreeContentProvider#dispose()
+ */
+ @Override
+ public void dispose() {
+ UIPlugin.getClipboard().removePropertyChangeListener(commonViewerListener);
+ UIPlugin plugin = UIPlugin.getDefault();
+ IPreferenceStore preferenceStore = plugin.getPreferenceStore();
+ preferenceStore.removePropertyChangeListener(commonViewerListener);
+ super.dispose();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
+ */
+ @Override
+ public Object[] getChildren(Object parentElement) {
+ if (parentElement instanceof FSTreeNode) {
+ FSTreeNode node = (FSTreeNode)parentElement;
+ if (node.isFile()) return NO_ELEMENTS;
+ }
+ return super.getChildren(parentElement);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
+ */
+ @Override
+ public boolean hasChildren(final Object element) {
+ if (element instanceof FSTreeNode) {
+ FSTreeNode node = (FSTreeNode)element;
+ if(node.isFile()) {
+ return false;
+ }
+ }
+ return super.hasChildren(element);
+ }
+}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/controls/FSTreeContentProvider.java b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/controls/FSTreeContentProvider.java
new file mode 100644
index 000000000..bf4e5abac
--- /dev/null
+++ b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/controls/FSTreeContentProvider.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 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.controls;
+
+/**
+ * File system tree content provider implementation.
+ */
+public class FSTreeContentProvider extends FSNavigatorContentProvider {
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.tcf.te.tcf.filesystem.controls.FSNavigatorContentProvider#isRootNodeVisible()
+ */
+ @Override
+ protected boolean isRootNodeVisible() {
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/controls/FSTreeViewerSorter.java b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/controls/FSTreeViewerSorter.java
new file mode 100644
index 000000000..2d53be057
--- /dev/null
+++ b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/controls/FSTreeViewerSorter.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2013 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.controls;
+
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode;
+import org.eclipse.tcf.te.tcf.filesystem.ui.internal.columns.FSTreeElementComparator;
+import org.eclipse.tcf.te.ui.trees.TreeViewerSorterCaseInsensitive;
+
+/**
+ * File system tree control viewer sorter implementation.
+ */
+public class FSTreeViewerSorter extends TreeViewerSorterCaseInsensitive {
+ private final FSTreeElementComparator comparator;
+
+ /**
+ * Constructor.
+ */
+ public FSTreeViewerSorter() {
+ comparator = new FSTreeElementComparator();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ViewerComparator#compare(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
+ */
+ @Override
+ public int compare(Viewer viewer, Object e1, Object e2) {
+ if (e1 instanceof FSTreeNode && e2 instanceof FSTreeNode) {
+ return comparator.compare(e1, e2);
+ }
+ return super.compare(viewer, e1, e2);
+ }
+}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/controls/NavigatorContentProvider.java b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/controls/NavigatorContentProvider.java
new file mode 100644
index 000000000..04416adba
--- /dev/null
+++ b/target_explorer/plugins/org.eclipse.tcf.te.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/controls/NavigatorContentProvider.java
@@ -0,0 +1,162 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2014 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.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.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;
+
+
+/**
+ * The base navigator content provider for File System and Process Monitor
+ */
+public abstract class NavigatorContentProvider extends TreeContentProvider implements ITreeViewerListener {
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
+ */
+ @Override
+ public Object getParent(Object element) {
+ if (element instanceof AbstractTreeNode) {
+ AbstractTreeNode node = (AbstractTreeNode) element;
+ AbstractTreeNode parent = node.getParent();
+ if (parent != null) {
+ if (parent.isSystemRoot()) {
+ if (isRootNodeVisible()) return parent;
+ return null;
+ }
+ return parent;
+ }
+ if (isRootNodeVisible()) return node.peerNode;
+ }
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ITreeViewerListener#treeCollapsed(org.eclipse.jface.viewers.TreeExpansionEvent)
+ */
+ @Override
+ public void treeCollapsed(TreeExpansionEvent event) {
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ITreeViewerListener#treeExpanded(org.eclipse.jface.viewers.TreeExpansionEvent)
+ */
+ @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();
+ }
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.tcf.te.ui.trees.TreeContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
+ */
+ @Override
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ super.inputChanged(viewer, oldInput, newInput);
+ this.viewer.addTreeListener(this);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.tcf.te.ui.trees.TreeContentProvider#dispose()
+ */
+ @Override
+ public void dispose() {
+ this.viewer.removeTreeListener(this);
+ super.dispose();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
+ */
+ @Override
+ public Object[] getChildren(Object parentElement) {
+ super.getChildren(parentElement);
+
+ if (parentElement instanceof IPeerNode) {
+ final IPeerNode peerNode = (IPeerNode)parentElement;
+ IRuntimeModel model = ModelManager.getRuntimeModel(peerNode);
+ if (isRootNodeVisible()) {
+ AbstractTreeNode root = model.getRoot();
+ if(!root.childrenQueried && !root.childrenQueryRunning) {
+ root.queryChildren();
+ }
+ return new Object[] { root };
+ }
+ return getChildren(model.getRoot());
+ } else if (parentElement instanceof AbstractTreeNode) {
+ AbstractTreeNode node = (AbstractTreeNode)parentElement;
+ List