Bug 67948 [Team API] File content type is not changed in Explorer view until Eclipse restarted
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSLightweightDecorator.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSLightweightDecorator.java
index 43d4209..5bed95c 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSLightweightDecorator.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSLightweightDecorator.java
@@ -583,11 +583,15 @@
* @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
*/
public void propertyChange(PropertyChangeEvent event) {
- String prop = event.getProperty();
- if(prop.equals(TeamUI.GLOBAL_IGNORES_CHANGED)) {
- refresh();
- } else if(prop.equals(CVSUIPlugin.P_DECORATORS_CHANGED)) {
- refresh();
- }
+ if (isEventOfInterest(event)) {
+ refresh();
+ }
}
+
+ private boolean isEventOfInterest(PropertyChangeEvent event) {
+ String prop = event.getProperty();
+ return prop.equals(TeamUI.GLOBAL_IGNORES_CHANGED)
+ || prop.equals(TeamUI.GLOBAL_FILE_TYPES_CHANGED)
+ || prop.equals(CVSUIPlugin.P_DECORATORS_CHANGED);
+ }
}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CVSParticipantLabelDecorator.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CVSParticipantLabelDecorator.java
index 8b4abcf..5f66ae1 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CVSParticipantLabelDecorator.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CVSParticipantLabelDecorator.java
@@ -22,6 +22,7 @@
import org.eclipse.team.internal.ccvs.ui.CVSLightweightDecorator;
import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
import org.eclipse.team.internal.ui.synchronize.SyncInfoModelElement;
+import org.eclipse.team.ui.TeamUI;
import org.eclipse.team.ui.synchronize.ISynchronizeModelElement;
import org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration;
@@ -32,6 +33,7 @@
this.configuration = configuration;
// Listen for decorator changed to refresh the viewer's labels.
CVSUIPlugin.addPropertyChangeListener(this);
+ TeamUI.addPropertyChangeListener(this);
}
public String decorateText(String input, Object element) {
@@ -59,7 +61,7 @@
}
public void propertyChange(PropertyChangeEvent event) {
String property = event.getProperty();
- if(property.equals(CVSUIPlugin.P_DECORATORS_CHANGED)) {
+ if(property.equals(CVSUIPlugin.P_DECORATORS_CHANGED) || property.equals(TeamUI.GLOBAL_FILE_TYPES_CHANGED)) {
Viewer viewer = configuration.getPage().getViewer();
if(viewer instanceof StructuredViewer && !viewer.getControl().isDisposed()) {
((StructuredViewer)viewer).refresh(true);
@@ -68,6 +70,7 @@
}
public void dispose() {
CVSUIPlugin.removePropertyChangeListener(this);
+ TeamUI.removePropertyChangeListener(this);
}
protected String getRevisionNumber(ISynchronizeModelElement element) {
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/preferences/TextPreferencePage.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/preferences/TextPreferencePage.java
index 142579c..0cd7d27 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/preferences/TextPreferencePage.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/preferences/TextPreferencePage.java
@@ -17,6 +17,7 @@
import org.eclipse.jface.dialogs.*;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.preference.PreferencePage;
+import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.jface.viewers.*;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.TableEditor;
@@ -26,8 +27,10 @@
import org.eclipse.swt.widgets.*;
import org.eclipse.team.core.IFileTypeInfo;
import org.eclipse.team.core.Team;
+import org.eclipse.team.internal.ui.*;
import org.eclipse.team.internal.ui.IHelpContextIds;
import org.eclipse.team.internal.ui.Policy;
+import org.eclipse.team.ui.TeamUI;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.eclipse.ui.help.WorkbenchHelp;
@@ -286,6 +289,7 @@
i++;
}
Team.setAllTypes(extensions, types);
+ TeamUIPlugin.broadcastPropertyChange(new PropertyChangeEvent(this, TeamUI.GLOBAL_FILE_TYPES_CHANGED, null, null));
return true;
}
/**
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/TeamUI.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/TeamUI.java
index 9ba7a3d..b391651 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/TeamUI.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/TeamUI.java
@@ -27,6 +27,8 @@
* Property constant indicating the global ignores list has changed.
*/
public static String GLOBAL_IGNORES_CHANGED = TeamUIPlugin.ID + "global_ignores_changed"; //$NON-NLS-1$
+
+ public static String GLOBAL_FILE_TYPES_CHANGED = TeamUIPlugin.ID + "global_file_types_changed"; //$NON-NLS-1$
/**
* Return the synchronize manager.