diff --git a/core/org.eclipse.cdt.ui/plugin.properties b/core/org.eclipse.cdt.ui/plugin.properties
index c3a8f1da22c..d4527fc1cb8 100644
--- a/core/org.eclipse.cdt.ui/plugin.properties
+++ b/core/org.eclipse.cdt.ui/plugin.properties
@@ -128,9 +128,6 @@ ActionDefinition.format.description=Format Source Code
ActionDefinition.gotoMatchingBracket.name= Go to Matching Bracket
ActionDefinition.gotoMatchingBracket.description= Moves the cursor to the matching bracket
-ActionDefinition.showTooltip.name= Show Tooltip Description
-ActionDefinition.showTooltip.description= Shows the tooltip description for the element at the cursor
-
CEditor.name=C/C++ Editor
CPluginPreferencePage.name=C/C++
diff --git a/core/org.eclipse.cdt.ui/plugin.xml b/core/org.eclipse.cdt.ui/plugin.xml
index 7bb42d8c4f5..11c4e84aefa 100644
--- a/core/org.eclipse.cdt.ui/plugin.xml
+++ b/core/org.eclipse.cdt.ui/plugin.xml
@@ -1210,13 +1210,6 @@
contextId="org.eclipse.cdt.ui.cEditorScope"
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
sequence="M1+M3+J"/>
-
-
-
@@ -1348,12 +1341,6 @@
categoryId="org.eclipse.cdt.ui.category.source"
id="org.eclipse.cdt.ui.edit.text.c.goto.matching.bracket">
-
-
ResourceAction constructor),
- * or null
if none
- * @param editor The text editor component on which this Action will work.
- */
- public JoinLinesAction(ResourceBundle bundle, String prefix, ITextEditor editor) {
-
- super(bundle, prefix, editor);
-
- } // end of constructor
-
-
- /**
- * Run is where all the action (sic!) happens. This is a pretty simple
- * action that basically joins the current line and next line together.
- * It achieves this by determining which line of the editor's document
- * we are on, and then replacing the delimiter at the end of the line
- * with nothing.
- */
- public void run() {
-
- // Make sure we can proceed.
- if ((theEditor != null) && isEnabled() && canModifyEditor()) {
-
- // Retrieve the current editor's document
- IDocument theDocument = getDocument(theEditor);
-
- if (theDocument != null) {
-
- try {
-
- // First, retrieve the current selection
- ITextSelection theSelection = getSelection(theEditor);
-
- if (theSelection != null) {
-
- // Now, figure out the end line of the selection
- int currentLine = theSelection.getEndLine();
- if (currentLine < theDocument.getNumberOfLines() - 1) {
- // compute the region of whitespace between the two adjacent lines
- IRegion currentLineRegion= theDocument.getLineInformation(currentLine);
- IRegion nextLineRegion= theDocument.getLineInformation(currentLine + 1);
- int startOffset= currentLineRegion.getOffset() + currentLineRegion.getLength();
- while (startOffset > currentLineRegion.getOffset()) {
- if (Character.isWhitespace(theDocument.getChar(startOffset - 1))) {
- --startOffset;
- } else {
- break;
- }
- }
- int endOffset= nextLineRegion.getOffset();
- while (endOffset < nextLineRegion.getOffset() + nextLineRegion.getLength()) {
- if (Character.isWhitespace(theDocument.getChar(endOffset))) {
- ++endOffset;
- } else {
- break;
- }
- }
- if (endOffset == nextLineRegion.getOffset() + nextLineRegion.getLength()) {
- // special case: empty next line - don't insert trailing space
- theDocument.replace(startOffset, endOffset - startOffset, null);
- } else {
- // Replace the whitespace region with a single space
- theDocument.replace(startOffset, endOffset - startOffset, " "); //$NON-NLS-1$
- }
- }
- }
-
- }
- catch (BadLocationException e) {
-
- e.printStackTrace();
- }
-
- } // end of if (document)
-
- } // end of isEnabled()
-
- } // end of run
-
-
- /**
- * Check that we can actually modify the document of the current editor.
- */
- public void update() {
-
- super.update();
-
- // Make sure we can proceed.
- if (isEnabled() && canModifyEditor()) {
-
- // Retrieve the text editor and store it for later
- theEditor = getTextEditor();
- }
-
- } // end of update
-
-
- /**
- * Get Document attempts to retrieve 'editor's document.
- *
- * @param editor The editor whose document we want to retrieve.
- *
- * @return An IDocument if there is one, or null.
- */
- private IDocument getDocument(ITextEditor editor) {
-
- // What we will return
- IDocument theDocument = null;
-
- // Retrieve the document provider
- IDocumentProvider documentProvider = editor.getDocumentProvider();
-
- if (documentProvider != null) {
-
- // Retrieve the actual document
- theDocument = documentProvider.getDocument(editor.getEditorInput());
- }
-
- return theDocument;
-
- } // end of getDocument
-
-
- /**
- * Get selection attempts to retrieve 'editor's current selection.
- *
- * @param editor The editor whose selection we want to retrieve.
- *
- * @return An ITextSelection if there is one, or null.
- */
- private ITextSelection getSelection(ITextEditor editor) {
-
- // What we will return
- ITextSelection theSelection = null;
-
- // First try to retrieve the editor's selection provider
- ISelectionProvider selectionProvider = editor.getSelectionProvider();
-
- if (selectionProvider != null) {
-
- // Now try to retrieve the selection
- ISelection selection = selectionProvider.getSelection();
-
- // Is this of the correct type?
- if (selection instanceof ITextSelection) {
-
- // Ok, cast it and assign it
- theSelection = (ITextSelection) selection;
- }
- }
-
- return theSelection;
-
- } // end of getSelection
-
-} // end of JoinLinesAction
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 1cc2baf7554..198c226597f 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
@@ -20,7 +20,6 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
-import java.util.ResourceBundle;
import java.util.Set;
import java.util.Stack;
@@ -35,41 +34,33 @@ import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IStatusLineManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.text.AbstractInformationControlManager;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.BadPositionCategoryException;
-import org.eclipse.jface.text.DefaultInformationControl;
import org.eclipse.jface.text.DefaultLineTracker;
-import org.eclipse.jface.text.DocumentCommand;
import org.eclipse.jface.text.DocumentEvent;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IDocumentExtension;
import org.eclipse.jface.text.IDocumentListener;
import org.eclipse.jface.text.IInformationControl;
import org.eclipse.jface.text.IInformationControlCreator;
-import org.eclipse.jface.text.ILineTracker;
import org.eclipse.jface.text.IPositionUpdater;
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.ITextHover;
import org.eclipse.jface.text.ITextSelection;
-import org.eclipse.jface.text.ITextViewer;
import org.eclipse.jface.text.ITextViewerExtension;
import org.eclipse.jface.text.ITextViewerExtension2;
-import org.eclipse.jface.text.ITextViewerExtension4;
import org.eclipse.jface.text.ITextViewerExtension5;
+import org.eclipse.jface.text.ITextViewerExtension7;
import org.eclipse.jface.text.ITypedRegion;
import org.eclipse.jface.text.IWidgetTokenKeeper;
import org.eclipse.jface.text.Position;
import org.eclipse.jface.text.Region;
+import org.eclipse.jface.text.TabsToSpacesConverter;
import org.eclipse.jface.text.TextUtilities;
import org.eclipse.jface.text.contentassist.ContentAssistant;
import org.eclipse.jface.text.contentassist.IContentAssistant;
import org.eclipse.jface.text.formatter.FormattingContextProperties;
import org.eclipse.jface.text.formatter.IFormattingContext;
-import org.eclipse.jface.text.information.IInformationProvider;
-import org.eclipse.jface.text.information.IInformationProviderExtension;
-import org.eclipse.jface.text.information.IInformationProviderExtension2;
-import org.eclipse.jface.text.information.InformationPresenter;
import org.eclipse.jface.text.link.ILinkedModeListener;
import org.eclipse.jface.text.link.LinkedModeModel;
import org.eclipse.jface.text.link.LinkedModeUI;
@@ -78,16 +69,11 @@ import org.eclipse.jface.text.link.LinkedPositionGroup;
import org.eclipse.jface.text.link.LinkedModeUI.ExitFlags;
import org.eclipse.jface.text.link.LinkedModeUI.IExitPolicy;
import org.eclipse.jface.text.source.Annotation;
-import org.eclipse.jface.text.source.IAnnotationHover;
-import org.eclipse.jface.text.source.IAnnotationHoverExtension;
import org.eclipse.jface.text.source.IAnnotationModel;
import org.eclipse.jface.text.source.ICharacterPairMatcher;
-import org.eclipse.jface.text.source.ILineRange;
import org.eclipse.jface.text.source.IOverviewRuler;
import org.eclipse.jface.text.source.ISourceViewer;
-import org.eclipse.jface.text.source.ISourceViewerExtension3;
import org.eclipse.jface.text.source.IVerticalRuler;
-import org.eclipse.jface.text.source.IVerticalRulerInfo;
import org.eclipse.jface.text.source.SourceViewerConfiguration;
import org.eclipse.jface.text.source.projection.ProjectionAnnotationModel;
import org.eclipse.jface.text.source.projection.ProjectionSupport;
@@ -137,9 +123,7 @@ import org.eclipse.ui.texteditor.ITextEditorActionConstants;
import org.eclipse.ui.texteditor.ITextEditorActionDefinitionIds;
import org.eclipse.ui.texteditor.ITextEditorDropTargetListener;
import org.eclipse.ui.texteditor.IUpdate;
-import org.eclipse.ui.texteditor.ResourceAction;
import org.eclipse.ui.texteditor.SourceViewerDecorationSupport;
-import org.eclipse.ui.texteditor.TextEditorAction;
import org.eclipse.ui.texteditor.TextNavigationAction;
import org.eclipse.ui.texteditor.TextOperationAction;
import org.eclipse.ui.texteditor.link.EditorLinkedModeUI;
@@ -171,7 +155,6 @@ import org.eclipse.cdt.ui.actions.OpenViewActionGroup;
import org.eclipse.cdt.ui.text.ICPartitions;
import org.eclipse.cdt.ui.text.folding.ICFoldingStructureProvider;
-import org.eclipse.cdt.internal.corext.util.CodeFormatterUtil;
import org.eclipse.cdt.internal.corext.util.SimplePositionTracker;
import org.eclipse.cdt.internal.ui.CPluginImages;
@@ -181,7 +164,6 @@ import org.eclipse.cdt.internal.ui.actions.AddBlockCommentAction;
import org.eclipse.cdt.internal.ui.actions.FoldingActionGroup;
import org.eclipse.cdt.internal.ui.actions.GoToNextPreviousMemberAction;
import org.eclipse.cdt.internal.ui.actions.IndentAction;
-import org.eclipse.cdt.internal.ui.actions.JoinLinesAction;
import org.eclipse.cdt.internal.ui.actions.RemoveBlockCommentAction;
import org.eclipse.cdt.internal.ui.actions.SelectionConverter;
import org.eclipse.cdt.internal.ui.dnd.TextEditorDropAdapter;
@@ -194,7 +176,6 @@ import org.eclipse.cdt.internal.ui.text.CSourceViewerConfiguration;
import org.eclipse.cdt.internal.ui.text.CTextTools;
import org.eclipse.cdt.internal.ui.text.CWordIterator;
import org.eclipse.cdt.internal.ui.text.DocumentCharacterIterator;
-import org.eclipse.cdt.internal.ui.text.HTMLTextPresenter;
import org.eclipse.cdt.internal.ui.text.ICReconcilingListener;
import org.eclipse.cdt.internal.ui.text.Symbols;
import org.eclipse.cdt.internal.ui.text.c.hover.SourceViewerInformationControl;
@@ -208,10 +189,6 @@ import org.eclipse.cdt.internal.ui.util.CUIHelp;
*/
public class CEditor extends TextEditor implements ISelectionChangedListener, IReconcilingParticipant, ICReconcilingListener {
- interface ITextConverter {
- void customizeDocumentCommand(IDocument document, DocumentCommand command);
- }
-
class AdaptedSourceViewer extends CSourceViewer {
public AdaptedSourceViewer(Composite parent, IVerticalRuler verticalRuler, IOverviewRuler overviewRuler,
@@ -249,16 +226,6 @@ public class CEditor extends TextEditor implements ISelectionChangedListener, IR
super.doOperation(operation);
}
- public void updateIndentationPrefixes() {
- SourceViewerConfiguration configuration= getSourceViewerConfiguration();
- String[] types= configuration.getConfiguredContentTypes(this);
- for (int i= 0; i < types.length; i++) {
- String[] prefixes= configuration.getIndentPrefixes(this, types[i]);
- if (prefixes != null && prefixes.length > 0)
- setIndentPrefixes(prefixes, types[i]);
- }
- }
-
/*
* @see IWidgetTokenOwner#requestWidgetToken(IWidgetTokenKeeper)
*/
@@ -312,80 +279,6 @@ public class CEditor extends TextEditor implements ISelectionChangedListener, IR
}
}
- static class TabConverter implements ITextConverter {
- private int fTabRatio;
- private ILineTracker fLineTracker;
-
- public TabConverter() {
- }
-
- public void setNumberOfSpacesPerTab(int ratio) {
- fTabRatio = ratio;
- }
-
- public void setLineTracker(ILineTracker lineTracker) {
- fLineTracker = lineTracker;
- }
-
- private int insertTabString(StringBuffer buffer, int offsetInLine) {
-
- if (fTabRatio == 0)
- return 0;
-
- int remainder = offsetInLine % fTabRatio;
- remainder = fTabRatio - remainder;
- for (int i = 0; i < remainder; i++)
- buffer.append(' ');
- return remainder;
- }
-
- public void customizeDocumentCommand(IDocument document, DocumentCommand command) {
- String text = command.text;
- if (text == null)
- return;
-
- int index = text.indexOf('\t');
- if (index > -1) {
- StringBuffer buffer = new StringBuffer();
-
- fLineTracker.set(command.text);
- int lines = fLineTracker.getNumberOfLines();
-
- try {
- for (int i = 0; i < lines; i++) {
- int offset = fLineTracker.getLineOffset(i);
- int endOffset = offset + fLineTracker.getLineLength(i);
- String line = text.substring(offset, endOffset);
-
- int position = 0;
- if (i == 0) {
- IRegion firstLine = document.getLineInformationOfOffset(command.offset);
- position = command.offset - firstLine.getOffset();
- }
-
- int length = line.length();
- for (int j = 0; j < length; j++) {
- char c = line.charAt(j);
- if (c == '\t') {
- int oldPosition = position;
- position += insertTabString(buffer, position);
- if (command.caretOffset > command.offset + oldPosition) {
- command.caretOffset += position - oldPosition - 1;
- }
- } else {
- buffer.append(c);
- ++position;
- }
- }
- }
-
- command.text = buffer.toString();
- } catch (BadLocationException x) {
- }
- }
- }
- }
-
private class ExitPolicy implements IExitPolicy {
final char fExitCharacter;
@@ -771,310 +664,6 @@ public class CEditor extends TextEditor implements ISelectionChangedListener, IR
}
}
- /**
- * Information provider used to present focusable information shells.
- *
- * @since 3.1.1
- */
- private static final class InformationProvider implements
- IInformationProvider, IInformationProviderExtension,
- IInformationProviderExtension2 {
-
- private IRegion fHoverRegion;
- private Object fHoverInfo;
- private IInformationControlCreator fControlCreator;
-
- InformationProvider(IRegion hoverRegion, Object hoverInfo,
- IInformationControlCreator controlCreator) {
- fHoverRegion = hoverRegion;
- fHoverInfo = hoverInfo;
- fControlCreator = controlCreator;
- }
-
- /*
- * @see org.eclipse.jface.text.information.IInformationProvider#getSubject(org.eclipse.jface.text.ITextViewer,
- * int)
- */
- public IRegion getSubject(ITextViewer textViewer, int invocationOffset) {
- return fHoverRegion;
- }
-
- /*
- * @see org.eclipse.jface.text.information.IInformationProvider#getInformation(org.eclipse.jface.text.ITextViewer,
- * org.eclipse.jface.text.IRegion)
- */
- public String getInformation(ITextViewer textViewer, IRegion subject) {
- return fHoverInfo.toString();
- }
-
- /*
- * @see org.eclipse.jface.text.information.IInformationProviderExtension#getInformation2(org.eclipse.jface.text.ITextViewer,
- * org.eclipse.jface.text.IRegion)
- */
- public Object getInformation2(ITextViewer textViewer, IRegion subject) {
- return fHoverInfo;
- }
-
- /*
- * @see org.eclipse.jface.text.information.IInformationProviderExtension2#getInformationPresenterControlCreator()
- */
- public IInformationControlCreator getInformationPresenterControlCreator() {
- return fControlCreator;
- }
- }
-
- /**
- * This action behaves in two different ways: If there is no current text
- * hover, the tooltip is displayed using information presenter. If there is
- * a current text hover, it is converted into a information presenter in
- * order to make it sticky.
- *
- * @since 3.1.1
- */
- class InformationDispatchAction extends TextEditorAction {
-
- /** The wrapped text operation action. */
- private final TextOperationAction fTextOperationAction;
-
- /**
- * Creates a dispatch action.
- *
- * @param resourceBundle
- * the resource bundle
- * @param prefix
- * the prefix
- * @param textOperationAction
- * the text operation action
- */
- public InformationDispatchAction(ResourceBundle resourceBundle,
- String prefix, final TextOperationAction textOperationAction) {
- super(resourceBundle, prefix, CEditor.this);
- if (textOperationAction == null)
- throw new IllegalArgumentException();
- fTextOperationAction = textOperationAction;
- }
-
- /*
- * @see org.eclipse.jface.action.IAction#run()
- */
- public void run() {
-
- ISourceViewer sourceViewer = getSourceViewer();
- if (sourceViewer == null) {
- fTextOperationAction.run();
- return;
- }
-
- if (sourceViewer instanceof ITextViewerExtension4) {
- ITextViewerExtension4 extension4 = (ITextViewerExtension4) sourceViewer;
- if (extension4.moveFocusToWidgetToken())
- return;
- }
-
- if (sourceViewer instanceof ITextViewerExtension2) {
- // does a text hover exist?
- ITextHover textHover = ((ITextViewerExtension2) sourceViewer)
- .getCurrentTextHover();
- if (textHover != null
- && makeTextHoverFocusable(sourceViewer, textHover))
- return;
- }
-
- if (sourceViewer instanceof ISourceViewerExtension3) {
- // does an annotation hover exist?
- IAnnotationHover annotationHover = ((ISourceViewerExtension3) sourceViewer)
- .getCurrentAnnotationHover();
- if (annotationHover != null
- && makeAnnotationHoverFocusable(sourceViewer,
- annotationHover))
- return;
- }
-
- // otherwise, just display the tooltip
- // fTextOperationAction.run();
- }
-
- /**
- * Tries to make a text hover focusable (or "sticky").
- *
- * @param sourceViewer
- * the source viewer to display the hover over
- * @param textHover
- * the hover to make focusable
- * @return true
if successful, false
- * otherwise
- */
- private boolean makeTextHoverFocusable(ISourceViewer sourceViewer,
- ITextHover textHover) {
- Point hoverEventLocation = ((ITextViewerExtension2) sourceViewer)
- .getHoverEventLocation();
- int offset = computeOffsetAtLocation(sourceViewer,
- hoverEventLocation.x, hoverEventLocation.y);
- if (offset == -1)
- return false;
-
- try {
- IRegion hoverRegion = textHover.getHoverRegion(sourceViewer,
- offset);
- if (hoverRegion == null)
- return false;
-
- String hoverInfo = textHover.getHoverInfo(sourceViewer,
- hoverRegion);
-
- IInformationControlCreator controlCreator = null;
- if (textHover instanceof IInformationProviderExtension2)
- controlCreator = ((IInformationProviderExtension2) textHover)
- .getInformationPresenterControlCreator();
-
- IInformationProvider informationProvider = new InformationProvider(
- hoverRegion, hoverInfo, controlCreator);
-
- fInformationPresenter.setOffset(offset);
- fInformationPresenter
- .setAnchor(AbstractInformationControlManager.ANCHOR_BOTTOM);
- fInformationPresenter.setMargins(6, 6); // default values from
- // AbstractInformationControlManager
- String contentType = TextUtilities.getContentType(sourceViewer
- .getDocument(), ICPartitions.C_PARTITIONING, offset,
- true);
- fInformationPresenter.setInformationProvider(
- informationProvider, contentType);
- fInformationPresenter.showInformation();
-
- return true;
-
- } catch (BadLocationException e) {
- return false;
- }
- }
-
- /**
- * Tries to make an annotation hover focusable (or "sticky").
- *
- * @param sourceViewer
- * the source viewer to display the hover over
- * @param annotationHover
- * the hover to make focusable
- * @return true
if successful, false
- * otherwise
- */
- private boolean makeAnnotationHoverFocusable(
- ISourceViewer sourceViewer, IAnnotationHover annotationHover) {
- IVerticalRulerInfo info = getVerticalRuler();
- int line = info.getLineOfLastMouseButtonActivity();
- if (line == -1)
- return false;
-
- try {
-
- // compute the hover information
- Object hoverInfo;
- if (annotationHover instanceof IAnnotationHoverExtension) {
- IAnnotationHoverExtension extension = (IAnnotationHoverExtension) annotationHover;
- ILineRange hoverLineRange = extension.getHoverLineRange(
- sourceViewer, line);
- if (hoverLineRange == null)
- return false;
- final int maxVisibleLines = Integer.MAX_VALUE; // allow any
- // number of
- // lines
- // being
- // displayed,
- // as we
- // support
- // scrolling
- hoverInfo = extension.getHoverInfo(sourceViewer,
- hoverLineRange, maxVisibleLines);
- } else {
- hoverInfo = annotationHover
- .getHoverInfo(sourceViewer, line);
- }
-
- // hover region: the beginning of the concerned line to place
- // the control right over the line
- IDocument document = sourceViewer.getDocument();
- int offset = document.getLineOffset(line);
- String contentType = TextUtilities.getContentType(document,
- ICPartitions.C_PARTITIONING, offset, true);
-
- IInformationControlCreator controlCreator = null;
-
- /*
- * XXX: This is a hack to avoid API changes at the end of 3.2,
- * and should be fixed for 3.3, see:
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=137967
- */
- if ("org.eclipse.jface.text.source.projection.ProjectionAnnotationHover".equals(annotationHover.getClass().getName())) { //$NON-NLS-1$
- controlCreator = new IInformationControlCreator() {
- public IInformationControl createInformationControl(
- Shell shell) {
- int shellStyle = SWT.RESIZE | SWT.TOOL
- | getOrientation();
- int style = SWT.V_SCROLL | SWT.H_SCROLL;
- return new SourceViewerInformationControl(shell,
- shellStyle, style);
- }
- };
-
- } else {
- if (annotationHover instanceof IInformationProviderExtension2)
- controlCreator = ((IInformationProviderExtension2) annotationHover)
- .getInformationPresenterControlCreator();
- else if (annotationHover instanceof IAnnotationHoverExtension)
- controlCreator = ((IAnnotationHoverExtension) annotationHover)
- .getHoverControlCreator();
- }
-
- IInformationProvider informationProvider = new InformationProvider(
- new Region(offset, 0), hoverInfo, controlCreator);
-
- fInformationPresenter.setOffset(offset);
- fInformationPresenter
- .setAnchor(AbstractInformationControlManager.ANCHOR_RIGHT);
- fInformationPresenter.setMargins(4, 0); // AnnotationBarHoverManager
- // sets (5,0), minus
- // SourceViewer.GAP_SIZE_1
- fInformationPresenter.setInformationProvider(
- informationProvider, contentType);
- fInformationPresenter.showInformation();
-
- return true;
-
- } catch (BadLocationException e) {
- return false;
- }
- }
-
- // modified version from TextViewer
- private int computeOffsetAtLocation(ITextViewer textViewer, int x, int y) {
-
- StyledText styledText = textViewer.getTextWidget();
- IDocument document = textViewer.getDocument();
-
- if (document == null)
- return -1;
-
- try {
- int widgetOffset = styledText.getOffsetAtLocation(new Point(x,
- y));
- Point p = styledText.getLocationAtOffset(widgetOffset);
- if (p.x > x)
- widgetOffset--;
-
- if (textViewer instanceof ITextViewerExtension5) {
- ITextViewerExtension5 extension = (ITextViewerExtension5) textViewer;
- return extension.widgetOffset2ModelOffset(widgetOffset);
- } else {
- IRegion visibleRegion = textViewer.getVisibleRegion();
- return widgetOffset + visibleRegion.getOffset();
- }
- } catch (IllegalArgumentException e) {
- return -1;
- }
- }
- }
-
/**
* Text navigation action to navigate to the next sub-word.
*
@@ -1434,13 +1023,6 @@ public class CEditor extends TextEditor implements ISelectionChangedListener, IR
}
}
-
- /**
- * The information provider used to present focusable information
- * shells.
- */
- private InformationPresenter fInformationPresenter;
-
/**
* The editor selection changed listener.
*
@@ -1469,9 +1051,6 @@ public class CEditor extends TextEditor implements ISelectionChangedListener, IR
/** The bracket inserter. */
private BracketInserter fBracketInserter = new BracketInserter();
- /** The editor's tab converter */
- private TabConverter fTabConverter;
-
/** Listener to annotation model changes that updates the error tick in the tab image */
private CEditorErrorTickUpdater fCEditorErrorTickUpdater;
@@ -1699,10 +1278,14 @@ public class CEditor extends TextEditor implements ISelectionChangedListener, IR
/*
* Ignore tab setting since we rely on the formatter preferences.
* We do this outside the try-finally block to avoid that EDITOR_TAB_WIDTH
- * is handled by the sub-class (AbstractDecoratedTextEditor).
+ * is handled by the base-class (AbstractDecoratedTextEditor).
*/
return;
}
+ if (AbstractDecoratedTextEditorPreferenceConstants.EDITOR_SPACES_FOR_TABS.equals(property)) {
+ // Ignore spaces-for-tab setting since we rely on the formatter preferences.
+ return;
+ }
try {
AdaptedSourceViewer asv = (AdaptedSourceViewer) getSourceViewer();
@@ -1725,10 +1308,10 @@ public class CEditor extends TextEditor implements ISelectionChangedListener, IR
}
if (SPACES_FOR_TABS.equals(property)) {
- if (isTabConversionEnabled())
- startTabConversion();
+ if (isTabsToSpacesConversionEnabled())
+ installTabsToSpacesConverter();
else
- stopTabConversion();
+ uninstallTabsToSpacesConverter();
return;
}
@@ -1745,12 +1328,6 @@ public class CEditor extends TextEditor implements ISelectionChangedListener, IR
}
}
- if (CODE_FORMATTER_TAB_SIZE.equals(property)) {
- asv.updateIndentationPrefixes();
- if (fTabConverter != null)
- fTabConverter.setNumberOfSpacesPerTab(getTabSize());
- }
-
// Not implemented ... for the future.
if (TRANSLATION_TASK_TAGS.equals(event.getProperty())) {
ISourceViewer sourceViewer = getSourceViewer();
@@ -1770,6 +1347,11 @@ public class CEditor extends TextEditor implements ISelectionChangedListener, IR
return;
}
+ if (CODE_FORMATTER_TAB_SIZE.equals(property) && isTabsToSpacesConversionEnabled()) {
+ uninstallTabsToSpacesConverter();
+ installTabsToSpacesConverter();
+ }
+
if (DefaultCodeFormatterConstants.FORMATTER_TAB_SIZE.equals(property)
|| DefaultCodeFormatterConstants.FORMATTER_INDENTATION_SIZE.equals(property)
|| DefaultCodeFormatterConstants.FORMATTER_TAB_CHAR.equals(property)) {
@@ -2073,6 +1655,43 @@ public class CEditor extends TextEditor implements ISelectionChangedListener, IR
return (this == service.getActivePart());
}
+ /*
+ * @see org.eclipse.ui.texteditor.AbstractTextEditor#installTabsToSpacesConverter()
+ * @since 4.0
+ */
+ protected void installTabsToSpacesConverter() {
+ ISourceViewer sourceViewer= getSourceViewer();
+ SourceViewerConfiguration config= getSourceViewerConfiguration();
+ if (config != null && sourceViewer instanceof ITextViewerExtension7) {
+ int tabWidth= config.getTabWidth(sourceViewer);
+ TabsToSpacesConverter tabToSpacesConverter= new TabsToSpacesConverter();
+ tabToSpacesConverter.setNumberOfSpacesPerTab(tabWidth);
+ IDocumentProvider provider= getDocumentProvider();
+ if (provider instanceof CDocumentProvider) {
+ CDocumentProvider cProvider= (CDocumentProvider) provider;
+ tabToSpacesConverter.setLineTracker(cProvider.createLineTracker(getEditorInput()));
+ } else
+ tabToSpacesConverter.setLineTracker(new DefaultLineTracker());
+ ((ITextViewerExtension7)sourceViewer).setTabsToSpacesConverter(tabToSpacesConverter);
+ updateIndentPrefixes();
+ }
+ }
+
+ /*
+ * @see org.eclipse.ui.texteditor.AbstractDecoratedTextEditor#isTabsToSpacesConversionEnabled()
+ * @since 4.0
+ */
+ protected boolean isTabsToSpacesConversionEnabled() {
+ ICElement element= getInputCElement();
+ ICProject project= element == null ? null : element.getCProject();
+ String option;
+ if (project == null)
+ option= CCorePlugin.getOption(SPACES_FOR_TABS);
+ else
+ option= project.getOption(SPACES_FOR_TABS, true);
+ return CCorePlugin.SPACE.equals(option);
+ }
+
/**
* @see org.eclipse.ui.IWorkbenchPart#dispose()
*/
@@ -2136,8 +1755,6 @@ public class CEditor extends TextEditor implements ISelectionChangedListener, IR
fEditorSelectionChangedListener.uninstall(getSelectionProvider());
fEditorSelectionChangedListener = null;
}
-
- stopTabConversion();
super.dispose();
}
@@ -2184,22 +1801,11 @@ public class CEditor extends TextEditor implements ISelectionChangedListener, IR
fFoldingGroup = new FoldingActionGroup(this, getSourceViewer());
- // Sticky hover support
- ResourceAction resAction = new TextOperationAction(CEditorMessages.getResourceBundle(), "ShowToolTip.", this, ISourceViewer.INFORMATION, true); //$NON-NLS-1$
- ResourceAction resAction2 = new InformationDispatchAction(CEditorMessages.getResourceBundle(), "ShowToolTip.", (TextOperationAction) resAction); //$NON-NLS-1$
- resAction2.setActionDefinitionId(ICEditorActionDefinitionIds.SHOW_TOOLTIP);
- setAction("ShowToolTip", resAction2); //$NON-NLS-1$
- PlatformUI.getWorkbench().getHelpSystem().setHelp(resAction2, ICHelpContextIds.SHOW_TOOLTIP_ACTION);
-
// Default text editing menu items
IAction action= new GotoMatchingBracketAction(this);
action.setActionDefinitionId(ICEditorActionDefinitionIds.GOTO_MATCHING_BRACKET);
setAction(GotoMatchingBracketAction.GOTO_MATCHING_BRACKET, action);
- action = new JoinLinesAction(CEditorMessages.getResourceBundle(), "JoinLines.", this); //$NON-NLS-1$
- action.setActionDefinitionId(ICEditorActionDefinitionIds.JOIN_LINES);
- setAction("Join Lines", action); //$NON-NLS-1$
-
action = new ToggleCommentAction(CEditorMessages.getResourceBundle(), "ToggleComment.", this); //$NON-NLS-1$
action.setActionDefinitionId(ICEditorActionDefinitionIds.TOGGLE_COMMENT);
setAction("ToggleComment", action); //$NON-NLS-1$
@@ -2364,51 +1970,33 @@ public class CEditor extends TextEditor implements ISelectionChangedListener, IR
}
/**
- * Determines is folding enabled.
+ * Determines if folding is enabled.
* @return true
if folding is enabled, false
otherwise.
*/
boolean isFoldingEnabled() {
return CUIPlugin.getDefault().getPreferenceStore().getBoolean(PreferenceConstants.EDITOR_FOLDING_ENABLED);
}
+ /*
+ * @see org.eclipse.ui.part.WorkbenchPart#getOrientation()
+ * @since 4.0
+ */
+ public int getOrientation() {
+ // C/C++ editors are always left to right by default
+ return SWT.LEFT_TO_RIGHT;
+ }
- /**
- * The AbstractTextEditor
implementation of this
- * IWorkbenchPart
method creates the vertical ruler and
- * source viewer. Subclasses may extend.
- *
- * We attach our own mouseDown listener on the menu bar,
- * and our own listener for cursor/key/selection events to update cursor position in
- * status bar.
-
- * @param parent Parent composite of the control.
+ /*
+ * @see org.eclipse.ui.texteditor.AbstractDecoratedTextEditor#createPartControl(org.eclipse.swt.widgets.Composite)
*/
public void createPartControl(Composite parent) {
super.createPartControl(parent);
- // Sticky hover support
- IInformationControlCreator informationControlCreator = new IInformationControlCreator() {
- public IInformationControl createInformationControl(Shell shell) {
- boolean cutDown = false;
- int style = cutDown ? SWT.NONE : (SWT.V_SCROLL | SWT.H_SCROLL);
- return new DefaultInformationControl(shell, SWT.RESIZE
- | SWT.TOOL, style, new HTMLTextPresenter(cutDown));
- }
- };
-
- fInformationPresenter = new InformationPresenter(informationControlCreator);
- fInformationPresenter.setSizeConstraints(60, 10, true, true);
- fInformationPresenter.install(getSourceViewer());
- fInformationPresenter.setDocumentPartitioning(ICPartitions.C_PARTITIONING);
-
PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, ICHelpContextIds.CEDITOR_VIEW);
fEditorSelectionChangedListener = new EditorSelectionChangedListener();
fEditorSelectionChangedListener.install(getSelectionProvider());
- if (isTabConversionEnabled())
- startTabConversion();
-
if (isSemanticHighlightingEnabled())
installSemanticHighlighting();
@@ -2610,55 +2198,6 @@ public class CEditor extends TextEditor implements ISelectionChangedListener, IR
}
}
- private void configureTabConverter() {
- if (fTabConverter != null) {
- IDocumentProvider provider = getDocumentProvider();
- if (provider instanceof CDocumentProvider) {
- CDocumentProvider prov = (CDocumentProvider) provider;
- fTabConverter.setLineTracker(prov.createLineTracker(getEditorInput()));
- } else {
- fTabConverter.setLineTracker(new DefaultLineTracker());
- }
- }
- }
-
- private int getTabSize() {
- ICElement element = getInputCElement();
- ICProject project = element == null ? null : element.getCProject();
- return CodeFormatterUtil.getTabWidth(project);
- }
-
- private void startTabConversion() {
- if (fTabConverter == null) {
- fTabConverter= new TabConverter();
- configureTabConverter();
- fTabConverter.setNumberOfSpacesPerTab(getTabSize());
- AdaptedSourceViewer asv= (AdaptedSourceViewer) getSourceViewer();
- asv.addTextConverter(fTabConverter);
- asv.updateIndentationPrefixes();
- }
- }
-
- private void stopTabConversion() {
- if (fTabConverter != null) {
- AdaptedSourceViewer asv= (AdaptedSourceViewer) getSourceViewer();
- asv.removeTextConverter(fTabConverter);
- asv.updateIndentationPrefixes();
- fTabConverter= null;
- }
- }
-
- private boolean isTabConversionEnabled() {
- ICElement element= getInputCElement();
- ICProject project= element == null ? null : element.getCProject();
- String option;
- if (project == null)
- option= CCorePlugin.getOption(SPACES_FOR_TABS);
- else
- option= project.getOption(SPACES_FOR_TABS, true);
- return CCorePlugin.SPACE.equals(option);
- }
-
/*
* @see org.eclipse.ui.texteditor.AbstractTextEditor#createNavigationActions()
*/
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 2b15774149e..352fa47b57e 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
@@ -83,10 +83,6 @@ RemoveBlockComment.label=Remove Bloc&k Comment
RemoveBlockComment.tooltip=Remove Block Comment Markers Enclosing the Caret
RemoveBlockComment.description=Removes any block comment markers enclosing the caret
-JoinLines.label=Join Lines
-JoinLines.tooltip=Join Lines
-JoinLines.description=Join the current and next line together
-
Format.label=F&ormat
Format.tooltip=Format the Selected Text
Format.description=Format the selected text
@@ -138,8 +134,6 @@ GotoMatchingBracket.description=Go to Matching Bracket
GotoMatchingBracket.error.invalidSelection=No bracket selected
GotoMatchingBracket.error.noMatchingBracket=No matching bracket found
-ShowToolTip.label=Show T&ooltip Description
-
ToggleComment_error_title=Comment/Uncomment
ToggleComment_error_message=An error occurred while commenting/uncommenting.
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CSourceViewer.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CSourceViewer.java
index 597ebb9023e..22d2223c15d 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CSourceViewer.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CSourceViewer.java
@@ -14,13 +14,10 @@
package org.eclipse.cdt.internal.ui.editor;
import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
import org.eclipse.core.runtime.Assert;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferenceConverter;
-import org.eclipse.jface.text.DocumentCommand;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.ITextPresentationListener;
@@ -34,6 +31,7 @@ import org.eclipse.jface.text.source.SourceViewerConfiguration;
import org.eclipse.jface.text.source.projection.ProjectionViewer;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StyleRange;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.graphics.Color;
@@ -43,7 +41,6 @@ import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.texteditor.AbstractDecoratedTextEditorPreferenceConstants;
import org.eclipse.ui.texteditor.AbstractTextEditor;
-import org.eclipse.cdt.internal.ui.editor.CEditor.ITextConverter;
import org.eclipse.cdt.internal.ui.text.CSourceViewerConfiguration;
/**
@@ -60,9 +57,6 @@ public class CSourceViewer extends ProjectionViewer implements IPropertyChangeLi
/** Presents type hierarchy. */
private IInformationPresenter fHierarchyPresenter;
- private List fTextConverters;
- private boolean fIgnoreTextConverters= false;
-
/**
* This viewer's foreground color.
* @since 4.0
@@ -306,7 +300,19 @@ public class CSourceViewer extends ProjectionViewer implements IPropertyChangeLi
initializeViewerColors();
}
}
-
+
+ /*
+ * @see org.eclipse.jface.text.source.SourceViewer#createControl(org.eclipse.swt.widgets.Composite, int)
+ */
+ protected void createControl(Composite parent, int styles) {
+
+ // Use LEFT_TO_RIGHT unless otherwise specified.
+ if ((styles & SWT.RIGHT_TO_LEFT) == 0 && (styles & SWT.LEFT_TO_RIGHT) == 0)
+ styles |= SWT.LEFT_TO_RIGHT;
+
+ super.createControl(parent, styles);
+ }
+
/*
* @see org.eclipse.jface.text.ITextOperationTarget#doOperation(int)
*/
@@ -322,16 +328,6 @@ public class CSourceViewer extends ProjectionViewer implements IPropertyChangeLi
case SHOW_HIERARCHY:
fHierarchyPresenter.showInformation();
return;
- case UNDO:
- fIgnoreTextConverters= true;
- super.doOperation(operation);
- fIgnoreTextConverters= false;
- return;
- case REDO:
- fIgnoreTextConverters= true;
- super.doOperation(operation);
- fIgnoreTextConverters= false;
- return;
}
super.doOperation(operation);
}
@@ -349,33 +345,6 @@ public class CSourceViewer extends ProjectionViewer implements IPropertyChangeLi
return super.canDoOperation(operation);
}
- public void addTextConverter(ITextConverter textConverter) {
- if (fTextConverters == null) {
- 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;
- }
- }
-
- /*
- * @see TextViewer#customizeDocumentCommand(DocumentCommand)
- */
- protected void customizeDocumentCommand(DocumentCommand command) {
- super.customizeDocumentCommand(command);
- if (!fIgnoreTextConverters && fTextConverters != null) {
- for (Iterator e = fTextConverters.iterator(); e.hasNext();)
- ((ITextConverter) e.next()).customizeDocumentCommand(getDocument(), command);
- }
- }
-
/**
* Prepend given listener to the list of presentation listeners
*
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/ICEditorActionDefinitionIds.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/ICEditorActionDefinitionIds.java
index 18ce2b35cd3..3b65da91ab4 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/ICEditorActionDefinitionIds.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/ICEditorActionDefinitionIds.java
@@ -177,6 +177,7 @@ public interface ICEditorActionDefinitionIds extends ITextEditorActionDefinition
* (value "org.eclipse.cdt.ui.edit.text.c.show.tooltip"
).
*
* @since 3.1.1
+ * @deprecated Use {@link ITextEditorActionDefinitionIds#SHOW_INFORMATION} instead.
*/
- public static final String SHOW_TOOLTIP = "org.eclipse.cdt.ui.edit.text.c.show.tooltip"; //$NON-NLS-1$
+ public static final String SHOW_TOOLTIP = ITextEditorActionDefinitionIds.SHOW_INFORMATION;
}