diff --git a/core/org.eclipse.cdt.ui/ChangeLog b/core/org.eclipse.cdt.ui/ChangeLog index 63fd8a0f3f7..6c59f1123c5 100644 --- a/core/org.eclipse.cdt.ui/ChangeLog +++ b/core/org.eclipse.cdt.ui/ChangeLog @@ -1,3 +1,17 @@ +2005-04-12 Alain Magloire + Fix for PR 91163, 91165 and 91169 + * src/org/eclipse/cdt/internal/ui/compare/CMergeViewer.java + * src/org/eclipse/cdt/internal/ui/editor/CEditor.java + * src/org/eclipse/cdt/internal/ui/editor/CEditor.properties + * src/org/eclipse/cdt/internal/ui/editor/asm/AsmTextEditor.java + * src/org/eclipse/cdt/internal/ui/preferences/AbstractPreferencePage.java + * src/org/eclipse/cdt/internal/ui/preferences/CEditorPreferencePage.java + * src/org/eclipse/cdt/internal/ui/preferences/CodeAssistPreferencePage.java + * src/org/eclipse/cdt/internal/ui/preferences/CSourcePreviewerUpdater.java + * src/org/eclipse/cdt/internal/ui/text/CSourceViewerConfiguration.java + * src/org/eclipse/cdt/internal/ui/text/CTextTools.java + * src/org/eclipse/cdt/ui/CUIPlugin.java + 2005-04-12 Alain Magloire - icons/full: Remove obsolete directory. diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/compare/CMergeViewer.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/compare/CMergeViewer.java index 01364471552..7ba9691e13b 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/compare/CMergeViewer.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/compare/CMergeViewer.java @@ -38,7 +38,6 @@ public class CMergeViewer extends TextMergeViewer { private IPreferenceStore fPreferenceStore; private boolean fUseSystemColors; private CSourceViewerConfiguration fSourceViewerConfiguration; - private CTextTools fCTextTools; public CMergeViewer(Composite parent, int styles, CompareConfiguration mp) { super(parent, styles, mp); @@ -101,7 +100,8 @@ public class CMergeViewer extends TextMergeViewer { } } - if (getTextTools().affectsBehavior(event)) { + if (getSourceViewerConfiguration().affectsBehavior(event)) { + getSourceViewerConfiguration().adaptToPreferenceChange(event); invalidateTextPresentation(); } } @@ -118,16 +118,9 @@ public class CMergeViewer extends TextMergeViewer { return PreferenceConverter.getColor(store, key); } - private CTextTools getTextTools() { - if (fCTextTools == null) { - fCTextTools = CUIPlugin.getDefault().getTextTools(); - } - return fCTextTools; - } - private CSourceViewerConfiguration getSourceViewerConfiguration() { if (fSourceViewerConfiguration == null) { - CTextTools tools= getTextTools(); + CTextTools tools= CUIPlugin.getDefault().getTextTools(); fSourceViewerConfiguration = new CSourceViewerConfiguration(tools, null); } return fSourceViewerConfiguration; diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditor.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditor.java index e3f006a9eae..d9786fc6b33 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditor.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditor.java @@ -25,7 +25,6 @@ import org.eclipse.cdt.internal.ui.actions.FoldingActionGroup; import org.eclipse.cdt.internal.ui.actions.GoToNextPreviousMemberAction; import org.eclipse.cdt.internal.ui.actions.RemoveBlockCommentAction; import org.eclipse.cdt.internal.ui.browser.typehierarchy.OpenTypeHierarchyAction; -import org.eclipse.cdt.internal.ui.editor.asm.AsmTextTools; import org.eclipse.cdt.internal.ui.search.actions.OpenDeclarationsAction; import org.eclipse.cdt.internal.ui.search.actions.SelectionSearchGroup; import org.eclipse.cdt.internal.ui.text.CPairMatcher; @@ -1289,9 +1288,11 @@ public class CEditor extends TextEditor implements ISelectionChangedListener, IS * @see AbstractTextEditor#affectsTextPresentation(PropertyChangeEvent) */ protected boolean affectsTextPresentation(PropertyChangeEvent event) { - CTextTools textTools = CUIPlugin.getDefault().getTextTools(); - AsmTextTools asmTools = CUIPlugin.getDefault().getAsmTextTools(); - return textTools.affectsBehavior(event) || asmTools.affectsBehavior(event); + SourceViewerConfiguration configuration = getSourceViewerConfiguration(); + if (configuration instanceof CSourceViewerConfiguration) { + return ((CSourceViewerConfiguration)configuration).affectsBehavior(event); + } + return false; } /** diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditorMessages.properties b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditorMessages.properties index f3756148575..fae69301ad4 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditorMessages.properties +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditorMessages.properties @@ -171,9 +171,9 @@ CEditor.menu.search=Search EditorUtility.concatModifierStrings= {0} + {1} OpenOnSelection.label=Open On Selection -GotoNextMemeber.description=Goes to next member -GotoNextMemeber.label=Go to &next member -GotoNextMemeber.tooltip=Goes to next member -GotoPrevMemeber.description=Goes to previous member -GotoPrevMemeber.label=Go to &previous member -GotoPrevMemeber.tooltip=Goes to previous member. +GotoNextMember.description=Goes to next member +GotoNextMember.label=Go to &next member +GotoNextMember.tooltip=Goes to next member +GotoPrevMember.description=Goes to previous member +GotoPrevMember.label=Go to &previous member +GotoPrevMember.tooltip=Goes to previous member. diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/asm/AsmTextEditor.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/asm/AsmTextEditor.java index adb60f05375..13fb30cb519 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/asm/AsmTextEditor.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/asm/AsmTextEditor.java @@ -23,8 +23,8 @@ import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.actions.WorkspaceModifyOperation; import org.eclipse.ui.dialogs.SaveAsDialog; +import org.eclipse.ui.editors.text.TextEditor; import org.eclipse.ui.part.FileEditorInput; -import org.eclipse.ui.texteditor.AbstractDecoratedTextEditor; import org.eclipse.ui.texteditor.DefaultRangeIndicator; import org.eclipse.ui.texteditor.ITextEditorActionConstants; @@ -35,7 +35,7 @@ import org.eclipse.ui.texteditor.ITextEditorActionConstants; /** * Assembly text editor */ -public class AsmTextEditor extends AbstractDecoratedTextEditor { +public class AsmTextEditor extends TextEditor { //public class AsmTextEditor extends StatusTextEditor { // FIXME: Should this editor have a different preference store ? // For now we are sharing with the CEditor and any changes will in the diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/AbstractPreferencePage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/AbstractPreferencePage.java index 6c9d6165ce9..1ffaae881c4 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/AbstractPreferencePage.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/AbstractPreferencePage.java @@ -19,6 +19,7 @@ import java.util.Map; import org.eclipse.cdt.internal.ui.dialogs.StatusInfo; import org.eclipse.cdt.internal.ui.dialogs.StatusUtil; import org.eclipse.cdt.internal.ui.util.PixelConverter; +import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.ui.PreferenceConstants; import org.eclipse.core.runtime.IStatus; import org.eclipse.jface.preference.PreferenceConverter; @@ -47,6 +48,14 @@ public abstract class AbstractPreferencePage extends PreferencePage implements I protected OverlayPreferenceStore fOverlayStore; + /** + * List of master/slave listeners when there's a dependency. + * + * @see #createDependency(Button, String, Control) + * @since 3.0 + */ + private ArrayList fMasterSlaveListeners= new ArrayList(); + protected Map fTextFields = new HashMap(); private ModifyListener fTextFieldListener = new ModifyListener() { public void modifyText(ModifyEvent e) { @@ -157,6 +166,21 @@ public abstract class AbstractPreferencePage extends PreferencePage implements I filler.setLayoutData(gd); } + protected void createDependency(final Button master, String masterKey, final Control slave) { + indent(slave); + boolean masterState= fOverlayStore.getBoolean(masterKey); + slave.setEnabled(masterState); + SelectionListener listener= new SelectionListener() { + public void widgetSelected(SelectionEvent e) { + slave.setEnabled(master.getSelection()); + } + + public void widgetDefaultSelected(SelectionEvent e) {} + }; + master.addSelectionListener(listener); + fMasterSlaveListeners.add(listener); + } + protected void numberFieldChanged(Text textControl) { String number = textControl.getText(); IStatus status = validatePositiveNumber(number); @@ -245,13 +269,6 @@ public abstract class AbstractPreferencePage extends PreferencePage implements I protected abstract OverlayPreferenceStore.OverlayKey[] createOverlayStoreKeys(); - public void createControl(Composite parent){ - super.createControl(parent); - fOverlayStore.load(); - fOverlayStore.start(); - initializeFields(); - } - protected void initializeFields() { Iterator e = fColorButtons.keySet().iterator(); @@ -290,6 +307,7 @@ public abstract class AbstractPreferencePage extends PreferencePage implements I */ public boolean performOk() { fOverlayStore.propagate(); + CUIPlugin.getDefault().savePluginPreferences(); return true; } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CEditorPreferencePage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CEditorPreferencePage.java index 69ad9b1c9e8..ff5a7112a84 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CEditorPreferencePage.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CEditorPreferencePage.java @@ -25,8 +25,6 @@ import org.eclipse.jface.text.Document; import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.IDocumentPartitioner; import org.eclipse.jface.text.source.SourceViewer; -import org.eclipse.jface.util.IPropertyChangeListener; -import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; @@ -71,14 +69,6 @@ public class CEditorPreferencePage extends AbstractPreferencePage implements IWo private CTextTools fCTextTools; - /** - * List of master/slave listeners when there's a dependency. - * - * @see #createDependency(Button, String, Control) - * @since 3.0 - */ - private ArrayList fMasterSlaveListeners= new ArrayList(); - protected List fList; protected ColorEditor fForegroundColorEditor; protected Button fBoldCheckBox; @@ -287,8 +277,9 @@ public class CEditorPreferencePage extends AbstractPreferencePage implements IWo private Control createPreviewer(Composite parent) { fCTextTools = CUIPlugin.getDefault().getTextTools(); + CSourceViewerConfiguration configuration = new CSourceViewerConfiguration(fCTextTools, null); fPreviewViewer = new SourceViewer(parent, null, SWT.V_SCROLL | SWT.H_SCROLL); - fPreviewViewer.configure(new CSourceViewerConfiguration(fCTextTools, null)); + fPreviewViewer.configure(configuration); fPreviewViewer.getTextWidget().setFont(JFaceResources.getFontRegistry().get(JFaceResources.TEXT_FONT)); fPreviewViewer.setEditable(false); @@ -300,14 +291,7 @@ public class CEditorPreferencePage extends AbstractPreferencePage implements IWo fPreviewViewer.setDocument(document); - fOverlayStore.addPropertyChangeListener(new IPropertyChangeListener() { - public void propertyChange(PropertyChangeEvent event) { - fPreviewViewer.getDocument().set(fPreviewViewer.getDocument().get()); - fPreviewViewer.invalidateTextPresentation(); - //fPreviewViewer.refresh(); - } - }); - + CSourcePreviewerUpdater.registerPreviewer(fPreviewViewer, configuration, fOverlayStore); return fPreviewViewer.getControl(); } @@ -355,21 +339,6 @@ public class CEditorPreferencePage extends AbstractPreferencePage implements IWo return link; } - private void createDependency(final Button master, String masterKey, final Control slave) { - indent(slave); - boolean masterState= fOverlayStore.getBoolean(masterKey); - slave.setEnabled(masterState); - SelectionListener listener= new SelectionListener() { - public void widgetSelected(SelectionEvent e) { - slave.setEnabled(master.getSelection()); - } - - public void widgetDefaultSelected(SelectionEvent e) {} - }; - master.addSelectionListener(listener); - fMasterSlaveListeners.add(listener); - } - /* * @see PreferencePage#createContents(Composite) */ @@ -378,6 +347,9 @@ public class CEditorPreferencePage extends AbstractPreferencePage implements IWo fCEditorHoverConfigurationBlock= new CEditorHoverConfigurationBlock(this, fOverlayStore); fFoldingConfigurationBlock= new FoldingConfigurationBlock(fOverlayStore); + fOverlayStore.load(); + fOverlayStore.start(); + createHeader(parent); TabFolder folder = new TabFolder(parent, SWT.NONE); @@ -409,8 +381,9 @@ public class CEditorPreferencePage extends AbstractPreferencePage implements IWo initializeFields(); - for (int i = 0; i < fListModel.length; i++) + for (int i = 0; i < fListModel.length; i++) { fList.add(fListModel[i][0]); + } fList.getDisplay().asyncExec(new Runnable() { public void run() { fList.select(0); @@ -436,15 +409,13 @@ public class CEditorPreferencePage extends AbstractPreferencePage implements IWo */ protected void performDefaults() { - fOverlayStore.loadDefaults(); - initializeFields(); + super.performDefaults(); + handleListSelection(); fCEditorHoverConfigurationBlock.performDefaults(); fFoldingConfigurationBlock.performDefaults(); - super.performDefaults(); - fPreviewViewer.invalidateTextPresentation(); } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CSourcePreviewerUpdater.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CSourcePreviewerUpdater.java new file mode 100644 index 00000000000..d19243b4803 --- /dev/null +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CSourcePreviewerUpdater.java @@ -0,0 +1,76 @@ +/******************************************************************************* + * Copyright (c) 2000, 2004 QNX Software Systems and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * QNX Software Systems - Initial API and implementation + *******************************************************************************/ + +package org.eclipse.cdt.internal.ui.preferences; + +import org.eclipse.cdt.internal.ui.text.CSourceViewerConfiguration; +import org.eclipse.jface.preference.IPreferenceStore; +import org.eclipse.jface.resource.JFaceResources; +import org.eclipse.jface.text.source.SourceViewer; +import org.eclipse.jface.util.Assert; +import org.eclipse.jface.util.IPropertyChangeListener; +import org.eclipse.jface.util.PropertyChangeEvent; +import org.eclipse.swt.events.DisposeEvent; +import org.eclipse.swt.events.DisposeListener; +import org.eclipse.swt.graphics.Font; + +public class CSourcePreviewerUpdater { + + private CSourcePreviewerUpdater() { + } + + /** + * Creates a Java source preview updater for the given viewer, configuration and preference store. + * + * @param viewer the viewer + * @param configuration the configuration + * @param preferenceStore the preference store + */ + static public void registerPreviewer(final SourceViewer viewer, final CSourceViewerConfiguration configuration, final IPreferenceStore preferenceStore) { + Assert.isNotNull(viewer); + Assert.isNotNull(configuration); + Assert.isNotNull(preferenceStore); + final IPropertyChangeListener fontChangeListener= new IPropertyChangeListener() { + /* + * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent) + */ + public void propertyChange(PropertyChangeEvent event) { + if (event.getProperty().equals(JFaceResources.TEXT_FONT)) { + Font font= JFaceResources.getTextFont(); + viewer.getTextWidget().setFont(font); + } + } + }; + final IPropertyChangeListener propertyChangeListener= new IPropertyChangeListener() { + /* + * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent) + */ + public void propertyChange(PropertyChangeEvent event) { + if (configuration.affectsBehavior(event)) { + configuration.adaptToPreferenceChange(event); + viewer.invalidateTextPresentation(); + } + } + }; + viewer.getTextWidget().addDisposeListener(new DisposeListener() { + /* + * @see org.eclipse.swt.events.DisposeListener#widgetDisposed(org.eclipse.swt.events.DisposeEvent) + */ + public void widgetDisposed(DisposeEvent e) { + preferenceStore.removePropertyChangeListener(propertyChangeListener); + JFaceResources.getFontRegistry().removeListener(fontChangeListener); + } + }); + JFaceResources.getFontRegistry().addListener(fontChangeListener); + preferenceStore.addPropertyChangeListener(propertyChangeListener); + } + +} diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CodeAssistPreferencePage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CodeAssistPreferencePage.java index f6cb78146d1..2c444825bcc 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CodeAssistPreferencePage.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CodeAssistPreferencePage.java @@ -73,6 +73,9 @@ public class CodeAssistPreferencePage extends AbstractPreferencePage { * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite) */ protected Control createContents(Composite parent) { + fOverlayStore.load(); + fOverlayStore.start(); + Composite contentAssistComposite = new Composite(parent, SWT.NULL); GridLayout layout = new GridLayout(); layout.numColumns = 2; @@ -140,6 +143,8 @@ public class CodeAssistPreferencePage extends AbstractPreferencePage { // label= PreferencesMessages.getString("CEditorPreferencePage.ContentAssistPage.parameterForegroundColor"); // addColorButton(contentAssistComposite, label, ContentAssistPreference.PARAMETERS_FOREGROUND, 0); + initializeFields(); + PlatformUI.getWorkbench().getHelpSystem().setHelp(contentAssistComposite, ICHelpContextIds.C_EDITOR_CONTENT_ASSIST_PREF_PAGE); return contentAssistComposite; diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CSourceViewerConfiguration.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CSourceViewerConfiguration.java index dee42077bac..3faea3a2962 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CSourceViewerConfiguration.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CSourceViewerConfiguration.java @@ -49,7 +49,7 @@ import org.eclipse.jface.text.rules.DefaultDamagerRepairer; import org.eclipse.jface.text.rules.RuleBasedScanner; import org.eclipse.jface.text.source.IAnnotationHover; import org.eclipse.jface.text.source.ISourceViewer; -import org.eclipse.jface.text.source.SourceViewerConfiguration; +import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.editors.text.TextSourceViewerConfiguration; @@ -422,6 +422,20 @@ public class CSourceViewerConfiguration extends TextSourceViewerConfiguration { } + public boolean affectsBehavior(PropertyChangeEvent event) { + return fTextTools.affectsBehavior(event); + } + + /** + * Adapts the behavior of the contained components to the change + * encoded in the given event. + * + * @param event the event to whch to adapt + */ + public void adaptToPreferenceChange(PropertyChangeEvent event) { + fTextTools.adaptToPreferenceChange(event); + } + protected IPreferenceStore getPreferenceStore() { return CUIPlugin.getDefault().getPreferenceStore(); } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CTextTools.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CTextTools.java index 0a500f9a4b7..64579c07c31 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CTextTools.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CTextTools.java @@ -228,7 +228,7 @@ public class CTextTools { * * @param event the event to whch to adapt */ - protected void adaptToPreferenceChange(PropertyChangeEvent event) { + public void adaptToPreferenceChange(PropertyChangeEvent event) { if (fCodeScanner.affectsBehavior(event)) fCodeScanner.adaptToPreferenceChange(event); if (fCppCodeScanner.affectsBehavior(event)) diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CUIPlugin.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CUIPlugin.java index 9c7a7642b5a..f0b451948bc 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CUIPlugin.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CUIPlugin.java @@ -34,7 +34,6 @@ import org.eclipse.cdt.internal.ui.CElementAdapterFactory; import org.eclipse.cdt.internal.ui.ICStatusConstants; import org.eclipse.cdt.internal.ui.IContextMenuConstants; import org.eclipse.cdt.internal.ui.ResourceAdapterFactory; -import org.eclipse.cdt.internal.ui.browser.typehierarchy.ITypeHierarchyViewPart; import org.eclipse.cdt.internal.ui.buildconsole.BuildConsoleManager; import org.eclipse.cdt.internal.ui.editor.CDocumentProvider; import org.eclipse.cdt.internal.ui.editor.CustomBufferFactory;