Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/AnnotationExpansionControl.java')
-rw-r--r--org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/AnnotationExpansionControl.java795
1 files changed, 0 insertions, 795 deletions
diff --git a/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/AnnotationExpansionControl.java b/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/AnnotationExpansionControl.java
deleted file mode 100644
index 043e5f58ac3..00000000000
--- a/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/AnnotationExpansionControl.java
+++ /dev/null
@@ -1,795 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.texteditor;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.StyleRange;
-import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.FocusListener;
-import org.eclipse.swt.events.MenuEvent;
-import org.eclipse.swt.events.MenuListener;
-import org.eclipse.swt.events.MouseAdapter;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseTrackAdapter;
-import org.eclipse.swt.events.MouseTrackListener;
-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.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-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.swt.widgets.Event;
-import org.eclipse.swt.widgets.Layout;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Widget;
-
-import org.eclipse.jface.viewers.IDoubleClickListener;
-
-import org.eclipse.jface.text.AbstractInformationControlManager;
-import org.eclipse.jface.text.DefaultInformationControl;
-import org.eclipse.jface.text.IInformationControl;
-import org.eclipse.jface.text.IInformationControlCreator;
-import org.eclipse.jface.text.IInformationControlExtension;
-import org.eclipse.jface.text.IInformationControlExtension2;
-import org.eclipse.jface.text.IRegion;
-import org.eclipse.jface.text.IViewportListener;
-import org.eclipse.jface.text.Position;
-import org.eclipse.jface.text.Region;
-import org.eclipse.jface.text.TextViewer;
-import org.eclipse.jface.text.source.Annotation;
-import org.eclipse.jface.text.source.IAnnotationAccess;
-import org.eclipse.jface.text.source.IAnnotationAccessExtension;
-import org.eclipse.jface.text.source.IVerticalRulerListener;
-import org.eclipse.jface.text.source.IAnnotationModel;
-import org.eclipse.jface.text.source.ISourceViewer;
-import org.eclipse.jface.text.source.IVerticalRulerInfo;
-import org.eclipse.jface.text.source.VerticalRulerEvent;
-
-
-/**
- * A control that can display a number of annotations. The control can decide how it layouts the
- * annotations to present them to the user.
- *
- * <p>Each annotation can have its custom context menu and hover.</p>
- *
- * @since 3.0
- */
-public class AnnotationExpansionControl implements IInformationControl, IInformationControlExtension, IInformationControlExtension2 {
-
-
- public interface ICallback {
- void run(IInformationControlExtension2 control);
- }
-
- /**
- * Input used by the control to display the annotations.
- * TODO move to top-level class
- * TODO encapsulate fields
- *
- * @since 3.0
- */
- public static class AnnotationHoverInput {
- public Annotation[] fAnnotations;
- public ISourceViewer fViewer;
- public IVerticalRulerInfo fRulerInfo;
- public IVerticalRulerListener fAnnotationListener;
- public IDoubleClickListener fDoubleClickListener;
- public ICallback redoAction;
- public IAnnotationModel model;
- }
-
- private final class Item {
- Annotation fAnnotation;
- Canvas canvas;
- StyleRange[] oldStyles;
-
- public void selected() {
- Display disp= fShell.getDisplay();
- canvas.setCursor(fHandCursor);
- // TODO: shade - for now: set grey background
- canvas.setBackground(getSelectionColor(disp));
-
- // highlight the viewer background at its position
- oldStyles= setViewerBackground(fAnnotation);
-
- // set the selection
- fSelection= this;
-
- if (fHoverManager != null)
- fHoverManager.showInformation();
-
- if (fInput.fAnnotationListener != null) {
- VerticalRulerEvent event= new VerticalRulerEvent(fAnnotation);
- fInput.fAnnotationListener.annotationSelected(event);
- }
-
- }
-
- public void defaultSelected() {
- if (fInput.fAnnotationListener != null) {
- VerticalRulerEvent event= new VerticalRulerEvent(fAnnotation);
- fInput.fAnnotationListener.annotationDefaultSelected(event);
- }
-
- dispose();
- }
-
- public void showContextMenu(Menu menu) {
- if (fInput.fAnnotationListener != null) {
- VerticalRulerEvent event= new VerticalRulerEvent(fAnnotation);
- fInput.fAnnotationListener.annotationContextMenuAboutToShow(event, menu);
- }
- }
-
- public void deselect() {
- // hide the popup
-// fHoverManager.disposeInformationControl();
-
- // deselect
- fSelection= null;
-
- resetViewerBackground(oldStyles);
- oldStyles= null;
-
- Display disp= fShell.getDisplay();
- canvas.setCursor(null);
- // TODO: remove shading - for now: set standard background
- canvas.setBackground(disp.getSystemColor(SWT.COLOR_INFO_BACKGROUND));
-
- }
-
- }
-
- /**
- * Disposes of an item
- */
- private final class MyDisposeListener implements DisposeListener {
- /*
- * @see org.eclipse.swt.events.DisposeListener#widgetDisposed(org.eclipse.swt.events.DisposeEvent)
- */
- public void widgetDisposed(DisposeEvent e) {
- Item item= (Item) ((Widget) e.getSource()).getData();
- item.deselect();
- item.canvas= null;
- item.fAnnotation= null;
- item.oldStyles= null;
-
- ((Widget) e.getSource()).setData(null);
- }
- }
-
- /**
- * Listener on context menu invocation on the items
- */
- private final class MyMenuDetectListener implements Listener {
- /*
- * @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event)
- */
- public void handleEvent(Event event) {
- if (event.type == SWT.MenuDetect) {
- // TODO: show per-item menu
- // for now: show ruler context menu
- if (fInput != null) {
- Control ruler= fInput.fRulerInfo.getControl();
- if (ruler != null && !ruler.isDisposed()) {
- Menu menu= ruler.getMenu();
- if (menu != null && !menu.isDisposed()) {
- menu.setLocation(event.x, event.y);
- menu.addMenuListener(new MenuListener() {
-
- public void menuHidden(MenuEvent e) {
- dispose();
- }
-
- public void menuShown(MenuEvent e) {
- }
-
- });
- menu.setVisible(true);
- }
- }
- }
- }
- }
- }
-
- /**
- * Listener on mouse events on the items.
- */
- private final class MyMouseListener extends MouseAdapter {
- /*
- * @see org.eclipse.swt.events.MouseListener#mouseDoubleClick(org.eclipse.swt.events.MouseEvent)
- */
- public void mouseDoubleClick(MouseEvent e) {
- Item item= (Item) ((Widget) e.getSource()).getData();
- if (e.button == 1 && item.fAnnotation == fInput.fAnnotations[0] && fInput.fDoubleClickListener != null) {
- fInput.fDoubleClickListener.doubleClick(null);
- // special code for JDT to renew the annotation set.
- if (fInput.redoAction != null)
- fInput.redoAction.run(AnnotationExpansionControl.this);
- }
-// dispose();
- // TODO special action to invoke double-click action on the vertical ruler
- // how about
-// Canvas can= (Canvas) e.getSource();
-// Annotation a= (Annotation) can.getData();
-// if (a != null) {
-// a.getDoubleClickAction().run();
-// }
- }
-
- /*
- * @see org.eclipse.swt.events.MouseListener#mouseUp(org.eclipse.swt.events.MouseEvent)
- */
- public void mouseUp(MouseEvent e) {
- Item item= (Item) ((Widget) e.getSource()).getData();
- // TODO for now, to make double click work: disable single click on the first item
- // disable later when the annotationlistener selectively handles input
- if (item != null && e.button == 1) // && item.fAnnotation != fInput.fAnnotations[0])
- item.defaultSelected();
- }
-
- /*
- * @see org.eclipse.swt.events.MouseAdapter#mouseDown(org.eclipse.swt.events.MouseEvent)
- */
- public void mouseDown(MouseEvent e) {
- // TODO Auto-generated method stub
- super.mouseDown(e);
- }
- }
-
- /**
- * Listener on mouse track events on the items.
- */
- private final class MyMouseTrackListener implements MouseTrackListener {
- /*
- * @see org.eclipse.swt.events.MouseTrackListener#mouseEnter(org.eclipse.swt.events.MouseEvent)
- */
- public void mouseEnter(MouseEvent e) {
- Item item= (Item) ((Widget) e.getSource()).getData();
- if (item != null)
- item.selected();
- }
-
- /*
- * @see org.eclipse.swt.events.MouseTrackListener#mouseExit(org.eclipse.swt.events.MouseEvent)
- */
- public void mouseExit(MouseEvent e) {
-
- Item item= (Item) ((Widget) e.getSource()).getData();
- if (item != null)
- item.deselect();
-
- // if the event lies outside the entire popup, dispose
- org.eclipse.swt.graphics.Region region= fShell.getRegion();
- Canvas can= (Canvas) e.getSource();
- Point p= can.toDisplay(e.x, e.y);
- if (region == null) {
- Rectangle bounds= fShell.getBounds();
-// p= fShell.toControl(p);
- if (!bounds.contains(p))
- dispose();
- } else {
- p= fShell.toControl(p);
- if (!region.contains(p))
- dispose();
- }
-
-
- }
-
- /*
- * @see org.eclipse.swt.events.MouseTrackListener#mouseHover(org.eclipse.swt.events.MouseEvent)
- */
- public void mouseHover(MouseEvent e) {
- if (fHoverManager == null) {
- fHoverManager= new HoverManager();
- fHoverManager.takesFocusWhenVisible(false);
- fHoverManager.install(fComposite);
- fHoverManager.showInformation();
- }
- }
- }
-
- /**
- * Listener on paint events on the items. Paints the annotation image on the given <code>GC</code>.
- */
- private final class MyPaintListener implements PaintListener {
- /*
- * @see org.eclipse.swt.events.PaintListener#paintControl(org.eclipse.swt.events.PaintEvent)
- */
- public void paintControl(PaintEvent e) {
- Canvas can= (Canvas) e.getSource();
- Annotation a= ((Item) can.getData()).fAnnotation;
- if (a != null) {
- Rectangle rect= new Rectangle(fLayouter.getBorderWidth(), fLayouter.getBorderWidth(), fLayouter.getAnnotationSize(), fLayouter.getAnnotationSize());
- if (fAnnotationAccessExtension != null)
- fAnnotationAccessExtension.paint(a, e.gc, can, rect);
- }
- }
- }
-
- /**
- * Our own private hover manager used to shop per-item pop-ups.
- */
- private final class HoverManager extends AbstractInformationControlManager {
-
- /**
- *
- */
- public HoverManager() {
- super(new IInformationControlCreator() {
- public IInformationControl createInformationControl(Shell parent) {
- return new DefaultInformationControl(parent);
- }
- });
-
- setMargins(5, 10);
- setAnchor(ANCHOR_BOTTOM);
- setFallbackAnchors(new Anchor[] { ANCHOR_LEFT, ANCHOR_RIGHT} );
- }
-
- /*
- * @see org.eclipse.jface.text.AbstractInformationControlManager#computeInformation()
- */
- protected void computeInformation() {
- if (fSelection != null) {
- Rectangle subjectArea= fSelection.canvas.getBounds();
- Annotation annotation= fSelection.fAnnotation;
- String msg;
- if (annotation != null)
- msg= annotation.getText();
- else
- msg= null;
-
- setInformation(msg, subjectArea);
- }
- }
-
-
- }
-
- /** Model data. */
- protected AnnotationHoverInput fInput;
- /** The control's shell */
- private Shell fShell;
- /** The composite combining all the items. */
- protected Composite fComposite;
- /** The hand cursor. */
- private Cursor fHandCursor;
- /** The currently selected item, or <code>null</code> if none is selected. */
- private Item fSelection;
- /** The hover manager for the per-item hovers. */
- private HoverManager fHoverManager;
- /** The annotation access extension. */
- private IAnnotationAccessExtension fAnnotationAccessExtension;
-
-
- /* listener legion */
- private final MyPaintListener fPaintListener;
- private final MyMouseTrackListener fMouseTrackListener;
- private final MyMouseListener fMouseListener;
- private final MyMenuDetectListener fMenuDetectListener;
- private final DisposeListener fDisposeListener;
- private final IViewportListener fViewportListener;
-
- private LinearLayouter fLayouter;
-
- /**
- * Creates a new control.
- *
- * @param parent
- * @param shellStyle
- * @param access
- */
- public AnnotationExpansionControl(Shell parent, int shellStyle, IAnnotationAccess access) {
- fPaintListener= new MyPaintListener();
- fMouseTrackListener= new MyMouseTrackListener();
- fMouseListener= new MyMouseListener();
- fMenuDetectListener= new MyMenuDetectListener();
- fDisposeListener= new MyDisposeListener();
- fViewportListener= new IViewportListener() {
-
- public void viewportChanged(int verticalOffset) {
- dispose();
- }
-
- };
- fLayouter= new LinearLayouter();
-
- if (access instanceof IAnnotationAccessExtension)
- fAnnotationAccessExtension= (IAnnotationAccessExtension) access;
-
- fShell= new Shell(parent, shellStyle | SWT.NO_FOCUS | SWT.ON_TOP);
- Display display= fShell.getDisplay();
- fShell.setBackground(display.getSystemColor(SWT.COLOR_BLACK));
- fComposite= new Composite(fShell, SWT.NO_FOCUS | SWT.NO_REDRAW_RESIZE | SWT.NO_TRIM);
-// fComposite= new Composite(fShell, SWT.NO_FOCUS | SWT.NO_REDRAW_RESIZE | SWT.NO_TRIM | SWT.V_SCROLL);
-
- GridLayout layout= new GridLayout(1, true);
- layout.marginHeight= 0;
- layout.marginWidth= 0;
- fShell.setLayout(layout);
-
- GridData data= new GridData(GridData.FILL_BOTH);
- data.heightHint= fLayouter.getAnnotationSize() + 2 * fLayouter.getBorderWidth() + 4;
- fComposite.setLayoutData(data);
- fComposite.addMouseTrackListener(new MouseTrackAdapter() {
-
- public void mouseExit(MouseEvent e) {
- if (fComposite == null)
- return;
- Control[] children= fComposite.getChildren();
- for (int i= 0; i < children.length; i++) {
- if (children[i].getBounds().contains(e.x, e.y))
- return;
- }
-
- // if none of the children contains the event, we left the popup
- dispose();
- }
-
- });
-
-// fComposite.getVerticalBar().addListener(SWT.Selection, new Listener() {
-//
-// public void handleEvent(Event event) {
-// Rectangle bounds= fShell.getBounds();
-// int x= bounds.x - fLayouter.getAnnotationSize() - fLayouter.getBorderWidth();
-// int y= bounds.y;
-// fShell.setBounds(x, y, bounds.width, bounds.height);
-// }
-//
-// });
-
- fHandCursor= new Cursor(display, SWT.CURSOR_HAND);
- fShell.setCursor(fHandCursor);
- fComposite.setCursor(fHandCursor);
-
- setInfoSystemColor();
- }
-
- private void setInfoSystemColor() {
- Display display= fShell.getDisplay();
- setForegroundColor(display.getSystemColor(SWT.COLOR_INFO_FOREGROUND));
- setBackgroundColor(display.getSystemColor(SWT.COLOR_INFO_BACKGROUND));
- }
-
- /*
- * @see org.eclipse.jface.text.IInformationControl#setInformation(java.lang.String)
- */
- public void setInformation(String information) {
- setInput(null);
- }
-
-
- /*
- * @see org.eclipse.jface.text.IInformationControlExtension2#setInput(java.lang.Object)
- */
- public void setInput(Object input) {
- if (fInput != null && fInput.fViewer != null)
- fInput.fViewer.removeViewportListener(fViewportListener);
-
- if (input instanceof AnnotationHoverInput)
- fInput= (AnnotationHoverInput) input;
- else
- fInput= null;
-
- inputChanged(fInput, null);
- }
-
- protected void inputChanged(Object newInput, Object newSelection) {
- refresh();
- }
-
- protected void refresh() {
- adjustItemNumber();
-
- if (fInput == null)
- return;
-
- if (fInput.fAnnotations == null)
- return;
-
- if (fInput.fViewer != null)
- fInput.fViewer.addViewportListener(fViewportListener);
-
- fShell.setRegion(fLayouter.getShellRegion(fInput.fAnnotations.length));
-
- Layout layout= fLayouter.getLayout(fInput.fAnnotations.length);
- fComposite.setLayout(layout);
-
- Control[] children= fComposite.getChildren();
- for (int i= 0; i < fInput.fAnnotations.length; i++) {
- Canvas canvas= (Canvas) children[i];
- Item item= new Item();
- item.canvas= canvas;
- item.fAnnotation= fInput.fAnnotations[i];
- canvas.setData(item);
- canvas.redraw();
- }
-
- }
-
- protected void adjustItemNumber() {
- if (fComposite == null)
- return;
-
- Control[] children= fComposite.getChildren();
- int oldSize= children.length;
- int newSize= fInput == null ? 0 : fInput.fAnnotations.length;
-
- Display display= fShell.getDisplay();
-
- // add missing items
- for (int i= oldSize; i < newSize; i++) {
- Canvas canvas= new Canvas(fComposite, SWT.NONE);
- Object gridData= fLayouter.getLayoutData();
- canvas.setLayoutData(gridData);
- canvas.setBackground(display.getSystemColor(SWT.COLOR_INFO_BACKGROUND));
-
- canvas.addPaintListener(fPaintListener);
-
- canvas.addMouseTrackListener(fMouseTrackListener);
-
- canvas.addMouseListener(fMouseListener);
-
- canvas.addListener(SWT.MenuDetect, fMenuDetectListener);
-
- canvas.addDisposeListener(fDisposeListener);
- }
-
- // dispose of exceeding resources
- for (int i= oldSize; i > newSize; i--) {
- Item item= (Item) children[i - 1].getData();
- item.deselect();
- children[i - 1].dispose();
- }
-
- }
-
- /*
- * @see IInformationControl#setVisible(boolean)
- */
- public void setVisible(boolean visible) {
- fShell.setVisible(visible);
- }
-
- /*
- * @see IInformationControl#dispose()
- */
- public void dispose() {
- if (fShell != null) {
- if (!fShell.isDisposed())
- fShell.dispose();
- fShell= null;
- fComposite= null;
- if (fHandCursor != null)
- fHandCursor.dispose();
- fHandCursor= null;
- if (fHoverManager != null)
- fHoverManager.dispose();
- fHoverManager= null;
- fSelection= null;
- }
- }
-
- /*
- * @see org.eclipse.jface.text.IInformationControlExtension#hasContents()
- */
- public boolean hasContents() {
- return fInput.fAnnotations != null && fInput.fAnnotations.length > 0;
- }
-
- /*
- * @see org.eclipse.jface.text.IInformationControl#setSizeConstraints(int, int)
- */
- public void setSizeConstraints(int maxWidth, int maxHeight) {
- //fMaxWidth= maxWidth;
- //fMaxHeight= maxHeight;
- }
-
- /*
- * @see org.eclipse.jface.text.IInformationControl#computeSizeHint()
- */
- public Point computeSizeHint() {
- return fShell.computeSize(SWT.DEFAULT, SWT.DEFAULT);
- }
-
- /*
- * @see IInformationControl#setLocation(Point)
- */
- public void setLocation(Point location) {
- fShell.setLocation(location);
- }
-
- /*
- * @see IInformationControl#setSize(int, int)
- */
- public void setSize(int width, int height) {
- fShell.setSize(width, height);
- }
-
- /*
- * @see IInformationControl#addDisposeListener(DisposeListener)
- */
- public void addDisposeListener(DisposeListener listener) {
- fShell.addDisposeListener(listener);
- }
-
- /*
- * @see IInformationControl#removeDisposeListener(DisposeListener)
- */
- public void removeDisposeListener(DisposeListener listener) {
- fShell.removeDisposeListener(listener);
- }
-
- /*
- * @see IInformationControl#setForegroundColor(Color)
- */
- public void setForegroundColor(Color foreground) {
- fComposite.setForeground(foreground);
- }
-
- /*
- * @see IInformationControl#setBackgroundColor(Color)
- */
- public void setBackgroundColor(Color background) {
- fComposite.setBackground(background);
- }
-
- /*
- * @see IInformationControl#isFocusControl()
- */
- public boolean isFocusControl() {
- if (fComposite.isFocusControl())
- return true;
- else {
- Control[] children= fComposite.getChildren();
- for (int i= 0; i < children.length; i++) {
- if (children[i].isFocusControl())
- return true;
- }
- }
- return false;
- }
-
- /*
- * @see IInformationControl#setFocus()
- */
- public void setFocus() {
- fShell.forceFocus();
- }
-
- /*
- * @see IInformationControl#addFocusListener(FocusListener)
- */
- public void addFocusListener(FocusListener listener) {
- fShell.addFocusListener(listener);
- }
-
- /*
- * @see IInformationControl#removeFocusListener(FocusListener)
- */
- public void removeFocusListener(FocusListener listener) {
- fShell.removeFocusListener(listener);
- }
-
- private StyleRange[] setViewerBackground(Annotation annotation) {
- StyledText text= fInput.fViewer.getTextWidget();
- if (text == null || text.isDisposed())
- return null;
-
- Display disp= text.getDisplay();
-
- Position pos= fInput.model.getPosition(annotation);
- if (pos == null)
- return null;
-
- IRegion region= ((TextViewer)fInput.fViewer).modelRange2WidgetRange(new Region(pos.offset, pos.length));
-
- StyleRange[] ranges= text.getStyleRanges(region.getOffset(), region.getLength());
-
- List undoRanges= new ArrayList(ranges.length);
- for (int i= 0; i < ranges.length; i++) {
- undoRanges.add(ranges[i].clone());
- }
-
- int offset= region.getOffset();
- StyleRange current= undoRanges.size() > 0 ? (StyleRange) undoRanges.get(0) : null;
- int curStart= current != null ? current.start : region.getOffset() + region.getLength();
- int curEnd= current != null ? current.start + current.length : -1;
- int index= 0;
-
- // fill no-style regions
- while (curEnd < region.getOffset() + region.getLength()) {
- // add empty range
- if (curStart > offset) {
- StyleRange undoRange= new StyleRange(offset, curStart - offset, null, null);
- undoRanges.add(index, undoRange);
- index++;
- }
-
- // step
- index++;
- if (index < undoRanges.size()) {
- offset= curEnd;
- current= (StyleRange) undoRanges.get(index);
- curStart= current.start;
- curEnd= current.start + current.length;
- } else if (index == undoRanges.size()) {
- // last one
- offset= curEnd;
- current= null;
- curStart= region.getOffset() + region.getLength();
- curEnd= -1;
- } else
- curEnd= region.getOffset() + region.getLength();
- }
-
- // create modified styles (with background)
- List shadedRanges= new ArrayList(undoRanges.size());
- for (Iterator it= undoRanges.iterator(); it.hasNext(); ) {
- StyleRange range= (StyleRange) ((StyleRange) it.next()).clone();
- shadedRanges.add(range);
- range.background= getHighlightColor(disp);
- }
-
- // set the ranges one by one
- for (Iterator iter= shadedRanges.iterator(); iter.hasNext(); ) {
- text.setStyleRange((StyleRange) iter.next());
-
- }
-
- return (StyleRange[]) undoRanges.toArray(undoRanges.toArray(new StyleRange[0]));
- }
-
- private void resetViewerBackground(StyleRange[] oldRanges) {
-
- if (oldRanges == null)
- return;
-
- if (fInput == null)
- return;
-
- StyledText text= fInput.fViewer.getTextWidget();
- if (text == null || text.isDisposed())
- return;
-
- // set the ranges one by one
- for (int i= 0; i < oldRanges.length; i++) {
- text.setStyleRange(oldRanges[i]);
- }
- }
-
- private Color getHighlightColor(Display disp) {
- return disp.getSystemColor(SWT.COLOR_GRAY);
- }
-
- private Color getSelectionColor(Display disp) {
- return disp.getSystemColor(SWT.COLOR_GRAY);
- }
-
-}

Back to the top