001: /*******************************************************************************
002: * Copyright (c) 2000, 2005 IBM Corporation and others.
003: * All rights reserved. This program and the accompanying materials
004: * are made available under the terms of the Eclipse Public License v1.0
005: * which accompanies this distribution, and is available at
006: * http://www.eclipse.org/legal/epl-v10.html
007: *
008: * Contributors:
009: * IBM Corporation - initial API and implementation
010: *******************************************************************************/package org.eclipse.ui.texteditor.link;
011:
012: import org.eclipse.jface.text.ITextViewer;
013: import org.eclipse.jface.text.link.LinkedModeModel;
014: import org.eclipse.jface.text.link.LinkedModeUI;
015: import org.eclipse.jface.text.link.LinkedPosition;
016:
017: import org.eclipse.ui.IEditorPart;
018: import org.eclipse.ui.IWorkbenchPage;
019: import org.eclipse.ui.IWorkbenchWindow;
020: import org.eclipse.ui.PlatformUI;
021:
022: /**
023: * A <code>LinkedModeUI</code> that takes care of updating the focus editor's
024: * navigation history.
025: *
026: * @since 3.0
027: */
028: public class EditorLinkedModeUI extends LinkedModeUI {
029:
030: /**
031: * Updates the editor navigation history upon linked focus changes.
032: *
033: * @since 3.0
034: */
035: private static class EditorHistoryUpdater implements
036: ILinkedModeUIFocusListener {
037:
038: /*
039: * @see org.eclipse.jface.text.link.LinkedModeUI.ILinkedModeUIFocusListener#linkedFocusLost(org.eclipse.jface.text.link.LinkedPosition, org.eclipse.jface.text.link.LinkedModeUI.LinkedModeUITarget)
040: */
041: public void linkingFocusLost(LinkedPosition position,
042: LinkedModeUITarget target) {
043: // mark navigation history
044: IWorkbenchWindow win = PlatformUI.getWorkbench()
045: .getActiveWorkbenchWindow();
046: if (win != null) {
047: IWorkbenchPage page = win.getActivePage();
048: if (page != null) {
049: IEditorPart part = page.getActiveEditor();
050: page.getNavigationHistory().markLocation(part);
051: }
052: }
053: }
054:
055: /*
056: * @see org.eclipse.jface.text.link.LinkedModeUI.ILinkedModeUIFocusListener#linkedFocusGained(org.eclipse.jface.text.link.LinkedPosition, org.eclipse.jface.text.link.LinkedModeUI.LinkedModeUITarget)
057: */
058: public void linkingFocusGained(LinkedPosition position,
059: LinkedModeUITarget target) {
060: // does nothing
061: }
062: }
063:
064: /**
065: * @param model
066: * @param viewer
067: */
068: public EditorLinkedModeUI(LinkedModeModel model, ITextViewer viewer) {
069: super (model, viewer);
070: setPositionListener(new EditorHistoryUpdater());
071: }
072:
073: /**
074: * @param model
075: * @param viewers
076: */
077: public EditorLinkedModeUI(LinkedModeModel model,
078: ITextViewer[] viewers) {
079: super (model, viewers);
080: setPositionListener(new EditorHistoryUpdater());
081: }
082:
083: /**
084: * @param model
085: * @param target
086: */
087: public EditorLinkedModeUI(LinkedModeModel model,
088: LinkedModeUITarget target) {
089: super (model, target);
090: setPositionListener(new EditorHistoryUpdater());
091: }
092:
093: /**
094: * @param model
095: * @param targets
096: */
097: public EditorLinkedModeUI(LinkedModeModel model,
098: LinkedModeUITarget[] targets) {
099: super (model, targets);
100: setPositionListener(new EditorHistoryUpdater());
101: }
102: }
|