diff options
author | William Chen | 2012-06-14 09:42:52 +0000 |
---|---|---|
committer | William Chen | 2012-06-14 09:42:52 +0000 |
commit | a804c0d58533b437a6e5489550cfea42c7e63f95 (patch) | |
tree | 57cd00cf6bb7b2f131b16297f19053286c3b4511 | |
parent | fab509bb4215807c94dcfac542a68c1b51bad4eb (diff) | |
download | org.eclipse.tcf-a804c0d58533b437a6e5489550cfea42c7e63f95.tar.gz org.eclipse.tcf-a804c0d58533b437a6e5489550cfea42c7e63f95.tar.xz org.eclipse.tcf-a804c0d58533b437a6e5489550cfea42c7e63f95.zip |
Target Explorer: Changes Find feature based on feedback(TBC).
21 files changed, 250 insertions, 278 deletions
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/callbacks/QueryDoneOpen.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/callbacks/QueryDoneOpen.java index be859e69e..d24c85997 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/callbacks/QueryDoneOpen.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/callbacks/QueryDoneOpen.java @@ -65,11 +65,18 @@ public class QueryDoneOpen extends CallbackBase implements DoneOpen { if (handle != null) {
service.close(handle, new DoneClose() {
@Override
- public void doneClose(IToken token, FileSystemException error) {}
+ public void doneClose(IToken token, FileSystemException error) {
+ IStatus status;
+ if (error == null) status = Status.OK_STATUS;
+ else status = new Status(IStatus.ERROR, CorePlugin.getUniqueIdentifier(), getErrorMessage(error), error);
+ callback.done(this, status);
+ }
});
}
- IStatus status = new Status(IStatus.ERROR, CorePlugin.getUniqueIdentifier(), getErrorMessage(error), error);
- callback.done(this, status);
+ else {
+ IStatus status = new Status(IStatus.ERROR, CorePlugin.getUniqueIdentifier(), getErrorMessage(error), error);
+ callback.done(this, status);
+ }
}
}
}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/callbacks/QueryDoneOpenChannel.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/callbacks/QueryDoneOpenChannel.java index 5907c741d..755366737 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/callbacks/QueryDoneOpenChannel.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/callbacks/QueryDoneOpenChannel.java @@ -11,6 +11,7 @@ package org.eclipse.tcf.te.tcf.filesystem.core.internal.callbacks; import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.OperationCanceledException;
import org.eclipse.core.runtime.Status;
import org.eclipse.tcf.protocol.IChannel;
import org.eclipse.tcf.protocol.Protocol;
@@ -31,6 +32,7 @@ public class QueryDoneOpenChannel extends CallbackBase implements DoneOpenChanne FSTreeNode parentNode;
// Callback object.
ICallback callback;
+ boolean first;
/**
* Create an instance with a parent node.
@@ -71,24 +73,20 @@ public class QueryDoneOpenChannel extends CallbackBase implements DoneOpenChanne }
};
if(error == null) {
- if(channel != null) {
- IFileSystem service = channel.getRemoteService(IFileSystem.class);
- if(service != null) {
- if(parentNode.isSystemRoot()) {
- service.roots(new QueryDoneRoots(proxy, parentNode));
- } else {
- String absPath = parentNode.getLocation();
- service.opendir(absPath, new QueryDoneOpen(proxy, channel, service, parentNode));
- }
+ IFileSystem service = channel.getRemoteService(IFileSystem.class);
+ if(service != null) {
+ if(parentNode.isSystemRoot()) {
+ service.roots(new QueryDoneRoots(proxy, parentNode));
} else {
- Status status = new Status(IStatus.ERROR, CorePlugin.getUniqueIdentifier(), Messages.Operation_NoFileSystemError, null);
- proxy.done(this, status);
+ String absPath = parentNode.getLocation();
+ service.opendir(absPath, new QueryDoneOpen(proxy, channel, service, parentNode));
}
+ } else {
+ Status status = new Status(IStatus.ERROR, CorePlugin.getUniqueIdentifier(), Messages.Operation_NoFileSystemError, null);
+ proxy.done(this, status);
}
- else {
- proxy.done(this, Status.OK_STATUS);
- }
- } else {
+ }
+ else if(!(error instanceof OperationCanceledException)) {
IStatus status = new Status(IStatus.ERROR, CorePlugin.getUniqueIdentifier(), getErrorMessage(error), error);
proxy.done(this, status);
}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/callbacks/QueryDoneReadDir.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/callbacks/QueryDoneReadDir.java index 2f23f4258..414b7ef32 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/callbacks/QueryDoneReadDir.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/callbacks/QueryDoneReadDir.java @@ -86,10 +86,11 @@ public class QueryDoneReadDir extends CallbackBase implements DoneReadDir { // Close the handle and channel if EOF is signaled or an error occurred.
service.close(handle, new DoneClose() {
@Override
- public void doneClose(IToken token, FileSystemException error) {}
+ public void doneClose(IToken token, FileSystemException error) {
+ IStatus status = error == null ? Status.OK_STATUS : new Status(IStatus.ERROR, CorePlugin.getUniqueIdentifier(), getErrorMessage(error), error);
+ callback.done(this, status);
+ }
});
- Status status = new Status(IStatus.ERROR, CorePlugin.getUniqueIdentifier(), getErrorMessage(error), error);
- callback.done(this, status);
}
}
}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/callbacks/RefreshStateDoneOpenChannel.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/callbacks/RefreshStateDoneOpenChannel.java index 9b4f1623b..4484255c6 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/callbacks/RefreshStateDoneOpenChannel.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/callbacks/RefreshStateDoneOpenChannel.java @@ -10,6 +10,7 @@ package org.eclipse.tcf.te.tcf.filesystem.core.internal.callbacks;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.OperationCanceledException;
import org.eclipse.core.runtime.Status;
import org.eclipse.osgi.util.NLS;
import org.eclipse.tcf.protocol.IChannel;
@@ -52,9 +53,11 @@ public class RefreshStateDoneOpenChannel extends CallbackBase implements IChanne if(channel != null) {
Tcf.getChannelManager().closeChannel(channel);
}
- String message = getErrorMessage(error);
- IStatus status = new Status(IStatus.ERROR, CorePlugin.getUniqueIdentifier(), message, error);
- invokeCallback(status);
+ if (!(error instanceof OperationCanceledException)) {
+ String message = getErrorMessage(error);
+ IStatus status = new Status(IStatus.ERROR, CorePlugin.getUniqueIdentifier(), message, error);
+ invokeCallback(status);
+ }
}
else {
IFileSystem service = channel.getRemoteService(IFileSystem.class);
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/Operation.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/Operation.java index 5b470f5ea..4067ee2e3 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/Operation.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.core/src/org/eclipse/tcf/te/tcf/filesystem/core/internal/operations/Operation.java @@ -18,6 +18,7 @@ import java.util.List; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.ISafeRunnable; import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.core.runtime.OperationCanceledException; import org.eclipse.core.runtime.SafeRunner; import org.eclipse.osgi.util.NLS; import org.eclipse.tcf.protocol.IChannel; @@ -150,7 +151,7 @@ public class Operation extends Ancestor<FSTreeNode> implements IOperation { String message = NLS.bind(Messages.Operation_NotResponding, peer.getID()); errors[0] = new TCFChannelException(message); } - else { + else if(!(error instanceof OperationCanceledException)) { String message = NLS.bind(Messages.Operation_OpeningChannelFailureMessage, peer.getID(), error.getMessage()); errors[0] = new TCFChannelException(message, error); } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/adapters/FSTreeNodeAdapterFactory.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/adapters/FSTreeNodeAdapterFactory.java index 49018aa55..843942527 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/adapters/FSTreeNodeAdapterFactory.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/adapters/FSTreeNodeAdapterFactory.java @@ -68,7 +68,7 @@ public class FSTreeNodeAdapterFactory implements IAdapterFactory { return node.getPeerModel();
}
else if(adapterType == ISearchable.class) {
- return new FSTreeNodeSearchable();
+ return new FSTreeNodeSearchable(node);
}
}
return null;
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/adapters/FSTreeNodeSearchable.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/adapters/FSTreeNodeSearchable.java index 27118f87d..29d1efd96 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/adapters/FSTreeNodeSearchable.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/adapters/FSTreeNodeSearchable.java @@ -10,176 +10,23 @@ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.adapters;
import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Group;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
import org.eclipse.tcf.te.tcf.filesystem.core.model.FSTreeNode;
import org.eclipse.tcf.te.tcf.filesystem.ui.nls.Messages;
-import org.eclipse.tcf.te.ui.interfaces.AbstractSearchable;
-import org.eclipse.tcf.te.ui.interfaces.ISearchMatcher;
+import org.eclipse.tcf.te.ui.utils.CompositeSearchable;
/**
* The ISearchable adapter for a FSTreeNode which creates a UI for the user to
* input the matching condition and returns a matcher to do the matching.
*/
-public class FSTreeNodeSearchable extends AbstractSearchable implements ISearchMatcher {
- // The case sensitive check box.
- Button fBtnCase;
- // The matching rule check box.
- Button fBtnMatch;
- // The types of target files.
- Combo fBtnFileOnly;
- // The input field for searching conditions.
- Text fSearchField;
- // Whether it is case sensitive
- boolean fCaseSensitive;
- // Whether it is precise matching.
- boolean fMatchPrecise;
- // The current selected target type index.
- int fTargetType;
- // The current target names.
- String fTargetName;
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.tcf.te.ui.interfaces.ISearchable#createPart(org.eclipse.swt.widgets.Composite)
- */
- @Override
- public void createPart(Composite container) {
- Composite comp = new Composite(container, SWT.NONE);
- GridLayout glayout = new GridLayout(2, false);
- glayout.marginHeight = 0;
- glayout.marginWidth = 0;
- comp.setLayout(glayout);
- comp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- // Searching field.
- Label label = new Label(comp, SWT.NONE);
- label.setText(Messages.TreeViewerSearchDialog_LblCancelText);
- fSearchField = new Text(comp, SWT.SINGLE | SWT.BORDER);
- fSearchField.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
- fSearchField.addModifyListener(new ModifyListener() {
- @Override
- public void modifyText(ModifyEvent e) {
- searchTextModified();
- }
- });
-
- SelectionListener l = new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- optionChecked(e);
- }
- };
-
- // Search Options Group
- Group group = new Group(container, SWT.SHADOW_ETCHED_IN);
- group.setText(Messages.TreeViewerSearchDialog_GrpOptionsText);
- GridData data = new GridData(SWT.FILL, SWT.CENTER, true, false);
- group.setLayoutData(data);
- group.setLayout(new GridLayout(2, false));
-
- label = new Label(group, SWT.NONE);
- label.setText(Messages.FSTreeNodeSearchable_SearchingTargets);
-
- // Search files only
- fBtnFileOnly = new Combo(group, SWT.BORDER | SWT.READ_ONLY);
- fBtnFileOnly.setItems(new String[]{Messages.FSTreeNodeSearchable_FilesAndFolders, Messages.FSTreeNodeSearchable_FilesOnly, Messages.FSTreeNodeSearchable_FoldersOnly});
- fBtnFileOnly.setLayoutData(new GridData());
- fBtnFileOnly.select(0);
- fBtnFileOnly.addSelectionListener(l);
-
- // Case sensitive
- fBtnCase = new Button(group, SWT.CHECK);
- fBtnCase.setText(Messages.TreeViewerSearchDialog_BtnCaseText);
- fBtnCase.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
- fBtnCase.addSelectionListener(l);
-
- // Matching precisely
- fBtnMatch = new Button(group, SWT.CHECK);
- fBtnMatch.setText(Messages.TreeViewerSearchDialog_BtnPreciseText);
- fBtnMatch.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
- fBtnMatch.addSelectionListener(l);
- }
-
- /**
- * The text for searching is modified.
- */
- protected void searchTextModified() {
- fireOptionChanged();
- fTargetName = fSearchField.getText().trim();
- }
+public class FSTreeNodeSearchable extends CompositeSearchable {
/**
- * An option has been selected.
+ * Create an instance with the specified node.
*
- * @param e The selection event.
+ * @param node The directory node.
*/
- protected void optionChecked(SelectionEvent e) {
- Object src = e.getSource();
- if (src == fBtnCase) {
- fCaseSensitive = fBtnCase.getSelection();
- }
- else if (src == fBtnMatch) {
- fMatchPrecise = fBtnMatch.getSelection();
- }
- else if (src == fBtnFileOnly) {
- fTargetType = fBtnFileOnly.getSelectionIndex();
- }
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.tcf.te.ui.interfaces.ISearchable#getMatcher()
- */
- @Override
- public ISearchMatcher getMatcher() {
- return this;
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.tcf.te.ui.interfaces.ISearchable#isInputValid()
- */
- @Override
- public boolean isInputValid() {
- String txt = fSearchField.getText();
- boolean valid = txt != null && txt.trim().length() > 0;
- return valid;
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.tcf.te.ui.interfaces.ISearchMatcher#match(java.lang.Object)
- */
- @Override
- public boolean match(Object context) {
- if (context == null) return false;
- if (context instanceof FSTreeNode) {
- FSTreeNode node = (FSTreeNode) context;
- if(fTargetType == 1 && !node.isFile() || fTargetType == 2 && !node.isDirectory()) return false;
- String text = node.name;
- if (text == null) return false;
- String target = fTargetName;
- if (!fCaseSensitive) {
- text = text.toLowerCase();
- target = target != null ? target.toLowerCase() : null;
- }
- if (fMatchPrecise) return text.equals(target);
- return text.indexOf(target) != -1;
- }
- return false;
+ public FSTreeNodeSearchable(FSTreeNode node) {
+ super(new FSGeneralSearchable(node), new FSModifiedSearchable(node), new FSSizeSearchable(node));
}
/*
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/nls/Messages.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/nls/Messages.java index 1d253d716..f403048a2 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/nls/Messages.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/nls/Messages.java @@ -96,6 +96,18 @@ public class Messages extends NLS { public static String FSDropTargetListener_MovingWarningMultiple; public static String FSDropTargetListener_MovingWarningSingle; public static String FSExplorerEditorPage_PageTitle; + public static String FSGeneralSearchable_FileType; + public static String FSGeneralSearchable_Find; + public static String FSGeneralSearchable_GeneralOptionText; + public static String FSGeneralSearchable_SearchHiddenFiles; + public static String FSGeneralSearchable_SearchSystemFiles; + public static String FSModifiedSearchable_DontRemember; + public static String FSModifiedSearchable_LastWeek; + public static String FSModifiedSearchable_PastMonth; + public static String FSModifiedSearchable_PastYear; + public static String FSModifiedSearchable_SpecifyDates; + public static String FSModifiedSearchable_ToDate; + public static String FSModifiedSearchable_WhenModified; public static String FSUpload_Cancel; public static String FSUpload_No; public static String FSUpload_OverwriteConfirmation; @@ -117,6 +129,14 @@ public class Messages extends NLS { public static String OpenWithMenu_NoEditorFound; public static String OpenWithMenu_OpenWith; public static String FSRename_RenameFileFolderTitle; + public static String FSSizeSearchable_DontRemember; + public static String FSSizeSearchable_KBS; + public static String FSSizeSearchable_Large; + public static String FSSizeSearchable_Medium; + public static String FSSizeSearchable_Small; + public static String FSSizeSearchable_SpecifySize; + public static String FSSizeSearchable_ToText; + public static String FSSizeSearchable_WhatSize; public static String FSTreeNodeSearchable_FilesAndFolders; public static String FSTreeNodeSearchable_FilesOnly; public static String FSTreeNodeSearchable_FindFilesAndFolders; diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/nls/Messages.properties b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/nls/Messages.properties index 1ef54ccbe..9d361e447 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/nls/Messages.properties +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/nls/Messages.properties @@ -22,8 +22,8 @@ DeleteFilesHandler_DeleteMultipleFilesConfirmation=Are you sure you want to dele DeleteFilesHandler_DeleteOneFileConfirmation=Are you sure you want to delete ''{0}''?
FSRenamingAssistant_NameAlreadyExists=A file/folder with the name you specified already exists\! Specify a different name.
FSRenamingAssistant_SpecifyNonEmptyName=Specify a non-empty name.
-FSRenamingAssistant_UnixIllegalCharacters=A file/folder name cannot contain any of the following characters:\n/
-FSRenamingAssistant_WinIllegalCharacters=A file/folder name cannot contain any of the following characters:\n\\/:*?<>|
+FSRenamingAssistant_UnixIllegalCharacters=File or folder name cannot contain any of the following characters:\n/
+FSRenamingAssistant_WinIllegalCharacters=File or folder name cannot contain any of the following characters:\n\\/:*?<>|
LocalTypedElement_SavingFile=Saving file: {0}
MergeEditorInput_LocalFile=Local: {0}
MergeEditorInput_RemoteFile=Remote: {0}
@@ -36,6 +36,18 @@ FSDropTargetListener_ConfirmMoveTitle=Confirm Move FSDropTargetListener_MovingWarningMultiple=This operation will delete the files after moving. You can copy them without deletion by CTRL + dragging. \n\nAre you sure you want to move these {0} files/folders?
FSDropTargetListener_MovingWarningSingle=This operation will delete the file after moving. You can copy it without deletion by CTRL + dragging. \n\nAre you sure you want to move ''{0}''?
FSExplorerEditorPage_PageTitle=File System Explorer
+FSGeneralSearchable_FileType=Type of file
+FSGeneralSearchable_Find=Find:
+FSGeneralSearchable_GeneralOptionText=General search options
+FSGeneralSearchable_SearchHiddenFiles=Search hidden files/folders
+FSGeneralSearchable_SearchSystemFiles=Search system files/folders
+FSModifiedSearchable_DontRemember=Don't remember
+FSModifiedSearchable_LastWeek=Within the last week
+FSModifiedSearchable_PastMonth=Past month
+FSModifiedSearchable_PastYear=Within the past year
+FSModifiedSearchable_SpecifyDates=Specify dates, from
+FSModifiedSearchable_ToDate=to
+FSModifiedSearchable_WhenModified=When was it modified?
FSUpload_Cancel=Cancel
FSUpload_No=No
FSUpload_OverwriteConfirmation=A file with a same name already exists. Are you sure to overwrite {0}?
@@ -57,13 +69,21 @@ OpenWithMenu_DefaultEditor=&Default Editor OpenWithMenu_NoEditorFound=No editor found to edit the file resource.
OpenWithMenu_OpenWith=Open With
FSRename_RenameFileFolderTitle=Error Renaming File or Folder
-FSTreeNodeSearchable_FilesAndFolders=Files/Folders
-FSTreeNodeSearchable_FilesOnly=Files Only
-FSTreeNodeSearchable_FindFilesAndFolders=Find Files/Folders
-FSTreeNodeSearchable_FindMessage=Find files/folders under {0}\nNote that the subsidary nodes will be loaded and searched too.
-FSTreeNodeSearchable_FoldersOnly=Folders Only
-FSTreeNodeSearchable_SearchingTargets=Search targets:
-FSTreeNodeSearchable_SelectedFileSystem=selected File System
+FSSizeSearchable_DontRemember=Don't remember
+FSSizeSearchable_KBS=KB(s)
+FSSizeSearchable_Large=Large (more than 1 MB)
+FSSizeSearchable_Medium=Medium (less than 1 MB)
+FSSizeSearchable_Small=Small (less than 100 KB)
+FSSizeSearchable_SpecifySize=Specify size, from
+FSSizeSearchable_ToText=KB(s) to
+FSSizeSearchable_WhatSize=What size is it?
+FSTreeNodeSearchable_FilesAndFolders=both files and folders
+FSTreeNodeSearchable_FilesOnly=files only
+FSTreeNodeSearchable_FindFilesAndFolders=Find Files
+FSTreeNodeSearchable_FindMessage=Find files and folders under {0}.\nWarning: subsidiary files and folders will be loaded and searched.
+FSTreeNodeSearchable_FoldersOnly=folders only
+FSTreeNodeSearchable_SearchingTargets=Find in
+FSTreeNodeSearchable_SelectedFileSystem=the selected file system
RenameFilesHandler_TitleRename=Rename
RenameFilesHandler_TitleRenameFile=Rename File
RenameFilesHandler_TitleRenameFolder=Rename Folder
@@ -107,10 +127,10 @@ PermissionsGroup_Writable=Writable BasicFolderSection_BasicInfoText=Basic Information
LinuxPermissionsSection_Permissions=Permissions
WindowsAttributesSection_Attributes=Attributes
-FolderValidator_SpecifyFolder=Please specify the folder where the file/folder is going to be created.
+FolderValidator_SpecifyFolder=Please specify the folder where the file or folder is going to be created.
FolderValidator_DirNotExist=The directory {0} does not exist in the current target.
FolderValidator_NotWritable=The directory {0} is not writable. Please choose a different one.
-NameValidator_SpecifyFolder=Please specify the folder where the file/folder is going to be created.
+NameValidator_SpecifyFolder=Please specify the folder where the file or folder is going to be created.
NewFileWizard_NewFileWizardTitle=New File Wizard
NewFileWizardPage_NewFileWizardPageDescription=Create a new file in the directory.
NewFileWizardPage_NewFileWizardPageNameLabel=File name:
@@ -120,7 +140,7 @@ NewFolderWizardPage_NewFolderWizardPageDescription=Create a new folder in the di NewFolderWizardPage_NewFolderWizardPageNameLabel=Folder name:
NewFolderWizardPage_NewFolderWizardPageTitle=New Folder
NewNodeWizardPage_PromptFolderLabel=Enter or select the parent folder:
-TargetSelectionPage_Description=Please select the target where the new file/folder is created.
+TargetSelectionPage_Description=Please select the target where the new file or folder is created.
TargetSelectionPage_Targets=Targets:
TargetSelectionPage_Title=Select the target.
TreeViewerSearchDialog_LblCancelText=Find:
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.core/src/org/eclipse/tcf/te/tcf/processes/core/callbacks/QueryDoneOpenChannel.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.core/src/org/eclipse/tcf/te/tcf/processes/core/callbacks/QueryDoneOpenChannel.java index 4b52b8270..5d41d9999 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.core/src/org/eclipse/tcf/te/tcf/processes/core/callbacks/QueryDoneOpenChannel.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.core/src/org/eclipse/tcf/te/tcf/processes/core/callbacks/QueryDoneOpenChannel.java @@ -11,6 +11,7 @@ package org.eclipse.tcf.te.tcf.processes.core.callbacks; import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.OperationCanceledException;
import org.eclipse.core.runtime.Status;
import org.eclipse.tcf.protocol.IChannel;
import org.eclipse.tcf.protocol.Protocol;
@@ -58,7 +59,7 @@ public class QueryDoneOpenChannel implements IChannelManager.DoneOpenChannel { @Override
public void doneOpenChannel(Throwable error, final IChannel channel) {
Assert.isTrue(Protocol.isDispatchThread());
- if (error == null && channel != null) {
+ if (error == null) {
ISysMonitor service = channel.getRemoteService(ISysMonitor.class);
if (service != null) {
service.getChildren(parentNode.id, new QueryDoneGetChildren(new Callback(){
@@ -76,8 +77,8 @@ public class QueryDoneOpenChannel implements IChannelManager.DoneOpenChannel { callback.done(this, Status.OK_STATUS);
}
}
- else if (callback != null) {
- IStatus status = error == null ? Status.OK_STATUS : new Status(IStatus.ERROR, CoreBundleActivator.getUniqueIdentifier(), error.getMessage(), error);
+ else if (!(error instanceof OperationCanceledException) && callback != null) {
+ IStatus status = new Status(IStatus.ERROR, CoreBundleActivator.getUniqueIdentifier(), error.getMessage(), error);
callback.done(this, status);
}
}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.core/src/org/eclipse/tcf/te/tcf/processes/core/callbacks/RefreshChildrenDoneOpenChannel.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.core/src/org/eclipse/tcf/te/tcf/processes/core/callbacks/RefreshChildrenDoneOpenChannel.java index d042613de..96325fa54 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.core/src/org/eclipse/tcf/te/tcf/processes/core/callbacks/RefreshChildrenDoneOpenChannel.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.core/src/org/eclipse/tcf/te/tcf/processes/core/callbacks/RefreshChildrenDoneOpenChannel.java @@ -47,7 +47,7 @@ public class RefreshChildrenDoneOpenChannel implements IChannelManager.DoneOpenC @Override
public void doneOpenChannel(Throwable error, final IChannel channel) {
Assert.isTrue(Protocol.isDispatchThread());
- if (error == null && channel != null) {
+ if (error == null) {
ISysMonitor service = channel.getRemoteService(ISysMonitor.class);
if (service != null) {
final CallbackMonitor monitor = new CallbackMonitor(new Callback(){
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.core/src/org/eclipse/tcf/te/tcf/processes/core/callbacks/RefreshDoneOpenChannel.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.core/src/org/eclipse/tcf/te/tcf/processes/core/callbacks/RefreshDoneOpenChannel.java index d22cd5b5e..e034a9904 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.core/src/org/eclipse/tcf/te/tcf/processes/core/callbacks/RefreshDoneOpenChannel.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.core/src/org/eclipse/tcf/te/tcf/processes/core/callbacks/RefreshDoneOpenChannel.java @@ -47,7 +47,7 @@ public class RefreshDoneOpenChannel implements IChannelManager.DoneOpenChannel { @Override
public void doneOpenChannel(Throwable error, final IChannel channel) {
Assert.isTrue(Protocol.isDispatchThread());
- if (error == null && channel != null) {
+ if (error == null) {
ISysMonitor service = channel.getRemoteService(ISysMonitor.class);
if (service != null) {
Queue<ProcessTreeNode> queue = new ConcurrentLinkedQueue<ProcessTreeNode>();
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/interfaces/ISearchable.java b/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/interfaces/ISearchable.java index 13f8ca90b..7e21966c9 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/interfaces/ISearchable.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/interfaces/ISearchable.java @@ -10,6 +10,7 @@ package org.eclipse.tcf.te.ui.interfaces;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.tcf.te.ui.utils.AbstractSearchable;
/**
* This interface should be implemented or adapted by the tree nodes which
@@ -46,12 +47,20 @@ public interface ISearchable { public String getElementText(Object element);
/**
- * Create the option part in the searching dialog where the user
- * enters the matching rule used in searching.
+ * Create the part in the searching dialog where the user
+ * enters the common matching rule used in searching.
*
* @param parent The parent composite of this option part.
*/
- public void createPart(Composite parent);
+ public void createCommonPart(Composite parent);
+
+ /**
+ * Create the part in the searching dialog where the user
+ * enters the advanced matching rule used in searching.
+ *
+ * @param parent The parent composite of this option part.
+ */
+ public void createAdvancedPart(Composite parent);
/**
* Get a searching matcher object to test if a tree node matches
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/internal/utils/AbstractSearcher.java b/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/internal/utils/AbstractSearcher.java index ef00c6456..264bffc7e 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/internal/utils/AbstractSearcher.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/internal/utils/AbstractSearcher.java @@ -15,7 +15,6 @@ import org.eclipse.core.runtime.Platform; import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.tcf.te.ui.interfaces.ILazyLoader;
-import org.eclipse.tcf.te.ui.interfaces.ISearchMatcher;
import org.eclipse.tcf.te.ui.interfaces.ISearchable;
import org.eclipse.tcf.te.ui.interfaces.ITreeSearcher;
import org.eclipse.tcf.te.ui.trees.Pending;
@@ -30,10 +29,8 @@ public abstract class AbstractSearcher implements ITreeSearcher { protected TreeViewer fViewer;
// The label provider of the tree viewer.
protected ILabelProvider fLabelProvider;
-
+ // The searchable element.
protected ISearchable fSearchable;
-
- protected ISearchMatcher fMatcher;
/**
* Create a searcher with the specified viewer and matcher.
@@ -45,7 +42,6 @@ public abstract class AbstractSearcher implements ITreeSearcher { fViewer = viewer;
fLabelProvider = (ILabelProvider) fViewer.getLabelProvider();
this.fSearchable = searchable;
- this.fMatcher = searchable.getMatcher();
}
/**
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/internal/utils/BreadthFirstSearcher.java b/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/internal/utils/BreadthFirstSearcher.java index 4e8009e6e..58b62e2e5 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/internal/utils/BreadthFirstSearcher.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/internal/utils/BreadthFirstSearcher.java @@ -17,6 +17,7 @@ import org.eclipse.core.runtime.Assert; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.viewers.TreePath; import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.tcf.te.ui.interfaces.ISearchMatcher; import org.eclipse.tcf.te.ui.interfaces.ISearchable; /** @@ -57,6 +58,7 @@ public class BreadthFirstSearcher extends AbstractSearcher{ @Override public TreePath searchNext(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException{ TreePath result = null; + ISearchMatcher matcher = fSearchable.getMatcher(); while(queue != null && !queue.isEmpty() && result == null && !monitor.isCanceled()) { TreePath path = queue.poll(); Object element = path.getLastSegment(); @@ -69,7 +71,7 @@ public class BreadthFirstSearcher extends AbstractSearcher{ } String elementText = fSearchable.getElementText(element); monitor.subTask(elementText); - if(fMatcher.match(element)) { + if(matcher.match(element)) { result = path; } } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/internal/utils/DepthFirstSearcher.java b/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/internal/utils/DepthFirstSearcher.java index 6e35813ac..19a1f013b 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/internal/utils/DepthFirstSearcher.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/internal/utils/DepthFirstSearcher.java @@ -16,6 +16,7 @@ import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.jface.viewers.TreePath; import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.tcf.te.ui.interfaces.ISearchMatcher; import org.eclipse.tcf.te.ui.interfaces.ISearchable; /** @@ -111,12 +112,13 @@ public class DepthFirstSearcher extends AbstractSearcher { @Override public TreePath searchNext(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { TreePath result = null; + ISearchMatcher matcher = fSearchable.getMatcher(); while (!fSearchStack.isEmpty() && result == null && !monitor.isCanceled()) { //Search util the stack is empty or the result is found. StackElement top = fSearchStack.getLast(); //Get the top stack element. if(!fForeward && top.index == END_INDEX || fForeward && top.index == START_INDEX){ String elementText = fSearchable.getElementText(top.node); monitor.subTask(elementText); - result = fMatcher.match(top.node) ? this.createContextPath() : null; + result = matcher.match(top.node) ? this.createContextPath() : null; } if (top.index == END_INDEX) {//If the top index is END_INDEX, it means the node has been finished. fSearchStack.removeLast(); //Then discard it. diff --git a/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/internal/utils/SearchEngine.java b/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/internal/utils/SearchEngine.java index 9a5fc9125..dc22b9728 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/internal/utils/SearchEngine.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/internal/utils/SearchEngine.java @@ -58,8 +58,13 @@ public class SearchEngine { fDepthFirst = depthFirst;
}
- public void setSearchable(ISearchable matcher) {
- fSearchable = matcher;
+ /**
+ * The set the searchable
+ *
+ * @param searchable the searchable element.
+ */
+ public void setSearchable(ISearchable searchable) {
+ fSearchable = searchable;
fSearcher = fDepthFirst ? new DepthFirstSearcher(fViewer, fSearchable) : new BreadthFirstSearcher(fViewer, fSearchable);
}
@@ -96,6 +101,11 @@ public class SearchEngine { }
}
+ /**
+ * Get the start path.
+ *
+ * @return the start path.
+ */
public TreePath getStartPath() {
return fStartPath;
}
@@ -158,6 +168,7 @@ public class SearchEngine { return Status.OK_STATUS;
}
};
+ fSearchJob.setSystem(true);
fSearchJob.addJobChangeListener(new JobChangeAdapter() {
@Override
public void done(final IJobChangeEvent event) {
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/internal/utils/TreeViewerSearchDialog.java b/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/internal/utils/TreeViewerSearchDialog.java index 5efde2f01..aaba866fa 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/internal/utils/TreeViewerSearchDialog.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/internal/utils/TreeViewerSearchDialog.java @@ -23,24 +23,19 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; -import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; -import org.eclipse.tcf.te.ui.forms.FormLayoutFactory; import org.eclipse.tcf.te.ui.interfaces.IOptionListener; import org.eclipse.tcf.te.ui.interfaces.ISearchCallback; import org.eclipse.tcf.te.ui.interfaces.ISearchable; import org.eclipse.tcf.te.ui.jface.dialogs.CustomTitleAreaDialog; import org.eclipse.tcf.te.ui.nls.Messages; -import org.eclipse.ui.forms.events.ExpansionEvent; -import org.eclipse.ui.forms.events.IExpansionListener; -import org.eclipse.ui.forms.widgets.ExpandableComposite; -import org.eclipse.ui.forms.widgets.Section; /** * The searching dialog used to get the searching input. @@ -200,63 +195,64 @@ public class TreeViewerSearchDialog extends CustomTitleAreaDialog implements ISe // Create the main container Composite composite = (Composite) super.createDialogArea(parent); Composite container = new Composite(composite, SWT.NONE); - GridLayout glayout = new GridLayout(); - glayout.marginHeight = 5; - glayout.marginWidth = 5; - glayout.verticalSpacing = 5; - glayout.horizontalSpacing = 5; - container.setLayout(glayout); + container.setLayout(new GridLayout()); container.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); if(fSearchable != null) { - fSearchable.createPart(container); + fSearchable.createCommonPart(container); + fSearchable.createAdvancedPart(container); } - SelectionListener l = new SelectionAdapter() { + // Progress monitor part to display or cancel searching process. + fPmPart = new ProgressMonitorPart(container, null, true); + GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL); + fPmPart.setLayoutData(data); + fPmPart.setVisible(false); + + if(fSearchable != null) { + String title = fSearchable.getSearchTitle(); + getShell().setText(title); + this.setTitle(title); + } + + return composite; + } + + /** + * Create the part to input the general search options. + * + * @param container The parent container + */ + protected void createGeneralOptions(Composite container) { + SelectionListener l = new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { selectionChanged(e); } }; - Section section = new Section(container, ExpandableComposite.TWISTIE | ExpandableComposite.CLIENT_INDENT); - section.setText(Messages.TreeViewerSearchDialog_AdvancedOptions); - section.setLayout(FormLayoutFactory.createSectionClientGridLayout(false, 2)); - GridData layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false); - section.setLayoutData(layoutData); - - final Composite client = new Composite(section, SWT.NONE); - client.setLayout(new GridLayout(3, false)); - client.setBackground(section.getBackground()); - section.setClient(client); + Group generalGroup = new Group(container, SWT.NONE); + generalGroup.setText(Messages.TreeViewerSearchDialog_GeneralOptions); + generalGroup.setLayout(new GridLayout(3, false)); + generalGroup.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); - section.addExpansionListener(new IExpansionListener(){ - @Override - public void expansionStateChanging(ExpansionEvent e) { - } - - @Override - public void expansionStateChanged(ExpansionEvent e) { - expansionChanged(e.getState(), client.getSize().y); - }}); - - Label label = new Label(client, SWT.NONE); + Label label = new Label(generalGroup, SWT.NONE); label.setLayoutData(new GridData()); label.setText(Messages.TreeViewerSearchDialog_SearchNodesUsing); - fCmbAlg = new Combo(client, SWT.BORDER | SWT.READ_ONLY); + fCmbAlg = new Combo(generalGroup, SWT.BORDER | SWT.READ_ONLY); fCmbAlg.setLayoutData(new GridData()); fCmbAlg.setItems(new String[]{Messages.TreeViewerSearchDialog_BFS, Messages.TreeViewerSearchDialog_DFS}); fCmbAlg.select(0); fCmbAlg.addSelectionListener(l); - label = new Label(client, SWT.NONE); + label = new Label(generalGroup, SWT.NONE); GridData data = new GridData(SWT.FILL, SWT.CENTER, true, false); label.setLayoutData(data); label.setText(Messages.TreeViewerSearchDialog_UseOptions); // Wrap search - fBtnWrap = new Button(client, SWT.CHECK); + fBtnWrap = new Button(generalGroup, SWT.CHECK); fBtnWrap.setText(Messages.TreeViewerSearchDialog_BtnWrapText); data = new GridData(SWT.FILL, SWT.CENTER, true, false); data.horizontalSpan = 3; @@ -265,7 +261,7 @@ public class TreeViewerSearchDialog extends CustomTitleAreaDialog implements ISe fBtnWrap.addSelectionListener(l); // Search backward. - fBtnBackward = new Button(client, SWT.CHECK); + fBtnBackward = new Button(generalGroup, SWT.CHECK); fBtnBackward.setText(Messages.TreeViewerSearchDialog_BtnBackText); data = new GridData(SWT.FILL, SWT.CENTER, true, false); data.horizontalSpan = 3; @@ -274,26 +270,6 @@ public class TreeViewerSearchDialog extends CustomTitleAreaDialog implements ISe fBtnBackward.addSelectionListener(l); // Hidden if it is breadth-first search fBtnBackward.setEnabled(fSearcher.isDepthFirst()); - - // Progress monitor part to display or cancel searching process. - fPmPart = new ProgressMonitorPart(container, null, true); - data = new GridData(GridData.HORIZONTAL_ALIGN_FILL); - fPmPart.setLayoutData(data); - fPmPart.setVisible(false); - - if(fSearchable != null) { - String title = fSearchable.getSearchTitle(); - getShell().setText(title); - this.setTitle(title); - } - - return composite; - } - - protected void expansionChanged(boolean state, int client_height) { - Point p = getShell().getSize(); - p.y = state ? p.y + client_height : p.y - client_height; - getShell().setSize(p.x, p.y); } private ISearchable getSearchable() { @@ -311,10 +287,6 @@ public class TreeViewerSearchDialog extends CustomTitleAreaDialog implements ISe if(searchable == null) { searchable = (ISearchable)Platform.getAdapterManager().getAdapter(element, ISearchable.class); } - if(searchable != null) { - searchable.addOptionListener(this); - fSearcher.setSearchable(searchable); - } return searchable; } } @@ -356,6 +328,8 @@ public class TreeViewerSearchDialog extends CustomTitleAreaDialog implements ISe fSearcher.setStartPath(rootPath); fSearchable = getSearchable(); if (fSearchable != null) { + fSearchable.addOptionListener(this); + fSearcher.setSearchable(fSearchable); Object element = rootPath.getLastSegment(); String text = fSearchable.getSearchMessage(element); if (text != null) { diff --git a/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/nls/Messages.java b/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/nls/Messages.java index 2d1fa24b7..441e5d679 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/nls/Messages.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/nls/Messages.java @@ -88,5 +88,6 @@ public class Messages extends NLS { public static String TreeViewerSearchDialog_BreadthFirst; public static String ViewerStateManager_MkdirFailed; public static String TreeViewerSearchDialog_BtnWrapText; + public static String TreeViewerSearchDialog_GeneralOptions; public static String TreeViewerSearchDialog_UseOptions; } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/nls/Messages.properties b/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/nls/Messages.properties index 0d96398db..51c52d37e 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/nls/Messages.properties +++ b/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/nls/Messages.properties @@ -56,7 +56,7 @@ NameValuePairDialog_usedOrIllegalName_error=The name ''{0}'' is reserved or alre PreferencePage_label=General settings for Target Explorer: QuickFilterPopup_PromptMessage=<ENTER> to confirm, <ESC> to reset -TreeViewerSearchDialog_AdvancedOptions=Advanced Options +TreeViewerSearchDialog_AdvancedOptions=Advanced options TreeViewerSearchDialog_All=All TreeViewerSearchDialog_BFS=Breadth-first search TreeViewerSearchDialog_BtnBackText=Find backward @@ -75,4 +75,5 @@ TreeViewerSearchDialog_Selected=Selected element TreeViewerSearchDialog_BreadthFirst=Breadth-First Search ViewerStateManager_MkdirFailed=Making the directory for viewerstate.xml failed\! TreeViewerSearchDialog_BtnWrapText=Wrap search +TreeViewerSearchDialog_GeneralOptions=General search options TreeViewerSearchDialog_UseOptions=with option(s): diff --git a/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/utils/AbstractSearchable.java b/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/utils/AbstractSearchable.java new file mode 100644 index 000000000..254b5872e --- /dev/null +++ b/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/utils/AbstractSearchable.java @@ -0,0 +1,78 @@ +/*******************************************************************************
+ * 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.ui.utils;
+
+import org.eclipse.core.commands.common.EventManager;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.tcf.te.ui.interfaces.IOptionListener;
+import org.eclipse.tcf.te.ui.interfaces.ISearchable;
+
+/**
+ * The base class that implements ISearchable and provide basic implementation method
+ * for adding and removing listeners.
+ */
+public abstract class AbstractSearchable extends EventManager implements ISearchable {
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.tcf.te.ui.interfaces.ISearchable#addOptionListener(org.eclipse.tcf.te.ui.interfaces.IOptionListener)
+ */
+ @Override
+ public void addOptionListener(IOptionListener listener) {
+ super.addListenerObject(listener);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.tcf.te.ui.interfaces.ISearchable#removeOptionListener(org.eclipse.tcf.te.ui.interfaces.IOptionListener)
+ */
+ @Override
+ public void removeOptionListener(IOptionListener listener) {
+ super.removeListenerObject(listener);
+ }
+
+ /**
+ * Fire an option changed event to the listeners to notify
+ * the current option input has changed.
+ */
+ protected void fireOptionChanged() {
+ Object[] listeners = super.getListeners();
+ for(Object listener : listeners) {
+ ((IOptionListener)listener).optionChanged(null);
+ }
+ }
+
+ @Override
+ public void createCommonPart(Composite parent) {
+ }
+
+ @Override
+ public void createAdvancedPart(Composite parent) {
+ }
+
+ @Override
+ public boolean isInputValid() {
+ return true;
+ }
+
+ @Override
+ public String getSearchTitle() {
+ return null;
+ }
+
+ @Override
+ public String getSearchMessage(Object rootElement) {
+ return null;
+ }
+
+ @Override
+ public String getElementText(Object element) {
+ return null;
+ }
+}
|