mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-08-04 23:05:47 +02:00
220725: Support for project specific Code Style settings
This commit is contained in:
parent
72d87e8b69
commit
629404da42
9 changed files with 546 additions and 134 deletions
|
@ -50,11 +50,15 @@ import org.eclipse.cdt.core.settings.model.ICSourceEntry;
|
||||||
import org.eclipse.cdt.internal.core.settings.model.CProjectDescriptionManager;
|
import org.eclipse.cdt.internal.core.settings.model.CProjectDescriptionManager;
|
||||||
import org.eclipse.core.resources.IProject;
|
import org.eclipse.core.resources.IProject;
|
||||||
import org.eclipse.core.resources.IResource;
|
import org.eclipse.core.resources.IResource;
|
||||||
|
import org.eclipse.core.resources.ProjectScope;
|
||||||
import org.eclipse.core.runtime.CoreException;
|
import org.eclipse.core.runtime.CoreException;
|
||||||
import org.eclipse.core.runtime.IPath;
|
import org.eclipse.core.runtime.IPath;
|
||||||
import org.eclipse.core.runtime.IProgressMonitor;
|
import org.eclipse.core.runtime.IProgressMonitor;
|
||||||
import org.eclipse.core.runtime.Preferences;
|
import org.eclipse.core.runtime.Preferences;
|
||||||
import org.eclipse.core.runtime.QualifiedName;
|
import org.eclipse.core.runtime.QualifiedName;
|
||||||
|
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
|
||||||
|
import org.eclipse.core.runtime.preferences.IScopeContext;
|
||||||
|
import org.osgi.service.prefs.BackingStoreException;
|
||||||
|
|
||||||
public class CProject extends Openable implements ICProject {
|
public class CProject extends Openable implements ICProject {
|
||||||
|
|
||||||
|
@ -242,15 +246,14 @@ public class CProject extends Openable implements ICProject {
|
||||||
* @see org.eclipse.cdt.core.model.ICProject#getOption(String, boolean)
|
* @see org.eclipse.cdt.core.model.ICProject#getOption(String, boolean)
|
||||||
*/
|
*/
|
||||||
public String getOption(String optionName, boolean inheritCCoreOptions) {
|
public String getOption(String optionName, boolean inheritCCoreOptions) {
|
||||||
|
|
||||||
if (CModelManager.OptionNames.contains(optionName)) {
|
if (CModelManager.OptionNames.contains(optionName)) {
|
||||||
Preferences preferences = getPreferences();
|
IEclipsePreferences preferences = getPreferences();
|
||||||
|
final String cCoreDefault= inheritCCoreOptions ? CCorePlugin.getOption(optionName) : null;
|
||||||
if (preferences == null || preferences.isDefault(optionName)) {
|
if (preferences == null) {
|
||||||
return inheritCCoreOptions ? CCorePlugin.getOption(optionName) : null;
|
return cCoreDefault;
|
||||||
}
|
}
|
||||||
|
String value= preferences.get(optionName, cCoreDefault).trim();
|
||||||
return preferences.getString(optionName).trim();
|
return value == null ? null : value.trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
@ -261,30 +264,25 @@ public class CProject extends Openable implements ICProject {
|
||||||
*/
|
*/
|
||||||
public Map getOptions(boolean inheritCCoreOptions) {
|
public Map getOptions(boolean inheritCCoreOptions) {
|
||||||
// initialize to the defaults from CCorePlugin options pool
|
// initialize to the defaults from CCorePlugin options pool
|
||||||
Map options = inheritCCoreOptions ? CCorePlugin.getOptions() : new HashMap(5);
|
Map options= inheritCCoreOptions ? CCorePlugin.getOptions() : new HashMap(5);
|
||||||
|
|
||||||
Preferences preferences = getPreferences();
|
IEclipsePreferences preferences = getPreferences();
|
||||||
if (preferences == null)
|
if (preferences == null)
|
||||||
return options;
|
return options;
|
||||||
HashSet optionNames = CModelManager.OptionNames;
|
HashSet optionNames= CModelManager.OptionNames;
|
||||||
|
|
||||||
// get preferences set to their default
|
// create project options
|
||||||
if (inheritCCoreOptions) {
|
try {
|
||||||
String[] defaultPropertyNames = preferences.defaultPropertyNames();
|
String[] propertyNames= preferences.keys();
|
||||||
for (int i = 0; i < defaultPropertyNames.length; i++) {
|
for (int i= 0; i < propertyNames.length; i++){
|
||||||
String propertyName = defaultPropertyNames[i];
|
String propertyName= propertyNames[i];
|
||||||
if (optionNames.contains(propertyName)) {
|
String value= preferences.get(propertyName, null);
|
||||||
options.put(propertyName, preferences.getDefaultString(propertyName).trim());
|
if (value != null && optionNames.contains(propertyName)){
|
||||||
|
options.put(propertyName, value.trim());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} catch (BackingStoreException e) {
|
||||||
// get custom preferences not set to their default
|
// ignore silently
|
||||||
String[] propertyNames = preferences.propertyNames();
|
|
||||||
for (int i = 0; i < propertyNames.length; i++) {
|
|
||||||
String propertyName = propertyNames[i];
|
|
||||||
if (optionNames.contains(propertyName)) {
|
|
||||||
options.put(propertyName, preferences.getString(propertyName).trim());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return options;
|
return options;
|
||||||
}
|
}
|
||||||
|
@ -296,11 +294,20 @@ public class CProject extends Openable implements ICProject {
|
||||||
if (!CModelManager.OptionNames.contains(optionName))
|
if (!CModelManager.OptionNames.contains(optionName))
|
||||||
return; // unrecognized option
|
return; // unrecognized option
|
||||||
|
|
||||||
Preferences preferences = getPreferences();
|
IEclipsePreferences projectPreferences= getPreferences();
|
||||||
preferences.setDefault(optionName, CUSTOM_DEFAULT_OPTION_VALUE); // empty string isn't the default (26251)
|
if (optionValue == null) {
|
||||||
preferences.setValue(optionName, optionValue);
|
// remove preference
|
||||||
|
projectPreferences.remove(optionName);
|
||||||
savePreferences(preferences);
|
} else {
|
||||||
|
projectPreferences.put(optionName, optionValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Dump changes
|
||||||
|
try {
|
||||||
|
projectPreferences.flush();
|
||||||
|
} catch (BackingStoreException e) {
|
||||||
|
// problem with pref store - quietly ignore
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -332,28 +339,15 @@ public class CProject extends Openable implements ICProject {
|
||||||
/**
|
/**
|
||||||
* Returns the project custom preference pool.
|
* Returns the project custom preference pool.
|
||||||
* Project preferences may include custom encoding.
|
* Project preferences may include custom encoding.
|
||||||
|
* @return IEclipsePreferences or <code>null</code> if the project
|
||||||
|
* does not have a C nature.
|
||||||
*/
|
*/
|
||||||
private Preferences getPreferences() {
|
private IEclipsePreferences getPreferences() {
|
||||||
if (!(isCProject())) {
|
if (!(isCProject())) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
Preferences preferences = new Preferences();
|
IScopeContext context= new ProjectScope(getProject());
|
||||||
Iterator iter = CModelManager.OptionNames.iterator();
|
final IEclipsePreferences preferences= context.getNode(CCorePlugin.PLUGIN_ID);
|
||||||
|
|
||||||
while (iter.hasNext()) {
|
|
||||||
String qualifiedName = (String) iter.next();
|
|
||||||
String dequalifiedName = qualifiedName.substring(CCorePlugin.PLUGIN_ID.length() + 1);
|
|
||||||
String value = null;
|
|
||||||
|
|
||||||
try {
|
|
||||||
value = resource.getPersistentProperty(new QualifiedName(CCorePlugin.PLUGIN_ID, dequalifiedName));
|
|
||||||
} catch (CoreException e) {
|
|
||||||
}
|
|
||||||
|
|
||||||
if (value != null)
|
|
||||||
preferences.setValue(qualifiedName, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
return preferences;
|
return preferences;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1931,7 +1931,20 @@
|
||||||
</and>
|
</and>
|
||||||
</enabledWhen>
|
</enabledWhen>
|
||||||
</page>
|
</page>
|
||||||
|
|
||||||
|
<page
|
||||||
|
name="%CodeFormatterPreferencePage.name"
|
||||||
|
class="org.eclipse.cdt.internal.ui.preferences.CodeFormatterPreferencePage"
|
||||||
|
category="org.eclipse.cdt.ui.newui.Page_head_general"
|
||||||
|
id="org.eclipse.cdt.ui.propertyPages.CodeFormatterPreferencePage">
|
||||||
|
<enabledWhen>
|
||||||
|
<adapt type="org.eclipse.core.resources.IProject">
|
||||||
|
<test property="org.eclipse.core.resources.projectNature" value="org.eclipse.cdt.core.cnature"/>
|
||||||
|
</adapt>
|
||||||
|
</enabledWhen>
|
||||||
|
</page>
|
||||||
</extension>
|
</extension>
|
||||||
|
|
||||||
<extension
|
<extension
|
||||||
point="org.eclipse.cdt.ui.PathContainerPage">
|
point="org.eclipse.cdt.ui.PathContainerPage">
|
||||||
<PathContainerPage
|
<PathContainerPage
|
||||||
|
|
|
@ -16,15 +16,18 @@ package org.eclipse.cdt.internal.ui.editor;
|
||||||
|
|
||||||
|
|
||||||
import java.text.CharacterIterator;
|
import java.text.CharacterIterator;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.Stack;
|
import java.util.Stack;
|
||||||
|
|
||||||
import org.eclipse.core.resources.IFile;
|
import org.eclipse.core.resources.IFile;
|
||||||
import org.eclipse.core.resources.IMarker;
|
import org.eclipse.core.resources.IMarker;
|
||||||
|
import org.eclipse.core.resources.ProjectScope;
|
||||||
import org.eclipse.core.runtime.CoreException;
|
import org.eclipse.core.runtime.CoreException;
|
||||||
import org.eclipse.core.runtime.IProgressMonitor;
|
import org.eclipse.core.runtime.IProgressMonitor;
|
||||||
import org.eclipse.core.runtime.IStatus;
|
import org.eclipse.core.runtime.IStatus;
|
||||||
|
@ -126,6 +129,7 @@ import org.eclipse.ui.PlatformUI;
|
||||||
import org.eclipse.ui.actions.ActionContext;
|
import org.eclipse.ui.actions.ActionContext;
|
||||||
import org.eclipse.ui.actions.ActionGroup;
|
import org.eclipse.ui.actions.ActionGroup;
|
||||||
import org.eclipse.ui.dnd.IDragAndDropService;
|
import org.eclipse.ui.dnd.IDragAndDropService;
|
||||||
|
import org.eclipse.ui.editors.text.EditorsUI;
|
||||||
import org.eclipse.ui.editors.text.TextEditor;
|
import org.eclipse.ui.editors.text.TextEditor;
|
||||||
import org.eclipse.ui.ide.IGotoMarker;
|
import org.eclipse.ui.ide.IGotoMarker;
|
||||||
import org.eclipse.ui.navigator.ICommonMenuConstants;
|
import org.eclipse.ui.navigator.ICommonMenuConstants;
|
||||||
|
@ -135,6 +139,7 @@ import org.eclipse.ui.part.IShowInTargetList;
|
||||||
import org.eclipse.ui.part.ShowInContext;
|
import org.eclipse.ui.part.ShowInContext;
|
||||||
import org.eclipse.ui.texteditor.AbstractDecoratedTextEditorPreferenceConstants;
|
import org.eclipse.ui.texteditor.AbstractDecoratedTextEditorPreferenceConstants;
|
||||||
import org.eclipse.ui.texteditor.AbstractMarkerAnnotationModel;
|
import org.eclipse.ui.texteditor.AbstractMarkerAnnotationModel;
|
||||||
|
import org.eclipse.ui.texteditor.ChainedPreferenceStore;
|
||||||
import org.eclipse.ui.texteditor.ContentAssistAction;
|
import org.eclipse.ui.texteditor.ContentAssistAction;
|
||||||
import org.eclipse.ui.texteditor.IDocumentProvider;
|
import org.eclipse.ui.texteditor.IDocumentProvider;
|
||||||
import org.eclipse.ui.texteditor.IEditorStatusLine;
|
import org.eclipse.ui.texteditor.IEditorStatusLine;
|
||||||
|
@ -204,10 +209,12 @@ import org.eclipse.cdt.internal.ui.text.CWordFinder;
|
||||||
import org.eclipse.cdt.internal.ui.text.CWordIterator;
|
import org.eclipse.cdt.internal.ui.text.CWordIterator;
|
||||||
import org.eclipse.cdt.internal.ui.text.DocumentCharacterIterator;
|
import org.eclipse.cdt.internal.ui.text.DocumentCharacterIterator;
|
||||||
import org.eclipse.cdt.internal.ui.text.ICReconcilingListener;
|
import org.eclipse.cdt.internal.ui.text.ICReconcilingListener;
|
||||||
|
import org.eclipse.cdt.internal.ui.text.PreferencesAdapter;
|
||||||
import org.eclipse.cdt.internal.ui.text.Symbols;
|
import org.eclipse.cdt.internal.ui.text.Symbols;
|
||||||
import org.eclipse.cdt.internal.ui.text.c.hover.SourceViewerInformationControl;
|
import org.eclipse.cdt.internal.ui.text.c.hover.SourceViewerInformationControl;
|
||||||
import org.eclipse.cdt.internal.ui.text.contentassist.ContentAssistPreference;
|
import org.eclipse.cdt.internal.ui.text.contentassist.ContentAssistPreference;
|
||||||
import org.eclipse.cdt.internal.ui.util.CUIHelp;
|
import org.eclipse.cdt.internal.ui.util.CUIHelp;
|
||||||
|
import org.eclipse.cdt.internal.ui.util.EditorUtility;
|
||||||
import org.eclipse.cdt.internal.ui.viewsupport.ISelectionListenerWithAST;
|
import org.eclipse.cdt.internal.ui.viewsupport.ISelectionListenerWithAST;
|
||||||
import org.eclipse.cdt.internal.ui.viewsupport.SelectionListenerWithASTManager;
|
import org.eclipse.cdt.internal.ui.viewsupport.SelectionListenerWithASTManager;
|
||||||
|
|
||||||
|
@ -372,10 +379,12 @@ public class CEditor extends TextEditor implements ISelectionChangedListener, IC
|
||||||
preferences.put(DefaultCodeFormatterConstants.FORMATTER_CURRENT_FILE, tu.getResource());
|
preferences.put(DefaultCodeFormatterConstants.FORMATTER_CURRENT_FILE, tu.getResource());
|
||||||
}
|
}
|
||||||
|
|
||||||
// custom formatter specified?
|
if (cProject == null) {
|
||||||
String customFormatterId= getPreferenceStore().getString(CCorePreferenceConstants.CODE_FORMATTER);
|
// custom formatter specified?
|
||||||
if (customFormatterId != null) {
|
String customFormatterId= getPreferenceStore().getString(CCorePreferenceConstants.CODE_FORMATTER);
|
||||||
preferences.put(CCorePreferenceConstants.CODE_FORMATTER, customFormatterId);
|
if (customFormatterId != null) {
|
||||||
|
preferences.put(CCorePreferenceConstants.CODE_FORMATTER, customFormatterId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
context.setProperty(FormattingContextProperties.CONTEXT_PREFERENCES, preferences);
|
context.setProperty(FormattingContextProperties.CONTEXT_PREFERENCES, preferences);
|
||||||
|
|
||||||
|
@ -1234,17 +1243,6 @@ public class CEditor extends TextEditor implements ISelectionChangedListener, IC
|
||||||
* Default constructor.
|
* Default constructor.
|
||||||
*/
|
*/
|
||||||
public CEditor() {
|
public CEditor() {
|
||||||
super();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see org.eclipse.ui.texteditor.AbstractDecoratedTextEditor#initializeEditor()
|
|
||||||
*/
|
|
||||||
protected void initializeEditor() {
|
|
||||||
IPreferenceStore store= CUIPlugin.getDefault().getCombinedPreferenceStore();
|
|
||||||
setPreferenceStore(store);
|
|
||||||
CTextTools textTools = CUIPlugin.getDefault().getTextTools();
|
|
||||||
setSourceViewerConfiguration(new CSourceViewerConfiguration(textTools.getColorManager(), store, this, textTools.getDocumentPartitioning()));
|
|
||||||
setDocumentProvider(CUIPlugin.getDefault().getDocumentProvider());
|
setDocumentProvider(CUIPlugin.getDefault().getDocumentProvider());
|
||||||
|
|
||||||
setEditorContextMenuId("#CEditorContext"); //$NON-NLS-1$
|
setEditorContextMenuId("#CEditorContext"); //$NON-NLS-1$
|
||||||
|
@ -1252,30 +1250,51 @@ public class CEditor extends TextEditor implements ISelectionChangedListener, IC
|
||||||
setOutlinerContextMenuId("#CEditorOutlinerContext"); //$NON-NLS-1$
|
setOutlinerContextMenuId("#CEditorOutlinerContext"); //$NON-NLS-1$
|
||||||
|
|
||||||
fCEditorErrorTickUpdater = new CEditorErrorTickUpdater(this);
|
fCEditorErrorTickUpdater = new CEditorErrorTickUpdater(this);
|
||||||
|
}
|
||||||
|
|
||||||
fStickyOccurrenceAnnotations= store.getBoolean(PreferenceConstants.EDITOR_STICKY_OCCURRENCES);
|
/**
|
||||||
|
* @see org.eclipse.ui.texteditor.AbstractDecoratedTextEditor#initializeEditor()
|
||||||
|
*/
|
||||||
|
protected void initializeEditor() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.eclipse.ui.texteditor.AbstractTextEditor#doSetInput(org.eclipse.ui.IEditorInput)
|
* @see org.eclipse.ui.texteditor.AbstractTextEditor#doSetInput(org.eclipse.ui.IEditorInput)
|
||||||
*/
|
*/
|
||||||
protected void doSetInput(IEditorInput input) throws CoreException {
|
protected void doSetInput(IEditorInput input) throws CoreException {
|
||||||
boolean reuse= getEditorInput() != null;
|
ISourceViewer sourceViewer= getSourceViewer();
|
||||||
|
if (!(sourceViewer instanceof ISourceViewerExtension2)) {
|
||||||
|
setPreferenceStore(createCombinedPreferenceStore(input));
|
||||||
|
internalDoSetInput(input);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// uninstall & unregister preference store listener
|
||||||
|
getSourceViewerDecorationSupport(sourceViewer).uninstall();
|
||||||
|
((ISourceViewerExtension2)sourceViewer).unconfigure();
|
||||||
|
|
||||||
|
setPreferenceStore(createCombinedPreferenceStore(input));
|
||||||
|
|
||||||
|
// install & register preference store listener
|
||||||
|
sourceViewer.configure(getSourceViewerConfiguration());
|
||||||
|
getSourceViewerDecorationSupport(sourceViewer).install(getPreferenceStore());
|
||||||
|
|
||||||
|
internalDoSetInput(input);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void internalDoSetInput(IEditorInput input) throws CoreException {
|
||||||
|
ISourceViewer sourceViewer= getSourceViewer();
|
||||||
|
CSourceViewer cSourceViewer= null;
|
||||||
|
if (sourceViewer instanceof CSourceViewer) {
|
||||||
|
cSourceViewer= (CSourceViewer) sourceViewer;
|
||||||
|
}
|
||||||
|
|
||||||
|
IPreferenceStore store= getPreferenceStore();
|
||||||
|
if (cSourceViewer != null && isFoldingEnabled() && (store == null || !store.getBoolean(PreferenceConstants.EDITOR_SHOW_SEGMENTS)))
|
||||||
|
cSourceViewer.prepareDelayedProjection();
|
||||||
|
|
||||||
super.doSetInput(input);
|
super.doSetInput(input);
|
||||||
|
|
||||||
if (reuse) {
|
|
||||||
// in case language changed, need to reconfigure the viewer
|
|
||||||
ISourceViewer viewer= getSourceViewer();
|
|
||||||
if (viewer instanceof ISourceViewerExtension2) {
|
|
||||||
ISourceViewerExtension2 viewerExt2= (ISourceViewerExtension2)viewer;
|
|
||||||
viewerExt2.unconfigure();
|
|
||||||
CSourceViewerConfiguration cConfig= (CSourceViewerConfiguration)getSourceViewerConfiguration();
|
|
||||||
cConfig.resetScanners();
|
|
||||||
viewer.configure(cConfig);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
setOutlinePageInput(fOutlinePage, input);
|
setOutlinePageInput(fOutlinePage, input);
|
||||||
|
|
||||||
if (fProjectionModelUpdater != null) {
|
if (fProjectionModelUpdater != null) {
|
||||||
|
@ -1284,7 +1303,6 @@ public class CEditor extends TextEditor implements ISelectionChangedListener, IC
|
||||||
if (fCEditorErrorTickUpdater != null) {
|
if (fCEditorErrorTickUpdater != null) {
|
||||||
fCEditorErrorTickUpdater.updateEditorImage(getInputCElement());
|
fCEditorErrorTickUpdater.updateEditorImage(getInputCElement());
|
||||||
}
|
}
|
||||||
|
|
||||||
ICElement element= getInputCElement();
|
ICElement element= getInputCElement();
|
||||||
if (element instanceof ITranslationUnit) {
|
if (element instanceof ITranslationUnit) {
|
||||||
fBracketMatcher.configure(((ITranslationUnit)element).getLanguage());
|
fBracketMatcher.configure(((ITranslationUnit)element).getLanguage());
|
||||||
|
@ -1293,6 +1311,25 @@ public class CEditor extends TextEditor implements ISelectionChangedListener, IC
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @see org.eclipse.ui.texteditor.AbstractTextEditor#setPreferenceStore(org.eclipse.jface.preference.IPreferenceStore)
|
||||||
|
* @since 5.0
|
||||||
|
*/
|
||||||
|
protected void setPreferenceStore(IPreferenceStore store) {
|
||||||
|
super.setPreferenceStore(store);
|
||||||
|
SourceViewerConfiguration sourceViewerConfiguration= getSourceViewerConfiguration();
|
||||||
|
if (!(sourceViewerConfiguration instanceof CSourceViewerConfiguration)) {
|
||||||
|
CTextTools textTools= CUIPlugin.getDefault().getTextTools();
|
||||||
|
setSourceViewerConfiguration(new CSourceViewerConfiguration(textTools.getColorManager(), store, this, ICPartitions.C_PARTITIONING));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getSourceViewer() instanceof CSourceViewer)
|
||||||
|
((CSourceViewer)getSourceViewer()).setPreferenceStore(store);
|
||||||
|
|
||||||
|
fMarkOccurrenceAnnotations= store.getBoolean(PreferenceConstants.EDITOR_MARK_OCCURRENCES);
|
||||||
|
fStickyOccurrenceAnnotations= store.getBoolean(PreferenceConstants.EDITOR_STICKY_OCCURRENCES);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update the title image.
|
* Update the title image.
|
||||||
* @param image Title image.
|
* @param image Title image.
|
||||||
|
@ -2171,6 +2208,8 @@ public class CEditor extends TextEditor implements ISelectionChangedListener, IC
|
||||||
if (sourceViewer instanceof ITextViewerExtension)
|
if (sourceViewer instanceof ITextViewerExtension)
|
||||||
((ITextViewerExtension) sourceViewer).prependVerifyKeyListener(fBracketInserter);
|
((ITextViewerExtension) sourceViewer).prependVerifyKeyListener(fBracketInserter);
|
||||||
|
|
||||||
|
if (isMarkingOccurrences())
|
||||||
|
installOccurrencesFinder(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -2735,11 +2774,11 @@ public class CEditor extends TextEditor implements ISelectionChangedListener, IC
|
||||||
}
|
}
|
||||||
|
|
||||||
// delayed installation of mark occurrences
|
// delayed installation of mark occurrences
|
||||||
if (!fMarkOccurrenceAnnotations && isMarkingOccurrences())
|
// if (!fMarkOccurrenceAnnotations && isMarkingOccurrences())
|
||||||
getSite().getShell().getDisplay().asyncExec(new Runnable() {
|
// getSite().getShell().getDisplay().asyncExec(new Runnable() {
|
||||||
public void run() {
|
// public void run() {
|
||||||
installOccurrencesFinder(true);
|
// installOccurrencesFinder(true);
|
||||||
}});
|
// }});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -3174,4 +3213,25 @@ public class CEditor extends TextEditor implements ISelectionChangedListener, IC
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates and returns the preference store for this editor with the given input.
|
||||||
|
*
|
||||||
|
* @param input The editor input for which to create the preference store
|
||||||
|
* @return the preference store for this editor
|
||||||
|
*/
|
||||||
|
private IPreferenceStore createCombinedPreferenceStore(IEditorInput input) {
|
||||||
|
List<IPreferenceStore> stores= new ArrayList<IPreferenceStore>(3);
|
||||||
|
|
||||||
|
ICProject project= EditorUtility.getCProject(input);
|
||||||
|
if (project != null) {
|
||||||
|
stores.add(new EclipsePreferencesAdapter(new ProjectScope(project.getProject()), CCorePlugin.PLUGIN_ID));
|
||||||
|
}
|
||||||
|
|
||||||
|
stores.add(CUIPlugin.getDefault().getPreferenceStore());
|
||||||
|
stores.add(new PreferencesAdapter(CCorePlugin.getDefault().getPluginPreferences()));
|
||||||
|
stores.add(EditorsUI.getPreferenceStore());
|
||||||
|
|
||||||
|
return new ChainedPreferenceStore(stores.toArray(new IPreferenceStore[stores.size()]));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -169,6 +169,7 @@ public class CSourceViewer extends ProjectionViewer implements IPropertyChangeLi
|
||||||
|
|
||||||
if (configuration instanceof CSourceViewerConfiguration) {
|
if (configuration instanceof CSourceViewerConfiguration) {
|
||||||
CSourceViewerConfiguration cConfiguration= (CSourceViewerConfiguration)configuration;
|
CSourceViewerConfiguration cConfiguration= (CSourceViewerConfiguration)configuration;
|
||||||
|
cConfiguration.resetScanners();
|
||||||
fOutlinePresenter= cConfiguration.getOutlinePresenter(this);
|
fOutlinePresenter= cConfiguration.getOutlinePresenter(this);
|
||||||
if (fOutlinePresenter != null)
|
if (fOutlinePresenter != null)
|
||||||
fOutlinePresenter.install(this);
|
fOutlinePresenter.install(this);
|
||||||
|
@ -404,7 +405,7 @@ public class CSourceViewer extends ProjectionViewer implements IPropertyChangeLi
|
||||||
Assert.isNotNull(listener);
|
Assert.isNotNull(listener);
|
||||||
|
|
||||||
if (fTextPresentationListeners == null)
|
if (fTextPresentationListeners == null)
|
||||||
fTextPresentationListeners= new ArrayList();
|
fTextPresentationListeners= new ArrayList<ITextPresentationListener>();
|
||||||
|
|
||||||
fTextPresentationListeners.remove(listener);
|
fTextPresentationListeners.remove(listener);
|
||||||
fTextPresentationListeners.add(0, listener);
|
fTextPresentationListeners.add(0, listener);
|
||||||
|
|
|
@ -0,0 +1,316 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2005, 2008 IBM Corporation and others.
|
||||||
|
* All rights reserved. This program and the accompanying materials
|
||||||
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
|
* which accompanies this distribution, and is available at
|
||||||
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* IBM Corporation - initial API and implementation
|
||||||
|
*******************************************************************************/
|
||||||
|
package org.eclipse.cdt.internal.ui.editor;
|
||||||
|
|
||||||
|
import org.eclipse.core.runtime.ListenerList;
|
||||||
|
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
|
||||||
|
import org.eclipse.core.runtime.preferences.IScopeContext;
|
||||||
|
import org.eclipse.jface.preference.IPreferenceStore;
|
||||||
|
import org.eclipse.jface.util.IPropertyChangeListener;
|
||||||
|
import org.eclipse.jface.util.PropertyChangeEvent;
|
||||||
|
import org.eclipse.swt.widgets.Display;
|
||||||
|
import org.osgi.service.prefs.BackingStoreException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adapts an options {@link IEclipsePreferences} to {@link org.eclipse.jface.preference.IPreferenceStore}.
|
||||||
|
* <p>
|
||||||
|
* This preference store is read-only i.e. write access
|
||||||
|
* throws an {@link java.lang.UnsupportedOperationException}.
|
||||||
|
* </p>
|
||||||
|
*/
|
||||||
|
class EclipsePreferencesAdapter implements IPreferenceStore {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Preference change listener. Listens for events preferences
|
||||||
|
* fires a {@link org.eclipse.jface.util.PropertyChangeEvent}
|
||||||
|
* on this adapter with arguments from the received event.
|
||||||
|
*/
|
||||||
|
private class PreferenceChangeListener implements IEclipsePreferences.IPreferenceChangeListener {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public void preferenceChange(final IEclipsePreferences.PreferenceChangeEvent event) {
|
||||||
|
if (Display.getCurrent() == null) {
|
||||||
|
Display.getDefault().asyncExec(new Runnable() {
|
||||||
|
public void run() {
|
||||||
|
firePropertyChangeEvent(event.getKey(), event.getOldValue(), event.getNewValue());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
firePropertyChangeEvent(event.getKey(), event.getOldValue(), event.getNewValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Listeners on on this adapter */
|
||||||
|
private ListenerList fListeners= new ListenerList(ListenerList.IDENTITY);
|
||||||
|
|
||||||
|
/** Listener on the node */
|
||||||
|
private IEclipsePreferences.IPreferenceChangeListener fListener= new PreferenceChangeListener();
|
||||||
|
|
||||||
|
/** wrapped node */
|
||||||
|
private final IScopeContext fContext;
|
||||||
|
private final String fQualifier;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize with the node to wrap
|
||||||
|
*
|
||||||
|
* @param context the context to access
|
||||||
|
* @param qualifier the qualifier
|
||||||
|
*/
|
||||||
|
public EclipsePreferencesAdapter(IScopeContext context, String qualifier) {
|
||||||
|
fContext= context;
|
||||||
|
fQualifier= qualifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
private IEclipsePreferences getNode() {
|
||||||
|
return fContext.getNode(fQualifier);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public void addPropertyChangeListener(IPropertyChangeListener listener) {
|
||||||
|
if (fListeners.size() == 0)
|
||||||
|
getNode().addPreferenceChangeListener(fListener);
|
||||||
|
fListeners.add(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public void removePropertyChangeListener(IPropertyChangeListener listener) {
|
||||||
|
fListeners.remove(listener);
|
||||||
|
if (fListeners.size() == 0) {
|
||||||
|
getNode().removePreferenceChangeListener(fListener);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public boolean contains(String name) {
|
||||||
|
return getNode().get(name, null) != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public void firePropertyChangeEvent(String name, Object oldValue, Object newValue) {
|
||||||
|
PropertyChangeEvent event= new PropertyChangeEvent(this, name, oldValue, newValue);
|
||||||
|
Object[] listeners= fListeners.getListeners();
|
||||||
|
for (int i= 0; i < listeners.length; i++)
|
||||||
|
((IPropertyChangeListener) listeners[i]).propertyChange(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public boolean getBoolean(String name) {
|
||||||
|
return getNode().getBoolean(name, BOOLEAN_DEFAULT_DEFAULT);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public boolean getDefaultBoolean(String name) {
|
||||||
|
return BOOLEAN_DEFAULT_DEFAULT;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public double getDefaultDouble(String name) {
|
||||||
|
return DOUBLE_DEFAULT_DEFAULT;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public float getDefaultFloat(String name) {
|
||||||
|
return FLOAT_DEFAULT_DEFAULT;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public int getDefaultInt(String name) {
|
||||||
|
return INT_DEFAULT_DEFAULT;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public long getDefaultLong(String name) {
|
||||||
|
return LONG_DEFAULT_DEFAULT;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public String getDefaultString(String name) {
|
||||||
|
return STRING_DEFAULT_DEFAULT;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public double getDouble(String name) {
|
||||||
|
return getNode().getDouble(name, DOUBLE_DEFAULT_DEFAULT);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public float getFloat(String name) {
|
||||||
|
return getNode().getFloat(name, FLOAT_DEFAULT_DEFAULT);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public int getInt(String name) {
|
||||||
|
return getNode().getInt(name, INT_DEFAULT_DEFAULT);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public long getLong(String name) {
|
||||||
|
return getNode().getLong(name, LONG_DEFAULT_DEFAULT);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public String getString(String name) {
|
||||||
|
return getNode().get(name, STRING_DEFAULT_DEFAULT);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public boolean isDefault(String name) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public boolean needsSaving() {
|
||||||
|
try {
|
||||||
|
return getNode().keys().length > 0;
|
||||||
|
} catch (BackingStoreException e) {
|
||||||
|
// ignore
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public void putValue(String name, String value) {
|
||||||
|
throw new UnsupportedOperationException();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public void setDefault(String name, double value) {
|
||||||
|
throw new UnsupportedOperationException();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public void setDefault(String name, float value) {
|
||||||
|
throw new UnsupportedOperationException();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public void setDefault(String name, int value) {
|
||||||
|
throw new UnsupportedOperationException();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public void setDefault(String name, long value) {
|
||||||
|
throw new UnsupportedOperationException();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public void setDefault(String name, String defaultObject) {
|
||||||
|
throw new UnsupportedOperationException();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public void setDefault(String name, boolean value) {
|
||||||
|
throw new UnsupportedOperationException();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public void setToDefault(String name) {
|
||||||
|
throw new UnsupportedOperationException();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public void setValue(String name, double value) {
|
||||||
|
throw new UnsupportedOperationException();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public void setValue(String name, float value) {
|
||||||
|
throw new UnsupportedOperationException();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public void setValue(String name, int value) {
|
||||||
|
throw new UnsupportedOperationException();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public void setValue(String name, long value) {
|
||||||
|
throw new UnsupportedOperationException();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public void setValue(String name, String value) {
|
||||||
|
throw new UnsupportedOperationException();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public void setValue(String name, boolean value) {
|
||||||
|
throw new UnsupportedOperationException();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2000, 2006 QNX Software Systems and others.
|
* Copyright (c) 2000, 2008 QNX Software Systems and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -8,20 +8,17 @@
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* QNX Software Systems - Initial API and implementation
|
* QNX Software Systems - Initial API and implementation
|
||||||
* Sergey Prigogin, Google
|
* Sergey Prigogin, Google
|
||||||
|
* Anton Leherbauer (Wind River Systems)
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
package org.eclipse.cdt.internal.ui.preferences;
|
package org.eclipse.cdt.internal.ui.preferences;
|
||||||
|
|
||||||
|
|
||||||
import org.eclipse.core.runtime.IAdaptable;
|
|
||||||
|
|
||||||
import org.eclipse.core.resources.IProject;
|
import org.eclipse.core.resources.IProject;
|
||||||
|
import org.eclipse.core.runtime.IAdaptable;
|
||||||
|
import org.eclipse.jface.preference.IPreferencePageContainer;
|
||||||
import org.eclipse.swt.widgets.Composite;
|
import org.eclipse.swt.widgets.Composite;
|
||||||
import org.eclipse.swt.widgets.Control;
|
import org.eclipse.swt.widgets.Control;
|
||||||
|
|
||||||
import org.eclipse.jface.preference.IPreferencePageContainer;
|
|
||||||
|
|
||||||
import org.eclipse.ui.PlatformUI;
|
import org.eclipse.ui.PlatformUI;
|
||||||
import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer;
|
import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer;
|
||||||
import org.eclipse.ui.preferences.IWorkingCopyManager;
|
import org.eclipse.ui.preferences.IWorkingCopyManager;
|
||||||
|
@ -47,7 +44,7 @@ public class CodeFormatterPreferencePage extends PropertyAndPreferencePage {
|
||||||
setTitle(PreferencesMessages.CodeFormatterPreferencePage_title);
|
setTitle(PreferencesMessages.CodeFormatterPreferencePage_title);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/*
|
||||||
* @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
|
* @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
|
||||||
*/
|
*/
|
||||||
public void createControl(Composite parent) {
|
public void createControl(Composite parent) {
|
||||||
|
@ -65,21 +62,21 @@ public class CodeFormatterPreferencePage extends PropertyAndPreferencePage {
|
||||||
PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(), ICHelpContextIds.CODEFORMATTER_PREFERENCE_PAGE);
|
PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(), ICHelpContextIds.CODEFORMATTER_PREFERENCE_PAGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/*
|
||||||
* @see org.eclipse.cdt.internal.ui.preferences.PropertyAndPreferencePage#createPreferenceContent(org.eclipse.swt.widgets.Composite)
|
* @see org.eclipse.cdt.internal.ui.preferences.PropertyAndPreferencePage#createPreferenceContent(org.eclipse.swt.widgets.Composite)
|
||||||
*/
|
*/
|
||||||
protected Control createPreferenceContent(Composite composite) {
|
protected Control createPreferenceContent(Composite composite) {
|
||||||
return fConfigurationBlock.createContents(composite);
|
return fConfigurationBlock.createContents(composite);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/*
|
||||||
* @see org.eclipse.cdt.internal.ui.preferences.PropertyAndPreferencePage#hasProjectSpecificOptions(org.eclipse.core.resources.IProject)
|
* @see org.eclipse.cdt.internal.ui.preferences.PropertyAndPreferencePage#hasProjectSpecificOptions(org.eclipse.core.resources.IProject)
|
||||||
*/
|
*/
|
||||||
protected boolean hasProjectSpecificOptions(IProject project) {
|
protected boolean hasProjectSpecificOptions(IProject project) {
|
||||||
return fConfigurationBlock.hasProjectSpecificOptions(project);
|
return fConfigurationBlock.hasProjectSpecificOptions(project);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/*
|
||||||
* @see org.eclipse.cdt.internal.ui.preferences.PropertyAndPreferencePage#enableProjectSpecificSettings(boolean)
|
* @see org.eclipse.cdt.internal.ui.preferences.PropertyAndPreferencePage#enableProjectSpecificSettings(boolean)
|
||||||
*/
|
*/
|
||||||
protected void enableProjectSpecificSettings(boolean useProjectSpecificSettings) {
|
protected void enableProjectSpecificSettings(boolean useProjectSpecificSettings) {
|
||||||
|
@ -89,23 +86,21 @@ public class CodeFormatterPreferencePage extends PropertyAndPreferencePage {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/*
|
||||||
* @see org.eclipse.cdt.internal.ui.preferences.PropertyAndPreferencePage#getPreferencePageID()
|
* @see org.eclipse.cdt.internal.ui.preferences.PropertyAndPreferencePage#getPreferencePageID()
|
||||||
*/
|
*/
|
||||||
protected String getPreferencePageID() {
|
protected String getPreferencePageID() {
|
||||||
return PREF_ID;
|
return PREF_ID;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/*
|
||||||
* @see org.eclipse.cdt.internal.ui.preferences.PropertyAndPreferencePage#getPropertyPageID()
|
* @see org.eclipse.cdt.internal.ui.preferences.PropertyAndPreferencePage#getPropertyPageID()
|
||||||
*/
|
*/
|
||||||
protected String getPropertyPageID() {
|
protected String getPropertyPageID() {
|
||||||
return null;
|
return PROP_ID;
|
||||||
// project specific settings unsupported for now
|
|
||||||
// return PROP_ID;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/*
|
||||||
* @see org.eclipse.jface.dialogs.DialogPage#dispose()
|
* @see org.eclipse.jface.dialogs.DialogPage#dispose()
|
||||||
*/
|
*/
|
||||||
public void dispose() {
|
public void dispose() {
|
||||||
|
@ -115,7 +110,7 @@ public class CodeFormatterPreferencePage extends PropertyAndPreferencePage {
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/*
|
||||||
* @see org.eclipse.jface.preference.IPreferencePage#performDefaults()
|
* @see org.eclipse.jface.preference.IPreferencePage#performDefaults()
|
||||||
*/
|
*/
|
||||||
protected void performDefaults() {
|
protected void performDefaults() {
|
||||||
|
@ -125,7 +120,7 @@ public class CodeFormatterPreferencePage extends PropertyAndPreferencePage {
|
||||||
super.performDefaults();
|
super.performDefaults();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/*
|
||||||
* @see org.eclipse.jface.preference.IPreferencePage#performOk()
|
* @see org.eclipse.jface.preference.IPreferencePage#performOk()
|
||||||
*/
|
*/
|
||||||
public boolean performOk() {
|
public boolean performOk() {
|
||||||
|
@ -135,7 +130,7 @@ public class CodeFormatterPreferencePage extends PropertyAndPreferencePage {
|
||||||
return super.performOk();
|
return super.performOk();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/*
|
||||||
* @see org.eclipse.jface.preference.IPreferencePage#performOk()
|
* @see org.eclipse.jface.preference.IPreferencePage#performOk()
|
||||||
*/
|
*/
|
||||||
public void performApply() {
|
public void performApply() {
|
||||||
|
@ -145,7 +140,7 @@ public class CodeFormatterPreferencePage extends PropertyAndPreferencePage {
|
||||||
super.performApply();
|
super.performApply();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/*
|
||||||
* @see org.eclipse.cdt.internal.ui.preferences.PropertyAndPreferencePage#setElement(org.eclipse.core.runtime.IAdaptable)
|
* @see org.eclipse.cdt.internal.ui.preferences.PropertyAndPreferencePage#setElement(org.eclipse.core.runtime.IAdaptable)
|
||||||
*/
|
*/
|
||||||
public void setElement(IAdaptable element) {
|
public void setElement(IAdaptable element) {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2000, 2007 IBM Corporation and others.
|
* Copyright (c) 2000, 2008 IBM Corporation and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -98,10 +98,7 @@ public class CodeFormatterConfigurationBlock extends ProfileConfigurationBlock {
|
||||||
*/
|
*/
|
||||||
public CodeFormatterConfigurationBlock(IProject project, PreferencesAccess access) {
|
public CodeFormatterConfigurationBlock(IProject project, PreferencesAccess access) {
|
||||||
super(project, access, DIALOGSTORE_LASTSAVELOADPATH);
|
super(project, access, DIALOGSTORE_LASTSAVELOADPATH);
|
||||||
if (project == null) {
|
fCustomCodeFormatterBlock= new CustomCodeFormatterBlock(project, access);
|
||||||
//TLETODO formatter customizable on project level?
|
|
||||||
fCustomCodeFormatterBlock= new CustomCodeFormatterBlock(access);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected IProfileVersioner createProfileVersioner() {
|
protected IProfileVersioner createProfileVersioner() {
|
||||||
|
@ -116,12 +113,9 @@ public class CodeFormatterConfigurationBlock extends ProfileConfigurationBlock {
|
||||||
return new FormatterProfileManager(profiles, context, access, profileVersioner);
|
return new FormatterProfileManager(profiles, context, access, profileVersioner);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
protected void configurePreview(Composite composite, int numColumns, ProfileManager profileManager) {
|
protected void configurePreview(Composite composite, int numColumns, ProfileManager profileManager) {
|
||||||
if (fCustomCodeFormatterBlock != null) {
|
fCustomCodeFormatterBlock.createContents(composite);
|
||||||
fCustomCodeFormatterBlock.createContents(composite);
|
|
||||||
}
|
|
||||||
|
|
||||||
createLabel(composite, FormatterMessages.CodingStyleConfigurationBlock_preview_label_text, numColumns);
|
createLabel(composite, FormatterMessages.CodingStyleConfigurationBlock_preview_label_text, numColumns);
|
||||||
TranslationUnitPreview result= new TranslationUnitPreview(profileManager.getSelected().getSettings(), composite);
|
TranslationUnitPreview result= new TranslationUnitPreview(profileManager.getSelected().getSettings(), composite);
|
||||||
result.setFormatterId(fCustomCodeFormatterBlock.getFormatterId());
|
result.setFormatterId(fCustomCodeFormatterBlock.getFormatterId());
|
||||||
|
@ -138,7 +132,6 @@ public class CodeFormatterConfigurationBlock extends ProfileConfigurationBlock {
|
||||||
new PreviewController(profileManager);
|
new PreviewController(profileManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
protected ModifyDialog createModifyDialog(Shell shell, Profile profile, ProfileManager profileManager, ProfileStore profileStore, boolean newProfile) {
|
protected ModifyDialog createModifyDialog(Shell shell, Profile profile, ProfileManager profileManager, ProfileStore profileStore, boolean newProfile) {
|
||||||
return new FormatterModifyDialog(shell, profile, profileManager, profileStore, newProfile, FORMATTER_DIALOG_PREFERENCE_KEY, DIALOGSTORE_LASTSAVELOADPATH);
|
return new FormatterModifyDialog(shell, profile, profileManager, profileStore, newProfile, FORMATTER_DIALOG_PREFERENCE_KEY, DIALOGSTORE_LASTSAVELOADPATH);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2000, 2006 QNX Software Systems and others.
|
* Copyright (c) 2000, 2008 QNX Software Systems and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -18,11 +18,13 @@ import java.util.Iterator;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Observable;
|
import java.util.Observable;
|
||||||
|
|
||||||
|
import org.eclipse.core.resources.IProject;
|
||||||
import org.eclipse.core.runtime.IConfigurationElement;
|
import org.eclipse.core.runtime.IConfigurationElement;
|
||||||
import org.eclipse.core.runtime.IExtension;
|
import org.eclipse.core.runtime.IExtension;
|
||||||
import org.eclipse.core.runtime.IExtensionPoint;
|
import org.eclipse.core.runtime.IExtensionPoint;
|
||||||
import org.eclipse.core.runtime.Platform;
|
import org.eclipse.core.runtime.Platform;
|
||||||
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
|
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
|
||||||
|
import org.eclipse.core.runtime.preferences.IScopeContext;
|
||||||
import org.eclipse.jface.resource.JFaceResources;
|
import org.eclipse.jface.resource.JFaceResources;
|
||||||
import org.eclipse.swt.SWT;
|
import org.eclipse.swt.SWT;
|
||||||
import org.eclipse.swt.events.SelectionAdapter;
|
import org.eclipse.swt.events.SelectionAdapter;
|
||||||
|
@ -47,7 +49,7 @@ import org.eclipse.cdt.internal.ui.preferences.PreferencesAccess;
|
||||||
*/
|
*/
|
||||||
public class CustomCodeFormatterBlock extends Observable {
|
public class CustomCodeFormatterBlock extends Observable {
|
||||||
|
|
||||||
private HashMap idMap = new HashMap();
|
private HashMap<String, String> idMap = new HashMap<String, String>();
|
||||||
private IEclipsePreferences fPrefs;
|
private IEclipsePreferences fPrefs;
|
||||||
private String fDefaultFormatterId;
|
private String fDefaultFormatterId;
|
||||||
private Combo fFormatterCombo;
|
private Combo fFormatterCombo;
|
||||||
|
@ -55,11 +57,29 @@ public class CustomCodeFormatterBlock extends Observable {
|
||||||
private static final String ATTR_ID = "id"; //$NON-NLS-1$
|
private static final String ATTR_ID = "id"; //$NON-NLS-1$
|
||||||
private static final String DEFAULT = FormatterMessages.CustomCodeFormatterBlock_default_formatter;
|
private static final String DEFAULT = FormatterMessages.CustomCodeFormatterBlock_default_formatter;
|
||||||
|
|
||||||
public CustomCodeFormatterBlock(PreferencesAccess access) {
|
public CustomCodeFormatterBlock(IProject project, PreferencesAccess access) {
|
||||||
fPrefs = access.getInstanceScope().getNode(CUIPlugin.PLUGIN_ID);
|
final IScopeContext scope;
|
||||||
IEclipsePreferences defaults= access.getDefaultScope().getNode(CUIPlugin.PLUGIN_ID);
|
final IEclipsePreferences defaults;
|
||||||
|
if (project != null) {
|
||||||
|
scope= access.getProjectScope(project);
|
||||||
|
defaults= access.getInstanceScope().getNode(CCorePlugin.PLUGIN_ID);
|
||||||
|
} else {
|
||||||
|
scope= access.getInstanceScope();
|
||||||
|
defaults= access.getDefaultScope().getNode(CCorePlugin.PLUGIN_ID);
|
||||||
|
}
|
||||||
|
fPrefs= scope.getNode(CCorePlugin.PLUGIN_ID);
|
||||||
fDefaultFormatterId= defaults.get(CCorePreferenceConstants.CODE_FORMATTER, null);
|
fDefaultFormatterId= defaults.get(CCorePreferenceConstants.CODE_FORMATTER, null);
|
||||||
|
if (fDefaultFormatterId == null) {
|
||||||
|
// backward compatibility: use UI prefs
|
||||||
|
IEclipsePreferences instance= access.getInstanceScope().getNode(CUIPlugin.PLUGIN_ID);
|
||||||
|
fDefaultFormatterId= instance.get(CCorePreferenceConstants.CODE_FORMATTER, null);
|
||||||
|
if (fDefaultFormatterId != null) {
|
||||||
|
instance.remove(CCorePreferenceConstants.CODE_FORMATTER);
|
||||||
|
if (project != null) {
|
||||||
|
defaults.put(CCorePreferenceConstants.CODE_FORMATTER, fDefaultFormatterId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
initializeFormatters();
|
initializeFormatters();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -68,8 +88,8 @@ public class CustomCodeFormatterBlock extends Observable {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
String text = fFormatterCombo.getText();
|
String text = fFormatterCombo.getText();
|
||||||
String formatterId = (String)idMap.get(text);
|
String formatterId = idMap.get(text);
|
||||||
if (formatterId != null && formatterId.length() > 0) {
|
if (formatterId != null && !formatterId.equals(fDefaultFormatterId)) {
|
||||||
fPrefs.put(CCorePreferenceConstants.CODE_FORMATTER, formatterId);
|
fPrefs.put(CCorePreferenceConstants.CODE_FORMATTER, formatterId);
|
||||||
} else {
|
} else {
|
||||||
// simply reset to the default one.
|
// simply reset to the default one.
|
||||||
|
@ -78,11 +98,7 @@ public class CustomCodeFormatterBlock extends Observable {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void performDefaults() {
|
public void performDefaults() {
|
||||||
if (fDefaultFormatterId != null) {
|
fPrefs.remove(CCorePreferenceConstants.CODE_FORMATTER);
|
||||||
fPrefs.put(CCorePreferenceConstants.CODE_FORMATTER, fDefaultFormatterId);
|
|
||||||
} else {
|
|
||||||
fPrefs.remove(CCorePreferenceConstants.CODE_FORMATTER);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fFormatterCombo == null) {
|
if (fFormatterCombo == null) {
|
||||||
return;
|
return;
|
||||||
|
@ -110,7 +126,7 @@ public class CustomCodeFormatterBlock extends Observable {
|
||||||
if (fFormatterCombo == null) {
|
if (fFormatterCombo == null) {
|
||||||
return fPrefs.get(CCorePreferenceConstants.CODE_FORMATTER, fDefaultFormatterId);
|
return fPrefs.get(CCorePreferenceConstants.CODE_FORMATTER, fDefaultFormatterId);
|
||||||
}
|
}
|
||||||
String formatterId= (String)idMap.get(fFormatterCombo.getText());
|
String formatterId= idMap.get(fFormatterCombo.getText());
|
||||||
return formatterId;
|
return formatterId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -134,9 +150,9 @@ public class CustomCodeFormatterBlock extends Observable {
|
||||||
handleFormatterChanged();
|
handleFormatterChanged();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Iterator items = idMap.keySet().iterator();
|
Iterator<String> items = idMap.keySet().iterator();
|
||||||
while (items.hasNext()) {
|
while (items.hasNext()) {
|
||||||
fFormatterCombo.add((String) items.next());
|
fFormatterCombo.add(items.next());
|
||||||
}
|
}
|
||||||
|
|
||||||
final String noteTitle= FormatterMessages.CustomCodeFormatterBlock_formatter_note;
|
final String noteTitle= FormatterMessages.CustomCodeFormatterBlock_formatter_note;
|
||||||
|
@ -175,8 +191,8 @@ public class CustomCodeFormatterBlock extends Observable {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initializeFormatters() {
|
private void initializeFormatters() {
|
||||||
idMap = new HashMap();
|
idMap = new HashMap<String, String>();
|
||||||
idMap.put(DEFAULT, null);
|
idMap.put(DEFAULT, CCorePreferenceConstants.DEFAULT_CODE_FORMATTER);
|
||||||
IExtensionPoint point = Platform.getExtensionRegistry().getExtensionPoint(CCorePlugin.PLUGIN_ID, CCorePlugin.FORMATTER_EXTPOINT_ID);
|
IExtensionPoint point = Platform.getExtensionRegistry().getExtensionPoint(CCorePlugin.PLUGIN_ID, CCorePlugin.FORMATTER_EXTPOINT_ID);
|
||||||
if (point != null) {
|
if (point != null) {
|
||||||
IExtension[] exts = point.getExtensions();
|
IExtension[] exts = point.getExtensions();
|
||||||
|
|
|
@ -618,4 +618,28 @@ public class EditorUtility {
|
||||||
}
|
}
|
||||||
return store;
|
return store;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the C project for a given editor input or <code>null</code> if no corresponding
|
||||||
|
* C project exists.
|
||||||
|
*
|
||||||
|
* @param input the editor input
|
||||||
|
* @return the corresponding C project
|
||||||
|
*
|
||||||
|
* @since 5.0
|
||||||
|
*/
|
||||||
|
public static ICProject getCProject(IEditorInput input) {
|
||||||
|
ICProject cProject= null;
|
||||||
|
if (input instanceof IFileEditorInput) {
|
||||||
|
IProject project= ((IFileEditorInput)input).getFile().getProject();
|
||||||
|
if (project != null) {
|
||||||
|
cProject= CoreModel.getDefault().create(project);
|
||||||
|
if (!cProject.exists())
|
||||||
|
cProject= null;
|
||||||
|
}
|
||||||
|
} else if (input instanceof ITranslationUnitEditorInput) {
|
||||||
|
cProject= ((ITranslationUnitEditorInput)input).getTranslationUnit().getCProject();
|
||||||
|
}
|
||||||
|
return cProject;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue