207822 ItemFilterDialog patch
diff --git a/org.eclipse.epf.authoring.ui/src/org/eclipse/epf/authoring/ui/AuthoringUIResources.java b/org.eclipse.epf.authoring.ui/src/org/eclipse/epf/authoring/ui/AuthoringUIResources.java
index d1d95d0..bc27915 100644
--- a/org.eclipse.epf.authoring.ui/src/org/eclipse/epf/authoring/ui/AuthoringUIResources.java
+++ b/org.eclipse.epf.authoring.ui/src/org/eclipse/epf/authoring/ui/AuthoringUIResources.java
@@ -51,6 +51,8 @@
public static String guidancePage_title;
+ public static String ItemsFilterDialog_UpdateTreeJob_name;
+
public static String NewDiagramFile_title;
public static String previewPage_title;
diff --git a/org.eclipse.epf.authoring.ui/src/org/eclipse/epf/authoring/ui/Resources.properties b/org.eclipse.epf.authoring.ui/src/org/eclipse/epf/authoring/ui/Resources.properties
index 6ab7029..f192d02 100644
--- a/org.eclipse.epf.authoring.ui/src/org/eclipse/epf/authoring/ui/Resources.properties
+++ b/org.eclipse.epf.authoring.ui/src/org/eclipse/epf/authoring/ui/Resources.properties
@@ -920,7 +920,7 @@
#Activity Diagram
ActivityDiagramEditor_createStartNode_text=Create a Start Node
ConfigurationPage_ConfigContentDescription=Select the method plug-ins, content packages and processes that will be included in this configuration.
-ContentElementsOrderDialog_description_text=Custom Category's content elements order dialog
+ContentElementsOrderDialog_description_text=Order dialog
AuthoringUIPlugin_AbstractNewLibraryPage_DirectoryLabel=Directory:
RootPrefPage_enableprocesscontribution_text=Enable Process Contribution
ConfigurationDescriptionDescription_text=Provide general information about this method configuration.
@@ -1239,3 +1239,4 @@
defaultLinkTypePrefLabel=Choose the default element link type when dragging from the Library view.
promptCreateNewDiagramFile_msg=No diagram file exists for this process. Do you want to create a new one?
NewDiagramFile_title=New Diagram File
+ItemsFilterDialog_UpdateTreeJob_name=Update filter tree
diff --git a/org.eclipse.epf.authoring.ui/src/org/eclipse/epf/authoring/ui/dialogs/ItemsFilterDialog.java b/org.eclipse.epf.authoring.ui/src/org/eclipse/epf/authoring/ui/dialogs/ItemsFilterDialog.java
index 2223e6f..481565e 100644
--- a/org.eclipse.epf.authoring.ui/src/org/eclipse/epf/authoring/ui/dialogs/ItemsFilterDialog.java
+++ b/org.eclipse.epf.authoring.ui/src/org/eclipse/epf/authoring/ui/dialogs/ItemsFilterDialog.java
@@ -14,6 +14,10 @@
import java.util.List;
import java.util.regex.Pattern;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
@@ -78,6 +82,7 @@
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.TreeItem;
+import org.eclipse.ui.PlatformUI;
/**
* Filter Dialog - allow the user to filter the content element, content
@@ -274,11 +279,22 @@
* Notifies that the cancel button of this dialog has been pressed.
*/
protected void cancelPressed() {
+ if (treeJob != null) {
+ treeJob.cancel();
+ }
super.cancelPressed();
if(composedAdapterFactory != null){
composedAdapterFactory.dispose();
}
}
+
+ @Override
+ protected void okPressed() {
+ if (treeJob != null) {
+ treeJob.cancel();
+ }
+ super.okPressed();
+ }
/**
* Set title for dialog box eg: Select Dialog For Role, dialogTitle needs to
@@ -809,43 +825,72 @@
}
}
- public long timer = 3;
- public long lasttimer = System.currentTimeMillis();
+ public long delay = 800;
+
+ private class UpdateTreeJob extends Job {
+
+ public UpdateTreeJob(String name) {
+ super(name);
+ }
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+
+ // need to run this in UI thread
+ PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
+
+ public void run() {
+ if (treeViewer == null ||
+ treeViewer.getControl() == null ||
+ treeViewer.getControl().isDisposed()) {
+ return;
+ }
+ treeViewer.getTree().clearAll(true);
+ if (ctrl_pattern.getText() != null
+ && ctrl_pattern.getText().trim().length() > 0) {
+ pattern = ctrl_pattern.getText().trim();
+ // if(pattern.indexOf(FilterConstants.ANY_STRING)> -1
+ // || pattern.indexOf(FilterConstants.ANY_CHARACTER) >
+ // -1){
+ //
+ // }else{
+ // pattern = pattern+FilterConstants.ANY_STRING;
+ // }
+ } else {
+ pattern = FilterConstants.ANY_STRING;
+ // return;
+ }
+ regexPattern = getRegEx(pattern);
+ if (helper != null) {
+ helper.setPattern(pattern);
+ helper.setRegexPattern(regexPattern);
+ helper.setFilterTypeStr(filterTypeStr);
+ helper.setTabStr(filterTypeStr);
+ }
+ refreshTreeViewer();
+ }
+
+ });
+ return Status.OK_STATUS;
+ }
+
+ }
+
+ private UpdateTreeJob treeJob = new UpdateTreeJob(AuthoringUIResources.ItemsFilterDialog_UpdateTreeJob_name);
public void addListener() {
ctrl_pattern.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
- // Set timer
- long currenttimer = System.currentTimeMillis();
- if(lasttimer+timer > currenttimer){
- return;
- }else{
- lasttimer = currenttimer;
- }
-
- treeViewer.getTree().clearAll(true);
- if (ctrl_pattern.getText() != null
- && ctrl_pattern.getText().trim().length() > 0) {
- pattern = ctrl_pattern.getText().trim();
-// if(pattern.indexOf(FilterConstants.ANY_STRING)> -1
-// || pattern.indexOf(FilterConstants.ANY_CHARACTER) > -1){
-//
-// }else{
-// pattern = pattern+FilterConstants.ANY_STRING;
-// }
- } else {
- pattern = FilterConstants.ANY_STRING;
- //return;
- }
- regexPattern = getRegEx(pattern);
- if (helper != null) {
- helper.setPattern(pattern);
- helper.setRegexPattern(regexPattern);
- helper.setFilterTypeStr(filterTypeStr);
- helper.setTabStr(filterTypeStr);
- }
- refreshTreeViewer();
+ if (treeJob.getState() == Job.NONE) {
+ // We should schedule the job to run
+ treeJob.schedule(delay);
+ } else if (treeJob.getState() == Job.WAITING ||
+ treeJob.getState() == Job.SLEEPING){
+ // Cancel the previous job, and reschedule
+ treeJob.cancel();
+ treeJob.schedule(delay);
+ }
}
});
@@ -1007,15 +1052,19 @@
*
*/
public void refreshTreeViewer(){
- // To improve performance of filter, filter first and reset visible to
- // true.This will avoid the flickering in UI at time of filtering
- // elements in the tree structure
-
- treeViewer.getTree().clearAll(true);
- treeViewer.getTree().setVisible(false);
- treeViewer.refresh();
- treeViewer.expandAll();
- treeViewer.getTree().setVisible(true);
+ try {
+ // To improve performance of filter, filter first and reset visible to
+ // true.This will avoid the flickering in UI at time of filtering
+ // elements in the tree structure
+
+ treeViewer.getTree().clearAll(true);
+ treeViewer.getTree().setVisible(false);
+ treeViewer.refresh();
+ treeViewer.expandAll();
+ treeViewer.getTree().setVisible(true);
+ } catch (Exception e) {
+ AuthoringUIPlugin.getDefault().getLogger().logError(e);
+ }
}
/*
*