mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-23 08:55:25 +02:00
bug 339015: Preference "Show source roots at the top of project" should update views immediately
This commit is contained in:
parent
112b975c2d
commit
1db8cc744d
4 changed files with 53 additions and 4 deletions
|
@ -19,6 +19,7 @@ import java.util.List;
|
|||
import java.util.Set;
|
||||
|
||||
import org.eclipse.cdt.core.CCorePlugin;
|
||||
import org.eclipse.cdt.core.CCorePreferenceConstants;
|
||||
import org.eclipse.cdt.core.model.CoreModel;
|
||||
import org.eclipse.cdt.core.settings.model.CProjectDescriptionEvent;
|
||||
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
|
||||
|
@ -41,6 +42,9 @@ import org.eclipse.core.resources.IResourceDelta;
|
|||
import org.eclipse.core.resources.IWorkspace;
|
||||
import org.eclipse.core.resources.IWorkspaceRoot;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener;
|
||||
import org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent;
|
||||
import org.eclipse.core.runtime.preferences.InstanceScope;
|
||||
import org.eclipse.jface.viewers.AbstractTreeViewer;
|
||||
import org.eclipse.jface.viewers.ITreeContentProvider;
|
||||
import org.eclipse.jface.viewers.StructuredViewer;
|
||||
|
@ -55,7 +59,9 @@ import org.eclipse.swt.widgets.Display;
|
|||
* @noextend This class is not intended to be subclassed by clients.
|
||||
* @noinstantiate This class is not intended to be instantiated by clients.
|
||||
*/
|
||||
public class MakeContentProvider implements ITreeContentProvider, IMakeTargetListener, IResourceChangeListener, ICProjectDescriptionListener {
|
||||
public class MakeContentProvider implements ITreeContentProvider, IMakeTargetListener,
|
||||
IResourceChangeListener, ICProjectDescriptionListener, IPreferenceChangeListener {
|
||||
|
||||
/** presentation of the content, i.e. for MakeView tree of for BuildTargetDialog table */
|
||||
protected boolean bFlatten;
|
||||
|
||||
|
@ -224,12 +230,14 @@ public class MakeContentProvider implements ITreeContentProvider, IMakeTargetLis
|
|||
if (oldWorkspace != newWorkspace) {
|
||||
ICProjectDescriptionManager mngr = CoreModel.getDefault().getProjectDescriptionManager();
|
||||
if (oldWorkspace != null) {
|
||||
oldWorkspace.removeResourceChangeListener(this);
|
||||
InstanceScope.INSTANCE.getNode(CCorePlugin.PLUGIN_ID).removePreferenceChangeListener(this);
|
||||
mngr.removeCProjectDescriptionListener(this);
|
||||
oldWorkspace.removeResourceChangeListener(this);
|
||||
}
|
||||
if (newWorkspace != null) {
|
||||
newWorkspace.addResourceChangeListener(this, IResourceChangeEvent.POST_CHANGE);
|
||||
mngr.addCProjectDescriptionListener(this, CProjectDescriptionEvent.APPLIED);
|
||||
InstanceScope.INSTANCE.getNode(CCorePlugin.PLUGIN_ID).addPreferenceChangeListener(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -405,6 +413,21 @@ public class MakeContentProvider implements ITreeContentProvider, IMakeTargetLis
|
|||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* @since 7.1
|
||||
*/
|
||||
public void preferenceChange(PreferenceChangeEvent event) {
|
||||
if (event.getKey().equals(CCorePreferenceConstants.SHOW_SOURCE_ROOTS_AT_TOP_LEVEL_OF_PROJECT)) {
|
||||
Display.getDefault().asyncExec(new Runnable() {
|
||||
public void run() {
|
||||
viewer.refresh();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get source entries for default setting configuration (i.e. configuration shown in UI).
|
||||
*/
|
||||
|
|
|
@ -776,7 +776,7 @@ public class CElementBaseLabels {
|
|||
buf.append(container.getPath().makeRelative().toString());
|
||||
} else {
|
||||
if (CCorePlugin.showSourceRootsAtTopOfProject()) {
|
||||
buf.append(container.getElementName());
|
||||
buf.append(container.getElementName());
|
||||
}
|
||||
else {
|
||||
String elementName = container.getElementName();
|
||||
|
|
|
@ -80,6 +80,7 @@ import org.eclipse.core.runtime.Status;
|
|||
import org.eclipse.core.runtime.SubProgressMonitor;
|
||||
import org.eclipse.core.runtime.content.IContentType;
|
||||
import org.eclipse.core.runtime.jobs.Job;
|
||||
import org.eclipse.core.runtime.preferences.InstanceScope;
|
||||
import org.osgi.framework.BundleContext;
|
||||
|
||||
import com.ibm.icu.text.MessageFormat;
|
||||
|
@ -1309,6 +1310,7 @@ public class CCorePlugin extends Plugin {
|
|||
* @since 5.2
|
||||
*/
|
||||
public static boolean showSourceRootsAtTopOfProject() {
|
||||
return getDefault().getPluginPreferences().getBoolean( CCorePreferenceConstants.SHOW_SOURCE_ROOTS_AT_TOP_LEVEL_OF_PROJECT);
|
||||
return InstanceScope.INSTANCE.getNode(PLUGIN_ID)
|
||||
.getBoolean(CCorePreferenceConstants.SHOW_SOURCE_ROOTS_AT_TOP_LEVEL_OF_PROJECT, true);
|
||||
}
|
||||
}
|
|
@ -23,16 +23,22 @@ import org.eclipse.core.resources.IProject;
|
|||
import org.eclipse.core.resources.IResource;
|
||||
import org.eclipse.core.resources.IWorkspaceRoot;
|
||||
import org.eclipse.core.runtime.IAdaptable;
|
||||
import org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener;
|
||||
import org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent;
|
||||
import org.eclipse.core.runtime.preferences.InstanceScope;
|
||||
import org.eclipse.jface.preference.IPreferenceStore;
|
||||
import org.eclipse.jface.util.IPropertyChangeListener;
|
||||
import org.eclipse.jface.util.PropertyChangeEvent;
|
||||
import org.eclipse.jface.viewers.Viewer;
|
||||
import org.eclipse.swt.widgets.Display;
|
||||
import org.eclipse.ui.IMemento;
|
||||
import org.eclipse.ui.navigator.ICommonContentExtensionSite;
|
||||
import org.eclipse.ui.navigator.IPipelinedTreeContentProvider;
|
||||
import org.eclipse.ui.navigator.PipelinedShapeModification;
|
||||
import org.eclipse.ui.navigator.PipelinedViewerUpdate;
|
||||
|
||||
import org.eclipse.cdt.core.CCorePlugin;
|
||||
import org.eclipse.cdt.core.CCorePreferenceConstants;
|
||||
import org.eclipse.cdt.core.model.CoreModel;
|
||||
import org.eclipse.cdt.core.model.ICElement;
|
||||
import org.eclipse.cdt.core.model.ICModel;
|
||||
|
@ -51,6 +57,7 @@ public class CNavigatorContentProvider extends CViewContentProvider implements I
|
|||
/** The input object as supplied in the call to {@link #inputChanged()} */
|
||||
private Object fRealInput;
|
||||
private IPropertyChangeListener fPropertyChangeListener;
|
||||
private IPreferenceChangeListener fPreferenceChangeListener;
|
||||
|
||||
/*
|
||||
* @see org.eclipse.ui.navigator.ICommonContentProvider#init(org.eclipse.ui.navigator.ICommonContentExtensionSite)
|
||||
|
@ -85,6 +92,21 @@ public class CNavigatorContentProvider extends CViewContentProvider implements I
|
|||
}
|
||||
};
|
||||
CUIPlugin.getDefault().getPreferenceStore().addPropertyChangeListener(fPropertyChangeListener);
|
||||
|
||||
// Note that this listener listens to CCorePlugin preferences
|
||||
fPreferenceChangeListener = new IPreferenceChangeListener() {
|
||||
public void preferenceChange(PreferenceChangeEvent event) {
|
||||
if (event.getKey().equals(CCorePreferenceConstants.SHOW_SOURCE_ROOTS_AT_TOP_LEVEL_OF_PROJECT)) {
|
||||
Display.getDefault().asyncExec(new Runnable() {
|
||||
public void run() {
|
||||
getViewer().refresh();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
InstanceScope.INSTANCE.getNode(CCorePlugin.PLUGIN_ID).addPreferenceChangeListener(fPreferenceChangeListener);
|
||||
|
||||
// TLETODO [CN] use extension state model for view options persistence
|
||||
// fStateModel.addPropertyChangeListener(listener);
|
||||
}
|
||||
|
@ -94,6 +116,8 @@ public class CNavigatorContentProvider extends CViewContentProvider implements I
|
|||
*/
|
||||
@Override
|
||||
public void dispose() {
|
||||
InstanceScope.INSTANCE.getNode(CCorePlugin.PLUGIN_ID).removePreferenceChangeListener(fPreferenceChangeListener);
|
||||
|
||||
CUIPlugin.getDefault().getPreferenceStore().removePropertyChangeListener(fPropertyChangeListener);
|
||||
// TLETODO [CN] use extension state model for view options persistence
|
||||
// fStateModel.removePropertyChangeListener(fPropertyChangeListener);
|
||||
|
|
Loading…
Add table
Reference in a new issue