Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] CEditor update

Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui/ChangeLog,v
retrieving revision 1.93
diff -u -r1.93 ChangeLog
--- ChangeLog    17 Apr 2003 16:56:13 -0000    1.93
+++ ChangeLog    21 Apr 2003 16:58:53 -0000
@@ -1,3 +1,23 @@
+2003-04-21 David Inglis
+
+    Update CEditor to be 2.0/2.1 compliant.
+ + * src/org/eclipse/cdt/internal/ui/editor/CEditor.java
+    * src/org/eclipse/cdt/internal/ui/editor/CEditorMessages.properties
+    * src/org/eclipse/cdt/internal/ui/editor/asm/AsmTextEditor.java
+ * src/org/eclipse/cdt/internal/ui/preferences/CEditorPreferencePage.java
+    * src/org/eclipse/cdt/internal/ui/text/CPairMatcher.java
+
+    * src/org/eclipse/cdt/internal/ui/editor/BracketPainter.java (removed)
+    * src/org/eclipse/cdt/internal/ui/editor/IPainter.java (removed)
+    * src/org/eclipse/cdt/internal/ui/editor/LinePainter.java (removed)
+    * src/org/eclipse/cdt/internal/ui/editor/OverviewRuler.java (removed)
+    * src/org/eclipse/cdt/internal/ui/editor/PaintManager.java (removed)
+ * src/org/eclipse/cdt/internal/ui/editor/PrintMarginPainter.java (removed)
+    * src/org/eclipse/cdt/internal/ui/editor/ProblemPainter.java (removed)
+ * src/org/eclipse/cdt/internal/ui/preferences/CLaunchingPropertyPage.java (removed)
+    * src/org/eclipse/cdt/internal/ui/util/CoreUtility.java (removed)
+ 2003-04-17 Alain Magloire

    Bug 36584
Index: src/org/eclipse/cdt/internal/ui/editor/BracketPainter.java
===================================================================
RCS file: src/org/eclipse/cdt/internal/ui/editor/BracketPainter.java
diff -N src/org/eclipse/cdt/internal/ui/editor/BracketPainter.java
--- src/org/eclipse/cdt/internal/ui/editor/BracketPainter.java 27 Mar 2003 20:01:57 -0000 1.3
+++ /dev/null    1 Jan 1970 00:00:00 -0000
@@ -1,169 +0,0 @@
-package org.eclipse.cdt.internal.ui.editor;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.events.PaintListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Point;
-
-import org.eclipse.cdt.internal.ui.text.CPairMatcher;
-import org.eclipse.jface.text.IRegion;
-import org.eclipse.jface.text.Position;
-import org.eclipse.jface.text.source.ISourceViewer;
-
-
-
-
-public final class BracketPainter implements IPainter, PaintListener {
- - private CPairMatcher fMatcher= new CPairMatcher(new char[] { '{', '}', '(', ')', '[', ']' });
-    private Position fBracketPosition= new Position(0, 0);
-    private int fAnchor;
- - private boolean fIsActive= false;
-    private ISourceViewer fSourceViewer;
-    private StyledText fTextWidget;
-    private Color fColor;
-    private boolean fNoBox;
- - private IPositionManager fPositionManager; - - - public BracketPainter(ISourceViewer sourceViewer) {
-        fSourceViewer= sourceViewer;
-        fTextWidget= sourceViewer.getTextWidget();
-    }
- - public void setHighlightColor(Color color) {
-        fColor= color;
-    }
-
-    public void setHighlightStyle(boolean nobox) {
-        fNoBox = nobox;
-    }
- - public void dispose() {
-        if (fMatcher != null) {
-            fMatcher.dispose();
-            fMatcher= null;
-        }
- - fColor= null;
-        fTextWidget= null;
-    }
- - public void deactivate(boolean redraw) {
-        if (fIsActive) {
-            fIsActive= false;
-            fTextWidget.removePaintListener(this);
-            if (fPositionManager != null)
-                fPositionManager.removeManagedPosition(fBracketPosition);
-            if (redraw)
-                handleDrawRequest(null);
-        }
-    }
- - public void paintControl(PaintEvent event) {
-        if (fTextWidget != null)
-            handleDrawRequest(event.gc);
-    }
- - private void handleDrawRequest(GC gc) { - - if (fBracketPosition.isDeleted)
-            return;
- - int length= fBracketPosition.getLength();
-        if (length < 1)
-            return;
- - int offset= fBracketPosition.getOffset();
-        IRegion region= fSourceViewer.getVisibleRegion();
- - if (region.getOffset() <= offset && region.getOffset() + region.getLength() >= offset + length) {
-            offset -= region.getOffset();
-            if (CPairMatcher.RIGHT == fAnchor)
-                draw(gc, offset, 1);
-            else
- draw(gc, offset + length -1, 1); - }
-    }
- - private void draw(GC gc, int offset, int length) {
-        if (gc != null) {
-            Point left= fTextWidget.getLocationAtOffset(offset);
-            Point right= fTextWidget.getLocationAtOffset(offset + length);
- - gc.setForeground(fColor);
-            if(fNoBox) {
- gc.drawString(fTextWidget.getTextRange(offset, 1), left.x, left.y, true);
-            } else {
- gc.drawRectangle(left.x, left.y, right.x - left.x - 1, gc.getFontMetrics().getHeight() - 1); - } - } else {
-            fTextWidget.redrawRange(offset, length, true);
-        }
-    }
- - /*
-     * @see IPainter#paint(int)
-     */
-    public void paint(int reason) {
-        Point selection= fSourceViewer.getSelectedRange();
-        if (selection.y > 0) {
-            deactivate(true);
-            return;
-        }
- - IRegion pair= fMatcher.match(fSourceViewer.getDocument(), selection.x);
-        if (pair == null) {
-            deactivate(true);
-            return;
-        }
- - if (fIsActive) {
-            // only if different
-            if (pair.getOffset() != fBracketPosition.getOffset() ||
-                    pair.getLength() != fBracketPosition.getLength() ||
-                    fMatcher.getAnchor() != fAnchor) {
- - // remove old highlighting
-                handleDrawRequest(null);
-                // update position
-                fBracketPosition.isDeleted= false;
-                fBracketPosition.offset= pair.getOffset();
-                fBracketPosition.length= pair.getLength();
-                fAnchor= fMatcher.getAnchor();
-                // apply new highlighting
-                handleDrawRequest(null);
- - }
-        } else {
- - fIsActive= true; - - fBracketPosition.isDeleted= false;
-            fBracketPosition.offset= pair.getOffset();
-            fBracketPosition.length= pair.getLength();
-            fAnchor= fMatcher.getAnchor();
- - fTextWidget.addPaintListener(this);
-            fPositionManager.addManagedPosition(fBracketPosition);
-            handleDrawRequest(null);
-        }
-    }
- - /*
-     * @see IPainter#setPositionManager(IPositionManager)
-     */
-    public void setPositionManager(IPositionManager manager) {
-        fPositionManager= manager;
-    }
-}
-
Index: src/org/eclipse/cdt/internal/ui/editor/CEditor.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditor.java,v
retrieving revision 1.22
diff -u -r1.22 CEditor.java
--- src/org/eclipse/cdt/internal/ui/editor/CEditor.java 17 Apr 2003 16:55:46 -0000 1.22 +++ src/org/eclipse/cdt/internal/ui/editor/CEditor.java 21 Apr 2003 16:58:55 -0000
@@ -4,12 +4,10 @@
 * (c) Copyright IBM Corp. 2000, 2001.
 * All Rights Reserved.
 */
-
-import java.lang.reflect.InvocationTargetException;
+
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
-import java.util.Map;
import java.util.StringTokenizer;

import org.eclipse.cdt.core.model.CModelException;
@@ -19,28 +17,19 @@
import org.eclipse.cdt.core.model.ISourceReference;
import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.internal.ui.IContextMenuConstants;
+import org.eclipse.cdt.internal.ui.text.CPairMatcher;
import org.eclipse.cdt.internal.ui.text.CSourceViewerConfiguration;
import org.eclipse.cdt.internal.ui.text.CTextTools;
-import org.eclipse.cdt.internal.ui.text.IColorManager;
import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IWorkspaceRoot;
-import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IStatusLineManager;
import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.dialogs.ProgressMonitorDialog;
import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.preference.PreferenceConverter;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.DocumentCommand;
import org.eclipse.jface.text.IDocument;
@@ -50,13 +39,13 @@
import org.eclipse.jface.text.ITextViewerExtension;
import org.eclipse.jface.text.Position;
import org.eclipse.jface.text.source.Annotation;
-import org.eclipse.jface.text.source.AnnotationRulerColumn;
-import org.eclipse.jface.text.source.CompositeRuler;
+import org.eclipse.jface.text.source.IAnnotationAccess;
import org.eclipse.jface.text.source.IAnnotationModel;
+import org.eclipse.jface.text.source.IOverviewRuler;
+import org.eclipse.jface.text.source.ISharedTextColors;
import org.eclipse.jface.text.source.ISourceViewer;
import org.eclipse.jface.text.source.IVerticalRuler;
-import org.eclipse.jface.text.source.IVerticalRulerColumn;
-import org.eclipse.jface.text.source.LineNumberRulerColumn;
+import org.eclipse.jface.text.source.OverviewRuler;
import org.eclipse.jface.text.source.SourceViewer;
import org.eclipse.jface.text.source.SourceViewerConfiguration;
import org.eclipse.jface.util.PropertyChangeEvent;
@@ -66,42 +55,29 @@
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.custom.VerifyKeyListener;
-import org.eclipse.swt.events.KeyListener;
-import org.eclipse.swt.events.MouseListener;
-import org.eclipse.swt.events.VerifyEvent;
-import org.eclipse.swt.events.VerifyListener;
-import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Layout;
-import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IEditorActionBarContributor;
import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.IFileEditorInput;
import org.eclipse.ui.IPartService;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.actions.WorkspaceModifyOperation;
-import org.eclipse.ui.dialogs.SaveAsDialog;
import org.eclipse.ui.editors.text.TextEditor;
+import org.eclipse.ui.editors.text.TextEditorPreferenceConstants;
+import org.eclipse.ui.internal.editors.text.EditorsPlugin;
import org.eclipse.ui.part.EditorActionBarContributor;
-import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.texteditor.AnnotationPreference;
import org.eclipse.ui.texteditor.ContentAssistAction;
+import org.eclipse.ui.texteditor.DefaultMarkerAnnotationAccess;
import org.eclipse.ui.texteditor.DefaultRangeIndicator;
import org.eclipse.ui.texteditor.ITextEditorActionConstants;
import org.eclipse.ui.texteditor.MarkerAnnotation;
+import org.eclipse.ui.texteditor.MarkerAnnotationPreferences;
import org.eclipse.ui.texteditor.MarkerUtilities;
+import org.eclipse.ui.texteditor.SourceViewerDecorationSupport;
import org.eclipse.ui.texteditor.TextOperationAction;
import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
import org.eclipse.ui.views.tasklist.TaskList;
@@ -110,103 +86,53 @@
 */
public class CEditor extends TextEditor implements ISelectionChangedListener {

-
    /** The outline page */
    protected CContentOutlinePage fOutlinePage;
- +
    private SearchForReferencesAction fSearchForReferencesAction;
- - /** Status bar fields -- @@@ gone with Eclipse 2.0 */
-    private Map fStatusFields;
-    private boolean fInserting= true;
- - /** The editor's foreground color -- gone in 2.0 */
-    private Color fForegroundColor;
-    /** The editor's background color */
-    private Color fBackgroundColor;
- - +
    protected ISelectionChangedListener fStatusLineClearer;
- - /** The editor's paint manager */
-    private PaintManager fPaintManager;
-    /** The editor's bracket painter */
-    private BracketPainter fBracketPainter;
-    /** The editor's line painter */
-    private LinePainter fLinePainter;
-    /** The editor's problem painter */
-    private ProblemPainter fProblemPainter;
-    /** The editor's print margin ruler painter */
-    private PrintMarginPainter fPrintMarginPainter;
+
+ protected final static char[] BRACKETS = { '{', '}', '(', ')', '[', ']' };
+
+    protected CPairMatcher fBracketMatcher = new CPairMatcher(BRACKETS);
+
    /** The editor's tab converter */
    private TabConverter fTabConverter;
- +
+    private MarkerAnnotationPreferences fAnnotationPreferences;
+
/** Listener to annotation model changes that updates the error tick in the tab image */
    private CEditorErrorTickUpdater fCEditorErrorTickUpdater;
- - /** The line number ruler column */
-    private LineNumberRulerColumn fLineNumberRulerColumn;

-
-    /* Preference key line color shading */
- public final static String CURRENT_LINE= "CEditor.currentLine"; - /* Preference key for color of shading */ - public final static String CURRENT_LINE_COLOR= "CEditor.currentLineColor"; /* Preference key for matching brackets */
-    public final static String MATCHING_BRACKETS=  "matchingBrackets";
-    /* Preference key for matching brackets color */
- public final static String MATCHING_BRACKETS_COLOR= "matchingBracketsColor";
-    /* Preference key for matching brackets color */
- public final static String MATCHING_BRACKETS_NOBOX= "matchingBracketsNobox";
-    /* Preference key for matching brackets color */
- public final static String PREFERENCE_COLOR_BACKGROUND = "CEditor.preferenceColorBackground";
-    /* Preference key for matching brackets color */
- public final static String PREFERENCE_COLOR_FOREGROUND = "CEditor.preferenceColorForeground";
+    public final static String MATCHING_BRACKETS = "matchingBrackets";
    /* Preference key for matching brackets color */
- public final static String PREFERENCE_COLOR_BACKGROUND_SYSTEM_DEFAULT = "CEditor.preferenceColorBackgroundDefault";
-    /* Preference key for matching brackets color */
- public final static String PREFERENCE_COLOR_FOREGROUND_SYSTEM_DEFAULT = "CEditor.preferenceColorForegroundDefault";
-    /** Preference key for problem indication */
-    public final static String PROBLEM_INDICATION= "problemIndication";
-    /** Preference key for problem highlight color */
- public final static String PROBLEM_INDICATION_COLOR= "problemIndicationColor";
-        /** Preference key for showing print marging ruler */
-    public final static String PRINT_MARGIN= "printMargin";
-    /** Preference key for print margin ruler color */
-    public final static String PRINT_MARGIN_COLOR= "printMarginColor";
-    /** Preference key for print margin ruler column */
-    public final static String PRINT_MARGIN_COLUMN= "printMarginColumn";
+ public final static String MATCHING_BRACKETS_COLOR = "matchingBracketsColor";
    /** Preference key for inserting spaces rather than tabs */
-    public final static String SPACES_FOR_TABS= "spacesForTabs";
+    public final static String SPACES_FOR_TABS = "spacesForTabs";
    /** Preference key for linked position color */
- public final static String LINKED_POSITION_COLOR= "linkedPositionColor"; //$NON-NLS-1$
-    /** Preference key for shwoing the overview ruler */
- public final static String OVERVIEW_RULER= "overviewRuler"; //$NON-NLS-1$ - - /** Preference key for showing the line number ruler */ - public final static String LINE_NUMBER_RULER= "lineNumberRuler"; //$NON-NLS-1$
-    /** Preference key for the foreground color of the line numbers */
- public final static String LINE_NUMBER_COLOR= "lineNumberColor"; //$NON-NLS-1$ - + public final static String LINKED_POSITION_COLOR = "linkedPositionColor"; //$NON-NLS-1$

    /**
     * Default constructor.
     */
    public CEditor() {
        super();
-        CTextTools textTools= CUIPlugin.getDefault().getTextTools();
+        fAnnotationPreferences = new MarkerAnnotationPreferences();
+        CTextTools textTools = CUIPlugin.getDefault().getTextTools();
setSourceViewerConfiguration(new CSourceViewerConfiguration(textTools, this));
        setDocumentProvider(CUIPlugin.getDefault().getDocumentProvider());
        setRangeIndicator(new DefaultRangeIndicator());
        setPreferenceStore(CUIPlugin.getDefault().getPreferenceStore());
- +
        setEditorContextMenuId("#CEditorContext"); //$NON-NLS-1$
        setRulerContextMenuId("#CEditorRulerContext"); //$NON-NLS-1$
        setOutlinerContextMenuId("#CEditorOutlinerContext"); //$NON-NLS-1$
- - fCEditorErrorTickUpdater= new CEditorErrorTickUpdater(this);
+
+        fCEditorErrorTickUpdater = new CEditorErrorTickUpdater(this);
    }
- +
    /**
     * @see AbstractTextEditor#doSetInput(IEditorInput)
     */
@@ -214,7 +140,7 @@
        super.doSetInput(input);
fCEditorErrorTickUpdater.setAnnotationModel(getDocumentProvider().getAnnotationModel(input));
    }
- +
    /**
     * Update the title image
     */
@@ -222,129 +148,34 @@
        setTitleImage(image);
    }

-
-    /**
-     * @see IEditorPart#init(IWorkbenchPartSite, Object)
-     */
- public void init(IEditorSite site, IEditorInput input) throws PartInitException {
-        //if (!(input instanceof IFileEditorInput)) {
- // throw new PartInitException(CUIPlugin.getResourceString("Editor.error.invalid_input"));
-        //}
-        super.init(site, input);
-    }
-
-
    /**
     * Gets the current input
- */ + */
    public IFile getInputFile() {
//IFileEditorInput editorInput = (IFileEditorInput)getEditorInput();
-        IEditorInput editorInput= (IEditorInput)getEditorInput();
+        IEditorInput editorInput = (IEditorInput) getEditorInput();
        if (editorInput != null) {
            if ((editorInput instanceof IFileEditorInput)) {
-                return ((IFileEditorInput)editorInput).getFile();
+                return ((IFileEditorInput) editorInput).getFile();
            }
        }
        return null;
    }

-
    public boolean isSaveAsAllowed() {
        return true;
    }
-    /*
- * 1GEUSSR: ITPUI:ALL - User should never loose changes made in the editors. - * Changed behavior to make sure that if called inside a regular save (because - * of deletion of input element) there is a way to report back to the caller. - */ - protected void performSaveAs(IProgressMonitor progressMonitor) { - - Shell shell= getSite().getShell(); - - SaveAsDialog dialog= new SaveAsDialog(shell);
-        if (dialog.open() == Dialog.CANCEL) {
-            if (progressMonitor != null)
-                progressMonitor.setCanceled(true);
-            return;
-        }
- - IPath filePath= dialog.getResult();
-        if (filePath == null) {
-            if (progressMonitor != null)
-                progressMonitor.setCanceled(true);
-            return;
-        }
- - filePath= filePath.removeTrailingSeparator();
-        IPath folderPath= filePath.removeLastSegments(1);
-        if (folderPath == null) {
-            if (progressMonitor != null)
- progressMonitor.setCanceled(true); - return;
-        }
- - IWorkspaceRoot root= ResourcesPlugin.getWorkspace().getRoot(); - - /*
-         * 1GF7WG9: ITPJUI:ALL - EXCEPTION: "Save As..." always fails
-         */
- - IFile file= root.getFile(filePath);
-        final FileEditorInput newInput= new FileEditorInput(file);
- - WorkspaceModifyOperation op= new WorkspaceModifyOperation() { - public void execute(final IProgressMonitor monitor) throws CoreException { - - /* - * 1GF5YOX: ITPJUI:ALL - Save of delete file claims it's still there
-                 * Changed false to true.
-                 */
- getDocumentProvider().saveDocument(monitor, newInput, getDocumentProvider().getDocument(getEditorInput()), true);
-            }
-        };
- - boolean success= false;
-        try {
- - getDocumentProvider().aboutToChange(newInput); - - new ProgressMonitorDialog(shell).run(false, true, op);
-            setInput(newInput);
-            success= true;
- - } catch (InterruptedException x) {
-        } catch (InvocationTargetException x) {
- - /* - * 1GF5YOX: ITPJUI:ALL - Save of delete file claims it's still there
-             * Missing resources.
- */ - Throwable t= x.getTargetException();
-            if (t instanceof CoreException) {
-                CoreException cx= (CoreException) t;
- ErrorDialog.openError(shell, CEditorMessages.getString("CEditor.error.saving.title2"), CEditorMessages.getString("CEditor.error.saving.message2"), cx.getStatus()); //$NON-NLS-1$ //$NON-NLS-2$
-            } else {
- MessageDialog.openError(shell, CEditorMessages.getString("CEditor.error.saving.title3"), CEditorMessages.getString("CEditor.error.saving.message3") + t.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$
-            }
- - } finally { - - if (progressMonitor != null)
-                progressMonitor.setCanceled(!success);
-        }
-    }
- /**
     * Gets the outline page of the c-editor
     */
    public CContentOutlinePage getOutlinePage() {
        if (fOutlinePage == null) {
-            fOutlinePage= new CContentOutlinePage(this);
+            fOutlinePage = new CContentOutlinePage(this);
            fOutlinePage.addSelectionChangedListener(this);
        }
        return fOutlinePage;
    }
- +
    /**
     * @see AbstractTextEditor#getAdapter(Class)
     */
@@ -362,87 +193,33 @@
     * @param event the property change event
     */
protected void handlePreferenceStoreChanged(PropertyChangeEvent event) {
-        AdaptedSourceViewer asv= (AdaptedSourceViewer) getSourceViewer();
- + AdaptedSourceViewer asv = (AdaptedSourceViewer) getSourceViewer();
+
        try {
-            if(asv != null) {
- - String property= event.getProperty(); - if (PREFERENCE_COLOR_FOREGROUND.equals(property) || PREFERENCE_COLOR_FOREGROUND_SYSTEM_DEFAULT.equals(property) || - PREFERENCE_COLOR_BACKGROUND.equals(property) || PREFERENCE_COLOR_BACKGROUND_SYSTEM_DEFAULT.equals(property))
-                {
-                    initializeViewerColors(getSourceViewer());
-                    getSourceViewer().getTextWidget().redraw();
-                    return;
-                }
- - if (CURRENT_LINE.equals(property)) {
-                    if (isLineHighlightingEnabled())
-                        startLineHighlighting();
-                    else
-                        stopLineHighlighting();
-                    return;
-                }
- - if (CURRENT_LINE_COLOR.equals(property)) {
-                    if (fLinePainter != null)
- fLinePainter.setHighlightColor(getColor(CURRENT_LINE_COLOR));
-                    return;
-                }
- - if (PROBLEM_INDICATION.equals(property)) {
-                    if (isProblemIndicationEnabled())
-                        startProblemIndication();
-                    else
-                        stopProblemIndication();
-                    return;
-                }
- - if (PROBLEM_INDICATION_COLOR.equals(property)) {
-                    if (fProblemPainter != null)
- fProblemPainter.setHighlightColor(getColor(PROBLEM_INDICATION_COLOR));
-                    return;
-                }
- - if (PRINT_MARGIN.equals(property)) {
-                    if (isShowingPrintMarginEnabled())
-                        startShowingPrintMargin();
-                    else
-                        stopShowingPrintMargin();
-                    return;
-                }
- - if (PRINT_MARGIN_COLOR.equals(property)) {
-                    if (fPrintMarginPainter != null)
- fPrintMarginPainter.setMarginRulerColor(getColor(PRINT_MARGIN_COLOR));
-                    return;
-                }
- - if (PRINT_MARGIN_COLUMN.equals(property)) {
-                    if (fPrintMarginPainter != null)
- fPrintMarginPainter.setMarginRulerColumn(getPreferenceStore().getInt(PRINT_MARGIN_COLUMN));
-                    return;
-                }
- + if (asv != null) {
+
+                String property = event.getProperty();
+
if (CSourceViewerConfiguration.PREFERENCE_TAB_WIDTH.equals(property)) { - SourceViewerConfiguration configuration= getSourceViewerConfiguration(); - String[] types= configuration.getConfiguredContentTypes(asv); - for (int i= 0; i < types.length; i++) - asv.setIndentPrefixes(configuration.getIndentPrefixes(asv, types[i]), types[i]); - + SourceViewerConfiguration configuration = getSourceViewerConfiguration(); + String[] types = configuration.getConfiguredContentTypes(asv);
+                    for (int i = 0; i < types.length; i++)
+ asv.setIndentPrefixes(configuration.getIndentPrefixes(asv, types[i]), types[i]);
+
                    if (fTabConverter != null)
- fTabConverter.setNumberOfSpacesPerTab(getPreferenceStore().getInt(CSourceViewerConfiguration.PREFERENCE_TAB_WIDTH)); - - Object value= event.getNewValue(); - + fTabConverter.setNumberOfSpacesPerTab( + getPreferenceStore().getInt(CSourceViewerConfiguration.PREFERENCE_TAB_WIDTH));
+
+                    Object value = event.getNewValue();
+
                    if (value instanceof Integer) {
asv.getTextWidget().setTabs(((Integer) value).intValue()); - +
                    } else if (value instanceof String) {
asv.getTextWidget().setTabs(Integer.parseInt((String) value));
                    }
                }
- +
                if (SPACES_FOR_TABS.equals(property)) {
                    if (isTabConversionEnabled())
                        startTabConversion();
@@ -450,127 +227,23 @@
                        stopTabConversion();
                    return;
                }
- - if (MATCHING_BRACKETS.equals(property)) {
-                    if (isBracketHighlightingEnabled())
-                        startBracketHighlighting();
-                    else
-                        stopBracketHighlighting();
-                    return;
-                }
- - if (MATCHING_BRACKETS_COLOR.equals(property)) {
-                    if (fBracketPainter != null)
- fBracketPainter.setHighlightColor(getColor(MATCHING_BRACKETS_COLOR));
-                    return;
-                }
-                if (MATCHING_BRACKETS_NOBOX.equals(property)) {
-                    if (isBracketHighlightingEnabled())
-                        setBracketHighlightingStyle();
-                    return;
-                }
-                if (LINE_NUMBER_RULER.equals(property)) {
-                    if (isLineNumberRulerVisible())
-                        showLineNumberRuler();
-                    else
-                        hideLineNumberRuler();
-                    return;
-                }
- - if (fLineNumberRulerColumn != null &&
-                        (LINE_NUMBER_COLOR.equals(property) ||
- PREFERENCE_COLOR_BACKGROUND_SYSTEM_DEFAULT.equals(property) ||
-                        PREFERENCE_COLOR_BACKGROUND.equals(property))) {
- - initializeLineNumberRulerColumn(fLineNumberRulerColumn);
-                }
- - if (OVERVIEW_RULER.equals(property)) {
-                    if (isOverviewRulerVisible())
-                        showOverviewRuler();
-                    else
-                        hideOverviewRuler();
-                    return;
-                }
            }
        } finally {
-
            super.handlePreferenceStoreChanged(event);
- - if (asv != null && affectsTextPresentation(event))
-                asv.invalidateTextPresentation();
-        }
-    }
- - /**
-     * Initializes the given viewer's colors.
-     *
-     * @param viewer the viewer to be initialized
-     */
-    private void initializeViewerColors(ISourceViewer viewer) {
- - IPreferenceStore store= getPreferenceStore();
-        if (store != null) {
- - StyledText styledText= viewer.getTextWidget(); - - // ----------- foreground color -------------------- - Color color= store.getBoolean(PREFERENCE_COLOR_FOREGROUND_SYSTEM_DEFAULT)
-                ? null
- : createColor(store, PREFERENCE_COLOR_FOREGROUND, styledText.getDisplay());
-            styledText.setForeground(color);
- - if (fForegroundColor != null)
-                fForegroundColor.dispose();
- - fForegroundColor= color; - - // ---------- background color ---------------------- - color= store.getBoolean(PREFERENCE_COLOR_BACKGROUND_SYSTEM_DEFAULT)
-                ? null
- : createColor(store, PREFERENCE_COLOR_BACKGROUND, styledText.getDisplay());
-            styledText.setBackground(color);
- - if (fBackgroundColor != null)
-                fBackgroundColor.dispose();
- - fBackgroundColor= color;
        }
    }
- - /** - * Creates a color from the information stored in the given preference store.
-     * Returns <code>null</code> if there is no such information available.
-     */
- private Color createColor(IPreferenceStore store, String key, Display display) { - - RGB rgb= null; - - if (store.contains(key)) { - - if (store.isDefault(key))
-                rgb= PreferenceConverter.getDefaultColor(store, key);
-            else
-                rgb= PreferenceConverter.getColor(store, key);
- - if (rgb != null)
-                return new Color(display, rgb);
-        }
- - return null;
-    }
- +
    /**
     * @see ISelectionChangedListener#selectionChanged
     */
    public void selectionChanged(SelectionChangedEvent event) {
-        ISelection sel= event.getSelection();
+        ISelection sel = event.getSelection();
        if (sel instanceof IStructuredSelection) {
-            IStructuredSelection selection= (IStructuredSelection)sel;
-            Object obj= selection.getFirstElement();
+            IStructuredSelection selection = (IStructuredSelection) sel;
+            Object obj = selection.getFirstElement();
            if (obj instanceof ISourceReference) {
                try {
- ISourceRange range = ((ISourceReference)obj).getSourceRange(); + ISourceRange range = ((ISourceReference) obj).getSourceRange();
                    if (range != null) {
                        setSelection(range, !isActivePart());
                    }
@@ -579,7 +252,7 @@
            }
        }
    }
- +
    public void setSelection(ICElement element) {

        if (element == null || element instanceof ITranslationUnit) {
@@ -589,8 +262,9 @@
             * happened.
             */
            return;
-        } if (element instanceof ISourceReference) {
-            ISourceReference reference= (ISourceReference) element;
+        }
+        if (element instanceof ISourceReference) {
+            ISourceReference reference = (ISourceReference) element;
            // set hightlight range
            setSelection(reference, true);
            // set outliner selection
@@ -626,30 +300,29 @@

        try {
            IRegion alternateRegion = null;
-            int start= element.getStartPos();
-            int length= element.getLength();
+            int start = element.getStartPos();
+            int length = element.getLength();

            // Sanity check sometimes the parser may throw wrong numbers.
            if (start < 0 || length < 0) {
- start = 0; + start = 0;
                length = 0;
            }

            // 0 length and start and non-zero start line says we know
            // the line for some reason, but not the offset.
            if (length == 0 && start == 0 && element.getStartLine() != 0) {
-                alternateRegion =
- getDocumentProvider().getDocument(getEditorInput()).getLineInformation(element.getStartLine()); + alternateRegion = getDocumentProvider().getDocument(getEditorInput()).getLineInformation(element.getStartLine());
                if (alternateRegion != null) {
                    start = alternateRegion.getOffset();
                    length = alternateRegion.getLength();
                }
            }
            setHighlightRange(start, length, moveCursor);
- +
            if (moveCursor) {
-                start= element.getIdStartPos();
-                length= element.getIdLength();
+                start = element.getIdStartPos();
+                length = element.getIdLength();
                if (start == 0 && length == 0 && alternateRegion != null) {
                    start = alternateRegion.getOffset();
                    length = alternateRegion.getLength();
@@ -662,77 +335,70 @@
            }
            return;
        } catch (IllegalArgumentException x) {
-        } catch (BadLocationException e ) {
+        } catch (BadLocationException e) {
        }

        if (moveCursor)
            resetHighlightRange();
- } - + }
+
    private boolean isActivePart() {
-        IWorkbenchWindow window= getSite().getWorkbenchWindow();
-        IPartService service= window.getPartService();
+        IWorkbenchWindow window = getSite().getWorkbenchWindow();
+        IPartService service = window.getPartService();
        return (this == service.getActivePart());
    }
- +
    public void dispose() {
- - stopBracketHighlighting();
-        stopLineHighlighting();
- - if (fPaintManager != null) {
-            fPaintManager.dispose();
-            fPaintManager= null;
-        }
+
        if (fCEditorErrorTickUpdater != null) {
            fCEditorErrorTickUpdater.setAnnotationModel(null);
-            fCEditorErrorTickUpdater= null;
+            fCEditorErrorTickUpdater = null;
+        }
+        if (fBracketMatcher != null) {
+            fBracketMatcher.dispose();
+            fBracketMatcher = null;
        }
- super.dispose();
    }
- - protected void createActions()
-    {
+
+    protected void createActions() {
        super.createActions();
- +
        // Default text editing menu items

- IAction action= new TextOperationAction(CEditorMessages.getResourceBundle(), "Comment.", this, ITextOperationTarget.PREFIX); //$NON-NLS-1$ - action.setActionDefinitionId(ICEditorActionDefinitionIds.COMMENT); + IAction action = new TextOperationAction(CEditorMessages.getResourceBundle(), "Comment.", this, ITextOperationTarget.PREFIX); //$NON-NLS-1$
+        action.setActionDefinitionId(ICEditorActionDefinitionIds.COMMENT);
        setAction("Comment", action); //$NON-NLS-1$
        markAsStateDependentAction("Comment", true); //$NON-NLS-1$

- action= new TextOperationAction(CEditorMessages.getResourceBundle(), "Uncomment.", this, ITextOperationTarget.STRIP_PREFIX); //$NON-NLS-1$ - action.setActionDefinitionId(ICEditorActionDefinitionIds.UNCOMMENT); + action = new TextOperationAction(CEditorMessages.getResourceBundle(), "Uncomment.", this, ITextOperationTarget.STRIP_PREFIX); //$NON-NLS-1$ + action.setActionDefinitionId(ICEditorActionDefinitionIds.UNCOMMENT);
        setAction("Uncomment", action); //$NON-NLS-1$
        markAsStateDependentAction("Uncomment", true); //$NON-NLS-1$
- - action= new TextOperationAction(CEditorMessages.getResourceBundle(), "Format.", this, ISourceViewer.FORMAT); //$NON-NLS-1$ - action.setActionDefinitionId(ICEditorActionDefinitionIds.FORMAT); + + action = new TextOperationAction(CEditorMessages.getResourceBundle(), "Format.", this, ISourceViewer.FORMAT); //$NON-NLS-1$
+        action.setActionDefinitionId(ICEditorActionDefinitionIds.FORMAT);
        setAction("Format", action); //$NON-NLS-1$
        markAsStateDependentAction("Format", true); //$NON-NLS-1$

action = new ContentAssistAction(CEditorMessages.getResourceBundle(), "ContentAssistProposal.", this); //$NON-NLS-1$ action.setActionDefinitionId(ICEditorActionDefinitionIds.CONTENT_ASSIST_PROPOSALS);
-        setAction("ContentAssistProposal", action);
+        setAction("ContentAssistProposal", action);
markAsStateDependentAction("ContentAssistProposal", true); //$NON-NLS-1$ - - action = new TextOperationAction(CEditorMessages.getResourceBundle(), "ContentAssistTip.", this, ISourceViewer.CONTENTASSIST_CONTEXT_INFORMATION); //$NON-NLS-1$
+
+ action = new TextOperationAction(CEditorMessages.getResourceBundle(), "ContentAssistTip.", this, ISourceViewer.CONTENTASSIST_CONTEXT_INFORMATION); //$NON-NLS-1$ action.setActionDefinitionId(ICEditorActionDefinitionIds.CONTENT_ASSIST_CONTEXT_INFORMATION);
-        setAction("ContentAssistTip", action);
+        setAction("ContentAssistTip", action);

- - setAction("AddIncludeOnSelection", new AddIncludeOnSelectionAction(this)); //$NON-NLS-1$ + setAction("AddIncludeOnSelection", new AddIncludeOnSelectionAction(this)); //$NON-NLS-1$
        setAction("OpenOnSelection", new OpenOnSelectionAction(this));
- - fSearchForReferencesAction= new SearchForReferencesAction(getSelectionProvider());
+
+ fSearchForReferencesAction = new SearchForReferencesAction(getSelectionProvider());
    }

-    public void editorContextMenuAboutToShow( IMenuManager menu )
- { - super.editorContextMenuAboutToShow( menu ); - + public void editorContextMenuAboutToShow(IMenuManager menu) {
+        super.editorContextMenuAboutToShow(menu);
+
addGroup(menu, ITextEditorActionConstants.GROUP_EDIT, IContextMenuConstants.GROUP_REORGANIZE); addGroup(menu, ITextEditorActionConstants.GROUP_EDIT, IContextMenuConstants.GROUP_GENERATE); addGroup(menu, ITextEditorActionConstants.GROUP_EDIT, IContextMenuConstants.GROUP_NEW);
@@ -743,25 +409,18 @@
        // @@@ disabled for now until we get it to do something...
//addAction(menu, ITextEditorActionConstants.GROUP_EDIT, "Format"); //$NON-NLS-1$

- MenuManager search= new MenuManager("Search", IContextMenuConstants.GROUP_SEARCH); //$NON-NLS-1$ + MenuManager search = new MenuManager("Search", IContextMenuConstants.GROUP_SEARCH); //$NON-NLS-1$
        menu.appendToGroup(ITextEditorActionConstants.GROUP_FIND, search);
- if(SearchForReferencesAction.canActionBeAdded(getSelectionProvider().getSelection())) { + if (SearchForReferencesAction.canActionBeAdded(getSelectionProvider().getSelection())) {
            search.add(fSearchForReferencesAction);
        }
- + addAction(menu, IContextMenuConstants.GROUP_GENERATE, "ContentAssistProposal"); //$NON-NLS-1$ addAction(menu, IContextMenuConstants.GROUP_GENERATE, "AddIncludeOnSelection"); //$NON-NLS-1$ addAction(menu, IContextMenuConstants.GROUP_GENERATE, "OpenOnSelection"); //$NON-NLS-1$
    }

    /**
-     * Internal interface for a cursor listener. I.e. aggregation
-     * of mouse and key listener.
-     */
-    interface ICursorListener extends MouseListener, KeyListener {
-    };
- - /**
     * The <code>AbstractTextEditor</code> implementation of this
     * <code>IWorkbenchPart</code> method creates the vertical ruler and
     * source viewer. Subclasses may extend.
@@ -772,472 +431,256 @@
     */
    public void createPartControl(Composite parent) {
        super.createPartControl(parent);
-        fPaintManager= new PaintManager(getSourceViewer());
ISelectionChangedListener sListener = new ISelectionChangedListener() {
-                private Runnable fRunnable= new Runnable() {
-                    public void run() {
- updateStatusField(CTextEditorActionConstants.STATUS_CURSOR_POS);
-                    }
-                };
- - private Display fDisplay; - - public void selectionChanged(SelectionChangedEvent event) {
-                    if (fDisplay == null)
-                        fDisplay= getSite().getShell().getDisplay();
- fDisplay.asyncExec(fRunnable); + private Runnable fRunnable = new Runnable() {
+                public void run() {
+ updateStatusField(CTextEditorActionConstants.STATUS_CURSOR_POS);
                }
+            };
+
+            private Display fDisplay;
+
+            public void selectionChanged(SelectionChangedEvent event) {
+                if (fDisplay == null)
+                    fDisplay = getSite().getShell().getDisplay();
+                fDisplay.asyncExec(fRunnable);
+            }
        };
- getSelectionProvider().addSelectionChangedListener(sListener); - - - initializeViewerColors(getSourceViewer()); - - if (isLineHighlightingEnabled())
-            startLineHighlighting();
-        if (isProblemIndicationEnabled())
-            startProblemIndication();
-        if (isShowingPrintMarginEnabled())
-            startShowingPrintMargin();
+
        if (isTabConversionEnabled())
            startTabConversion();
-        if (isBracketHighlightingEnabled())
-            startBracketHighlighting();
-        if (isOverviewRulerVisible())
-            showOverviewRuler();
-
-
    }
- - private Color getColor(String key) {
-        RGB rgb= PreferenceConverter.getColor(getPreferenceStore(), key);
-        return getColor(rgb);
-    }
- - private Color getColor(RGB rgb) {
-        CTextTools textTools= CUIPlugin.getDefault().getTextTools();
-        return textTools.getColorManager().getColor(rgb);
-    }
- +
    private IMarker getNextError(int offset, boolean forward) {
- - IMarker nextError= null; - - IDocument document= getDocumentProvider().getDocument(getEditorInput());
-        int endOfDocument= document.getLength();
-        int distance= 0;
- - IAnnotationModel model= getDocumentProvider().getAnnotationModel(getEditorInput());
-        Iterator e= model.getAnnotationIterator();
+
+        IMarker nextError = null;
+
+ IDocument document = getDocumentProvider().getDocument(getEditorInput());
+        int endOfDocument = document.getLength();
+        int distance = 0;
+
+ IAnnotationModel model = getDocumentProvider().getAnnotationModel(getEditorInput());
+        Iterator e = model.getAnnotationIterator();
        while (e.hasNext()) {
-            Annotation a= (Annotation) e.next();
+            Annotation a = (Annotation) e.next();
            if (a instanceof CMarkerAnnotation) {
-                MarkerAnnotation ma= (MarkerAnnotation) a;
-                IMarker marker= ma.getMarker();
- + MarkerAnnotation ma = (MarkerAnnotation) a;
+                IMarker marker = ma.getMarker();
+
if (MarkerUtilities.isMarkerType(marker, IMarker.PROBLEM)) {
-                    Position p= model.getPosition(a);
+                    Position p = model.getPosition(a);
                    if (!p.includes(offset)) {
- - int currentDistance= 0; - +
+                        int currentDistance = 0;
+
                        if (forward) {
-                            currentDistance= p.getOffset() - offset;
+                            currentDistance = p.getOffset() - offset;
                            if (currentDistance < 0)
- currentDistance= endOfDocument - offset + p.getOffset(); + currentDistance = endOfDocument - offset + p.getOffset();
                        } else {
-                            currentDistance= offset - p.getOffset();
+                            currentDistance = offset - p.getOffset();
                            if (currentDistance < 0)
- currentDistance= offset + endOfDocument - p.getOffset(); - } - - if (nextError == null || (currentDistance < distance && currentDistance != 0)) {
-                            distance= currentDistance;
-                            if(distance == 0) distance = endOfDocument;
-                            nextError= marker;
+ currentDistance = offset + endOfDocument - p.getOffset();
                        }

-
+ if (nextError == null || (currentDistance < distance && currentDistance != 0)) {
+                            distance = currentDistance;
+                            if (distance == 0)
+                                distance = endOfDocument;
+                            nextError = marker;
+                        }
                    }
                }
- }
        }
- return nextError;
    }
- +
    public void gotoError(boolean forward) {
- - ISelectionProvider provider= getSelectionProvider(); - +
+        ISelectionProvider provider = getSelectionProvider();
+
        if (fStatusLineClearer != null) {
            provider.removeSelectionChangedListener(fStatusLineClearer);
-            fStatusLineClearer= null;
+            fStatusLineClearer = null;
        }
- - ITextSelection s= (ITextSelection) provider.getSelection();
-        IMarker nextError= getNextError(s.getOffset(), forward);
- +
+        ITextSelection s = (ITextSelection) provider.getSelection();
+        IMarker nextError = getNextError(s.getOffset(), forward);
+
        if (nextError != null) {
- +
            gotoMarker(nextError);
- - IWorkbenchPage page= getSite().getPage(); - - IViewPart view= view= page.findView("org.eclipse.ui.views.TaskList"); //$NON-NLS-1$
+
+            IWorkbenchPage page = getSite().getPage();
+
+ IViewPart view = view = page.findView("org.eclipse.ui.views.TaskList"); //$NON-NLS-1$
            if (view instanceof TaskList) {
-                StructuredSelection ss= new StructuredSelection(nextError);
+ StructuredSelection ss = new StructuredSelection(nextError);
                ((TaskList) view).setSelection(ss, true);
            }
- + getStatusLineManager().setErrorMessage(nextError.getAttribute(IMarker.MESSAGE, "")); //$NON-NLS-1$
-            fStatusLineClearer= new ISelectionChangedListener() {
+            fStatusLineClearer = new ISelectionChangedListener() {
                public void selectionChanged(SelectionChangedEvent event) {
getSelectionProvider().removeSelectionChangedListener(fStatusLineClearer);
-                    fStatusLineClearer= null;
+                    fStatusLineClearer = null;
getStatusLineManager().setErrorMessage(""); //$NON-NLS-1$
                }
            };
            provider.addSelectionChangedListener(fStatusLineClearer);
- +
        } else {
- +
            getStatusLineManager().setErrorMessage(""); //$NON-NLS-1$
- +
        }
    }
    /*
     * Get the dektop's StatusLineManager
     */
    protected IStatusLineManager getStatusLineManager() {
- IEditorActionBarContributor contributor= getEditorSite().getActionBarContributor(); + IEditorActionBarContributor contributor = getEditorSite().getActionBarContributor();
        if (contributor instanceof EditorActionBarContributor) {
return ((EditorActionBarContributor) contributor).getActionBars().getStatusLineManager();
        }
        return null;
    }
- - /**
-     * LIneHighlighting manager
-     */
-    private void startLineHighlighting() {
-        if (fLinePainter == null) {
-            ISourceViewer sourceViewer= getSourceViewer();
-            fLinePainter= new LinePainter(sourceViewer);
-            fLinePainter.setHighlightColor(getColor(CURRENT_LINE_COLOR));
-            fPaintManager.addPainter(fLinePainter);
-        }
-    }
- - private void stopLineHighlighting() {
-        if (fLinePainter != null) {
-            fPaintManager.removePainter(fLinePainter);
-            fLinePainter.deactivate(true);
-            fLinePainter.dispose();
-            fLinePainter= null;
-        }
-    }
- - private boolean isLineHighlightingEnabled() {
-        IPreferenceStore store= getPreferenceStore();
-        return store.getBoolean(CURRENT_LINE);
-    }
- - private void startProblemIndication() {
-        if (fProblemPainter == null) {
-            fProblemPainter= new ProblemPainter(this, getSourceViewer());
- fProblemPainter.setHighlightColor(getColor(PROBLEM_INDICATION_COLOR));
-            fPaintManager.addPainter(fProblemPainter);
-        }
-    }
- - private void stopProblemIndication() {
-        if (fProblemPainter != null) {
-            fPaintManager.removePainter(fProblemPainter);
-            fProblemPainter.deactivate(true);
-            fProblemPainter.dispose();
-            fProblemPainter= null;
-        }
-    }
- - private boolean isProblemIndicationEnabled() {
-        IPreferenceStore store= getPreferenceStore();
-        return store.getBoolean(PROBLEM_INDICATION);
-    }
- - private void startShowingPrintMargin() {
-        if (fPrintMarginPainter == null) {
-            fPrintMarginPainter= new PrintMarginPainter(getSourceViewer());
- fPrintMarginPainter.setMarginRulerColor(getColor(PRINT_MARGIN_COLOR)); - fPrintMarginPainter.setMarginRulerColumn(getPreferenceStore().getInt(PRINT_MARGIN_COLUMN));
-            fPaintManager.addPainter(fPrintMarginPainter);
-        }
-    }
- - private void stopShowingPrintMargin() {
-        if (fPrintMarginPainter != null) {
-            fPaintManager.removePainter(fPrintMarginPainter);
-            fPrintMarginPainter.deactivate(true);
-            fPrintMarginPainter.dispose();
-            fPrintMarginPainter= null;
-        }
-    }
- - private boolean isShowingPrintMarginEnabled() {
-        IPreferenceStore store= getPreferenceStore();
-        return store.getBoolean(PRINT_MARGIN);
-    }
- +
    private void startTabConversion() {
        if (fTabConverter == null) {
-            fTabConverter= new TabConverter();
+            fTabConverter = new TabConverter();
fTabConverter.setNumberOfSpacesPerTab(getPreferenceStore().getInt(CSourceViewerConfiguration.PREFERENCE_TAB_WIDTH)); - AdaptedSourceViewer asv= (AdaptedSourceViewer) getSourceViewer(); + AdaptedSourceViewer asv = (AdaptedSourceViewer) getSourceViewer();
            asv.addTextConverter(fTabConverter);
        }
    }
- +
    private void stopTabConversion() {
        if (fTabConverter != null) {
- AdaptedSourceViewer asv= (AdaptedSourceViewer) getSourceViewer(); + AdaptedSourceViewer asv = (AdaptedSourceViewer) getSourceViewer();
            asv.removeTextConverter(fTabConverter);
-            fTabConverter= null;
+            fTabConverter = null;
        }
    }
- +
    private boolean isTabConversionEnabled() {
-        IPreferenceStore store= getPreferenceStore();
+        IPreferenceStore store = getPreferenceStore();
        return store.getBoolean(SPACES_FOR_TABS);
    }
- - private void startBracketHighlighting() {
-        if (fBracketPainter == null) {
-            ISourceViewer sourceViewer= getSourceViewer();
-            fBracketPainter= new BracketPainter(sourceViewer);
- fBracketPainter.setHighlightColor(getColor(MATCHING_BRACKETS_COLOR));
-            fPaintManager.addPainter(fBracketPainter);
-            IPreferenceStore store= getPreferenceStore();
- fBracketPainter.setHighlightStyle(store.getBoolean(MATCHING_BRACKETS_NOBOX));
-        }
-    }
- - private void stopBracketHighlighting() {
-        if (fBracketPainter != null) {
-            fPaintManager.removePainter(fBracketPainter);
-            fBracketPainter.deactivate(true);
-            fBracketPainter.dispose();
-            fBracketPainter= null;
-        }
-    }
- - private boolean isBracketHighlightingEnabled() {
-        IPreferenceStore store= getPreferenceStore();
-        return store.getBoolean(MATCHING_BRACKETS);
-    }
- - private void setBracketHighlightingStyle() {
-        IPreferenceStore store= getPreferenceStore();
-        if(fBracketPainter != null) {
- fBracketPainter.setHighlightStyle(store.getBoolean(MATCHING_BRACKETS_NOBOX));
-        }
-    }

    interface ITextConverter {
void customizeDocumentCommand(IDocument document, DocumentCommand command);
    };
- +
    static class TabConverter implements ITextConverter {
- - private String fTabString= "";
+
+        private String fTabString = "";
        private int tabRatio = 0;
- +
        public void setNumberOfSpacesPerTab(int ratio) {
            tabRatio = ratio;
-            StringBuffer buffer= new StringBuffer();
-            for (int i= 0; i < ratio; i++)
+            StringBuffer buffer = new StringBuffer();
+            for (int i = 0; i < ratio; i++)
                buffer.append(' ');
-            fTabString= buffer.toString();
- } - + fTabString = buffer.toString();
+        }
+
public void customizeDocumentCommand(IDocument document, DocumentCommand command) {
-            String text= command.text;
-            StringBuffer buffer= new StringBuffer();
+            String text = command.text;
+            StringBuffer buffer = new StringBuffer();
            final String TAB = "\t";
            // create tokens including the tabs
            StringTokenizer tokens = new StringTokenizer(text, TAB, true);
- +
            int charCount = 0;
-            try{
+            try {
                // get offset of insertion less start of line
                // buffer to determine how many characters
                // are already on this line and adjust tabs accordingly
- charCount = command.offset - (document.getLineInformationOfOffset(command.offset).getOffset());
-            } catch (Exception ex){
- + charCount = command.offset - (document.getLineInformationOfOffset(command.offset).getOffset());
+            } catch (Exception ex) {
+
            }

            String nextToken = null;
            int spaces = 0;
-            while (tokens.hasMoreTokens()){
+            while (tokens.hasMoreTokens()) {
                nextToken = tokens.nextToken();
-                if (TAB.equals(nextToken)){
+                if (TAB.equals(nextToken)) {
                    spaces = tabRatio - (charCount % tabRatio);
- - for (int i= 0; i < spaces; i++){
+
+                    for (int i = 0; i < spaces; i++) {
                        buffer.append(' ');
- } - + }
+
                    charCount += spaces;
                } else {
                    buffer.append(nextToken);
- charCount += nextToken.length(); + charCount += nextToken.length();
                }
            }
- command.text= buffer.toString(); + command.text = buffer.toString();
        }
    };
- +
    /* Source code language to display */
- public final static String LANGUAGE_CPP= "CEditor.language.cpp"; - public final static String LANGUAGE_C= "CEditor.language.c"; - - - class AdaptedRulerLayout extends Layout { - - protected int fGap;
-        protected AdaptedSourceViewer fAdaptedSourceViewer;
- - - protected AdaptedRulerLayout(int gap, AdaptedSourceViewer asv) {
-            fGap= gap;
-            fAdaptedSourceViewer= asv;
-        }
- - protected Point computeSize(Composite composite, int wHint, int hHint, boolean flushCache) {
-            Control[] children= composite.getChildren();
- Point s= children[children.length - 1].computeSize(SWT.DEFAULT, SWT.DEFAULT, flushCache);
-            if (fAdaptedSourceViewer.isVerticalRulerVisible())
- s.x += fAdaptedSourceViewer.getVerticalRuler().getWidth() + fGap;
-            return s;
-        }
- - protected void layout(Composite composite, boolean flushCache) {
-            Rectangle clArea= composite.getClientArea();
-            if (fAdaptedSourceViewer.isVerticalRulerVisible()) {
- - StyledText textWidget= fAdaptedSourceViewer.getTextWidget();
-                Rectangle trim= textWidget.computeTrim(0, 0, 0, 0);
-                int scrollbarHeight= trim.height;
- - IVerticalRuler vr= fAdaptedSourceViewer.getVerticalRuler();
-                int vrWidth=vr.getWidth();
- - int orWidth= 0;
-                if (fAdaptedSourceViewer.isOverviewRulerVisible()) {
- OverviewRuler or= fAdaptedSourceViewer.getOverviewRuler();
-                    orWidth= or.getWidth();
- or.getControl().setBounds(clArea.width - orWidth, scrollbarHeight, orWidth, clArea.height - 3*scrollbarHeight);
-                }
- - textWidget.setBounds(vrWidth + fGap, 0, clArea.width - vrWidth - orWidth - 2*fGap, clArea.height); - vr.getControl().setBounds(0, 0, vrWidth, clArea.height - scrollbarHeight); - - } else { - StyledText textWidget= fAdaptedSourceViewer.getTextWidget();
-                textWidget.setBounds(0, 0, clArea.width, clArea.height);
-            }
-        }
-    };
- + public final static String LANGUAGE_CPP = "CEditor.language.cpp";
+    public final static String LANGUAGE_C = "CEditor.language.c";
+
    /**
     * Adapted source viewer for CEditor
     */
- + public class AdaptedSourceViewer extends SourceViewer implements ITextViewerExtension { - +
        private List fTextConverters;
        private String fDisplayLanguage;
-        private OverviewRuler fOverviewRuler;
-        private boolean fIsOverviewRulerVisible;
- - private IVerticalRuler fCachedVerticalRuler;
-        private boolean fCachedIsVerticalRulerVisible;
- - - public AdaptedSourceViewer(Composite parent, IVerticalRuler ruler, int styles, String language) {
-            super(parent, ruler, styles);
- +
+        public AdaptedSourceViewer(
+            Composite parent,
+            IVerticalRuler ruler,
+            int styles,
+            IOverviewRuler fOverviewRuler,
+            boolean isOverviewRulerShowing,
+            String language) {
+ super(parent, ruler, fOverviewRuler, isOverviewRulerShowing, styles);
            fDisplayLanguage = language;
-            fCachedVerticalRuler= ruler;
-            fCachedIsVerticalRulerVisible= (ruler != null);
-            fOverviewRuler= new OverviewRuler(VERTICAL_RULER_WIDTH);
- - delayedCreateControl(parent, styles);
        }

        /*
-         * @see ISourceViewer#showAnnotations(boolean)
-         */
-        public void showAnnotations(boolean show) {
- fCachedIsVerticalRulerVisible= (show && fCachedVerticalRuler != null);
-            super.showAnnotations(show);
-        }
-        /*
-        public IContentAssistant getContentAssistant() {
-            return fContentAssistant;
-        } */
- - /*
         * @see ITextOperationTarget#doOperation(int)
         */
        public void doOperation(int operation) {
- +
            if (getTextWidget() == null) {
                return;
            }
- +
            super.doOperation(operation);
        }
- - /*
-         * @see ITextOperationTarget#canDoOperation(int)
-         *
-        public boolean canDoOperation(int operation) {
- - if (getTextWidget() == null)
-                return false;
- - switch (operation) {
-                case SHIFT_RIGHT:
-                case SHIFT_LEFT:
- return isEditable() && fIndentChars != null && isBlockSelected();
-            }
- - return super.canDoOperation(operation);
-        }*/
- + public void insertTextConverter(ITextConverter textConverter, int index) {
            throw new UnsupportedOperationException();
        }
- +
        public void addTextConverter(ITextConverter textConverter) {
            if (fTextConverters == null) {
-                fTextConverters= new ArrayList(1);
+                fTextConverters = new ArrayList(1);
                fTextConverters.add(textConverter);
            } else if (!fTextConverters.contains(textConverter))
                fTextConverters.add(textConverter);
        }
- +
        public void removeTextConverter(ITextConverter textConverter) {
            if (fTextConverters != null) {
                fTextConverters.remove(textConverter);
                if (fTextConverters.size() == 0)
-                    fTextConverters= null;
+                    fTextConverters = null;
            }
        }
- +
        /*
         * @see TextViewer#customizeDocumentCommand(DocumentCommand)
         */
@@ -1245,275 +688,19 @@
            super.customizeDocumentCommand(command);
            if (fTextConverters != null) {
                for (Iterator e = fTextConverters.iterator(); e.hasNext();)
- ((ITextConverter) e.next()).customizeDocumentCommand(getDocument(), command);
-            }
-        }
- - public IVerticalRuler getVerticalRuler() {
-            return fCachedVerticalRuler;
-        }
- - public boolean isVerticalRulerVisible() {
-            return fCachedIsVerticalRulerVisible;
-        }
- - public OverviewRuler getOverviewRuler() {
-            return fOverviewRuler;
-        }
- - /*
-         * @see TextViewer#createControl(Composite, int)
-         */
-        protected void createControl(Composite parent, int styles) {
-            // do nothing here
-        }
- - protected void delayedCreateControl(Composite parent, int styles) {
-            //create the viewer
-            super.createControl(parent, styles);
- - Control control= getControl();
-            if (control instanceof Composite) {
-                Composite composite= (Composite) control;
- composite.setLayout(new AdaptedRulerLayout(GAP_SIZE, this));
-                fOverviewRuler.createControl(composite, this);
+ ((ITextConverter) e.next()).customizeDocumentCommand(getDocument(), command);
            }
        }
- - public void hideOverviewRuler() {
-            fIsOverviewRulerVisible= false;
-            Control control= getControl();
-            if (control instanceof Composite) {
-                Composite composite= (Composite) control;
-                composite.layout();
-            }
-        }
- - public void showOverviewRuler() {
-            fIsOverviewRulerVisible= true;
-            Control control= getControl();
-            if (control instanceof Composite) {
-                Composite composite= (Composite) control;
-                composite.layout();
-            }
-        }
- - public boolean isOverviewRulerVisible() {
-            return fIsOverviewRulerVisible;
-        }
- - /* - * @see ISourceViewer#setDocument(IDocument, IAnnotationModel, int, int)
-         */
- public void setDocument(IDocument document, IAnnotationModel annotationModel, int visibleRegionOffset, int visibleRegionLength) { - super.setDocument(document, annotationModel, visibleRegionOffset, visibleRegionLength);
-            fOverviewRuler.setModel(annotationModel);
-        }
- - /** - * Invalidates the current presentation by sending an initialization
-         * event to all text listener.
-         */
-/*
-        public final void invalidateTextPresentation() {
-            IDocument doc = getDocument();
-            if(doc != null) {
-                fireInputDocumentChanged(doc, doc);
-            }
-        }
-*/ +
        public void setDisplayLanguage(String language) {
            fDisplayLanguage = language;
        }
- +
        public String getDisplayLanguage() {
            return fDisplayLanguage;
        }
-        /**
-         * Internal verify listener.
-         */
-        class TextVerifyListener implements VerifyListener {
- - private boolean fForward= true; - - /**
-             * Tells the listener to forward received events.
-             */
-            public void forward(boolean forward) {
-                fForward= forward;
-            }
- - /*
-             * @see VerifyListener#verifyText(VerifyEvent)
-             */
-            public void verifyText(VerifyEvent e) {
-                if (fForward)
-                    handleVerifyEvent(e);
- } - }; - - /**
-         * The viewer's manager of registered verify key listeners.
-         * Uses batches rather than robust iterators because of
-         * performance issues.
-         */
-        class VerifyKeyListenersManager implements VerifyKeyListener {
- - class Batch {
-                int index;
-                VerifyKeyListener listener;
- - public Batch(VerifyKeyListener l, int i) {
-                    listener= l;
-                    index= i;
-                }
-            };
- - private List fListeners= new ArrayList();
-            private List fBatched= new ArrayList();
-            private Iterator fIterator;
- - /*
-             * @see VerifyKeyListener#verifyKey(VerifyEvent)
-             */
-            public void verifyKey(VerifyEvent event) {
-                if (fListeners.isEmpty())
-                    return;
- - fIterator= fListeners.iterator();
-                while (fIterator.hasNext() && event.doit) {
- VerifyKeyListener listener= (VerifyKeyListener) fIterator.next();
-                    listener.verifyKey(event);
-                }
-                fIterator= null;
- - processBatchedRequests();
-            }
- - private void processBatchedRequests() {
-                if (!fBatched.isEmpty()) {
-                    Iterator e= fBatched.iterator();
-                    while (e.hasNext()) {
-                        Batch batch= (Batch) e.next();
-                        insertListener(batch.listener, batch.index);
-                    }
-                    fBatched.clear();
-                }
-            }
- - /**
-             * Returns the number of registered verify key listeners.
-             */
-            public int numberOfListeners() {
-                return fListeners.size();
-            }
- - /**
-             * Inserts the given listener at the given index or moves it
-             * to that index.
-             *
-             * @param listener the listener to be inserted
-             * @param index the index of the listener or -1 for remove
-             */
- public void insertListener(VerifyKeyListener listener, int index) { - - if (index == -1) {
-                    removeListener(listener);
-                } else if (listener != null) {
- - if (fIterator != null) { - - fBatched.add(new Batch(listener, index)); - - } else { - - int idx= fListeners.indexOf(listener);
-                        if (idx != index) {
- - if (idx != -1)
-                                fListeners.remove(idx);
- - if (index > fListeners.size())
-                                fListeners.add(listener);
-                            else
-                                fListeners.add(index, listener);
-                        }
- - if (fListeners.size() == 1)
-                            install();
-                    }
-                }
-            }
- - /**
-             * Removes the given listener.
-             *
-             * @param listener the listener to be removed
-             */
-            public void removeListener(VerifyKeyListener listener) {
-                if (listener == null)
-                    return;
- - if (fIterator != null) { - - fBatched.add(new Batch(listener, -1)); - - } else { - - fListeners.remove(listener);
-                    if (fListeners.isEmpty())
-                        uninstall();
- - }
-            }
- - /**
-             * Installs this manager.
-             */
-            private void install() {
-                getTextWidget().addVerifyKeyListener(this);
-            }
- - /**
-             * Uninstalls this manager.
-             */
-            private void uninstall() {
-                StyledText textWidget = getTextWidget();
-                if (textWidget != null && !textWidget.isDisposed()) {
-                    textWidget.removeVerifyKeyListener(this);
-                }
-            }
-        };
- - /** The viewer's manager of verify key listeners */ - private VerifyKeyListenersManager fVerifyKeyListenersManager= new VerifyKeyListenersManager(); - - /* - * @see ITextViewerExtension#appendVerifyKeyListener(VerifyKeyListener)
-         */
-        public void appendVerifyKeyListener(VerifyKeyListener listener) {
-            int index= fVerifyKeyListenersManager.numberOfListeners();
-            fVerifyKeyListenersManager.insertListener(listener, index);
-        }
- - /* - * @see ITextViewerExtension#prependVerifyKeyListener(VerifyKeyListener)
-         */
-        public void prependVerifyKeyListener(VerifyKeyListener listener) {
-            fVerifyKeyListenersManager.insertListener(listener, 0);
- - } - - /* - * @see ITextViewerExtension#removeVerifyKeyListener(VerifyKeyListener)
-         */
-        public void removeVerifyKeyListener(VerifyKeyListener listener) {
-            fVerifyKeyListenersManager.removeListener(listener);
-        }
-
    };

- /* * @see AbstractTextEditor#createSourceViewer(Composite, IVerticalRuler, int)
     */
@@ -1521,146 +708,80 @@
        // Figure out if this is a C or C++ source file
        String filename = getEditorInput().getName();
        boolean c_file = filename.endsWith(".c");
- - if (!c_file && filename.endsWith(".h")){
+
+        if (!c_file && filename.endsWith(".h")) {
// ensure that this .h file is part of a C project & not a CPP project - +
            IFile file = getInputFile();
            if (file != null) {
                IProject project = file.getProject();
                c_file = !CoreModel.getDefault().hasCCNature(project);
            }
        }
+        fAnnotationAccess = createAnnotationAccess();
+ ISharedTextColors sharedColors = EditorsPlugin.getDefault().getSharedTextColors();

- return new AdaptedSourceViewer(parent, ruler, styles, c_file ? LANGUAGE_C : LANGUAGE_CPP);
-    }
- - /*
-     * @see AbstractTextEditor#affectsTextPresentation(PropertyChangeEvent)
-     * Pulled in from 2.0
-     */
-    protected boolean affectsTextPresentation(PropertyChangeEvent event) {
-        String p= event.getProperty();
- - boolean affects=MATCHING_BRACKETS_COLOR.equals(p) ||
-                                    CURRENT_LINE_COLOR.equals(p) ||
-                                    PROBLEM_INDICATION_COLOR.equals(p);
-        CTextTools textTools= CUIPlugin.getDefault().getTextTools();
-        affects |= textTools.affectsBehavior(event);
- - return affects ? affects : super.affectsTextPresentation(event); + fOverviewRuler = new OverviewRuler(fAnnotationAccess, VERTICAL_RULER_WIDTH, sharedColors); + Iterator e = fAnnotationPreferences.getAnnotationPreferences().iterator();
+        while (e.hasNext()) {
+ AnnotationPreference preference = (AnnotationPreference) e.next();
+            if (preference.contributesToHeader())
+ fOverviewRuler.addHeaderAnnotationType(preference.getAnnotationType());
+        }
+
+        ISourceViewer sourceViewer =
+            new AdaptedSourceViewer(
+                parent,
+                ruler,
+                styles,
+                fOverviewRuler,
+                isOverviewRulerVisible(),
+                c_file ? LANGUAGE_C : LANGUAGE_CPP);
+        fSourceViewerDecorationSupport =
+ new SourceViewerDecorationSupport(sourceViewer, fOverviewRuler, fAnnotationAccess, sharedColors);
+        configureSourceViewerDecorationSupport();
+        return sourceViewer;
    }

    /**
- * Creates a new line number ruler column that is appropriately initialized.
-     */
-    protected IVerticalRulerColumn createLineNumberRulerColumn() {
-        fLineNumberRulerColumn= new LineNumberRulerColumn();
-        initializeLineNumberRulerColumn(fLineNumberRulerColumn);
-        return fLineNumberRulerColumn;
-    }
- - /*
-     * @see AbstractTextEditor#createVerticalRuler()
-     */
-    protected IVerticalRuler createVerticalRuler() {
-        CompositeRuler ruler= new CompositeRuler();
- ruler.addDecorator(0, new AnnotationRulerColumn(VERTICAL_RULER_WIDTH));
-        if (isLineNumberRulerVisible())
-            ruler.addDecorator(1, createLineNumberRulerColumn());
-        return ruler;
+         * Creates the annotation access for this editor.
+     * @return the created annotation access
+     */
+    protected IAnnotationAccess createAnnotationAccess() {
+        return new DefaultMarkerAnnotationAccess(fAnnotationPreferences);
+    }
+
+    protected void configureSourceViewerDecorationSupport() {
+ Iterator e = fAnnotationPreferences.getAnnotationPreferences().iterator();
+        while (e.hasNext())
+ fSourceViewerDecorationSupport.setAnnotationPreference((AnnotationPreference) e.next());
+        fSourceViewerDecorationSupport.setAnnotationPainterPreferenceKeys(
+            DefaultMarkerAnnotationAccess.UNKNOWN,
+            TextEditorPreferenceConstants.EDITOR_UNKNOWN_INDICATION_COLOR,
+            TextEditorPreferenceConstants.EDITOR_UNKNOWN_INDICATION,
+ TextEditorPreferenceConstants.EDITOR_UNKNOWN_INDICATION_IN_OVERVIEW_RULER,
+            0);
+
+ fSourceViewerDecorationSupport.setCharacterPairMatcher(fBracketMatcher); + fSourceViewerDecorationSupport.setMatchingCharacterPainterPreferenceKeys(MATCHING_BRACKETS, MATCHING_BRACKETS_COLOR);
+
+        fSourceViewerDecorationSupport.setCursorLinePainterPreferenceKeys(
+            TextEditorPreferenceConstants.EDITOR_CURRENT_LINE,
+            TextEditorPreferenceConstants.EDITOR_CURRENT_LINE_COLOR);
+        fSourceViewerDecorationSupport.setMarginPainterPreferenceKeys(
+            TextEditorPreferenceConstants.EDITOR_PRINT_MARGIN,
+            TextEditorPreferenceConstants.EDITOR_PRINT_MARGIN_COLOR,
+            TextEditorPreferenceConstants.EDITOR_PRINT_MARGIN_COLUMN);
+ fSourceViewerDecorationSupport.setSymbolicFontName(getFontPropertyPreferenceKey());
    }
- - /** - * Initializes the given line number ruler column from the preference store.
-     * @param rulerColumn the ruler column to be initialized
-     */
- protected void initializeLineNumberRulerColumn(LineNumberRulerColumn rulerColumn) {
-        CTextTools textTools= CUIPlugin.getDefault().getTextTools();
- IColorManager manager= textTools.getColorManager(); - - IPreferenceStore store= getPreferenceStore(); - if (store != null) { - - RGB rgb= null;
-            // foreground color
-            if (store.contains(LINE_NUMBER_COLOR)) {
-                if (store.isDefault(LINE_NUMBER_COLOR))
- rgb= PreferenceConverter.getDefaultColor(store, LINE_NUMBER_COLOR);
-                else
- rgb= PreferenceConverter.getColor(store, LINE_NUMBER_COLOR);
-            }
-            rulerColumn.setForeground(manager.getColor(rgb));
- - - rgb= null;
-            // background color
- if (!store.getBoolean(PREFERENCE_COLOR_BACKGROUND_SYSTEM_DEFAULT)) {
-                if (store.contains(PREFERENCE_COLOR_BACKGROUND)) {
-                    if (store.isDefault(PREFERENCE_COLOR_BACKGROUND))
- rgb= PreferenceConverter.getDefaultColor(store, PREFERENCE_COLOR_BACKGROUND);
-                    else
- rgb= PreferenceConverter.getColor(store, PREFERENCE_COLOR_BACKGROUND);
-                }
-            }
-            rulerColumn.setBackground(manager.getColor(rgb));
-        }
-    }
- - /**
-     * Shows the line number ruler column.
-     */
-    private void showLineNumberRuler() {
-        IVerticalRuler v= getVerticalRuler();
-        if (v instanceof CompositeRuler) {
-            CompositeRuler c= (CompositeRuler) v;
-            c.addDecorator(1, createLineNumberRulerColumn());
-        }
-    }
- - /**
-     * Hides the line number ruler column.
-     */
-    private void hideLineNumberRuler() {
-        IVerticalRuler v= getVerticalRuler();
-        if (v instanceof CompositeRuler) {
-            CompositeRuler c= (CompositeRuler) v;
-            c.removeDecorator(1);
-        }
-    }
- - /**
-     * Return whether the line number ruler column should be
-     * visible according to the preference store settings.
-     * @return <code>true</code> if the line numbers should be visible
-     */
-    private boolean isLineNumberRulerVisible() {
-        IPreferenceStore store= getPreferenceStore();
-        return store.getBoolean(LINE_NUMBER_RULER);
-    }
- - private void showOverviewRuler() {
-        AdaptedSourceViewer asv= (AdaptedSourceViewer) getSourceViewer();
-        asv.showOverviewRuler();
-    }
- - private void hideOverviewRuler() {
-        AdaptedSourceViewer asv= (AdaptedSourceViewer) getSourceViewer();
-        asv.hideOverviewRuler();
-    }
- - protected boolean isOverviewRulerVisible() {
-        IPreferenceStore store= getPreferenceStore();
-        return store.getBoolean(OVERVIEW_RULER);
-    }
- +
    /** Outliner context menu Id */
    protected String fOutlinerContextMenuId;
- +
    /**
     * Sets the outliner's context menu ID.
     */
    protected void setOutlinerContextMenuId(String menuId) {
-        fOutlinerContextMenuId= menuId;
+        fOutlinerContextMenuId = menuId;
    }
}
Index: src/org/eclipse/cdt/internal/ui/editor/CEditorMessages.properties
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditorMessages.properties,v
retrieving revision 1.3
diff -u -r1.3 CEditorMessages.properties
--- src/org/eclipse/cdt/internal/ui/editor/CEditorMessages.properties 10 Apr 2003 19:25:49 -0000 1.3 +++ src/org/eclipse/cdt/internal/ui/editor/CEditorMessages.properties 21 Apr 2003 16:58:55 -0000
@@ -19,12 +19,9 @@
ClassFileMarkerAnnotationModel.error.isAffected=ClassFileMarkerAnnotationModel.isAffected
ClassFileMarkerAnnotationModel.error.resourceChanged=ClassFileMarkerAnnotationModel.resourceChanged

-CEditor.error.saving.message1=File has been deleted.
-CEditor.error.saving.message2=Could not save file.
-CEditor.error.saving.message3=Could not save file.
-CEditor.error.saving.title1=Cannot Save
-CEditor.error.saving.title2=Save Problems
-CEditor.error.saving.title3=Save Problems
+CEditor.error.saving.message=Save could not be completed. {0}
+CEditor.error.saving.title=Problems During Save As...
+
CEditorPreferencePage.description= C Editor Preferences

DeleteISourceManipulations.description=Delete the selected element in the editor
Index: src/org/eclipse/cdt/internal/ui/editor/IPainter.java
===================================================================
RCS file: src/org/eclipse/cdt/internal/ui/editor/IPainter.java
diff -N src/org/eclipse/cdt/internal/ui/editor/IPainter.java
--- src/org/eclipse/cdt/internal/ui/editor/IPainter.java 26 Jun 2002 20:55:44 -0000 1.1
+++ /dev/null    1 Jan 1970 00:00:00 -0000
@@ -1,26 +0,0 @@
-package org.eclipse.cdt.internal.ui.editor;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-public interface IPainter {
- - /** Paint reasons */
-    int SELECTION=        0;
-    int TEXT_CHANGE=    1;
-    int KEY_STROKE=        2;
-    int MOUSE_BUTTON= 4;
-    int INTERNAL=            8;
- - - void dispose(); - - void paint(int reason); - - void deactivate(boolean redraw); - - void setPositionManager(IPositionManager manager);
-}
-
Index: src/org/eclipse/cdt/internal/ui/editor/LinePainter.java
===================================================================
RCS file: src/org/eclipse/cdt/internal/ui/editor/LinePainter.java
diff -N src/org/eclipse/cdt/internal/ui/editor/LinePainter.java
--- src/org/eclipse/cdt/internal/ui/editor/LinePainter.java 26 Jun 2002 20:55:44 -0000 1.1
+++ /dev/null    1 Jan 1970 00:00:00 -0000
@@ -1,141 +0,0 @@
-package org.eclipse.cdt.internal.ui.editor;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.swt.custom.LineBackgroundEvent;
-import org.eclipse.swt.custom.LineBackgroundListener;
-import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.custom.StyledTextContent;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Point;
-
-import org.eclipse.jface.text.source.ISourceViewer;
-
-
-public class LinePainter implements IPainter, LineBackgroundListener {
- - private StyledText fTextWidget;
-    private Color fHighlightColor;
-    private int[] fLine= { -1, -1 };
-    private boolean fIsActive= false;
- - - public LinePainter(ISourceViewer sourceViewer) {
-        fTextWidget= sourceViewer.getTextWidget();
-    }
- - public void setHighlightColor(Color highlightColor) {
-        fHighlightColor= highlightColor;
-    }
- - /*
-     * @see LineBackgroundListener#lineGetBackground(LineBackgroundEvent)
-     */
-    public void lineGetBackground(LineBackgroundEvent event) {
- /* Don't use cached line information because of batched redrawing events. */ - - if (fTextWidget != null) {
-
- - int caret= fTextWidget.getCaretOffset();
-            int length= event.lineText.length();
- - if (event.lineOffset <= caret && caret <= event.lineOffset + length && fIsActive) {
-                StyledTextContent content= fTextWidget.getContent();
-                Point p= fTextWidget.getSelectionRange();
- if(content.getLineAtOffset(caret) == content.getLineAtOffset(p.x)) {
-                    event.lineBackground= fHighlightColor;
-                } else {
-                    event.lineBackground= fTextWidget.getBackground();
-                }
-            }
-            else
-                event.lineBackground= fTextWidget.getBackground();
-        }
-    }
- - private void updateHighlightLine() {
-        StyledTextContent content= fTextWidget.getContent();
- - - int offset= fTextWidget.getCaretOffset();
-        int length= content.getCharCount();
-        if (offset > length)
-            offset= length;
- - int lineNumber= content.getLineAtOffset(offset);
-        fLine[0]= content.getOffsetAtLine(lineNumber);
- - try {
-            fLine[1]= content.getOffsetAtLine(lineNumber + 1);
-        } catch (IllegalArgumentException x) {
-            fLine[1]= -1;
-        }
-    }
- - private void clearHighlightLine() {
-        if (fLine[0] <=  fTextWidget.getCharCount())
-            drawHighlightLine();
-    }
- - private void drawHighlightLine() {
-        if (fLine[1] >= fTextWidget.getCharCount())
-            fLine[1]= -1;
- - if (fLine[1] == -1) { - - Point upperLeft= fTextWidget.getLocationAtOffset(fLine[0]);
-            int width= fTextWidget.getClientArea().width;
- int height= fTextWidget.getLineHeight(); - fTextWidget.redraw(upperLeft.x, upperLeft.y, width, height, false); - - } else {
-            fTextWidget.redrawRange(fLine[0], fLine[1] - fLine[0], true);
-        }
-    }
- - /*
-     * @see IPainter#deactivate(boolean)
-     */
-    public void deactivate(boolean redraw) {
-        if (fIsActive) {
-            fIsActive= false;
-            fTextWidget.removeLineBackgroundListener(this);
-            if (redraw)
-                drawHighlightLine();
-        }
-    }
- - /*
-     * @see IPainter#dispose()
-     */
-    public void dispose() {
-        fTextWidget= null;
-    }
- - /*
-     * @see IPainter#paint(int)
-     */
-    public void paint(int reason) {
-        if (!fIsActive) {
-            fIsActive= true;
-            fTextWidget.addLineBackgroundListener(this);
-        } else if (fLine[0] != -1) {
-            clearHighlightLine();
-        }
- - updateHighlightLine(); - - drawHighlightLine(); - } - - /*
-     * @see IPainter#setPositionManager(IPositionManager)
-     */
-    public void setPositionManager(IPositionManager manager) {
-    }
-}
-
Index: src/org/eclipse/cdt/internal/ui/editor/OverviewRuler.java
===================================================================
RCS file: src/org/eclipse/cdt/internal/ui/editor/OverviewRuler.java
diff -N src/org/eclipse/cdt/internal/ui/editor/OverviewRuler.java
--- src/org/eclipse/cdt/internal/ui/editor/OverviewRuler.java 29 Oct 2002 21:40:58 -0000 1.3
+++ /dev/null    1 Jan 1970 00:00:00 -0000
@@ -1,498 +0,0 @@
-package org.eclipse.cdt.internal.ui.editor;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-
-
-import java.util.Iterator;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.MouseAdapter;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseMoveListener;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.events.PaintListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Cursor;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Canvas;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-
-import org.eclipse.cdt.internal.ui.text.CTextTools;
-import org.eclipse.cdt.ui.CUIPlugin;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.IRegion;
-import org.eclipse.jface.text.ITextListener;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.Position;
-import org.eclipse.jface.text.TextEvent;
-import org.eclipse.jface.text.source.Annotation;
-import org.eclipse.jface.text.source.IAnnotationModel;
-import org.eclipse.jface.text.source.IAnnotationModelListener;
-
-
-
-/**
- *
- */
-public class OverviewRuler {
- - /**
-     * Internal listener class.
-     */
- class InternalListener implements ITextListener, IAnnotationModelListener { - - /*
-         * @see ITextListener#textChanged
-         */
- public void textChanged(TextEvent e) { - if (fTextViewer != null && e.getDocumentEvent() == null && e.getViewerRedrawState()) {
-                // handle only changes of visible document
-                redraw();
-            }
-        }
- - /*
-         * @see IAnnotationModelListener#modelChanged(IAnnotationModel)
-         */
-        public void modelChanged(IAnnotationModel model) {
-            update();
-        }
-    }
- - /**
-     * Filters problems based on their types.
-     */
-    class FilterIterator implements Iterator {
- - private Iterator fIterator;
-        private int fType;
-        private Annotation fNext;
- - public FilterIterator(int type) {
-            fType= type;
-            if (fModel != null) {
-                fIterator= fModel.getAnnotationIterator();
-                skip();
-            }
-        }
- - private void skip() {
-            while (fIterator.hasNext()) {
-                fNext= (Annotation) fIterator.next();
-                int type= getType(fNext);
-                if ((fType == ALL && type != UNKNOWN) || fType == type)
-                    return;
-            }
-            fNext= null;
-        }
- - /*
-         * @see Iterator#hasNext()
-         */
-        public boolean hasNext() {
-            return fNext != null;
-        }
-        /*
-         * @see Iterator#next()
-         */
-        public Object next() {
-            try {
-                return fNext;
-            } finally {
-                if (fModel != null)
-                    skip();
-            }
-        }
-        /*
-         * @see Iterator#remove()
-         */
-        public void remove() {
-            throw new UnsupportedOperationException();
-        }
-    };
- - - - /** Problem types */
-    private static final int ALL= -1;
-    private static final int COMPILE_WARNING= 0;
-    private static final int COMPILE_ERROR= 1;
-    private static final int TEMPORARY= 2;
-    private static final int UNKNOWN= 4;
- - /** Color table */
-    private static final RGB[][] COLORS= new RGB[][] {
- /* fill */ /* stroke */
-        /* warning */ { new RGB(248, 218, 114),    new RGB(139, 109, 7) },
-        /* error */     { new RGB(255, 140, 140),    new RGB(255, 0 ,0) },
-        /* temp */    { new RGB(240, 230, 230),    new RGB(200, 100, 100) }
-    };
- - /** drawing layers */ - private static final int[] LAYERS= new int[] { COMPILE_WARNING, TEMPORARY, COMPILE_ERROR }; - - private static final int INSET= 2;
-    private static final int PROBLEM_HEIGHT_MIN= 4;
-    private static boolean PROBLEM_HEIGHT_SCALABLE= false;
-
-
- - /** The model of the overview ruler */
-    protected IAnnotationModel fModel;
-    /** The view to which this ruler is connected */
-    protected ITextViewer fTextViewer;
-    /** The ruler's canvas */
-    private Canvas fCanvas;
-    /** The drawable for double buffering */
-    private Image fBuffer;
-    /** The internal listener */
-    private InternalListener fInternalListener= new InternalListener();
-    /** The width of this vertical ruler */
-    private int fWidth;
-    /** The hit detection cursor */
-    private Cursor fHitDetectionCursor;
-    /** The last cursor */
-    private Cursor fLastCursor;
- - - /**
-     * Constructs a vertical ruler with the given width.
-     *
-     * @param width the width of the vertical ruler
-     */
-    public OverviewRuler(int width) {
-        fWidth= width;
-    }
- - public Control getControl() {
-        return fCanvas;
-    }
- - public int getWidth() {
-        return fWidth;
-    }
- - protected int getType(Annotation annotation) {
-        if (annotation instanceof IProblemAnnotation) {
-            IProblemAnnotation pa= (IProblemAnnotation) annotation;
-            //if (!pa.isRelevant())
-            //    return UNKNOWN;
-            if (pa.isTemporaryProblem())
-                return TEMPORARY;
-            if (pa.isError())
-                return COMPILE_ERROR;
-            if (pa.isWarning())
-                return COMPILE_WARNING;
-        }
- - return UNKNOWN;
-    }
- - public void setModel(IAnnotationModel model) {
-        if (model != fModel || model != null) {
- - if (fModel != null)
-                fModel.removeAnnotationModelListener(fInternalListener);
- - fModel= model; - - if (fModel != null)
-                fModel.addAnnotationModelListener(fInternalListener);
- - update();
-        }
- } - - public Control createControl(Composite parent, ITextViewer textViewer) { - - fTextViewer= textViewer; - - fHitDetectionCursor= new Cursor(parent.getDisplay(), SWT.CURSOR_HAND);
-        fCanvas= new Canvas(parent, SWT.NO_BACKGROUND);
- - fCanvas.addPaintListener(new PaintListener() {
-            public void paintControl(PaintEvent event) {
-                if (fTextViewer != null)
-                    doubleBufferPaint(event.gc);
-            }
-        });
- - fCanvas.addDisposeListener(new DisposeListener() {
-            public void widgetDisposed(DisposeEvent event) {
-                handleDispose();
- fTextViewer= null; - }
-        });
- - fCanvas.addMouseListener(new MouseAdapter() {
-            public void mouseDown(MouseEvent event) {
-                handleMouseDown(event);
-            }
-        });
- - fCanvas.addMouseMoveListener(new MouseMoveListener() {
-            public void mouseMove(MouseEvent event) {
-                handleMouseMove(event);
-            }
-        });
- - if (fTextViewer != null)
-            fTextViewer.addTextListener(fInternalListener);
- - return fCanvas;
-    }
- - /**
-     * Disposes the ruler's resources.
-     */
-    protected void handleDispose() {
- - if (fTextViewer != null) {
-            fTextViewer.removeTextListener(fInternalListener);
-            fTextViewer= null;
-        }
-
-        if (fModel != null)
-            fModel.removeAnnotationModelListener(fInternalListener);
-
-        if (fBuffer != null) {
-            fBuffer.dispose();
-            fBuffer= null;
-        }
- - if (fHitDetectionCursor != null) {
-            fHitDetectionCursor.dispose();
-            fHitDetectionCursor= null;
-        }
-    }
-
-    /**
-     * Double buffer drawing.
-     */
-    protected void doubleBufferPaint(GC dest) {
- - Point size= fCanvas.getSize(); - - if (size.x <= 0 || size.y <= 0)
-            return;
- - if (fBuffer != null) {
-            Rectangle r= fBuffer.getBounds();
-            if (r.width != size.x || r.height != size.y) {
-                fBuffer.dispose();
-                fBuffer= null;
-            }
-        }
-        if (fBuffer == null)
-            fBuffer= new Image(fCanvas.getDisplay(), size.x, size.y);
- - GC gc= new GC(fBuffer);
-        try {
-            gc.setBackground(fCanvas.getBackground());
-            gc.fillRectangle(0, 0, size.x, size.y);
-            doPaint(gc);
-        } finally {
-            gc.dispose();
-        }
- - dest.drawImage(fBuffer, 0, 0);
-    }
- - private Color getColor(RGB rgb) {
-        CTextTools textTools= CUIPlugin.getDefault().getTextTools();
-        return textTools.getColorManager().getColor(rgb);
-    }
- - private void doPaint(GC gc) { - - if (fTextViewer == null)
-            return;
- - Rectangle r= new Rectangle(0, 0, 0, 0);
-        int yy, hh= PROBLEM_HEIGHT_MIN;
- - - IDocument document= fTextViewer.getDocument();
-        IRegion visible= fTextViewer.getVisibleRegion();
- - StyledText textWidget= fTextViewer.getTextWidget();
-        int maxLines= textWidget.getLineCount();
- - Point size= fCanvas.getSize();
-        int writable= maxLines * textWidget.getLineHeight();
-        if (size.y > writable)
-            size.y= writable;
- - for (int l= 0 ; l < LAYERS.length; l++) { - - Iterator e= new FilterIterator(LAYERS[l]);
-            Color fill= getColor(COLORS[LAYERS[l]][0]);
-            Color stroke= getColor(COLORS[LAYERS[l]][1]);
- - for (int i= 0; e.hasNext(); i++) { - - Annotation a= (Annotation) e.next();
-                Position p= fModel.getPosition(a);
- - if (!p.overlapsWith(visible.getOffset(), visible.getLength()))
-                    continue;
- - int problemOffset= Math.max(p.getOffset(), visible.getOffset()); - int problemEnd= Math.min(p.getOffset() + p.getLength(), visible.getOffset() + visible.getLength()); - int problemLength= problemEnd - problemOffset; - - try { - - int startLine= textWidget.getLineAtOffset(problemOffset - visible.getOffset());
-                    yy= (startLine * size.y) / maxLines;
- - if (PROBLEM_HEIGHT_SCALABLE) { - int numbersOfLines= document.getNumberOfLines(problemOffset, problemLength);
-                        hh= (numbersOfLines * size.y) / maxLines;
-                        if (hh < PROBLEM_HEIGHT_MIN)
-                            hh= PROBLEM_HEIGHT_MIN;
-                    }
- - if (fill != null) {
-                        gc.setBackground(fill);
-                        gc.fillRectangle(INSET, yy, size.x-(2*INSET), hh);
-                    }
- - if (stroke != null) {
-                        gc.setForeground(stroke);
-                        r.x= INSET;
-                        r.y= yy;
-                        r.width= size.x - (2 * INSET) - 1;
-                        r.height= hh;
-                        gc.setLineWidth(1);
-                        gc.drawRectangle(r);
-                    }
-                } catch (BadLocationException x) {
-                }
-            }
-        }
-    }
- - - /**
-     * Thread-safe implementation.
-     * Can be called from any thread.
-     */
-    public void update() {
-        if (fCanvas != null && !fCanvas.isDisposed()) {
-            Display d= fCanvas.getDisplay();
-            if (d != null) {
-                d.asyncExec(new Runnable() {
-                    public void run() {
-                        redraw();
-                    }
-                });
- } - }
-    }
- - /**
-     * Redraws the overview ruler.
-     */
-    protected void redraw() {
-        if (fCanvas != null && !fCanvas.isDisposed()) {
-            GC gc= new GC(fCanvas);
-            doubleBufferPaint(gc);
-            gc.dispose();
-        }
-    }
- - private int[] toLineNumbers(int y_coordinate) { - - IRegion visible= fTextViewer.getVisibleRegion();
-        int lineNumber= 0;
-        try {
- lineNumber= fTextViewer.getDocument().getLineOfOffset(visible.getOffset());
-        } catch (BadLocationException x) {
-        }
- - StyledText textWidget= fTextViewer.getTextWidget();
-        int maxLines= textWidget.getContent().getLineCount();
- - Point size= fCanvas.getSize();
-        int writable= maxLines * textWidget.getLineHeight();
-        if (size.y > writable)
-            size.y= writable;
- - int[] lines= new int[2]; - - int pixel= Math.max(y_coordinate - 1, 0);
-        lines[0]=  lineNumber + (pixel * maxLines) / size.y;
- - pixel= Math.min(size.y, y_coordinate + 1);
-        lines[1]=  lineNumber + (pixel * maxLines) / size.y;
- - return lines;
-    }
- - private Position getProblemPositionAt(int[] lineNumbers) { - - Position found= null; - - try {
-            IDocument d= fTextViewer.getDocument();
-            IRegion line= d.getLineInformation(lineNumbers[0]);
-            int start= line.getOffset();
- - line= d.getLineInformation(lineNumbers[lineNumbers.length - 1]);
-            int end= line.getOffset() + line.getLength();
- - Iterator e= new FilterIterator(ALL);
-            while (e.hasNext()) {
-                Annotation a= (Annotation) e.next();
-                Position p= fModel.getPosition(a);
-                if (start <= p.getOffset() && p.getOffset() < end) {
-                    if (found == null || p.getOffset() < found.getOffset())
-                        found= p;
-                }
-            }
- - } catch (BadLocationException x) {
-        }
- - return found;
-    }
- - protected void handleMouseDown(MouseEvent event) {
-        if (fTextViewer != null) {
-            int[] lines= toLineNumbers(event.y);
-            Position p= getProblemPositionAt(lines);
-            if (p != null) {
-                fTextViewer.revealRange(p.getOffset(), p.getLength());
-                fTextViewer.setSelectedRange(p.getOffset(), p.getLength());
-            }
-            fTextViewer.getTextWidget().setFocus();
-        }
-    }
- - protected void handleMouseMove(MouseEvent event) {
-        if (fTextViewer != null) {
-            int[] lines= toLineNumbers(event.y);
-            Position p= getProblemPositionAt(lines);
-            Cursor cursor= (p != null ? fHitDetectionCursor : null);
-            if (cursor != fLastCursor) {
-                fCanvas.setCursor(cursor);
-                fLastCursor= cursor;
-            }
- } - }
-}
Index: src/org/eclipse/cdt/internal/ui/editor/PaintManager.java
===================================================================
RCS file: src/org/eclipse/cdt/internal/ui/editor/PaintManager.java
diff -N src/org/eclipse/cdt/internal/ui/editor/PaintManager.java
--- src/org/eclipse/cdt/internal/ui/editor/PaintManager.java 16 Oct 2002 20:13:45 -0000 1.2
+++ /dev/null    1 Jan 1970 00:00:00 -0000
@@ -1,257 +0,0 @@
-package org.eclipse.cdt.internal.ui.editor;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.KeyListener;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseListener;
-import org.eclipse.swt.widgets.Control;
-
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.BadPositionCategoryException;
-import org.eclipse.jface.text.DefaultPositionUpdater;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.IPositionUpdater;
-import org.eclipse.jface.text.ITextInputListener;
-import org.eclipse.jface.text.ITextListener;
-import org.eclipse.jface.text.Position;
-import org.eclipse.jface.text.TextEvent;
-import org.eclipse.jface.text.source.ISourceViewer;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-
-
-public final class PaintManager implements KeyListener, MouseListener, ISelectionChangedListener, ITextListener, ITextInputListener { - - static class PositionManager implements IPositionManager { - - private IDocument fDocument;
-        private IPositionUpdater fPositionUpdater;
-        private String fCategory;
- - public PositionManager() {
-            fCategory= getClass().getName() + hashCode();
-            fPositionUpdater= new DefaultPositionUpdater(fCategory);
-        }
- - public void install(IDocument document) {
-            fDocument= document;
-            fDocument.addPositionCategory(fCategory);
-            fDocument.addPositionUpdater(fPositionUpdater);
-        }
- - public void dispose() {
-            uninstall(fDocument);
-        }
- - public void uninstall(IDocument document) {
-            if (document == fDocument && document != null) {
-                try {
-                    fDocument.removePositionUpdater(fPositionUpdater);
- fDocument.removePositionCategory(fCategory); - } catch (BadPositionCategoryException x) {
-                    // should not happen
-                }
-                fDocument= null;
-            }
-        }
- - /*
-         * @see IPositionManager#addManagedPosition(Position)
-         */
-        public void addManagedPosition(Position position) {
-            try {
-                fDocument.addPosition(fCategory, position);
-            } catch (BadPositionCategoryException x) {
-                // should not happen
-            } catch (BadLocationException x) {
-                // should not happen
-            }
-        }
- - /*
-         * @see IPositionManager#removeManagedPosition(Position)
-         */
-        public void removeManagedPosition(Position position) {
-            try {
-                fDocument.removePosition(fCategory, position);
-            } catch (BadPositionCategoryException x) {
-                // should not happen
-            }
-        }
-    };
- - - private List fPainters= new ArrayList(2);
-    private PositionManager fManager;
-    protected ISourceViewer fSourceViewer;
-    protected boolean fTextChanged= false;
-    private boolean fAutoRepeat= false;
- - - public PaintManager(ISourceViewer sourceViewer) {
-        fSourceViewer= sourceViewer;
-    }
- - public void addPainter(IPainter painter) {
-        if (!fPainters.contains(painter)) {
-            fPainters.add(painter);
-            if (fPainters.size() == 1)
-                install();
-            painter.setPositionManager(fManager);
-            painter.paint(IPainter.INTERNAL);
-        }
-    }
- - public void removePainter(IPainter painter) {
-        if (fPainters.remove(painter))
-            painter.setPositionManager(null);
-        if (fPainters.size() == 0)
-            dispose();
-    }
- - private void install() { - - fManager= new PositionManager();
-        fManager.install(fSourceViewer.getDocument());
- - fSourceViewer.addTextInputListener(this); - - ISelectionProvider provider= fSourceViewer.getSelectionProvider();
-        provider.addSelectionChangedListener(this);
- - fSourceViewer.addTextListener(this); - - StyledText text= fSourceViewer.getTextWidget();
-        text.addKeyListener(this);
-        text.addMouseListener(this);
-    }
- - public void dispose() { - - if (fManager != null) {
-            fManager.dispose();
-            fManager= null;
-        }
- - for (Iterator e = fPainters.iterator(); e.hasNext();) - ((IPainter) e.next()).dispose(); - fPainters.clear(); - - fSourceViewer.removeTextInputListener(this); - - ISelectionProvider provider= fSourceViewer.getSelectionProvider();
-        if (provider != null)
-            provider.removeSelectionChangedListener(this);
- - fSourceViewer.removeTextListener(this); - - StyledText text= fSourceViewer.getTextWidget();
-        if (text != null && !text.isDisposed()) {
-            text.removeKeyListener(this);
-            text.removeMouseListener(this);
-        }
-    }
- - protected void paint(int reason) {
-        for (Iterator e = fPainters.iterator(); e.hasNext();)
-            ((IPainter) e.next()).paint(reason);
-    }
- - /*
-     * @see KeyListener#keyPressed(KeyEvent)
-     */
-    public void keyPressed(KeyEvent e) {
-        // This leaves artifacts when scrolling
-        //if (fAutoRepeat)
-            paint(IPainter.KEY_STROKE);
- - fTextChanged= false;
-        fAutoRepeat= true;
-    }
-
-    /*
-     * @see KeyListener#keyReleased(KeyEvent)
-     */
-    public void keyReleased(KeyEvent e) {
-        fAutoRepeat= false;
-        if (!fTextChanged)
-            paint(IPainter.KEY_STROKE);
-    }
-
-    /*
-     * @see MouseListener#mouseDoubleClick(MouseEvent)
-     */
-    public void mouseDoubleClick(MouseEvent e) {
-    }
- - /*
-     * @see MouseListener#mouseDown(MouseEvent)
-     */
-    public void mouseDown(MouseEvent e) {
-    }
- - /*
-     * @see MouseListener#mouseUp(MouseEvent)
-     */
-    public void mouseUp(MouseEvent e) {
-        paint(IPainter.MOUSE_BUTTON);
-    }
- - /* - * @see ISelectionChangedListener#selectionChanged(SelectionChangedEvent)
-     */
-    public void selectionChanged(SelectionChangedEvent event) {
-        paint(IPainter.SELECTION);
-    }
- - /*
-     * @see ITextListener#textChanged(TextEvent)
-     */
-    public void textChanged(TextEvent event) {
-        fTextChanged= true;
-        Control control= fSourceViewer.getTextWidget();
-        if (control != null) {
-            control.getDisplay().asyncExec(new Runnable() {
-                public void run() {
-                    if (fTextChanged && fSourceViewer != null)
-                        paint(IPainter.TEXT_CHANGE);
-                }
-            });
-        }
-    }
- - /* - * @see ITextInputListener#inputDocumentAboutToBeChanged(IDocument, IDocument)
-     */
- public void inputDocumentAboutToBeChanged(IDocument oldInput, IDocument newInput) {
-        if (oldInput != null) {
-            for (Iterator e = fPainters.iterator(); e.hasNext();)
- ((IPainter) e.next()).deactivate(false); - fManager.uninstall(oldInput);
-        }
-    }
- - /*
-     * @see ITextInputListener#inputDocumentChanged(IDocument, IDocument)
-     */
- public void inputDocumentChanged(IDocument oldInput, IDocument newInput) {
-        if (newInput != null) {
-            fManager.install(newInput);
-            paint(IPainter.TEXT_CHANGE);
-        }
-    }
-}
-
-
-
Index: src/org/eclipse/cdt/internal/ui/editor/PrintMarginPainter.java
===================================================================
RCS file: src/org/eclipse/cdt/internal/ui/editor/PrintMarginPainter.java
diff -N src/org/eclipse/cdt/internal/ui/editor/PrintMarginPainter.java
--- src/org/eclipse/cdt/internal/ui/editor/PrintMarginPainter.java 26 Jun 2002 20:55:44 -0000 1.1
+++ /dev/null    1 Jan 1970 00:00:00 -0000
@@ -1,128 +0,0 @@
-package org.eclipse.cdt.internal.ui.editor;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.events.PaintListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Rectangle;
-
-import org.eclipse.jface.text.source.ISourceViewer;
-
-
-
-public class PrintMarginPainter  implements IPainter, PaintListener {
- -
-    private StyledText fTextWidget;
- - private int fMarginWidth= 80;
-    private Color fColor;
-    private int fLineStyle= SWT.LINE_SOLID;
-    private int fLineWidth= 1;
- - private int fCachedWidgetX= -1;
-    private boolean fIsActive= false;
- - public PrintMarginPainter(ISourceViewer sourceViewer) {
-        fTextWidget= sourceViewer.getTextWidget();
-    }
- - public void setMarginRulerColumn(int width) {
-        fMarginWidth= width;
-        intialize();
-    }
- - public void setMarginRulerStyle(int lineStyle) {
-        fLineStyle= lineStyle;
-    }
- - public void setMarginRulerWidth(int lineWidth) {
-        fLineWidth= lineWidth;
-    }
- - /**
-     * Must be called before <code>paint</code> is called the first time.
-     */
-    public void setMarginRulerColor(Color color) {
-        fColor= color;
-    }
- - /**
-     * Must be called explicitly when font of text widget changes.
-     */
-    public void intialize() {
-        computeWidgetX();
-        fTextWidget.redraw();
-    }
- - private void computeWidgetX() {
-        GC gc= new GC(fTextWidget);
-        int pixels= gc.getFontMetrics().getAverageCharWidth();
-        gc.dispose();
- - fCachedWidgetX= pixels * fMarginWidth;
-    }
- - /*
-     * @see IPainter#deactivate(boolean)
-     */
-    public void deactivate(boolean redraw) {
-        if (fIsActive) {
-            fIsActive= false;
-            fTextWidget.removePaintListener(this);
-            if (redraw)
-                fTextWidget.redraw();
- } - }
-
-    /*
-     * @see IPainter#dispose()
-     */
-    public void dispose() {
-        fTextWidget= null;
-    }
-
-    /*
-     * @see IPainter#paint(int)
-     */
-    public void paint(int reason) {
-        if (!fIsActive) {
-            fIsActive= true;
-            fTextWidget.addPaintListener(this);
-            if (fCachedWidgetX == -1)
-                computeWidgetX();
-            fTextWidget.redraw();
-        }
-    }
-
-    /*
-     * @see IPainter#setPositionManager(IPositionManager)
-     */
-    public void setPositionManager(IPositionManager manager) {
-    }
- - /*
-     * @see PaintListener#paintControl(PaintEvent)
-     */
-    public void paintControl(PaintEvent e) {
-        if (fTextWidget != null) {
-            int x= fCachedWidgetX - fTextWidget.getHorizontalPixel();
-            if (x >= 0) {
-                Rectangle area= fTextWidget.getClientArea();
-                e.gc.setForeground(fColor);
-                e.gc.setLineStyle(fLineStyle);
-                e.gc.setLineWidth(fLineWidth);
-                e.gc.drawLine(x, 0, x, area.height);
-            }
-        }
-    }
-}
-
-
Index: src/org/eclipse/cdt/internal/ui/editor/ProblemPainter.java
===================================================================
RCS file: src/org/eclipse/cdt/internal/ui/editor/ProblemPainter.java
diff -N src/org/eclipse/cdt/internal/ui/editor/ProblemPainter.java
--- src/org/eclipse/cdt/internal/ui/editor/ProblemPainter.java 13 Nov 2002 18:50:31 -0000 1.3
+++ /dev/null    1 Jan 1970 00:00:00 -0000
@@ -1,248 +0,0 @@
-package org.eclipse.cdt.internal.ui.editor;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.events.PaintListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Display;
-
-import org.eclipse.jface.text.IRegion;
-import org.eclipse.jface.text.Position;
-import org.eclipse.jface.text.source.Annotation;
-import org.eclipse.jface.text.source.IAnnotationModel;
-import org.eclipse.jface.text.source.IAnnotationModelListener;
-import org.eclipse.jface.text.source.ISourceViewer;
-
-import org.eclipse.ui.texteditor.IDocumentProvider;
-import org.eclipse.ui.texteditor.ITextEditor;
-
-//import org.eclipse.jdt.core.compiler.IProblem;
-
-
-/**
- * Highlights the temporary problems.
- */
-public class ProblemPainter implements IPainter, PaintListener, IAnnotationModelListener { - - private boolean fIsActive= false;
-    private boolean fIsPainting= false;
-    protected boolean fIsModelChanging= false;
- - private Color fColor;
-    private ITextEditor fTextEditor;
-    private ISourceViewer fSourceViewer;
-    private StyledText fTextWidget;
-    private IAnnotationModel fModel;
-    private List fProblemPositions= new ArrayList();
- - - - public ProblemPainter(ITextEditor textEditor, ISourceViewer sourceViewer) {
-        fTextEditor= textEditor;
-        fSourceViewer= sourceViewer;
-        fTextWidget= sourceViewer.getTextWidget();
-    }
- - private boolean hasProblems() {
-        if (fProblemPositions != null) {
-            return !fProblemPositions.isEmpty();
-        }
-        return false;
- } - - protected void enablePainting() {
-        if (!fIsPainting && hasProblems()) {
-            fIsPainting= true;
-            fTextWidget.addPaintListener(this);
-            handleDrawRequest(null);
-        }
-    }
- - protected void disablePainting(boolean redraw) {
-        if (fIsPainting) {
-            fIsPainting= false;
-            fTextWidget.removePaintListener(this);
-            if (redraw && hasProblems())
-                handleDrawRequest(null);
-        }
-    }
- - protected void setModel(IAnnotationModel model) { - - if (fModel != model) {
-            if (fModel != null)
-                fModel.removeAnnotationModelListener(this);
-            fModel= model;
-            if (fModel != null)
-                fModel.addAnnotationModelListener(this);
-        }
- - if (fProblemPositions != null) {
-            fProblemPositions.clear();
-            if (fModel != null) {
-                Iterator e= new ProblemAnnotationIterator(fModel);
-                while (e.hasNext()) {
-                    IProblemAnnotation pa= (IProblemAnnotation) e.next();
-                    if (pa.isProblem()) {
-                        Annotation a= (Annotation) pa;
-                        Position p= fModel.getPosition(a);
-                        fProblemPositions.add(p);
-                    }
-                }
-            }
-        }
-    }
- - /*
-     * @see IAnnotationModelListener#modelChanged(IAnnotationModel)
-     */
-    public void modelChanged(final IAnnotationModel model) {
- if (fTextWidget != null && !fTextWidget.isDisposed() && !fIsModelChanging) {
-            Display d= fTextWidget.getDisplay();
-            if (d != null) {
-                d.asyncExec(new Runnable() {
-                    public void run() {
-                        disablePainting(true);
-                        try {
-                            fIsModelChanging= true;
-                            setModel(model);
-                        } finally {
-                            fIsModelChanging= false;
-                        }
- enablePainting(); - }
-                });
- } - }
-    }
- - public void setHighlightColor(Color color) {
-        fColor= color;
-    }
- - /*
-     * @see IPainter#dispose()
-     */
-    public void dispose() {
-        fColor= null;
-        fTextWidget= null;
-        fModel= null;
-        fProblemPositions= null;
-    }
- - /*
-     * @see PaintListener#paintControl(PaintEvent)
-     */
-    public void paintControl(PaintEvent event) {
-        if (fTextWidget != null)
-            handleDrawRequest(event.gc);
-    }
- - private void handleDrawRequest(GC gc) { - - IRegion region= fSourceViewer.getVisibleRegion();
-        int offset= region.getOffset();
-        int length= region.getLength();
- - for (Iterator e = fProblemPositions.iterator(); e.hasNext();) {
-            Position p = (Position) e.next();
-            if (p.overlapsWith(offset, length)) {
-                int p1= Math.max(offset, p.getOffset());
- int p2= Math.min(offset + length, p.getOffset() + p.getLength());
-                draw(gc, p1 - offset, p2 - p1);
-            }
-        }
-    }
- - private int[] computePolyline(Point left, Point right, int height) { - - final int WIDTH= 4; // must be even
-        final int HEIGHT= 2; // can be any number
- - int leftX= left.x;
-        int peeks= (right.x - left.x) / WIDTH;
- - // compute (number of point) * 2
-        int length= ((2 * peeks) + 1) * 2;
-        if (length < 0)
-            return new int[0];
- - int[] coordinates= new int[length]; - - // cache peeks' y-coordinates
-        int bottom= left.y + height - 1;
-        int top= bottom - HEIGHT;
- - // populate array with peek coordinates
-        for (int i= 0; i < peeks; i++) {
-            int index= 4 * i;
-            coordinates[index]= leftX + (WIDTH * i);
-            coordinates[index+1]= bottom;
-            coordinates[index+2]= coordinates[index] + WIDTH/2;
-            coordinates[index+3]= top;
-        }
- - // the last down flank is missing
-        coordinates[length-2]= left.x + (WIDTH * peeks);
-        coordinates[length-1]= bottom;
- - return coordinates;
-    }
- - private void draw(GC gc, int offset, int length) {
-        if (gc != null) {
- - Point left= fTextWidget.getLocationAtOffset(offset);
-            Point right= fTextWidget.getLocationAtOffset(offset + length);
- - gc.setForeground(fColor); - int[] polyline= computePolyline(left, right, gc.getFontMetrics().getHeight());
-            gc.drawPolyline(polyline);
- - } else {
-            fTextWidget.redrawRange(offset, length, true);
-        }
-    }
- - /*
-     * @see IPainter#deactivate(boolean)
-     */
-    public void deactivate(boolean redraw) {
-        if (fIsActive) {
-            fIsActive= false;
-            disablePainting(redraw);
-            setModel(null);
-        }
-    }
- - /*
-     * @see IPainter#paint(int)
-     */
-    public void paint(int reason) {
-        if (!fIsActive) {
-            fIsActive= true;
-            IDocumentProvider provider= fTextEditor.getDocumentProvider();
- setModel(provider.getAnnotationModel(fTextEditor.getEditorInput()));
-            enablePainting();
-        }
-    }
-
-    /*
-     * @see IPainter#setPositionManager(IPositionManager)
-     */
-    public void setPositionManager(IPositionManager manager) {
-    }
-}
-
-
Index: src/org/eclipse/cdt/internal/ui/editor/asm/AsmTextEditor.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/asm/AsmTextEditor.java,v
retrieving revision 1.6
diff -u -r1.6 AsmTextEditor.java
--- src/org/eclipse/cdt/internal/ui/editor/asm/AsmTextEditor.java 28 Nov 2002 23:38:35 -0000 1.6 +++ src/org/eclipse/cdt/internal/ui/editor/asm/AsmTextEditor.java 21 Apr 2003 16:58:55 -0000
@@ -114,8 +114,8 @@
        } catch (InterruptedException x) {
        } catch (InvocationTargetException x) {
            // Shared with C editor
- String title= CEditorMessages.getString("CEditor.error.save.title"); //$NON-NLS-1$ - String msg= MessageFormat.format(CEditorMessages.getString("CEditor.error.save.message"), new Object[] { x.getTargetException().getMessage() }); //$NON-NLS-1$ + String title= CEditorMessages.getString("CEditor.error.saving.title"); //$NON-NLS-1$ + String msg= MessageFormat.format(CEditorMessages.getString("CEditor.error.saving.message"), new Object[] { x.getTargetException().getMessage() }); //$NON-NLS-1$
            MessageDialog.openError(shell, title, msg);
        } finally {
            getDocumentProvider().changed(newInput);
Index: src/org/eclipse/cdt/internal/ui/preferences/CEditorPreferencePage.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CEditorPreferencePage.java,v
retrieving revision 1.8
diff -u -r1.8 CEditorPreferencePage.java
--- src/org/eclipse/cdt/internal/ui/preferences/CEditorPreferencePage.java 4 Apr 2003 20:38:20 -0000 1.8 +++ src/org/eclipse/cdt/internal/ui/preferences/CEditorPreferencePage.java 21 Apr 2003 16:58:55 -0000
@@ -13,6 +13,17 @@
import java.util.Iterator;
import java.util.Map;

+import org.eclipse.cdt.internal.ui.CPluginImages;
+import org.eclipse.cdt.internal.ui.dialogs.StatusInfo;
+import org.eclipse.cdt.internal.ui.dialogs.StatusUtil;
+import org.eclipse.cdt.internal.ui.editor.CEditor;
+import org.eclipse.cdt.internal.ui.text.CSourceViewerConfiguration;
+import org.eclipse.cdt.internal.ui.text.CTextTools;
+import org.eclipse.cdt.internal.ui.text.ContentAssistPreference;
+import org.eclipse.cdt.internal.ui.text.ICColorConstants;
+import org.eclipse.cdt.ui.CUIPlugin;
+import org.eclipse.cdt.utils.ui.controls.TabFolderLayout;
+import org.eclipse.core.runtime.IStatus;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferenceConverter;
import org.eclipse.jface.preference.PreferencePage;
@@ -45,142 +56,66 @@
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
+import org.eclipse.ui.editors.text.TextEditorPreferenceConstants;
+import org.eclipse.ui.texteditor.AnnotationPreference;
+import org.eclipse.ui.texteditor.MarkerAnnotationPreferences;
import org.eclipse.ui.texteditor.WorkbenchChainedTextFontFieldEditor;

-import org.eclipse.cdt.internal.ui.CPluginImages;
-import org.eclipse.cdt.internal.ui.dialogs.StatusInfo;
-import org.eclipse.cdt.internal.ui.dialogs.StatusUtil;
-import org.eclipse.cdt.internal.ui.editor.CEditor;
-import org.eclipse.cdt.internal.ui.text.CSourceViewerConfiguration;
-import org.eclipse.cdt.internal.ui.text.CTextTools;
-import org.eclipse.cdt.internal.ui.text.ContentAssistPreference;
-import org.eclipse.cdt.internal.ui.text.ICColorConstants;
-import org.eclipse.cdt.ui.CUIPlugin;
-import org.eclipse.cdt.utils.ui.controls.TabFolderLayout;
-import org.eclipse.core.runtime.IStatus;
-
-
/*
 * The page for setting the editor options.
 */
public class CEditorPreferencePage extends PreferencePage implements IWorkbenchPreferencePage { - - public final OverlayPreferenceStore.OverlayKey[] fKeys= new OverlayPreferenceStore.OverlayKey[] { - - new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, CEditor.PREFERENCE_COLOR_FOREGROUND), - new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, CEditor.PREFERENCE_COLOR_FOREGROUND_SYSTEM_DEFAULT),
-
- new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, CEditor.PREFERENCE_COLOR_BACKGROUND), - new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, CEditor.PREFERENCE_COLOR_BACKGROUND_SYSTEM_DEFAULT),
-
- new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.INT, CSourceViewerConfiguration.PREFERENCE_TAB_WIDTH), - - new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, ICColorConstants.C_MULTI_LINE_COMMENT), - new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, ICColorConstants.C_MULTI_LINE_COMMENT + "_bold"), - - new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, ICColorConstants.C_SINGLE_LINE_COMMENT), - new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, ICColorConstants.C_SINGLE_LINE_COMMENT + "_bold"), - - new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, ICColorConstants.C_KEYWORD), - new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, ICColorConstants.C_KEYWORD + "_bold"),
-
- new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, ICColorConstants.C_TYPE), - new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, ICColorConstants.C_TYPE + "_bold"), - - new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, ICColorConstants.C_STRING), - new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, ICColorConstants.C_STRING + "_bold"), - - new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, ICColorConstants.C_DEFAULT), - new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, ICColorConstants.C_DEFAULT + "_bold"),
-
- new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, CEditor.MATCHING_BRACKETS_COLOR), - new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, CEditor.MATCHING_BRACKETS), - new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, CEditor.MATCHING_BRACKETS_NOBOX), - - new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, CEditor.CURRENT_LINE_COLOR), - new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, CEditor.CURRENT_LINE), - - new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, CEditor.PROBLEM_INDICATION_COLOR), - new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, CEditor.PROBLEM_INDICATION), - - new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, CEditor.SPACES_FOR_TABS), - - new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, CEditor.PRINT_MARGIN_COLOR), - new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.INT, CEditor.PRINT_MARGIN_COLUMN), - new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, CEditor.PRINT_MARGIN), - - new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, CEditor.LINKED_POSITION_COLOR), - - new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, CEditor.LINE_NUMBER_COLOR), - new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, CEditor.LINE_NUMBER_RULER), - - new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, CEditor.OVERVIEW_RULER), - - new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, ContentAssistPreference.AUTOACTIVATION), - new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.INT, ContentAssistPreference.AUTOACTIVATION_DELAY), - new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, ContentAssistPreference.AUTOINSERT), - new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, ContentAssistPreference.PROPOSALS_BACKGROUND), - //new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, ContentAssistPreference.PROPOSALS_FOREGROUND), - //new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, ContentAssistPreference.PARAMETERS_BACKGROUND), - //new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, ContentAssistPreference.PARAMETERS_FOREGROUND), - new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, ContentAssistPreference.AUTOACTIVATION_TRIGGERS_C), - //new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, ContentAssistPreference.AUTOACTIVATION_TRIGGERS_JAVADOC), - new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, ContentAssistPreference.SHOW_DOCUMENTED_PROPOSALS), - new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, ContentAssistPreference.ORDER_PROPOSALS), - new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, ContentAssistPreference.CASE_SENSITIVITY), - new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, ContentAssistPreference.ADD_INCLUDE) - - }; - - protected final String[][] fListModel= new String[][] {
-        { "Multi-line comment", ICColorConstants.C_MULTI_LINE_COMMENT },
-        { "Single-line comment", ICColorConstants.C_SINGLE_LINE_COMMENT },
-        { "Keywords", ICColorConstants.C_KEYWORD },
-        { "Built-in types", ICColorConstants.C_TYPE },
-        { "Strings", ICColorConstants.C_STRING },
-        { "Others", ICColorConstants.C_DEFAULT }
+
+ protected final String[][] fListModel = new String[][] { { "Multi-line comment", ICColorConstants.C_MULTI_LINE_COMMENT }, { + "Single-line comment", ICColorConstants.C_SINGLE_LINE_COMMENT }, {
+            "Keywords", ICColorConstants.C_KEYWORD }, {
+            "Built-in types", ICColorConstants.C_TYPE }, {
+            "Strings", ICColorConstants.C_STRING }, {
+            "Others", ICColorConstants.C_DEFAULT }
    };
- - protected final String[][] fAppearanceColorListModel= new String[][] {
-        {"Line number color", CEditor.LINE_NUMBER_COLOR}, //$NON-NLS-1$
- {"Matching bracket color", CEditor.MATCHING_BRACKETS_COLOR}, //$NON-NLS-1$ - {"Current line highlight color", CEditor.CURRENT_LINE_COLOR}, //$NON-NLS-1$ - {"Problem indicator color", CEditor.PROBLEM_INDICATION_COLOR}, //$NON-NLS-1$
-        {"Print margin color", CEditor.PRINT_MARGIN_COLOR}, //$NON-NLS-1$
- {"Linked position color", CEditor.LINKED_POSITION_COLOR}, //$NON-NLS-1$
+
+ protected final String[][] fAppearanceColorListModel = new String[][] { { "Line number color", TextEditorPreferenceConstants.EDITOR_LINE_NUMBER_RULER_COLOR }, //$NON-NLS-1$
+        {
+ "Matching bracket color", CEditor.MATCHING_BRACKETS_COLOR }, //$NON-NLS-1$
+        {
+ "Current line highlight color", TextEditorPreferenceConstants.EDITOR_CURRENT_LINE_COLOR }, //$NON-NLS-1$
+        {
+ "Print margin color", TextEditorPreferenceConstants.EDITOR_PRINT_MARGIN_COLOR }, //$NON-NLS-1$
+        {
+ "Linked position color", CEditor.LINKED_POSITION_COLOR }, //$NON-NLS-1$
    };
- +
    protected OverlayPreferenceStore fOverlayStore;
    private CTextTools fCTextTools;
- - protected Map fColorButtons= new HashMap(); - private SelectionListener fColorButtonListener= new SelectionListener() {
+
+    protected Map fColorButtons = new HashMap();
+ private SelectionListener fColorButtonListener = new SelectionListener() {
        public void widgetDefaultSelected(SelectionEvent e) {
        }
        public void widgetSelected(SelectionEvent e) {
-            ColorEditor editor= (ColorEditor) e.widget.getData();
+            ColorEditor editor = (ColorEditor) e.widget.getData();
PreferenceConverter.setValue(fOverlayStore, (String) fColorButtons.get(editor), editor.getColorValue());
        }
    };
- - protected Map fCheckBoxes= new HashMap();
-    private SelectionListener fCheckBoxListener= new SelectionListener() {
+
+    protected Map fCheckBoxes = new HashMap();
+    private SelectionListener fCheckBoxListener = new SelectionListener() {
        public void widgetDefaultSelected(SelectionEvent e) {
        }
        public void widgetSelected(SelectionEvent e) {
-            Button button= (Button) e.widget;
+            Button button = (Button) e.widget;
fOverlayStore.setValue((String) fCheckBoxes.get(button), button.getSelection());
        }
    };
- - protected Map fTextFields= new HashMap();
-    private ModifyListener fTextFieldListener= new ModifyListener() {
+
+    protected Map fTextFields = new HashMap();
+    private ModifyListener fTextFieldListener = new ModifyListener() {
        public void modifyText(ModifyEvent e) {
-            Text text= (Text) e.widget;
+            Text text = (Text) e.widget;
fOverlayStore.setValue((String) fTextFields.get(text), text.getText());
        }
    };
- +
    private WorkbenchChainedTextFontFieldEditor fFontEditor;
    protected List fList;
    protected ColorEditor fForegroundColorEditor;
@@ -190,84 +125,198 @@
    protected Button fBackgroundColorButton;
    protected Button fBoldCheckBox;
    protected SourceViewer fPreviewViewer;
- +
    protected List fAppearanceColorList;
-    private ColorEditor fSyntaxForegroundColorEditor;
    protected ColorEditor fAppearanceForegroundColorEditor;
- +
+    private final String[][] fAnnotationColorListModel;
+    private ColorEditor fAnnotationForegroundColorEditor;
+    private List fAnnotationList;
+    private Button fShowInOverviewRulerCheckBox;
+    private Button fShowInTextCheckBox;
+
    public CEditorPreferencePage() {
setDescription(CUIPlugin.getResourceString("CEditorPreferencePage.description"));
        setPreferenceStore(CUIPlugin.getDefault().getPreferenceStore());
- fOverlayStore= new OverlayPreferenceStore(getPreferenceStore(), fKeys); + MarkerAnnotationPreferences preferences = new MarkerAnnotationPreferences(); + fAnnotationColorListModel = createAnnotationTypeListModel(preferences);
+        fOverlayStore = createOverlayStore(preferences);
    }
- + + private OverlayPreferenceStore createOverlayStore(MarkerAnnotationPreferences preferences) {
+        ArrayList overlayKeys = new ArrayList();
+        Iterator e = preferences.getAnnotationPreferences().iterator();
+        while (e.hasNext()) {
+            AnnotationPreference info = (AnnotationPreference) e.next();
+ overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, info.getColorPreferenceKey())); + overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, info.getTextPreferenceKey()));
+            overlayKeys.add(
+ new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, info.getOverviewRulerPreferenceKey()));
+        }
+ overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, CEditor.PREFERENCE_COLOR_FOREGROUND));
+        overlayKeys.add(
+            new OverlayPreferenceStore.OverlayKey(
+                OverlayPreferenceStore.BOOLEAN,
+                CEditor.PREFERENCE_COLOR_FOREGROUND_SYSTEM_DEFAULT));
+ overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, CEditor.PREFERENCE_COLOR_BACKGROUND));
+        overlayKeys.add(
+            new OverlayPreferenceStore.OverlayKey(
+                OverlayPreferenceStore.BOOLEAN,
+                CEditor.PREFERENCE_COLOR_BACKGROUND_SYSTEM_DEFAULT));
+        overlayKeys.add(
+ new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.INT, CSourceViewerConfiguration.PREFERENCE_TAB_WIDTH));
+        overlayKeys.add(
+ new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, ICColorConstants.C_MULTI_LINE_COMMENT));
+        overlayKeys.add(
+ new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, ICColorConstants.C_MULTI_LINE_COMMENT + "_bold"));
+        overlayKeys.add(
+ new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, ICColorConstants.C_SINGLE_LINE_COMMENT));
+        overlayKeys.add(
+            new OverlayPreferenceStore.OverlayKey(
+                OverlayPreferenceStore.BOOLEAN,
+                ICColorConstants.C_SINGLE_LINE_COMMENT + "_bold"));
+ overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, ICColorConstants.C_KEYWORD));
+        overlayKeys.add(
+ new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, ICColorConstants.C_KEYWORD + "_bold")); + overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, ICColorConstants.C_TYPE)); + overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, ICColorConstants.C_TYPE + "_bold")); + overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, ICColorConstants.C_STRING)); + overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, ICColorConstants.C_STRING + "_bold")); + overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, ICColorConstants.C_DEFAULT));
+        overlayKeys.add(
+ new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, ICColorConstants.C_DEFAULT + "_bold")); + overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, CEditor.MATCHING_BRACKETS_COLOR)); + overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, CEditor.MATCHING_BRACKETS));
+        overlayKeys.add(
+            new OverlayPreferenceStore.OverlayKey(
+                OverlayPreferenceStore.STRING,
+                TextEditorPreferenceConstants.EDITOR_CURRENT_LINE_COLOR));
+        overlayKeys.add(
+            new OverlayPreferenceStore.OverlayKey(
+                OverlayPreferenceStore.BOOLEAN,
+                TextEditorPreferenceConstants.EDITOR_CURRENT_LINE));
+ overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, CEditor.SPACES_FOR_TABS));
+        overlayKeys.add(
+            new OverlayPreferenceStore.OverlayKey(
+                OverlayPreferenceStore.STRING,
+                TextEditorPreferenceConstants.EDITOR_PRINT_MARGIN_COLOR));
+        overlayKeys.add(
+            new OverlayPreferenceStore.OverlayKey(
+                OverlayPreferenceStore.INT,
+                TextEditorPreferenceConstants.EDITOR_PRINT_MARGIN_COLUMN));
+        overlayKeys.add(
+            new OverlayPreferenceStore.OverlayKey(
+                OverlayPreferenceStore.BOOLEAN,
+                TextEditorPreferenceConstants.EDITOR_PRINT_MARGIN));
+ overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, CEditor.LINKED_POSITION_COLOR));
+        overlayKeys.add(
+            new OverlayPreferenceStore.OverlayKey(
+                OverlayPreferenceStore.STRING,
+ TextEditorPreferenceConstants.EDITOR_LINE_NUMBER_RULER_COLOR));
+        overlayKeys.add(
+            new OverlayPreferenceStore.OverlayKey(
+                OverlayPreferenceStore.BOOLEAN,
+                TextEditorPreferenceConstants.EDITOR_LINE_NUMBER_RULER));
+        overlayKeys.add(
+            new OverlayPreferenceStore.OverlayKey(
+                OverlayPreferenceStore.BOOLEAN,
+                TextEditorPreferenceConstants.EDITOR_OVERVIEW_RULER));
+        overlayKeys.add(
+ new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, ContentAssistPreference.AUTOACTIVATION));
+        overlayKeys.add(
+ new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.INT, ContentAssistPreference.AUTOACTIVATION_DELAY)); + overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, ContentAssistPreference.AUTOINSERT));
+        overlayKeys.add(
+ new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, ContentAssistPreference.PROPOSALS_BACKGROUND));
+        overlayKeys.add(
+            new OverlayPreferenceStore.OverlayKey(
+                OverlayPreferenceStore.STRING,
+                ContentAssistPreference.AUTOACTIVATION_TRIGGERS_C));
+        overlayKeys.add(
+            new OverlayPreferenceStore.OverlayKey(
+                OverlayPreferenceStore.BOOLEAN,
+                ContentAssistPreference.SHOW_DOCUMENTED_PROPOSALS));
+        overlayKeys.add(
+ new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, ContentAssistPreference.ORDER_PROPOSALS));
+        overlayKeys.add(
+ new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, ContentAssistPreference.CASE_SENSITIVITY)); + overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, ContentAssistPreference.ADD_INCLUDE)); + //new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, ContentAssistPreference.PROPOSALS_FOREGROUND), + //new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, ContentAssistPreference.PARAMETERS_BACKGROUND), + //new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, ContentAssistPreference.PARAMETERS_FOREGROUND), + //new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, ContentAssistPreference.AUTOACTIVATION_TRIGGERS_JAVADOC),
+
+ OverlayPreferenceStore.OverlayKey[] keys = new OverlayPreferenceStore.OverlayKey[overlayKeys.size()];
+        overlayKeys.toArray(keys);
+        return new OverlayPreferenceStore(getPreferenceStore(), keys);
+    }
+
    public static void initDefaults(IPreferenceStore store) {
- +
        Color color;
-        Display display= Display.getDefault();
- + Display display = Display.getDefault();
+
+ MarkerAnnotationPreferences preferences = new MarkerAnnotationPreferences();
+        Iterator e = preferences.getAnnotationPreferences().iterator();
+        while (e.hasNext()) {
+            AnnotationPreference info = (AnnotationPreference) e.next();
+ store.setDefault(info.getTextPreferenceKey(), info.getTextPreferenceValue()); + store.setDefault(info.getOverviewRulerPreferenceKey(), info.getOverviewRulerPreferenceValue()); + PreferenceConverter.setDefault(store, info.getColorPreferenceKey(), info.getColorPreferenceValue());
+        }
        store.setDefault(CEditor.MATCHING_BRACKETS, true);
-        store.setDefault(CEditor.MATCHING_BRACKETS_NOBOX, false);
-        color= display.getSystemColor(SWT.COLOR_GRAY);
- PreferenceConverter.setDefault(store, CEditor.MATCHING_BRACKETS_COLOR, color.getRGB()); - - store.setDefault(CEditor.CURRENT_LINE, true); - PreferenceConverter.setDefault(store, CEditor.CURRENT_LINE_COLOR, new RGB(225, 235, 224)); - - store.setDefault(CEditor.PRINT_MARGIN, true);
-        store.setDefault(CEditor.PRINT_MARGIN_COLUMN, 80);
- PreferenceConverter.setDefault(store, CEditor.PRINT_MARGIN_COLOR, new RGB(176, 180 , 185));
-
- //PreferenceConverter.setDefault(store, CEditor.PREFERENCE_COLOR_FIND_SCOPE, new RGB(185, 176 , 180)); - - store.setDefault(CEditor.PROBLEM_INDICATION, true); - PreferenceConverter.setDefault(store, CEditor.PROBLEM_INDICATION_COLOR, new RGB(255, 0 , 128)); - - //store.setDefault(CompilationUnitEditor.OVERVIEW_RULER, false); - + color = display.getSystemColor(SWT.COLOR_GRAY); + PreferenceConverter.setDefault(store, CEditor.MATCHING_BRACKETS_COLOR, color.getRGB());
+
+ store.setDefault(TextEditorPreferenceConstants.EDITOR_CURRENT_LINE, true); + PreferenceConverter.setDefault(store, TextEditorPreferenceConstants.EDITOR_CURRENT_LINE_COLOR, new RGB(225, 235, 224));
+
+ store.setDefault(TextEditorPreferenceConstants.EDITOR_PRINT_MARGIN, true); + store.setDefault(TextEditorPreferenceConstants.EDITOR_PRINT_MARGIN_COLUMN, 80); + PreferenceConverter.setDefault(store, TextEditorPreferenceConstants.EDITOR_PRINT_MARGIN_COLOR, new RGB(176, 180, 185));
+
WorkbenchChainedTextFontFieldEditor.startPropagate(store, JFaceResources.TEXT_FONT); - - color= display.getSystemColor(SWT.COLOR_LIST_FOREGROUND); - PreferenceConverter.setDefault(store, CEditor.PREFERENCE_COLOR_FOREGROUND, color.getRGB());
+
+        color = display.getSystemColor(SWT.COLOR_LIST_FOREGROUND);
+ PreferenceConverter.setDefault(store, CEditor.PREFERENCE_COLOR_FOREGROUND, color.getRGB()); store.setDefault(CEditor.PREFERENCE_COLOR_FOREGROUND_SYSTEM_DEFAULT, true); - - color= display.getSystemColor(SWT.COLOR_LIST_BACKGROUND); - PreferenceConverter.setDefault(store, CEditor.PREFERENCE_COLOR_BACKGROUND, color.getRGB()); +
+        color = display.getSystemColor(SWT.COLOR_LIST_BACKGROUND);
+ PreferenceConverter.setDefault(store, CEditor.PREFERENCE_COLOR_BACKGROUND, color.getRGB()); store.setDefault(CEditor.PREFERENCE_COLOR_BACKGROUND_SYSTEM_DEFAULT, false); - + store.setDefault(CSourceViewerConfiguration.PREFERENCE_TAB_WIDTH, 4); - +
        store.setDefault(CEditor.SPACES_FOR_TABS, false);
- + PreferenceConverter.setDefault(store, ICColorConstants.C_MULTI_LINE_COMMENT, new RGB(63, 127, 95)); store.setDefault(ICColorConstants.C_MULTI_LINE_COMMENT + "_bold", false); - + PreferenceConverter.setDefault(store, ICColorConstants.C_SINGLE_LINE_COMMENT, new RGB(63, 125, 95)); store.setDefault(ICColorConstants.C_SINGLE_LINE_COMMENT + "_bold", false); - + PreferenceConverter.setDefault(store, ICColorConstants.C_KEYWORD, new RGB(127, 0, 85));
        store.setDefault(ICColorConstants.C_KEYWORD + "_bold", true);
- + PreferenceConverter.setDefault(store, ICColorConstants.C_TYPE, new RGB(127, 0, 85));
        store.setDefault(ICColorConstants.C_TYPE + "_bold", true);
- + PreferenceConverter.setDefault(store, ICColorConstants.C_STRING, new RGB(42, 0, 255));
        store.setDefault(ICColorConstants.C_STRING + "_bold", false);
- + PreferenceConverter.setDefault(store, ICColorConstants.C_DEFAULT, new RGB(0, 0, 0)); - store.setDefault(ICColorConstants.C_DEFAULT + "_bold", false); - - - PreferenceConverter.setDefault(store, CEditor.LINKED_POSITION_COLOR, new RGB(0, 200 , 100)); - - store.setDefault(CEditor.LINE_NUMBER_RULER, false); - PreferenceConverter.setDefault(store, CEditor.LINE_NUMBER_COLOR, new RGB(0, 0, 0)); - - store.setDefault(CEditor.OVERVIEW_RULER, true); - + store.setDefault(ICColorConstants.C_DEFAULT + "_bold", false);
+
+ PreferenceConverter.setDefault(store, CEditor.LINKED_POSITION_COLOR, new RGB(0, 200, 100));
+
+ store.setDefault(TextEditorPreferenceConstants.EDITOR_LINE_NUMBER_RULER, false); + PreferenceConverter.setDefault(store, TextEditorPreferenceConstants.EDITOR_LINE_NUMBER_RULER_COLOR, new RGB(0, 0, 0));
+
+ store.setDefault(TextEditorPreferenceConstants.EDITOR_OVERVIEW_RULER, true);
+
        store.setDefault(ContentAssistPreference.AUTOACTIVATION, false);
store.setDefault(ContentAssistPreference.AUTOACTIVATION_DELAY, 500); - +
        store.setDefault(ContentAssistPreference.AUTOINSERT, true);
PreferenceConverter.setDefault(store, ContentAssistPreference.PROPOSALS_BACKGROUND, new RGB(254, 241, 233)); //PreferenceConverter.setDefault(store, ContentAssistPreference.PROPOSALS_FOREGROUND, new RGB(0, 0, 0));
@@ -278,13 +327,13 @@
//store.setDefault(ContentAssistPreference.SHOW_VISIBLE_PROPOSALS, true);
        store.setDefault(ContentAssistPreference.CASE_SENSITIVITY, false);
        store.setDefault(ContentAssistPreference.ORDER_PROPOSALS, false);
- store.setDefault(ContentAssistPreference.ADD_INCLUDE, true); + store.setDefault(ContentAssistPreference.ADD_INCLUDE, true);

    }

    /*
     * @see IWorkbenchPreferencePage#init()
- */ + */
    public void init(IWorkbench workbench) {
    }

@@ -293,121 +342,261 @@
     */
    public void createControl(Composite parent) {
        super.createControl(parent);
- //WorkbenchHelp.setHelp(getControl(), ICHelpContextIds.JAVA_EDITOR_PREFERENCE_PAGE);
    }

- protected void handleListSelection() { - int i= fList.getSelectionIndex();
-        String key= fListModel[i][1];
-        RGB rgb= PreferenceConverter.getColor(fOverlayStore, key);
- fForegroundColorEditor.setColorValue(rgb); + protected void handleListSelection() {
+        int i = fList.getSelectionIndex();
+        String key = fListModel[i][1];
+        RGB rgb = PreferenceConverter.getColor(fOverlayStore, key);
+        fForegroundColorEditor.setColorValue(rgb);
fBoldCheckBox.setSelection(fOverlayStore.getBoolean(key + "_bold"));
    }
- +
+    private Control createAnnotationsPage(Composite parent) {
+        Composite composite = new Composite(parent, SWT.NULL);
+        GridLayout layout = new GridLayout();
+        layout.numColumns = 2;
+        composite.setLayout(layout);
+
+        Label label = new Label(composite, SWT.LEFT);
+        label.setText("Annotation Presentation Options");
+        GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+        gd.horizontalSpan = 2;
+        label.setLayoutData(gd);
+
+        Composite editorComposite = new Composite(composite, SWT.NONE);
+        layout = new GridLayout();
+        layout.numColumns = 2;
+        layout.marginHeight = 0;
+        layout.marginWidth = 0;
+        editorComposite.setLayout(layout);
+ gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.FILL_VERTICAL);
+        gd.horizontalSpan = 2;
+        editorComposite.setLayoutData(gd);
+
+ fAnnotationList = new List(editorComposite, SWT.SINGLE | SWT.V_SCROLL | SWT.BORDER); + gd = new GridData(GridData.VERTICAL_ALIGN_BEGINNING | GridData.FILL_HORIZONTAL);
+        gd.heightHint = convertHeightInCharsToPixels(8);
+        fAnnotationList.setLayoutData(gd);
+
+ Composite optionsComposite = new Composite(editorComposite, SWT.NONE);
+        layout = new GridLayout();
+        layout.marginHeight = 0;
+        layout.marginWidth = 0;
+        layout.numColumns = 2;
+        optionsComposite.setLayout(layout);
+        optionsComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+        fShowInTextCheckBox = new Button(optionsComposite, SWT.CHECK);
+        fShowInTextCheckBox.setText("Show In Text");
+        gd = new GridData(GridData.FILL_HORIZONTAL);
+        gd.horizontalAlignment = GridData.BEGINNING;
+        gd.horizontalSpan = 2;
+        fShowInTextCheckBox.setLayoutData(gd);
+
+ fShowInOverviewRulerCheckBox = new Button(optionsComposite, SWT.CHECK);
+        fShowInOverviewRulerCheckBox.setText("Show In Overview Ruler");
+        gd = new GridData(GridData.FILL_HORIZONTAL);
+        gd.horizontalAlignment = GridData.BEGINNING;
+        gd.horizontalSpan = 2;
+        fShowInOverviewRulerCheckBox.setLayoutData(gd);
+
+        label = new Label(optionsComposite, SWT.LEFT);
+        label.setText("Annotations Color");
+        gd = new GridData();
+        gd.horizontalAlignment = GridData.BEGINNING;
+        label.setLayoutData(gd);
+
+ fAnnotationForegroundColorEditor = new ColorEditor(optionsComposite); + Button foregroundColorButton = fAnnotationForegroundColorEditor.getButton();
+        gd = new GridData(GridData.FILL_HORIZONTAL);
+        gd.horizontalAlignment = GridData.BEGINNING;
+        foregroundColorButton.setLayoutData(gd);
+
+        fAnnotationList.addSelectionListener(new SelectionListener() {
+            public void widgetDefaultSelected(SelectionEvent e) {
+                // do nothing
+            }
+
+            public void widgetSelected(SelectionEvent e) {
+                handleAnnotationListSelection();
+            }
+        });
+
+        fShowInTextCheckBox.addSelectionListener(new SelectionListener() {
+            public void widgetDefaultSelected(SelectionEvent e) {
+                // do nothing
+            }
+
+            public void widgetSelected(SelectionEvent e) {
+                int i = fAnnotationList.getSelectionIndex();
+                String key = fAnnotationColorListModel[i][2];
+ fOverlayStore.setValue(key, fShowInTextCheckBox.getSelection());
+            }
+        });
+
+ fShowInOverviewRulerCheckBox.addSelectionListener(new SelectionListener() {
+            public void widgetDefaultSelected(SelectionEvent e) {
+                // do nothing
+            }
+
+            public void widgetSelected(SelectionEvent e) {
+                int i = fAnnotationList.getSelectionIndex();
+                String key = fAnnotationColorListModel[i][3];
+ fOverlayStore.setValue(key, fShowInOverviewRulerCheckBox.getSelection());
+            }
+        });
+
+ foregroundColorButton.addSelectionListener(new SelectionListener() {
+            public void widgetDefaultSelected(SelectionEvent e) {
+                // do nothing
+            }
+
+            public void widgetSelected(SelectionEvent e) {
+                int i = fAnnotationList.getSelectionIndex();
+                String key = fAnnotationColorListModel[i][1];
+ PreferenceConverter.setValue(fOverlayStore, key, fAnnotationForegroundColorEditor.getColorValue());
+            }
+        });
+
+        return composite;
+    }
+
+    private void handleAnnotationListSelection() {
+        int i = fAnnotationList.getSelectionIndex();
+
+        String key = fAnnotationColorListModel[i][1];
+        RGB rgb = PreferenceConverter.getColor(fOverlayStore, key);
+        fAnnotationForegroundColorEditor.setColorValue(rgb);
+
+        key = fAnnotationColorListModel[i][2];
+        fShowInTextCheckBox.setSelection(fOverlayStore.getBoolean(key));
+
+        key = fAnnotationColorListModel[i][3];
+ fShowInOverviewRulerCheckBox.setSelection(fOverlayStore.getBoolean(key));
+    }
+
+ private String[][] createAnnotationTypeListModel(MarkerAnnotationPreferences preferences) {
+        ArrayList listModelItems = new ArrayList();
+        Iterator e = preferences.getAnnotationPreferences().iterator();
+        while (e.hasNext()) {
+            AnnotationPreference info = (AnnotationPreference) e.next();
+            listModelItems.add(
+                new String[] {
+                    info.getPreferenceLabel(),
+                    info.getColorPreferenceKey(),
+                    info.getTextPreferenceKey(),
+                    info.getOverviewRulerPreferenceKey()});
+        }
+        String[][] items = new String[listModelItems.size()][];
+        listModelItems.toArray(items);
+        return items;
+    }
+
    private Control createColorPage(Composite parent) {
- - Composite colorComposite= new Composite(parent, SWT.NULL);
+
+        Composite colorComposite = new Composite(parent, SWT.NULL);
        colorComposite.setLayout(new GridLayout());

- Composite backgroundComposite= new Composite(colorComposite, SWT.NULL);
-        GridLayout layout= new GridLayout();
-        layout.marginHeight= 0;
-        layout.marginWidth= 0;
-        layout.numColumns= 2;
+ Composite backgroundComposite = new Composite(colorComposite, SWT.NULL);
+        GridLayout layout = new GridLayout();
+        layout.marginHeight = 0;
+        layout.marginWidth = 0;
+        layout.numColumns = 2;
        backgroundComposite.setLayout(layout);

-        Label label= new Label(backgroundComposite, SWT.NULL);
+        Label label = new Label(backgroundComposite, SWT.NULL);
        label.setText("Bac&kground Color:");
-        GridData gd= new GridData();
-        gd.horizontalSpan= 2;
+        GridData gd = new GridData();
+        gd.horizontalSpan = 2;
        label.setLayoutData(gd);

- SelectionListener backgroundSelectionListener= new SelectionListener() { - public void widgetSelected(SelectionEvent e) { - boolean custom= fBackgroundCustomRadioButton.getSelection(); + SelectionListener backgroundSelectionListener = new SelectionListener() {
+            public void widgetSelected(SelectionEvent e) {
+ boolean custom = fBackgroundCustomRadioButton.getSelection();
                fBackgroundColorButton.setEnabled(custom);
fOverlayStore.setValue(CEditor.PREFERENCE_COLOR_BACKGROUND_SYSTEM_DEFAULT, !custom);
            }
-            public void widgetDefaultSelected(SelectionEvent e) {}
+            public void widgetDefaultSelected(SelectionEvent e) {
+            }
        };

- fBackgroundDefaultRadioButton= new Button(backgroundComposite, SWT.RADIO | SWT.LEFT); + fBackgroundDefaultRadioButton = new Button(backgroundComposite, SWT.RADIO | SWT.LEFT);
        fBackgroundDefaultRadioButton.setText("S&ystem Default");
-        gd= new GridData();
-        gd.horizontalSpan= 2;
+        gd = new GridData();
+        gd.horizontalSpan = 2;
        fBackgroundDefaultRadioButton.setLayoutData(gd);
fBackgroundDefaultRadioButton.addSelectionListener(backgroundSelectionListener);

- fBackgroundCustomRadioButton= new Button(backgroundComposite, SWT.RADIO | SWT.LEFT); + fBackgroundCustomRadioButton = new Button(backgroundComposite, SWT.RADIO | SWT.LEFT);
        fBackgroundCustomRadioButton.setText("C&ustom");
fBackgroundCustomRadioButton.addSelectionListener(backgroundSelectionListener);

-        fBackgroundColorEditor= new ColorEditor(backgroundComposite);
-        fBackgroundColorButton= fBackgroundColorEditor.getButton();
-        gd= new GridData(GridData.FILL_HORIZONTAL);
-        gd.horizontalAlignment= GridData.BEGINNING;
+        fBackgroundColorEditor = new ColorEditor(backgroundComposite);
+        fBackgroundColorButton = fBackgroundColorEditor.getButton();
+        gd = new GridData(GridData.FILL_HORIZONTAL);
+        gd.horizontalAlignment = GridData.BEGINNING;
        fBackgroundColorButton.setLayoutData(gd);

-        label= new Label(colorComposite, SWT.LEFT);
+        label = new Label(colorComposite, SWT.LEFT);
        label.setText("Fo&reground:");
        label.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

-        Composite editorComposite= new Composite(colorComposite, SWT.NULL);
-        layout= new GridLayout();
-        layout.numColumns= 2;
-        layout.marginHeight= 0;
-        layout.marginWidth= 0;
+ Composite editorComposite = new Composite(colorComposite, SWT.NULL);
+        layout = new GridLayout();
+        layout.numColumns = 2;
+        layout.marginHeight = 0;
+        layout.marginWidth = 0;
        editorComposite.setLayout(layout);
-        gd= new GridData(GridData.FILL_BOTH);
- editorComposite.setLayoutData(gd); + gd = new GridData(GridData.FILL_BOTH);
+        editorComposite.setLayoutData(gd);

-        fList= new List(editorComposite, SWT.SINGLE | SWT.V_SCROLL);
-        gd= new GridData(GridData.FILL_BOTH);
-        gd.heightHint= convertHeightInCharsToPixels(5);
+        fList = new List(editorComposite, SWT.SINGLE | SWT.V_SCROLL);
+        gd = new GridData(GridData.FILL_BOTH);
+        gd.heightHint = convertHeightInCharsToPixels(5);
        fList.setLayoutData(gd);
- - Composite stylesComposite= new Composite(editorComposite, SWT.NULL);
-        layout= new GridLayout();
-        layout.marginHeight= 0;
-        layout.marginWidth= 0;
-        layout.numColumns= 2;
+
+ Composite stylesComposite = new Composite(editorComposite, SWT.NULL);
+        layout = new GridLayout();
+        layout.marginHeight = 0;
+        layout.marginWidth = 0;
+        layout.numColumns = 2;
        stylesComposite.setLayout(layout);
        stylesComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
- - label= new Label(stylesComposite, SWT.LEFT);
+
+        label = new Label(stylesComposite, SWT.LEFT);
        label.setText("C&olor:");
-        gd= new GridData();
-        gd.horizontalAlignment= GridData.BEGINNING;
+        gd = new GridData();
+        gd.horizontalAlignment = GridData.BEGINNING;
        label.setLayoutData(gd);

-        fForegroundColorEditor= new ColorEditor(stylesComposite);
-        Button foregroundColorButton= fForegroundColorEditor.getButton();
-        gd= new GridData(GridData.FILL_HORIZONTAL);
-        gd.horizontalAlignment= GridData.BEGINNING;
+        fForegroundColorEditor = new ColorEditor(stylesComposite);
+        Button foregroundColorButton = fForegroundColorEditor.getButton();
+        gd = new GridData(GridData.FILL_HORIZONTAL);
+        gd.horizontalAlignment = GridData.BEGINNING;
        foregroundColorButton.setLayoutData(gd);
- - label= new Label(stylesComposite, SWT.LEFT);
+
+        label = new Label(stylesComposite, SWT.LEFT);
        label.setText("&Bold:");
-        gd= new GridData();
-        gd.horizontalAlignment= GridData.BEGINNING;
+        gd = new GridData();
+        gd.horizontalAlignment = GridData.BEGINNING;
        label.setLayoutData(gd);
- - fBoldCheckBox= new Button(stylesComposite, SWT.CHECK);
-        gd= new GridData(GridData.FILL_HORIZONTAL);
-        gd.horizontalAlignment= GridData.BEGINNING;
+
+        fBoldCheckBox = new Button(stylesComposite, SWT.CHECK);
+        gd = new GridData(GridData.FILL_HORIZONTAL);
+        gd.horizontalAlignment = GridData.BEGINNING;
        fBoldCheckBox.setLayoutData(gd);
- - label= new Label(colorComposite, SWT.LEFT);
+
+        label = new Label(colorComposite, SWT.LEFT);
        label.setText("Preview:");
        label.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- - Control previewer= createPreviewer(colorComposite);
-        gd= new GridData(GridData.FILL_BOTH);
-        gd.widthHint= convertWidthInCharsToPixels(80);
-        gd.heightHint= convertHeightInCharsToPixels(15);
+
+        Control previewer = createPreviewer(colorComposite);
+        gd = new GridData(GridData.FILL_BOTH);
+        gd.widthHint = convertWidthInCharsToPixels(80);
+        gd.heightHint = convertHeightInCharsToPixels(15);
        previewer.setLayoutData(gd);

- fList.addSelectionListener(new SelectionListener() {
            public void widgetDefaultSelected(SelectionEvent e) {
                // do nothing
@@ -416,15 +605,15 @@
                handleListSelection();
            }
        });
- + foregroundColorButton.addSelectionListener(new SelectionListener() {
            public void widgetDefaultSelected(SelectionEvent e) {
                // do nothing
            }
            public void widgetSelected(SelectionEvent e) {
-                int i= fList.getSelectionIndex();
-                String key= fListModel[i][1];
- + int i = fList.getSelectionIndex();
+                String key = fListModel[i][1];
+
PreferenceConverter.setValue(fOverlayStore, key, fForegroundColorEditor.getColorValue());
            }
        });
@@ -434,7 +623,10 @@
                // do nothing
            }
            public void widgetSelected(SelectionEvent e) {
- PreferenceConverter.setValue(fOverlayStore, CEditor.PREFERENCE_COLOR_BACKGROUND, fBackgroundColorEditor.getColorValue()); + PreferenceConverter.setValue(
+                    fOverlayStore,
+                    CEditor.PREFERENCE_COLOR_BACKGROUND,
+                    fBackgroundColorEditor.getColorValue());
            }
        });

@@ -443,40 +635,39 @@
                // do nothing
            }
            public void widgetSelected(SelectionEvent e) {
-                int i= fList.getSelectionIndex();
-                String key= fListModel[i][1];
+                int i = fList.getSelectionIndex();
+                String key = fListModel[i][1];
fOverlayStore.setValue(key + "_bold", fBoldCheckBox.getSelection());
            }
        });
- +
        return colorComposite;
    }
- +
    private Control createPreviewer(Composite parent) {
- - fCTextTools= new CTextTools(fOverlayStore); - - fPreviewViewer= new SourceViewer(parent, null, SWT.V_SCROLL | SWT.H_SCROLL);
+
+        fCTextTools = new CTextTools(fOverlayStore);
+
+ fPreviewViewer = new SourceViewer(parent, null, SWT.V_SCROLL | SWT.H_SCROLL); fPreviewViewer.configure(new CSourceViewerConfiguration(fCTextTools, null)); fPreviewViewer.getTextWidget().setFont(JFaceResources.getFontRegistry().get(JFaceResources.TEXT_FONT));
        fPreviewViewer.setEditable(false);
- +
        initializeViewerColors(fPreviewViewer);
- - String content= loadPreviewContentFromFile("ColorSettingPreviewCode.txt");
-        IDocument document= new Document(content);
- IDocumentPartitioner partitioner= fCTextTools.createDocumentPartitioner();
+
+ String content = loadPreviewContentFromFile("ColorSettingPreviewCode.txt");
+        IDocument document = new Document(content);
+ IDocumentPartitioner partitioner = fCTextTools.createDocumentPartitioner();
        partitioner.connect(document);
        document.setDocumentPartitioner(partitioner);
- +
        fPreviewViewer.setDocument(document);
- + fOverlayStore.addPropertyChangeListener(new IPropertyChangeListener() {
            public void propertyChange(PropertyChangeEvent event) {
-                String p= event.getProperty();
-                if (p.equals(CEditor.PREFERENCE_COLOR_BACKGROUND) ||
- p.equals(CEditor.PREFERENCE_COLOR_BACKGROUND_SYSTEM_DEFAULT))
-                {
+                String p = event.getProperty();
+                if (p.equals(CEditor.PREFERENCE_COLOR_BACKGROUND)
+ || p.equals(CEditor.PREFERENCE_COLOR_BACKGROUND_SYSTEM_DEFAULT)) {
                    initializeViewerColors(fPreviewViewer);
                }

@@ -484,34 +675,35 @@
                //fPreviewViewer.refresh();
            }
        });
- +
        return fPreviewViewer.getControl();
    }
- +
    private Color fBackgroundColor;
- +
    /**
     * Initializes the given viewer's colors.
     *
     * @param viewer the viewer to be initialized
     */
    protected void initializeViewerColors(ISourceViewer viewer) {
- - IPreferenceStore store= fOverlayStore;
+
+        IPreferenceStore store = fOverlayStore;
        if (store != null) {
- - StyledText styledText= viewer.getTextWidget(); - +
+            StyledText styledText = viewer.getTextWidget();
+
            // ---------- background color ----------------------
- Color color= store.getBoolean(CEditor.PREFERENCE_COLOR_BACKGROUND_SYSTEM_DEFAULT)
-                ? null
- : createColor(store, CEditor.PREFERENCE_COLOR_BACKGROUND, styledText.getDisplay());
+            Color color =
+ store.getBoolean(CEditor.PREFERENCE_COLOR_BACKGROUND_SYSTEM_DEFAULT)
+                    ? null
+ : createColor(store, CEditor.PREFERENCE_COLOR_BACKGROUND, styledText.getDisplay());
            styledText.setBackground(color);
- +
            if (fBackgroundColor != null)
                fBackgroundColor.dispose();
- - fBackgroundColor= color;
+
+            fBackgroundColor = color;
        }
    }

@@ -520,142 +712,129 @@
     * Returns <code>null</code> if there is no such information available.
     */
private Color createColor(IPreferenceStore store, String key, Display display) { - - RGB rgb= null; - +
+        RGB rgb = null;
+
        if (store.contains(key)) {
- +
            if (store.isDefault(key))
-                rgb= PreferenceConverter.getDefaultColor(store, key);
+                rgb = PreferenceConverter.getDefaultColor(store, key);
            else
-                rgb= PreferenceConverter.getColor(store, key);
- + rgb = PreferenceConverter.getColor(store, key);
+
            if (rgb != null)
                return new Color(display, rgb);
        }
- +
        return null;
- } - + }
+
    // sets enabled flag for a control and all its sub-tree
    protected static void setEnabled(Control control, boolean enable) {
        control.setEnabled(enable);
        if (control instanceof Composite) {
-            Composite composite= (Composite) control;
-            Control[] children= composite.getChildren();
-            for (int i= 0; i < children.length; i++)
+            Composite composite = (Composite) control;
+            Control[] children = composite.getChildren();
+            for (int i = 0; i < children.length; i++)
                setEnabled(children[i], enable);
        }
    }
- - private ArrayList fNumberFields= new ArrayList();
-    private ModifyListener fNumberFieldListener= new ModifyListener() {
+
+    private ArrayList fNumberFields = new ArrayList();
+    private ModifyListener fNumberFieldListener = new ModifyListener() {
        public void modifyText(ModifyEvent e) {
            numberFieldChanged((Text) e.widget);
        }
    };
- +
    private Button fBracketHighlightButton;
-    private Button fBracketHighlightBoxButton;
-    private Control fBracketHighlightColor;
    private Button fLineHighlightButton;
-    private Control fLineHighlightColor;
-    private Button fProblemIndicationButton;
-    private Control fProblemIndicationColor;
-    private Control fFindScopeColor;
-    private Control fLinkedPositionColor;
- - protected void handleAppearanceColorListSelection() { - int i= fAppearanceColorList.getSelectionIndex();
-        String key= fAppearanceColorListModel[i][1];
-        RGB rgb= PreferenceConverter.getColor(fOverlayStore, key);
- fAppearanceForegroundColorEditor.setColorValue(rgb); +
+    protected void handleAppearanceColorListSelection() {
+        int i = fAppearanceColorList.getSelectionIndex();
+        String key = fAppearanceColorListModel[i][1];
+        RGB rgb = PreferenceConverter.getColor(fOverlayStore, key);
+        fAppearanceForegroundColorEditor.setColorValue(rgb);
    }
    private Control createBehaviorPage(Composite parent) {

-        Composite behaviorComposite= new Composite(parent, SWT.NULL);
-        GridLayout layout= new GridLayout(); layout.numColumns= 2;
+        Composite behaviorComposite = new Composite(parent, SWT.NULL);
+        GridLayout layout = new GridLayout();
+        layout.numColumns = 2;
        behaviorComposite.setLayout(layout);
- - - String label= "Text &font:";
+
+        String label = "Text &font:";
addTextFontEditor(behaviorComposite, label, JFaceResources.TEXT_FONT); - - label= "Displayed &tab width:";
+
+        label = "Displayed &tab width:";
addTextField(behaviorComposite, label, CSourceViewerConfiguration.PREFERENCE_TAB_WIDTH, 2, 0, true); - - label= "Print margin col&umn:"; - addTextField(behaviorComposite, label, CEditor.PRINT_MARGIN_COLUMN, 4, 0, true); - - label= "Insert &space for tabs";
+
+        label = "Print margin col&umn:";
+ addTextField(behaviorComposite, label, TextEditorPreferenceConstants.EDITOR_PRINT_MARGIN_COLUMN, 4, 0, true);
+
+        label = "Insert &space for tabs";
        addCheckBox(behaviorComposite, label, CEditor.SPACES_FOR_TABS, 0);
- - label= "Highlight &matching brackets"; - fBracketHighlightButton= addCheckBox(behaviorComposite, label, CEditor.MATCHING_BRACKETS, 0);
-
-        label= "Only c&olor bracket text";
- fBracketHighlightBoxButton= addCheckBox(behaviorComposite, label, CEditor.MATCHING_BRACKETS_NOBOX, 0); - - label= "Show line numbers"; //$NON-NLS-1$ - addCheckBox(behaviorComposite, label, CEditor.LINE_NUMBER_RULER, 0); - - label= "Highlight &current line"; - fLineHighlightButton= addCheckBox(behaviorComposite, label, CEditor.CURRENT_LINE, 0); - - label= "Highlight &problems"; - fProblemIndicationButton= addCheckBox(behaviorComposite, label, CEditor.PROBLEM_INDICATION, 0); - - label= "Show overview ruler"; //$NON-NLS-1$
-        addCheckBox(behaviorComposite, label, CEditor.OVERVIEW_RULER, 0);
- - label= "Show print &margin";
-        addCheckBox(behaviorComposite, label, CEditor.PRINT_MARGIN, 0);
- - Label l= new Label(behaviorComposite, SWT.LEFT );
-        GridData gd= new GridData(GridData.HORIZONTAL_ALIGN_FILL);
-        gd.horizontalSpan= 2;
-        gd.heightHint= convertHeightInCharsToPixels(1) / 2;
+
+        label = "Highlight &matching brackets";
+ fBracketHighlightButton = addCheckBox(behaviorComposite, label, CEditor.MATCHING_BRACKETS, 0);
+
+        label = "Show line numbers"; //$NON-NLS-1$
+ addCheckBox(behaviorComposite, label, TextEditorPreferenceConstants.EDITOR_LINE_NUMBER_RULER, 0);
+
+        label = "Highlight &current line";
+ fLineHighlightButton = addCheckBox(behaviorComposite, label, TextEditorPreferenceConstants.EDITOR_CURRENT_LINE, 0);
+
+        label = "Show overview ruler"; //$NON-NLS-1$
+ addCheckBox(behaviorComposite, label, TextEditorPreferenceConstants.EDITOR_OVERVIEW_RULER, 0);
+
+        label = "Show print &margin";
+ addCheckBox(behaviorComposite, label, TextEditorPreferenceConstants.EDITOR_PRINT_MARGIN, 0);
+
+        Label l = new Label(behaviorComposite, SWT.LEFT);
+        GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+        gd.horizontalSpan = 2;
+        gd.heightHint = convertHeightInCharsToPixels(1) / 2;
        l.setLayoutData(gd);
- - l= new Label(behaviorComposite, SWT.LEFT);
+
+        l = new Label(behaviorComposite, SWT.LEFT);
        l.setText("Appearance color options"); //$NON-NLS-1$
-        gd= new GridData(GridData.HORIZONTAL_ALIGN_FILL);
-        gd.horizontalSpan= 2;
+        gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+        gd.horizontalSpan = 2;
        l.setLayoutData(gd);

- Composite editorComposite= new Composite(behaviorComposite, SWT.NONE);
-        layout= new GridLayout();
-        layout.numColumns= 2;
-        layout.marginHeight= 0;
-        layout.marginWidth= 0;
+ Composite editorComposite = new Composite(behaviorComposite, SWT.NONE);
+        layout = new GridLayout();
+        layout.numColumns = 2;
+        layout.marginHeight = 0;
+        layout.marginWidth = 0;
        editorComposite.setLayout(layout);
- gd= new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.FILL_VERTICAL);
-        gd.horizontalSpan= 2;
- editorComposite.setLayoutData(gd); - - fAppearanceColorList= new List(editorComposite, SWT.SINGLE | SWT.V_SCROLL | SWT.BORDER);
-        gd= new GridData(GridData.FILL_BOTH);
-        gd.heightHint= convertHeightInCharsToPixels(5);
+ gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.FILL_VERTICAL);
+        gd.horizontalSpan = 2;
+        editorComposite.setLayoutData(gd);
+
+ fAppearanceColorList = new List(editorComposite, SWT.SINGLE | SWT.V_SCROLL | SWT.BORDER);
+        gd = new GridData(GridData.FILL_BOTH);
+        gd.heightHint = convertHeightInCharsToPixels(5);
        fAppearanceColorList.setLayoutData(gd);
- - Composite stylesComposite= new Composite(editorComposite, SWT.NONE);
-        layout= new GridLayout();
-        layout.marginHeight= 0;
-        layout.marginWidth= 0;
-        layout.numColumns= 2;
+
+ Composite stylesComposite = new Composite(editorComposite, SWT.NONE);
+        layout = new GridLayout();
+        layout.marginHeight = 0;
+        layout.marginWidth = 0;
+        layout.numColumns = 2;
        stylesComposite.setLayout(layout);
        stylesComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
- - l= new Label(stylesComposite, SWT.LEFT);
+
+        l = new Label(stylesComposite, SWT.LEFT);
        l.setText("Color:"); //$NON-NLS-1$
-        gd= new GridData();
-        gd.horizontalAlignment= GridData.BEGINNING;
+        gd = new GridData();
+        gd.horizontalAlignment = GridData.BEGINNING;
        l.setLayoutData(gd);

-        fAppearanceForegroundColorEditor= new ColorEditor(stylesComposite);
- Button foregroundColorButton= fAppearanceForegroundColorEditor.getButton();
-        gd= new GridData(GridData.FILL_HORIZONTAL);
-        gd.horizontalAlignment= GridData.BEGINNING;
+ fAppearanceForegroundColorEditor = new ColorEditor(stylesComposite); + Button foregroundColorButton = fAppearanceForegroundColorEditor.getButton();
+        gd = new GridData(GridData.FILL_HORIZONTAL);
+        gd.horizontalAlignment = GridData.BEGINNING;
        foregroundColorButton.setLayoutData(gd);

        fAppearanceColorList.addSelectionListener(new SelectionListener() {
@@ -671,61 +850,62 @@
                // do nothing
            }
            public void widgetSelected(SelectionEvent e) {
-                int i= fAppearanceColorList.getSelectionIndex();
-                String key= fAppearanceColorListModel[i][1];
- + int i = fAppearanceColorList.getSelectionIndex();
+                String key = fAppearanceColorListModel[i][1];
+
PreferenceConverter.setValue(fOverlayStore, key, fAppearanceForegroundColorEditor.getColorValue());
            }
        });
- +
        return behaviorComposite;
    }
- +
    private Control createContentAssistPage(Composite parent) {

-        Composite contentAssistComposite= new Composite(parent, SWT.NULL);
-        GridLayout layout= new GridLayout(); layout.numColumns= 2;
+        Composite contentAssistComposite = new Composite(parent, SWT.NULL);
+        GridLayout layout = new GridLayout();
+        layout.numColumns = 2;
        contentAssistComposite.setLayout(layout);
- - String label= "Insert single &proposals automatically";
+
+        String label = "Insert single &proposals automatically";
addCheckBox(contentAssistComposite, label, ContentAssistPreference.AUTOINSERT, 0); - +
        //label= "Show only proposals visible in the invocation conte&xt";
//addCheckBox(contentAssistComposite, label, ContentAssistPreference.SHOW_VISIBLE_PROPOSALS, 0); - +
        //label= "Show only proposals with &matching cases";
//addCheckBox(contentAssistComposite, label, ContentAssistPreference.CASE_SENSITIVITY, 0); - +
        //label= "Present proposals in a&lphabetical order";
//addCheckBox(contentAssistComposite, label, ContentAssistPreference.ORDER_PROPOSALS, 0); - - label= "&Enable auto activation";
+
+        label = "&Enable auto activation";
addCheckBox(contentAssistComposite, label, ContentAssistPreference.AUTOACTIVATION, 0);

//label= "Automatically add &include for proposals from system functions"; //addCheckBox(contentAssistComposite, label, ContentAssistPreference.ADD_INCLUDE, 0); - - label= "Auto activation dela&y:";
+
+        label = "Auto activation dela&y:";
addTextField(contentAssistComposite, label, ContentAssistPreference.AUTOACTIVATION_DELAY, 4, 0, true); - - label= "Auto activation &triggers for C:";
+
+        label = "Auto activation &triggers for C:";
addTextField(contentAssistComposite, label, ContentAssistPreference.AUTOACTIVATION_TRIGGERS_C, 25, 0, false); - +
        //label= "Auto activation triggers for &JavaDoc:";
//addTextField(contentAssistComposite, label, ContentAssistPreference.AUTOACTIVATION_TRIGGERS_JAVADOC, 25, 0); - - label= "&Background for completion proposals:";
+
+        label = "&Background for completion proposals:";
addColorButton(contentAssistComposite, label, ContentAssistPreference.PROPOSALS_BACKGROUND, 0); - +
        //label= "&Foreground for completion proposals:";
//addColorButton(contentAssistComposite, label, ContentAssistPreference.PROPOSALS_FOREGROUND, 0); - +
        //label= "Bac&kground for method parameters:";
//addColorButton(contentAssistComposite, label, ContentAssistPreference.PARAMETERS_BACKGROUND, 0); - +
        //label= "Fo&reground for method parameters:";
//addColorButton(contentAssistComposite, label, ContentAssistPreference.PARAMETERS_FOREGROUND, 0); - +
        return contentAssistComposite;
    }

@@ -733,98 +913,112 @@
     * @see PreferencePage#createContents(Composite)
     */
    protected Control createContents(Composite parent) {
- +
        fOverlayStore.load();
        fOverlayStore.start();
- - TabFolder folder= new TabFolder(parent, SWT.NONE); - folder.setLayout(new TabFolderLayout()); +
+        TabFolder folder = new TabFolder(parent, SWT.NONE);
+        folder.setLayout(new TabFolderLayout());
        folder.setLayoutData(new GridData(GridData.FILL_BOTH));
- - TabItem item= new TabItem(folder, SWT.NONE);
+
+        TabItem item = new TabItem(folder, SWT.NONE);
        item.setText("&General");
        item.setImage(CPluginImages.get(CPluginImages.IMG_OBJS_TUNIT));
        item.setControl(createBehaviorPage(folder));
- - item= new TabItem(folder, SWT.NONE);
+
+        item = new TabItem(folder, SWT.NONE);
+        item.setImage(CPluginImages.get(CPluginImages.IMG_OBJS_TUNIT));
+        item.setText("Annotations");
+        item.setControl(createAnnotationsPage(folder));
+
+        item = new TabItem(folder, SWT.NONE);
        item.setText("&Colors");
        item.setImage(CPluginImages.get(CPluginImages.IMG_OBJS_TUNIT));
        item.setControl(createColorPage(folder));
- - item= new TabItem(folder, SWT.NONE);
+
+        item = new TabItem(folder, SWT.NONE);
        item.setText("Code A&ssist");
        item.setImage(CPluginImages.get(CPluginImages.IMG_OBJS_TUNIT));
        item.setControl(createContentAssistPage(folder));
- +
        initialize();
- +
        return folder;
    }
- +
    private void initialize() {
- +
        fFontEditor.setPreferenceStore(getPreferenceStore());
        fFontEditor.setPreferencePage(this);
        fFontEditor.load();
- +
        initializeFields();
- - for (int i= 0; i < fListModel.length; i++)
+
+        for (int i = 0; i < fListModel.length; i++)
            fList.add(fListModel[i][0]);
- - for (int i= 0; i < fAppearanceColorListModel.length; i++)
-            fAppearanceColorList.add(fAppearanceColorListModel[i][0]);
- fList.getDisplay().asyncExec(new Runnable() {
            public void run() {
                fList.select(0);
                handleListSelection();
            }
        });
- +
+        for (int i = 0; i < fAppearanceColorListModel.length; i++)
+            fAppearanceColorList.add(fAppearanceColorListModel[i][0]);
        fAppearanceColorList.getDisplay().asyncExec(new Runnable() {
            public void run() {
                fAppearanceColorList.select(0);
                handleAppearanceColorListSelection();
            }
        });
+
+        for (int i = 0; i < fAnnotationColorListModel.length; i++)
+            fAnnotationList.add(fAnnotationColorListModel[i][0]);
+        fAnnotationList.getDisplay().asyncExec(new Runnable() {
+            public void run() {
+ if (fAnnotationList != null && !fAnnotationList.isDisposed()) {
+                    fAnnotationList.select(0);
+                    handleAnnotationListSelection();
+                }
+            }
+        });
    }
- +
    private void initializeFields() {
- - Iterator e= fColorButtons.keySet().iterator();
+
+        Iterator e = fColorButtons.keySet().iterator();
        while (e.hasNext()) {
-            ColorEditor c= (ColorEditor) e.next();
-            String key= (String) fColorButtons.get(c);
-            RGB rgb= PreferenceConverter.getColor(fOverlayStore, key);
+            ColorEditor c = (ColorEditor) e.next();
+            String key = (String) fColorButtons.get(c);
+            RGB rgb = PreferenceConverter.getColor(fOverlayStore, key);
            c.setColorValue(rgb);
        }
- - e= fCheckBoxes.keySet().iterator();
+
+        e = fCheckBoxes.keySet().iterator();
        while (e.hasNext()) {
-            Button b= (Button) e.next();
-            String key= (String) fCheckBoxes.get(b);
+            Button b = (Button) e.next();
+            String key = (String) fCheckBoxes.get(b);
            b.setSelection(fOverlayStore.getBoolean(key));
        }
- - e= fTextFields.keySet().iterator();
+
+        e = fTextFields.keySet().iterator();
        while (e.hasNext()) {
-            Text t= (Text) e.next();
-            String key= (String) fTextFields.get(t);
+            Text t = (Text) e.next();
+            String key = (String) fTextFields.get(t);
            t.setText(fOverlayStore.getString(key));
        }
- - RGB rgb= PreferenceConverter.getColor(fOverlayStore, CEditor.PREFERENCE_COLOR_BACKGROUND); - fBackgroundColorEditor.setColorValue(rgb); - - boolean default_= fOverlayStore.getBoolean(CEditor.PREFERENCE_COLOR_BACKGROUND_SYSTEM_DEFAULT);
+
+ RGB rgb = PreferenceConverter.getColor(fOverlayStore, CEditor.PREFERENCE_COLOR_BACKGROUND);
+        fBackgroundColorEditor.setColorValue(rgb);
+
+ boolean default_ = fOverlayStore.getBoolean(CEditor.PREFERENCE_COLOR_BACKGROUND_SYSTEM_DEFAULT);
        fBackgroundDefaultRadioButton.setSelection(default_);
        fBackgroundCustomRadioButton.setSelection(!default_);
        fBackgroundColorButton.setEnabled(!default_);
- +
        //updateAutoactivationControls();
    }
- +
    /*
     * @see PreferencePage#performOk()
     */
@@ -833,104 +1027,104 @@
        fOverlayStore.propagate();
        return true;
    }
- +
    /*
     * @see PreferencePage#performDefaults()
     */
    protected void performDefaults() {
- +
        fFontEditor.loadDefault();
- +
        fOverlayStore.loadDefaults();
        initializeFields();
        handleListSelection();
        handleAppearanceColorListSelection();
- +
        super.performDefaults();
- +
        fPreviewViewer.invalidateTextPresentation();
    }
- +
    /*
     * @see DialogPage#dispose()
     */
    public void dispose() {
- +
        if (fCTextTools != null) {
-            fCTextTools= null;
+            fCTextTools = null;
        }
- +
        fFontEditor.setPreferencePage(null);
        fFontEditor.setPreferenceStore(null);
- +
        if (fOverlayStore != null) {
            fOverlayStore.stop();
-            fOverlayStore= null;
+            fOverlayStore = null;
        }
- +
        super.dispose();
    }
- + private Control addColorButton(Composite parent, String label, String key, int indentation) {

-        Composite composite= new Composite(parent, SWT.NONE);
-        GridData gd= new GridData(GridData.FILL_HORIZONTAL);
-        gd.horizontalSpan= 2;
+        Composite composite = new Composite(parent, SWT.NONE);
+        GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+        gd.horizontalSpan = 2;
        composite.setLayoutData(gd);
- - GridLayout layout= new GridLayout();
-        layout.numColumns= 2;
-        layout.marginWidth= 0;
-        layout.marginHeight= 0;
+
+        GridLayout layout = new GridLayout();
+        layout.numColumns = 2;
+        layout.marginWidth = 0;
+        layout.marginHeight = 0;
        composite.setLayout(layout);
- - Label labelControl= new Label(composite, SWT.NONE);
+
+        Label labelControl = new Label(composite, SWT.NONE);
        labelControl.setText(label);
- - gd= new GridData(GridData.FILL_HORIZONTAL);
-        gd.horizontalIndent= indentation;
+
+        gd = new GridData(GridData.FILL_HORIZONTAL);
+        gd.horizontalIndent = indentation;
        labelControl.setLayoutData(gd);
- - ColorEditor editor= new ColorEditor(composite);
-        Button button= editor.getButton();
+
+        ColorEditor editor = new ColorEditor(composite);
+        Button button = editor.getButton();
        button.setData(editor);
- - gd= new GridData();
-        gd.horizontalAlignment= GridData.END;
+
+        gd = new GridData();
+        gd.horizontalAlignment = GridData.END;
        button.setLayoutData(gd);
        button.addSelectionListener(fColorButtonListener);
- +
        fColorButtons.put(editor, key);
- +
        return composite;
    }
- - private Button addCheckBox(Composite parent, String label, String key, int indentation) { - Button checkBox= new Button(parent, SWT.CHECK);
+
+ private Button addCheckBox(Composite parent, String label, String key, int indentation) {
+        Button checkBox = new Button(parent, SWT.CHECK);
        checkBox.setText(label);
- - GridData gd= new GridData(GridData.FILL_HORIZONTAL);
-        gd.horizontalIndent= indentation;
-        gd.horizontalSpan= 2;
+
+        GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+        gd.horizontalIndent = indentation;
+        gd.horizontalSpan = 2;
        checkBox.setLayoutData(gd);
        checkBox.addSelectionListener(fCheckBoxListener);
- +
        fCheckBoxes.put(checkBox, key);
- +
        return checkBox;
    }
- + private Control addTextField(Composite composite, String label, String key, int textLimit, int indentation, boolean isNumber) { - - Label labelControl= new Label(composite, SWT.NONE);
+
+        Label labelControl = new Label(composite, SWT.NONE);
        labelControl.setText(label);
-        GridData gd= new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
-        gd.horizontalIndent= indentation;
+        GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
+        gd.horizontalIndent = indentation;
        labelControl.setLayoutData(gd);
- - Text textControl= new Text(composite, SWT.BORDER | SWT.SINGLE); - gd= new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
-        gd.widthHint= convertWidthInCharsToPixels(textLimit + 1);
+
+        Text textControl = new Text(composite, SWT.BORDER | SWT.SINGLE);
+        gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
+        gd.widthHint = convertWidthInCharsToPixels(textLimit + 1);
        textControl.setLayoutData(gd);
        textControl.setTextLimit(textLimit);
        fTextFields.put(textControl, key);
@@ -940,32 +1134,32 @@
        } else {
            textControl.addModifyListener(fTextFieldListener);
        }
- +
        return textControl;
    }
- + private void addTextFontEditor(Composite parent, String label, String key) { - - Composite editorComposite= new Composite(parent, SWT.NULL);
-        GridLayout layout= new GridLayout();
-        layout.numColumns= 3;
- editorComposite.setLayout(layout); - fFontEditor= new WorkbenchChainedTextFontFieldEditor(key, label, editorComposite);
+
+        Composite editorComposite = new Composite(parent, SWT.NULL);
+        GridLayout layout = new GridLayout();
+        layout.numColumns = 3;
+        editorComposite.setLayout(layout);
+ fFontEditor = new WorkbenchChainedTextFontFieldEditor(key, label, editorComposite);
        fFontEditor.setChangeButtonText("C&hange...");
- - GridData gd= new GridData(GridData.FILL_HORIZONTAL);
-        gd.horizontalSpan= 2;
+
+        GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+        gd.horizontalSpan = 2;
        editorComposite.setLayoutData(gd);
    }
- +
    private String loadPreviewContentFromFile(String filename) {
        String line;
- String separator= System.getProperty("line.separator"); //$NON-NLS-1$
-        StringBuffer buffer= new StringBuffer(512);
-        BufferedReader reader= null;
+ String separator = System.getProperty("line.separator"); //$NON-NLS-1$
+        StringBuffer buffer = new StringBuffer(512);
+        BufferedReader reader = null;
        try {
- reader= new BufferedReader(new InputStreamReader(getClass().getResourceAsStream(filename)));
-            while ((line= reader.readLine()) != null) {
+ reader = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream(filename)));
+            while ((line = reader.readLine()) != null) {
                buffer.append(line);
                buffer.append(separator);
            }
@@ -973,27 +1167,30 @@
            CUIPlugin.getDefault().log(io);
        } finally {
            if (reader != null) {
-                try { reader.close(); } catch (IOException e) {}
+                try {
+                    reader.close();
+                } catch (IOException e) {
+                }
            }
        }
        return buffer.toString();
    }
- +
    protected void numberFieldChanged(Text textControl) {
-        String number= textControl.getText();
-        IStatus status= validatePositiveNumber(number);
+        String number = textControl.getText();
+        IStatus status = validatePositiveNumber(number);
        if (!status.matches(IStatus.ERROR))
fOverlayStore.setValue((String) fTextFields.get(textControl), number);
        updateStatus(status);
    }
- +
    private IStatus validatePositiveNumber(String number) {
-        StatusInfo status= new StatusInfo();
+        StatusInfo status = new StatusInfo();
        if (number.length() == 0) {
//status.setError("CEditorPreferencePage.empty_input"); //$NON-NLS-1$
        } else {
            try {
-                int value= Integer.parseInt(number);
+                int value = Integer.parseInt(number);
                if (value < 0)
status.setError("CEditorPreferencePage.invalid_input"); //$NON-NLS-1$
            } catch (NumberFormatException e) {
@@ -1002,18 +1199,16 @@
        }
        return status;
    }
- +
    private void updateStatus(IStatus status) {
        if (!status.matches(IStatus.ERROR)) {
-            for (int i= 0; i < fNumberFields.size(); i++) {
-                Text text= (Text) fNumberFields.get(i);
-                IStatus s= validatePositiveNumber(text.getText());
-                status= StatusUtil.getMoreSevere(s, status);
+            for (int i = 0; i < fNumberFields.size(); i++) {
+                Text text = (Text) fNumberFields.get(i);
+                IStatus s = validatePositiveNumber(text.getText());
+                status = StatusUtil.getMoreSevere(s, status);
            }
- } + }
        setValid(!status.matches(IStatus.ERROR));
        StatusUtil.applyToStatusLine(this, status);
    }
}
-
-
Index: src/org/eclipse/cdt/internal/ui/preferences/CLaunchingPropertyPage.java
===================================================================
RCS file: src/org/eclipse/cdt/internal/ui/preferences/CLaunchingPropertyPage.java diff -N src/org/eclipse/cdt/internal/ui/preferences/CLaunchingPropertyPage.java --- src/org/eclipse/cdt/internal/ui/preferences/CLaunchingPropertyPage.java 4 Feb 2003 20:00:46 -0000 1.5
+++ /dev/null    1 Jan 1970 00:00:00 -0000
@@ -1,216 +0,0 @@
-package org.eclipse.cdt.internal.ui.preferences;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.cdt.core.CProjectNature;
-import org.eclipse.cdt.internal.ui.ICHelpContextIds;
-import org.eclipse.cdt.internal.ui.dialogs.StatusInfo;
-import org.eclipse.cdt.internal.ui.dialogs.StatusTool;
-import org.eclipse.cdt.internal.ui.wizards.dialogfields.DialogField;
-import org.eclipse.cdt.internal.ui.wizards.dialogfields.IDialogFieldListener; -import org.eclipse.cdt.internal.ui.wizards.dialogfields.IStringButtonAdapter; -import org.eclipse.cdt.internal.ui.wizards.dialogfields.StringButtonDialogField;
-import org.eclipse.cdt.internal.ui.wizards.dialogfields.StringDialogField;
-import org.eclipse.cdt.internal.ui.wizards.swt.MGridLayout;
-import org.eclipse.cdt.ui.CUIPlugin;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.QualifiedName;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.DirectoryDialog;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.dialogs.PropertyPage;
-import org.eclipse.ui.help.WorkbenchHelp;
-public class CLaunchingPropertyPage extends PropertyPage {
- - private static final String PAGE_NAME= "CLaunchingPropertyPage";
-    private static final String ARGUMENTS= PAGE_NAME + ".arguments";
-    private static final String WORKINGDIR= PAGE_NAME + ".workingdir";
- - private static final String NO_CPROJECT= PAGE_NAME + ".nocproject.label"; - - private static final String ERROR_WORKINGDIR_NOTEXISTS= PAGE_NAME + ".error.WorkingDirNotExists"; - - private StringDialogField fArgumentField;
-    protected StringButtonDialogField fWorkingDirField;
- - private StatusInfo fWorkingDirStatus; - - private QualifiedName fArgumentsPropertyName;
-    private QualifiedName fWorkingDirPropertyName;
- - private Shell fShell; - - public CLaunchingPropertyPage() { - LaunchingDialogFieldsAdapter adapter= new LaunchingDialogFieldsAdapter(); - - fArgumentField= new StringDialogField(); - fArgumentField.setLabelText(CUIPlugin.getResourceString(ARGUMENTS + ".label"));
-        fArgumentField.setDialogFieldListener(adapter);
- - fWorkingDirField= new StringButtonDialogField(adapter); - fWorkingDirField.setLabelText(CUIPlugin.getResourceString(WORKINGDIR + ".label")); - fWorkingDirField.setButtonLabel(CUIPlugin.getResourceString(WORKINGDIR + ".browse"));
-        fWorkingDirField.setDialogFieldListener(adapter);
- - fWorkingDirStatus= new StatusInfo(); - - fArgumentsPropertyName= new QualifiedName(CUIPlugin.PLUGIN_ID, "arguments"); - fWorkingDirPropertyName= new QualifiedName(CUIPlugin.PLUGIN_ID, "workingdir");
-    }
-
-    /**
-     * @see PreferencePage#createContents(Composite)
-     */
-    protected Control createContents(Composite parent) {
-        Composite composite= new Composite(parent, SWT.NONE);
-        fShell= parent.getShell();
- - MGridLayout layout= new MGridLayout();
-        layout.marginWidth= 0;
- layout.marginHeight= 0; - layout.minimumWidth= 400;
-        layout.minimumHeight= 350;
- layout.numColumns= 3; - composite.setLayout(layout); - - boolean isCProject= false;
-        try {
-            IFile file= getInputFile();
- isCProject= (file.getProject().hasNature(CProjectNature.C_NATURE_ID));
-        } catch (CoreException e) {
-            CUIPlugin.getDefault().log(e);
-        }
- - if (isCProject) {
-            fArgumentField.doFillIntoGrid(composite, 3);
-            fWorkingDirField.doFillIntoGrid(composite, 3);
-            initialize();
-        } else {
-            DialogField labelField= new DialogField();
- labelField.setLabelText(CUIPlugin.getResourceString(NO_CPROJECT));
-            labelField.doFillIntoGrid(composite, 3);
-        }
- WorkbenchHelp.setHelp(parent, ICHelpContextIds.LAUNCH_PROPERTY_PAGE);
-
-        return composite;
-    }
- - - private void initialize() {
-        IFile file= getInputFile();
-        if (file != null) {
-            try {
- String arguments= file.getPersistentProperty(fArgumentsPropertyName);
-                if (arguments != null) {
-                    fArgumentField.setText(arguments);
-                }
- - String workingdir= file.getPersistentProperty(fWorkingDirPropertyName);
-                if (workingdir != null) {
-                    fWorkingDirField.setText(workingdir);
-                } else {
- fWorkingDirField.setText(file.getParent().getLocation().toOSString());
-                }
-            } catch (CoreException e) {
-                CUIPlugin.getDefault().log(e.getStatus());
-            }
- } - } - - /**
-     * @see PreferencePage#performOk
- */ - public boolean performOk() {
-        IFile file= getInputFile();
-        if (file != null) {
-            try {
- file.setPersistentProperty(fArgumentsPropertyName, fArgumentField.getText()); - file.setPersistentProperty(fWorkingDirPropertyName, fWorkingDirField.getText());
-            } catch (CoreException e) {
- ErrorDialog.openError(fShell, "Error", null, e.getStatus());
-                CUIPlugin.getDefault().log(e.getStatus());
-                return false;
-            }
-        }
-        return true;
-    }
- - /**
-     * @see PreferencePage#doDefaults
-     */
-    protected void performDefaults() {
-        initialize();
-        super.performDefaults();
-    }
- - private class LaunchingDialogFieldsAdapter implements IDialogFieldListener, IStringButtonAdapter { - - public void changeControlPressed(DialogField field) {
-            String oldValue= fWorkingDirField.getText();
-            String newValue= chooseFolder(oldValue);
-            if (newValue != null) {
-                fWorkingDirField.setText(newValue);
-            }
-        }
- - public void dialogFieldChanged(DialogField field) {
-            doFieldChanged(field);
-        }
-    }
-
-    protected void doFieldChanged(DialogField field) {
-        if (field == fWorkingDirField) {
-            updateWorkingDirStatus();
-        }
-        projectStatusChanged(fWorkingDirStatus);
-    }
- - - private void updateWorkingDirStatus() {
-        String str= fWorkingDirField.getText();
-        if (!"".equals(str)) {
-            IPath path= new Path(str);
-            if (!path.toFile().isDirectory()) {
- fWorkingDirStatus.setError(CUIPlugin.getResourceString(ERROR_WORKINGDIR_NOTEXISTS));
-                return;
-            }
-        }
-        fWorkingDirStatus.setOK();
- } - - private IFile getInputFile() {
-        return (IFile)getElement();
-    }
- - protected String chooseFolder(String initPath) {
-        DirectoryDialog dialog= new DirectoryDialog(fShell, 0);
-        dialog.setFilterPath(initPath);
-        String res= dialog.open();
-        return res;
-    }
- - public void projectStatusChanged(IStatus status) {
-        setValid(!status.matches(IStatus.ERROR));
- StatusTool.applyToStatusLine(this, status); - } - - /**
-     * @see DialogPage#setVisible(boolean)
-     */
-    public void setVisible(boolean visible) {
-        super.setVisible(visible);
-        if (visible && fShell != null) {
-            fArgumentField.postSetFocusOnDialogField(fShell.getDisplay());
-        }
-    }
-}
Index: src/org/eclipse/cdt/internal/ui/text/CPairMatcher.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CPairMatcher.java,v
retrieving revision 1.2
diff -u -r1.2 CPairMatcher.java
--- src/org/eclipse/cdt/internal/ui/text/CPairMatcher.java 29 Jan 2003 18:18:30 -0000 1.2 +++ src/org/eclipse/cdt/internal/ui/text/CPairMatcher.java 21 Apr 2003 16:58:55 -0000
@@ -7,105 +7,91 @@

import java.io.IOException;

-
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.Region;
-
+import org.eclipse.jface.text.source.ICharacterPairMatcher;

/**
 * Helper class for match pairs of characters.
 */
-public class CPairMatcher {
- - - public static final int LEFT= 1;
-    public static final int RIGHT= 2;
+public class CPairMatcher implements ICharacterPairMatcher {

-
- protected char[] fPairs;
    protected IDocument fDocument;
    protected int fOffset;
- +
    protected int fStartPos;
    protected int fEndPos;
    protected int fAnchor;
- - protected CCodeReader fReader= new CCodeReader(); - - +
+    protected CCodeReader fReader = new CCodeReader();
+
    public CPairMatcher(char[] pairs) {
-        fPairs= pairs;
+        fPairs = pairs;
    }
- - public IRegion match(IDocument document, int offset) {

+    public IRegion match(IDocument document, int offset) {

-        fOffset= offset;
-
+        fOffset = offset;

        if (fOffset < 0)
            return null;

-
-        fDocument= document;
-
+        fDocument = document;

        if (matchPairsAt() && fStartPos != fEndPos)
            return new Region(fStartPos, fEndPos - fStartPos + 1);
- +
        return null;
    }
- +
    public int getAnchor() {
        return fAnchor;
    }
- - public void dispose() {
-        fDocument= null;
+
+    /*
+         * @see org.eclipse.jface.text.source.ICharacterPairMatcher#clear()
+         */
+    public void clear() {
        if (fReader != null) {
            try {
                fReader.close();
            } catch (IOException x) {
                // ignore
            }
-            fReader= null;
        }
    }
- - protected boolean matchPairsAt() {

+    public void dispose() {
+        clear();
+        fDocument = null;
+        fReader = null;
+    }
+    protected boolean matchPairsAt() {

        int i;
        int pairIndex1= fPairs.length;
        int pairIndex2= fPairs.length;

-
        fStartPos= -1;
        fEndPos= -1;

-
        // get the chars preceding and following the start position
        try {

-
-            /*
-             A quick hack to get around the fact that we can't bracket
-             match on the very first element of a document.  We make the
- character to match a null character which is unlikely to match.
-            */
- char prevChar= (fOffset > 0) ? fDocument.getChar(fOffset - 1) : '\0';
-            char nextChar= fDocument.getChar(fOffset);
-
+            char prevChar= fDocument.getChar(Math.max(fOffset - 1, 0));
+// modified behavior for http://dev.eclipse.org/bugs/show_bug.cgi?id=16879 +// char nextChar= fDocument.getChar(fOffset);

// search for opening peer character next to the activation point
            for (i= 0; i < fPairs.length; i= i + 2) {
-                if (nextChar == fPairs[i]) {
-                    fStartPos= fOffset;
-                    pairIndex1= i;
-                } else if (prevChar == fPairs[i]) {
+//                if (nextChar == fPairs[i]) {
+//                    fStartPos= fOffset;
+//                    pairIndex1= i;
+//                } else
+                if (prevChar == fPairs[i]) {
                    fStartPos= fOffset - 1;
                    pairIndex1= i;
                }
@@ -116,13 +102,13 @@
                if (prevChar == fPairs[i]) {
                    fEndPos= fOffset - 1;
                    pairIndex2= i;
-                } else if (nextChar == fPairs[i]) {
-                    fEndPos= fOffset;
-                    pairIndex2= i;
-                }
+                }
+//                else if (nextChar == fPairs[i]) {
+//                    fEndPos= fOffset;
+//                    pairIndex2= i;
+//                }
            }

-
            if (fEndPos > -1) {
                fAnchor= RIGHT;
fStartPos= searchForOpeningPeer(fEndPos, fPairs[pairIndex2 - 1], fPairs[pairIndex2], fDocument);
@@ -139,54 +125,119 @@
                    fStartPos= -1;
            }

-
        } catch (BadLocationException x) {
        } catch (IOException x) {
        }

-
        return false;
    }
+
+
+//    protected boolean matchPairsAt() {
+//
+//        int i;
+//        int pairIndex1 = fPairs.length;
+//        int pairIndex2 = fPairs.length;
+//
+//        fStartPos = -1;
+//        fEndPos = -1;
+//
+//        // get the chars preceding and following the start position
+//        try {
+//
+//            /*
+//             A quick hack to get around the fact that we can't bracket
+//             match on the very first element of a document.  We make the
+// character to match a null character which is unlikely to match.
+//            */
+// char prevChar = (fOffset > 0) ? fDocument.getChar(fOffset - 1) : '\0';
+//            char nextChar = fDocument.getChar(fOffset);
+//
+// // search for opening peer character next to the activation point
+//            for (i = 0; i < fPairs.length; i = i + 2) {
+//                if (nextChar == fPairs[i]) {
+//                    fStartPos = fOffset;
+//                    pairIndex1 = i;
+//                } else if (prevChar == fPairs[i]) {
+//                    fStartPos = fOffset - 1;
+//                    pairIndex1 = i;
+//                }
+//            }
+//
+// // search for closing peer character next to the activation point
+//            for (i = 1; i < fPairs.length; i = i + 2) {
+//                if (prevChar == fPairs[i]) {
+//                    fEndPos = fOffset - 1;
+//                    pairIndex2 = i;
+//                } else if (nextChar == fPairs[i]) {
+//                    fEndPos = fOffset;
+//                    pairIndex2 = i;
+//                }
+//            }
+//
+//            if (fEndPos > -1) {
+//                fAnchor = RIGHT;
+// fStartPos = searchForOpeningPeer(fEndPos, fPairs[pairIndex2 - 1], fPairs[pairIndex2], fDocument);
+//                if (fStartPos > -1)
+//                    return true;
+//                else
+//                    fEndPos = -1;
+//            } else if (fStartPos > -1) {
+//                fAnchor = LEFT;
+// fEndPos = searchForClosingPeer(fStartPos, fPairs[pairIndex1], fPairs[pairIndex1 + 1], fDocument);
+//                if (fEndPos > -1)
+//                    return true;
+//                else
+//                    fStartPos = -1;
+//            }
+//
+//        } catch (BadLocationException x) {
+//        } catch (IOException x) {
+//        }
+//
+//        return false;
+//    }
+
protected int searchForClosingPeer(int offset, int openingPeer, int closingPeer, IDocument document) throws IOException { - + fReader.configureForwardReader(document, offset + 1, document.getLength(), true, true); - - int stack= 1;
-        int c= fReader.read();
+
+        int stack = 1;
+        int c = fReader.read();
        while (c != CCodeReader.EOF) {
            if (c == openingPeer && c != closingPeer)
                stack++;
            else if (c == closingPeer)
                stack--;
- +
            if (stack == 0)
                return fReader.getOffset();
- - c= fReader.read();
+
+            c = fReader.read();
        }
- - return -1;
+
+        return -1;
    }
- + protected int searchForOpeningPeer(int offset, int openingPeer, int closingPeer, IDocument document) throws IOException { - +
        fReader.configureBackwardReader(document, offset, true, true);
- - int stack= 1;
-        int c= fReader.read();
+
+        int stack = 1;
+        int c = fReader.read();
        while (c != CCodeReader.EOF) {
            if (c == closingPeer && c != openingPeer)
                stack++;
            else if (c == openingPeer)
                stack--;
- +
            if (stack == 0)
                return fReader.getOffset();
- - c= fReader.read();
+
+            c = fReader.read();
        }
- +
        return -1;
    }
}
Index: src/org/eclipse/cdt/internal/ui/util/CoreUtility.java
===================================================================
RCS file: src/org/eclipse/cdt/internal/ui/util/CoreUtility.java
diff -N src/org/eclipse/cdt/internal/ui/util/CoreUtility.java
--- src/org/eclipse/cdt/internal/ui/util/CoreUtility.java 26 Jun 2002 20:55:44 -0000 1.1
+++ /dev/null    1 Jan 1970 00:00:00 -0000
@@ -1,43 +0,0 @@
-package org.eclipse.cdt.internal.ui.util;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IProjectDescription;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-
-
-public class CoreUtility {
- - /**
-     * Adds a nauture to a project
-     */
- public static void addNatureToProject(IProject proj, String natureId, IProgressMonitor monitor) throws CoreException {
-        IProjectDescription description = proj.getDescription();
-        String[] prevNatures= description.getNatureIds();
-        String[] newNatures= new String[prevNatures.length + 1];
- System.arraycopy(prevNatures, 0, newNatures, 0, prevNatures.length);
-        newNatures[prevNatures.length]= natureId;
-        description.setNatureIds(newNatures);
-        proj.setDescription(description, monitor);
-    }
-    /**
-     * Creates a folder and all parent folders if not existing
-     * Project must exist
-     */
- public static void createFolder(IFolder folder, boolean force, boolean local, IProgressMonitor monitor) throws CoreException {
-        if (!folder.exists()) {
-            IContainer parent= folder.getParent();
-            if (parent instanceof IFolder) {
-                createFolder((IFolder)parent, force, local, monitor);
-            }
-            folder.create(force, local, monitor);
-        }
-    }
-}




Back to the top