From 445d0d51eeb602dc0777b806a2616fb55d8d1d51 Mon Sep 17 00:00:00 2001 From: David Inglis Date: Mon, 21 Apr 2003 17:05:46 +0000 Subject: [PATCH] update ceditor to 2.0/2.1 --- core/org.eclipse.cdt.ui/ChangeLog | 20 + .../internal/ui/editor/BracketPainter.java | 169 -- .../cdt/internal/ui/editor/CEditor.java | 1447 ++++------------- .../ui/editor/CEditorMessages.properties | 9 +- .../cdt/internal/ui/editor/IPainter.java | 26 - .../cdt/internal/ui/editor/LinePainter.java | 141 -- .../cdt/internal/ui/editor/OverviewRuler.java | 498 ------ .../cdt/internal/ui/editor/PaintManager.java | 257 --- .../ui/editor/PrintMarginPainter.java | 128 -- .../internal/ui/editor/ProblemPainter.java | 248 --- .../internal/ui/editor/asm/AsmTextEditor.java | 4 +- .../ui/preferences/CEditorPreferencePage.java | 1245 ++++++++------ .../preferences/CLaunchingPropertyPage.java | 216 --- .../cdt/internal/ui/text/CPairMatcher.java | 191 ++- .../cdt/internal/ui/util/CoreUtility.java | 43 - 15 files changed, 1150 insertions(+), 3492 deletions(-) delete mode 100644 core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/BracketPainter.java delete mode 100644 core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/IPainter.java delete mode 100644 core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/LinePainter.java delete mode 100644 core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/OverviewRuler.java delete mode 100644 core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/PaintManager.java delete mode 100644 core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/PrintMarginPainter.java delete mode 100644 core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/ProblemPainter.java delete mode 100644 core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CLaunchingPropertyPage.java delete mode 100644 core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/CoreUtility.java diff --git a/core/org.eclipse.cdt.ui/ChangeLog b/core/org.eclipse.cdt.ui/ChangeLog index d2271be8a46..b482a713e71 100644 --- a/core/org.eclipse.cdt.ui/ChangeLog +++ b/core/org.eclipse.cdt.ui/ChangeLog @@ -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 diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/BracketPainter.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/BracketPainter.java deleted file mode 100644 index 3c268fe81ea..00000000000 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/BracketPainter.java +++ /dev/null @@ -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; - } -} - diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditor.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditor.java index 2076a6cce1f..b71f1697f11 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditor.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditor.java @@ -4,12 +4,10 @@ package org.eclipse.cdt.internal.ui.editor; * (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.ISourceRange; 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.ITextSelection; 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.ISelectionProvider; 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 @@ import org.eclipse.ui.views.tasklist.TaskList; */ 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"; + 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"; - /* 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 @@ public class CEditor extends TextEditor implements ISelectionChangedListener { super.doSetInput(input); fCEditorErrorTickUpdater.setAnnotationModel(getDocumentProvider().getAnnotationModel(input)); } - + /** * Update the title image */ @@ -222,129 +148,34 @@ public class CEditor extends TextEditor implements ISelectionChangedListener { 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 @@ public class CEditor extends TextEditor implements ISelectionChangedListener { * @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 @@ public class CEditor extends TextEditor implements ISelectionChangedListener { 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 null 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 class CEditor extends TextEditor implements ISelectionChangedListener { } } } - + public void setSelection(ICElement element) { if (element == null || element instanceof ITranslationUnit) { @@ -589,8 +262,9 @@ public class CEditor extends TextEditor implements ISelectionChangedListener { * 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 @@ public class CEditor extends TextEditor implements ISelectionChangedListener { 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 @@ public class CEditor extends TextEditor implements ISelectionChangedListener { } 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.setActionDefinitionId(ICEditorActionDefinitionIds.CONTENT_ASSIST_CONTEXT_INFORMATION); - setAction("ContentAssistTip", action); - - setAction("AddIncludeOnSelection", new AddIncludeOnSelectionAction(this)); //$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("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,24 +409,17 @@ public class CEditor extends TextEditor implements ISelectionChangedListener { // @@@ 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 AbstractTextEditor implementation of this * IWorkbenchPart method creates the vertical ruler and @@ -772,472 +431,256 @@ public class CEditor extends TextEditor implements ISelectionChangedListener { */ 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 @@ public class CEditor extends TextEditor implements ISelectionChangedListener { super.customizeDocumentCommand(command); if (fTextConverters != null) { for (Iterator e = fTextConverters.iterator(); e.hasNext();) - ((ITextConverter) e.next()).customizeDocumentCommand(getDocument(), command); + ((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); - } - } - - 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 @@ public class CEditor extends TextEditor implements ISelectionChangedListener { // 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. + * Creates the annotation access for this editor. + * @return the created annotation access */ - protected IVerticalRulerColumn createLineNumberRulerColumn() { - fLineNumberRulerColumn= new LineNumberRulerColumn(); - initializeLineNumberRulerColumn(fLineNumberRulerColumn); - return fLineNumberRulerColumn; + protected IAnnotationAccess createAnnotationAccess() { + return new DefaultMarkerAnnotationAccess(fAnnotationPreferences); } - - /* - * @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; + + 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 true 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; } } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditorMessages.properties b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditorMessages.properties index ee5dfad7218..0ae9b500dfd 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditorMessages.properties +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditorMessages.properties @@ -19,12 +19,9 @@ ClassFileMarkerAnnotationModel.error.isAcceptable=ClassFileMarkerAnnotationModel 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 diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/IPainter.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/IPainter.java deleted file mode 100644 index 429cdf843e9..00000000000 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/IPainter.java +++ /dev/null @@ -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); -} - diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/LinePainter.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/LinePainter.java deleted file mode 100644 index 3a4ddb43395..00000000000 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/LinePainter.java +++ /dev/null @@ -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) { - } -} - diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/OverviewRuler.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/OverviewRuler.java deleted file mode 100644 index 4ca43e97ea3..00000000000 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/OverviewRuler.java +++ /dev/null @@ -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; - } - } - } -} diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/PaintManager.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/PaintManager.java deleted file mode 100644 index c91136b9fc8..00000000000 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/PaintManager.java +++ /dev/null @@ -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); - } - } -} - - - diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/PrintMarginPainter.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/PrintMarginPainter.java deleted file mode 100644 index 0f96d01cc21..00000000000 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/PrintMarginPainter.java +++ /dev/null @@ -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 paint 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); - } - } - } -} - - diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/ProblemPainter.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/ProblemPainter.java deleted file mode 100644 index ab5e7d43e99..00000000000 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/ProblemPainter.java +++ /dev/null @@ -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) { - } -} - - diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/asm/AsmTextEditor.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/asm/AsmTextEditor.java index e172ac894db..a8902380226 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/asm/AsmTextEditor.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/asm/AsmTextEditor.java @@ -114,8 +114,8 @@ public class AsmTextEditor extends StatusTextEditor { } 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); diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CEditorPreferencePage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CEditorPreferencePage.java index 0ae66b89ad3..e32130aa1e4 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CEditorPreferencePage.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CEditorPreferencePage.java @@ -13,6 +13,17 @@ import java.util.HashMap; 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.TabItem; 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", 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 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 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 @@ public class CEditorPreferencePage extends PreferencePage implements IWorkbenchP 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); } - - public static void initDefaults(IPreferenceStore store) { - - Color color; - Display display= Display.getDefault(); - - 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); - + 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(); + + 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); + 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 @@ public class CEditorPreferencePage extends PreferencePage implements IWorkbenchP //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 class CEditorPreferencePage extends PreferencePage implements IWorkbenchP */ 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 createColorPage(Composite parent) { - - 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; - backgroundComposite.setLayout(layout); + 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(backgroundComposite, SWT.NULL); - label.setText("Bac&kground Color:"); - GridData gd= new GridData(); - gd.horizontalSpan= 2; + 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); - SelectionListener backgroundSelectionListener= new SelectionListener() { - public void widgetSelected(SelectionEvent e) { - boolean custom= fBackgroundCustomRadioButton.getSelection(); + 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); + colorComposite.setLayout(new GridLayout()); + + 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.setText("Bac&kground Color:"); + GridData gd = new GridData(); + gd.horizontalSpan = 2; + label.setLayoutData(gd); + + 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®round:"); 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 @@ public class CEditorPreferencePage extends PreferencePage implements IWorkbenchP 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 @@ public class CEditorPreferencePage extends PreferencePage implements IWorkbenchP // 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 @@ public class CEditorPreferencePage extends PreferencePage implements IWorkbenchP // 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 @@ public class CEditorPreferencePage extends PreferencePage implements IWorkbenchP //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 @@ public class CEditorPreferencePage extends PreferencePage implements IWorkbenchP * Returns null 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 ¤t 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 ¤t 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 @@ public class CEditorPreferencePage extends PreferencePage implements IWorkbenchP // 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®round for method parameters:"; //addColorButton(contentAssistComposite, label, ContentAssistPreference.PARAMETERS_FOREGROUND, 0); - + return contentAssistComposite; } @@ -733,98 +913,112 @@ public class CEditorPreferencePage extends PreferencePage implements IWorkbenchP * @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 @@ public class CEditorPreferencePage extends PreferencePage implements IWorkbenchP 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 @@ public class CEditorPreferencePage extends PreferencePage implements IWorkbenchP } 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 @@ public class CEditorPreferencePage extends PreferencePage implements IWorkbenchP 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 @@ public class CEditorPreferencePage extends PreferencePage implements IWorkbenchP } 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); } } - - diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CLaunchingPropertyPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CLaunchingPropertyPage.java deleted file mode 100644 index 55a77abe3f4..00000000000 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CLaunchingPropertyPage.java +++ /dev/null @@ -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()); - } - } -} diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CPairMatcher.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CPairMatcher.java index dc1a057cc5f..6f7dfc80381 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CPairMatcher.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CPairMatcher.java @@ -7,105 +7,91 @@ package org.eclipse.cdt.internal.ui.text; 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) { - - 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 @@ public class CPairMatcher { 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 @@ public class CPairMatcher { 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; } } \ No newline at end of file diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/CoreUtility.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/CoreUtility.java deleted file mode 100644 index 31ffae7594c..00000000000 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/CoreUtility.java +++ /dev/null @@ -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); - } - } -}