Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndre Weinand2003-12-27 19:08:53 +0000
committerAndre Weinand2003-12-27 19:08:53 +0000
commit35bab511e86c0a92ce064206d6377f74be3e13c9 (patch)
tree5d8718ee3ed0ce11eaf943a96434e270d563bed6 /bundles/org.eclipse.compare/compare
parentb59af5aef290723c424ceecc6545268f3a8b59be (diff)
downloadeclipse.platform.team-35bab511e86c0a92ce064206d6377f74be3e13c9.tar.gz
eclipse.platform.team-35bab511e86c0a92ce064206d6377f74be3e13c9.tar.xz
eclipse.platform.team-35bab511e86c0a92ce064206d6377f74be3e13c9.zip
fixed #32329
Diffstat (limited to 'bundles/org.eclipse.compare/compare')
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareFilter.java (renamed from bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/Filter.java)70
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ComparePreferencePage.java35
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareUIPlugin.java26
3 files changed, 65 insertions, 66 deletions
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/Filter.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareFilter.java
index 5bd1174ef..5d1b1ae91 100644
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/Filter.java
+++ b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareFilter.java
@@ -10,44 +10,32 @@
*******************************************************************************/
package org.eclipse.compare.internal;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.util.*;
+import java.text.MessageFormat;
+import java.util.StringTokenizer;
+import org.eclipse.core.resources.*;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.runtime.IStatus;
-public class Filter {
+
+public class CompareFilter {
private static final char[][] NO_CHAR_CHAR= new char[0][];
private char[][] fExtraResourceFileFilters;
private String[] fExtraResourceFolderFilters;
- private IPreferenceStore fPreferenceStore;
- private IPropertyChangeListener fPropertyChangeListener;
- public Filter(IPreferenceStore ps) {
- fPreferenceStore= ps;
- updateFilters();
- fPropertyChangeListener= new IPropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent event) {
- if (ComparePreferencePage.PATH_FILTER.equals(event.getProperty()))
- updateFilters();
- }
- };
- ps.addPropertyChangeListener(fPropertyChangeListener);
- }
-
- public void dispose() {
- fPreferenceStore.removePropertyChangeListener(fPropertyChangeListener);
- fPropertyChangeListener= null;
+ public CompareFilter() {
}
public boolean filter(String path0, boolean folder, boolean isArchive) {
- if (fExtraResourceFileFilters != null) {
+ if (!folder && fExtraResourceFileFilters != null) {
char[] name= path0.toCharArray();
for (int i= 0, l= fExtraResourceFileFilters.length; i < l; i++)
if (match(fExtraResourceFileFilters[i], name, true))
return true;
}
- if (fExtraResourceFolderFilters != null) {
+ if (folder && fExtraResourceFolderFilters != null) {
for (int i= 0, l= fExtraResourceFolderFilters.length; i < l; i++)
if (fExtraResourceFolderFilters[0].equals(path0))
return true;
@@ -55,11 +43,30 @@ public class Filter {
return false;
}
- private void updateFilters() {
- String filterSequence= fPreferenceStore.getString(ComparePreferencePage.PATH_FILTER);
+ public static String validateResourceFilters(String text) {
+ IWorkspace workspace= ResourcesPlugin.getWorkspace();
+ String[] filters= getTokens(text, ","); //$NON-NLS-1$
+ for (int i= 0; i < filters.length; i++) {
+ String fileName= filters[i].replace('*', 'x');
+ int resourceType= IResource.FILE;
+ int lastCharacter= fileName.length() - 1;
+ if (lastCharacter >= 0 && fileName.charAt(lastCharacter) == '/') {
+ fileName= fileName.substring(0, lastCharacter);
+ resourceType= IResource.FOLDER;
+ }
+ IStatus status= workspace.validateName(fileName, resourceType);
+ if (status.matches(IStatus.ERROR)) {
+ String format= Utilities.getString("ComparePreferencePage.filter.invalidsegment.error"); //$NON-NLS-1$
+ return MessageFormat.format(format, new String[] { status.getMessage() } );
+ }
+ }
+ return null;
+ }
+
+ public void setFilters(String filterSequence) {
char[][] filters= filterSequence != null && filterSequence.length() > 0
- ? splitAndTrimOn(',', filterSequence.toCharArray())
- : null;
+ ? splitAndTrimOn(',', filterSequence.toCharArray())
+ : null;
if (filters == null) {
fExtraResourceFileFilters= null;
fExtraResourceFolderFilters= null;
@@ -88,6 +95,17 @@ public class Filter {
}
}
+ /////////
+
+ private static String[] getTokens(String text, String separator) {
+ StringTokenizer tok= new StringTokenizer(text, separator); //$NON-NLS-1$
+ int nTokens= tok.countTokens();
+ String[] res= new String[nTokens];
+ for (int i= 0; i < res.length; i++)
+ res[i]= tok.nextToken().trim();
+ return res;
+ }
+
/**
* Answers true if the pattern matches the given name, false otherwise.
* This char[] pattern matching accepts wild-cards '*' and '?'.
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ComparePreferencePage.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ComparePreferencePage.java
index 458608310..e40fbfe94 100644
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ComparePreferencePage.java
+++ b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ComparePreferencePage.java
@@ -11,16 +11,12 @@
package org.eclipse.compare.internal;
import java.io.*;
-import java.text.MessageFormat;
import java.util.*;
import org.eclipse.ui.*;
import org.eclipse.ui.help.WorkbenchHelp;
import org.eclipse.ui.texteditor.AbstractTextEditor;
-import org.eclipse.core.resources.*;
-import org.eclipse.core.runtime.IStatus;
-
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.*;
import org.eclipse.swt.graphics.Image;
@@ -257,7 +253,7 @@ public class ComparePreferencePage extends PreferencePage implements IWorkbenchP
new ModifyListener() {
public void modifyText(ModifyEvent e) {
String filters= t.getText();
- String message= validateResourceFilters(filters);
+ String message= CompareFilter.validateResourceFilters(filters);
setValid(message == null);
setMessage(null);
setErrorMessage(message);
@@ -341,35 +337,6 @@ public class ComparePreferencePage extends PreferencePage implements IWorkbenchP
}
}
- private String validateResourceFilters(String text) {
- IWorkspace workspace= ResourcesPlugin.getWorkspace();
- String[] filters= getTokens(text, ","); //$NON-NLS-1$
- for (int i= 0; i < filters.length; i++) {
- String fileName= filters[i].replace('*', 'x');
- int resourceType= IResource.FILE;
- int lastCharacter= fileName.length() - 1;
- if (lastCharacter >= 0 && fileName.charAt(lastCharacter) == '/') {
- fileName= fileName.substring(0, lastCharacter);
- resourceType= IResource.FOLDER;
- }
- IStatus status= workspace.validateName(fileName, resourceType);
- if (status.matches(IStatus.ERROR)) {
- String format= Utilities.getString("ComparePreferencePage.filter.invalidsegment.error"); //$NON-NLS-1$
- return MessageFormat.format(format, new String[] { status.getMessage() } );
- }
- }
- return null;
- }
-
- private static String[] getTokens(String text, String separator) {
- StringTokenizer tok= new StringTokenizer(text, separator); //$NON-NLS-1$
- int nTokens= tok.countTokens();
- String[] res= new String[nTokens];
- for (int i= 0; i < res.length; i++)
- res[i]= tok.nextToken().trim();
- return res;
- }
-
// overlay stuff
private Button addCheckBox(Composite parent, String labelKey, String key, int indentation) {
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareUIPlugin.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareUIPlugin.java
index ca5dd77f0..54c544022 100644
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareUIPlugin.java
+++ b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareUIPlugin.java
@@ -28,6 +28,7 @@ import org.eclipse.swt.widgets.*;
import org.eclipse.jface.dialogs.*;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.util.*;
import org.eclipse.jface.util.Assert;
import org.eclipse.jface.viewers.Viewer;
@@ -97,8 +98,9 @@ public final class CompareUIPlugin extends AbstractUIPlugin {
private static CompareUIPlugin fgComparePlugin;
- private Filter fFilter;
-
+ private CompareFilter fFilter;
+ private IPropertyChangeListener fPropertyChangeListener;
+
/**
* Creates the <code>CompareUIPlugin</code> object and registers all
* structure creators, content merge viewers, and structure merge viewers
@@ -280,8 +282,12 @@ public final class CompareUIPlugin extends AbstractUIPlugin {
sb.append(' ');
}
ps.setValue(STRUCTUREVIEWER_ALIASES_PREFERENCE_NAME, sb.toString());
+
+ if (fPropertyChangeListener != null) {
+ ps.removePropertyChangeListener(fPropertyChangeListener);
+ fPropertyChangeListener= null;
+ }
}
- fFilter.dispose();
super.shutdown();
@@ -816,7 +822,7 @@ public final class CompareUIPlugin extends AbstractUIPlugin {
private void initPreferenceStore() {
//System.out.println("initPreferenceStore");
- IPreferenceStore ps= getPreferenceStore();
+ final IPreferenceStore ps= getPreferenceStore();
if (ps != null) {
String aliases= ps.getString(STRUCTUREVIEWER_ALIASES_PREFERENCE_NAME);
//System.out.println(" <" + aliases + ">");
@@ -833,7 +839,15 @@ public final class CompareUIPlugin extends AbstractUIPlugin {
}
}
}
- fFilter= new Filter(ps);
+ fFilter= new CompareFilter();
+ fFilter.setFilters(ps.getString(ComparePreferencePage.PATH_FILTER));
+ fPropertyChangeListener= new IPropertyChangeListener() {
+ public void propertyChange(PropertyChangeEvent event) {
+ if (ComparePreferencePage.PATH_FILTER.equals(event.getProperty()))
+ fFilter.setFilters(ps.getString(ComparePreferencePage.PATH_FILTER));
+ }
+ };
+ ps.addPropertyChangeListener(fPropertyChangeListener);
}
}
@@ -893,7 +907,7 @@ public final class CompareUIPlugin extends AbstractUIPlugin {
}
public static boolean filter(String name, boolean isFolder, boolean isArchive) {
- Filter f= getDefault().fFilter;
+ CompareFilter f= getDefault().fFilter;
return f.filter(name, isFolder, isArchive);
}
}

Back to the top