/******************************************************************************* * Copyright (c) 2008 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package au.gov.ga.earthsci.jface.extras.information; import org.eclipse.jface.text.AbstractInformationControlManager; import org.eclipse.jface.text.IInformationControl; import org.eclipse.jface.text.IInformationControlExtension3; import org.eclipse.jface.text.ITextViewerExtension8; import org.eclipse.jface.text.ITextViewerExtension8.EnrichMode; import org.eclipse.swt.graphics.Rectangle; /** * An internal class that gives access to internal methods of {@link * AbstractInformationControlManager} and subclasses. * * @since 3.4 */ public abstract class InternalAccessor { /** * Returns the current information control, or <code>null</code> if none. * * @return the current information control, or <code>null</code> if none */ public abstract IInformationControl getCurrentInformationControl(); /** * Sets the information control replacer for this manager and disposes the * old one if set. * * @param replacer the information control replacer for this manager, or * <code>null</code> if no information control replacing should * take place */ public abstract void setInformationControlReplacer(InformationControlReplacer replacer); /** * Returns the current information control replacer or <code>null</code> if none has been installed. * * @return the current information control replacer or <code>null</code> if none has been installed */ public abstract InformationControlReplacer getInformationControlReplacer(); /** * Tests whether the given information control is replaceable. * * @param iControl information control or <code>null</code> if none * @return <code>true</code> if information control is replaceable, <code>false</code> otherwise */ public abstract boolean canReplace(IInformationControl iControl); /** * Tells whether this manager's information control is currently being replaced. * * @return <code>true</code> if a replace is in progress */ public abstract boolean isReplaceInProgress(); /** * Crops the given bounds such that they lie completely on the closest monitor. * * @param bounds shell bounds to crop */ public abstract void cropToClosestMonitor(Rectangle bounds); /** * Sets the hover enrich mode. Only applicable when an information * control replacer has been set with * {@link #setInformationControlReplacer(InformationControlReplacer)} . * * @param mode the enrich mode * @see ITextViewerExtension8#setHoverEnrichMode(org.eclipse.jface.text.ITextViewerExtension8.EnrichMode) */ public abstract void setHoverEnrichMode(EnrichMode mode); /** * Indicates whether the mouse cursor is allowed to leave the subject area without closing the hover. * * @return whether the mouse cursor is allowed to leave the subject area without closing the hover */ public abstract boolean getAllowMouseExit(); /** * Replaces this manager's information control as defined by * the information control replacer. * <strong>Must only be called when the information control is instanceof {@link IInformationControlExtension3}!</strong> * * @param takeFocus <code>true</code> iff the replacing information control should take focus */ public abstract void replaceInformationControl(boolean takeFocus); }