diff options
author | Andre Weinand | 2003-12-27 19:08:53 +0000 |
---|---|---|
committer | Andre Weinand | 2003-12-27 19:08:53 +0000 |
commit | 35bab511e86c0a92ce064206d6377f74be3e13c9 (patch) | |
tree | 5d8718ee3ed0ce11eaf943a96434e270d563bed6 /bundles/org.eclipse.compare/compare | |
parent | b59af5aef290723c424ceecc6545268f3a8b59be (diff) | |
download | eclipse.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.java | 35 | ||||
-rw-r--r-- | bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareUIPlugin.java | 26 |
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); } } |