view org.eclipse.jface.text/src/org/eclipse/jface/contentassist/IContentAssistSubjectControl.d @ 12:bc29606a740c

Added dwt-addons in original directory structure of eclipse.org
author Frank Benoit <benoit@tionex.de>
date Sat, 14 Mar 2009 18:23:29 +0100
parents
children
line wrap: on
line source

/*******************************************************************************
 * Copyright (c) 2000, 2005 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
 * Port to the D programming language:
 *     Frank Benoit <benoit@tionex.de>
 *******************************************************************************/
module org.eclipse.jface.contentassist.IContentAssistSubjectControl;

import java.lang.all;
import java.util.Set;



import org.eclipse.swt.custom.VerifyKeyListener;
import org.eclipse.swt.events.KeyListener;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Control;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IEventConsumer;


/**
 * A content assist subject control can request assistance provided by a
 * {@linkplain org.eclipse.jface.contentassist.ISubjectControlContentAssistant subject control content assistant}.
 *
 * @since 3.0
 */
public interface IContentAssistSubjectControl {

    /**
     * Returns the control of this content assist subject control.
     *
     * @return the control of this content assist subject control
     */
    Control getControl();

    /**
     * Returns the line height.
     *
     * @return line height in pixel
     * @exception org.eclipse.swt.SWTException
     *               <ul>
     *                  <li>{@link org.eclipse.swt.SWT#ERROR_WIDGET_DISPOSED} - if the receiver has been
     *                      disposed</li>
     *                  <li>{@link org.eclipse.swt.SWT#ERROR_THREAD_INVALID_ACCESS} - if not called from the
     *                       thread that created the receiver</li>
     *               </ul>
     */
    int getLineHeight();

    /**
     * Returns the caret position relative to the start of the text in widget
     * coordinates.
     *
     * @return the caret position relative to the start of the text in widget
     *         coordinates
     * @exception org.eclipse.swt.SWTException
     *               <ul>
     *                  <li>{@link org.eclipse.swt.SWT#ERROR_WIDGET_DISPOSED} - if the receiver has been
     *                      disposed</li>
     *                  <li>{@link org.eclipse.swt.SWT#ERROR_THREAD_INVALID_ACCESS} - if not called from the
     *                      thread that created the receiver</li>
     *               </ul>
     */
    int getCaretOffset();

    /**
     * Returns the x, y location of the upper left corner of the character
     * bounding box at the specified offset in the text. The point is relative
     * to the upper left corner of the widget client area.
     *
     * @param offset widget offset relative to the start of the content 0
     *           <= offset <= getCharCount()
     * @return x, y location of the upper left corner of the character bounding
     *         box at the specified offset in the text
     * @exception org.eclipse.swt.SWTException
     *          <ul>
     *              <li>{@link org.eclipse.swt.SWT#ERROR_WIDGET_DISPOSED} - if the receiver has been disposed</li>
     *              <li>{@link org.eclipse.swt.SWT#ERROR_THREAD_INVALID_ACCESS} - if not called from the thread that created the receiver</li>
     *          </ul>
     * @exception IllegalArgumentException when the offset is outside the valid range
     */
    Point getLocationAtOffset(int offset);

    /**
     * Returns the line delimiter used for entering new lines by key down or
     * paste operation.
     *
     * @return line delimiter used for entering new lines by key down or paste
     *         operation
     * @exception org.eclipse.swt.SWTException
     *          <ul>
     *              <li>{@link org.eclipse.swt.SWT#ERROR_WIDGET_DISPOSED} - if the receiver has been disposed</li>
     *              <li>{@link org.eclipse.swt.SWT#ERROR_THREAD_INVALID_ACCESS} - if not called from the thread that created the receiver</li>
     *          </ul>
     */
    String getLineDelimiter();

    /**
     * Returns the selected range in the subject's widget.
     *
     * @return start and length of the selection, x is the offset of the
     * @exception org.eclipse.swt.SWTException
     *          <ul>
     *              <li>{@link org.eclipse.swt.SWT#ERROR_WIDGET_DISPOSED} - if the receiver has been disposed</li>
     *              <li>{@link org.eclipse.swt.SWT#ERROR_THREAD_INVALID_ACCESS} - if not called from the thread that created the receiver</li>
     *          </ul>
     */
    Point getWidgetSelectionRange();

    /**
     * Returns the selected range.
     *
     * @return start and length of the selection, x is the offset and y the
     *         length based on the subject's model (e.g. document)
     */
    Point getSelectedRange();

    /**
     * Sets the selected range. Offset and length based on the subject's
     * model (e.g. document).
     *
     * @param offset the offset of the selection based on the subject's model e.g. document
     * @param length the length of the selection based on the subject's model e.g. document
     */
    void setSelectedRange(int offset, int length);

    /**
     * Reveals the given region. Offset and length based on the subject's
     * model (e.g. document).
     *
     * @param offset the offset of the selection based on the subject's model e.g. document
     * @param length the length of the selection based on the subject's model e.g. document
     */
    void revealRange(int offset, int length);

    /**
     * Returns this content assist subject control's document.
     *
     * @return the viewer's input document
     */
    IDocument getDocument();

    /**
     * If supported, appends a verify key listener to the viewer's list of verify key
     * listeners. If the listener is already registered with the viewer this
     * call moves the listener to the end of the list.
     * <p>
     * Note: This content assist subject control may not support appending a verify
     * listener, in which case <code>false</code> will be returned. If this
     * content assist subject control only supports <code>addVerifyKeyListener</code>
     * then this method can be used but <code>prependVerifyKeyListener</code>
     * must return <code>false</code>.
     * </p>
     *
     * @param verifyKeyListener the listener to be added
     * @return <code>true</code> if the listener was added
     */
    bool appendVerifyKeyListener(VerifyKeyListener verifyKeyListener);

    /**
     * If supported, inserts the verify key listener at the beginning of this content assist
     * subject's list of verify key listeners. If the listener is already
     * registered with the viewer this call moves the listener to the beginning
     * of the list.
     * <p>
     * Note: This content assist subject control may not support prepending a verify
     * listener, in which case <code>false</code> will be returned. However,
     * {@link #appendVerifyKeyListener(VerifyKeyListener)} might work.
     * </p>
     *
     * @param verifyKeyListener the listener to be inserted
     * @return <code>true</code> if the listener was added
     */
    bool prependVerifyKeyListener(VerifyKeyListener verifyKeyListener);

    /**
     * Removes the verify key listener from this content assist subject control's
     * list of verify key listeners. If the listener is not registered, this
     * call has no effect.
     *
     * @param verifyKeyListener the listener to be removed
     */
    void removeVerifyKeyListener(VerifyKeyListener verifyKeyListener);

    /**
     * Tests whether a verify key listener can be added either using <code>prependVerifyKeyListener</code>
     * or {@link #appendVerifyKeyListener(VerifyKeyListener)}.
     *
     * @return <code>true</code> if adding verify key listeners is supported
     */
    bool supportsVerifyKeyListener();

    /**
     * Adds the listener to the collection of listeners who will be notified
     * when keys are pressed and released on the system keyboard, by sending it
     * one of the messages defined in the {@link KeyListener} interface.
     *
     * @param keyListener the listener which should be notified
     * @exception IllegalArgumentException if the listener is <code>null</code>
     * @exception org.eclipse.swt.SWTException
     *          <ul>
     *              <li>{@link org.eclipse.swt.SWT#ERROR_WIDGET_DISPOSED} - if the receiver has been disposed</li>
     *              <li>{@link org.eclipse.swt.SWT#ERROR_THREAD_INVALID_ACCESS} - if not called from the thread that created the receiver</li>
     *          </ul>
     *
     * @see KeyListener
     * @see #removeKeyListener(KeyListener)
     */
    void addKeyListener(KeyListener keyListener);

    /**
     * Removes the listener from the collection of listeners who will be
     * notified when keys are pressed and released on the system keyboard.
     *
     * @param keyListener the listener which should be notified
     * @exception IllegalArgumentException if the listener is null</li>
     * @exception org.eclipse.swt.SWTException
     *          <ul>
     *              <li>{@link org.eclipse.swt.SWT#ERROR_WIDGET_DISPOSED} - if the receiver has been disposed</li>
     *              <li>{@link org.eclipse.swt.SWT#ERROR_THREAD_INVALID_ACCESS} - if not called from the thread that created the receiver</li>
     *          </ul>
     * @see KeyListener
     * @see #addKeyListener(KeyListener)
     */
    void removeKeyListener(KeyListener keyListener);

    /**
     * If supported, registers an event consumer with this content assist
     * subject.
     *
     * @param eventConsumer the content assist subject control's event consumer. <code>null</code>
     *           is a valid argument.
     */
    void setEventConsumer(IEventConsumer eventConsumer);

    /**
     * Removes the specified selection listener.
     * <p>
     *
     * @param selectionListener the listener
     * @exception org.eclipse.swt.SWTException <ul>
     *          <ul>
     *              <li>{@link org.eclipse.swt.SWT#ERROR_WIDGET_DISPOSED} - if the receiver has been disposed</li>
     *              <li>{@link org.eclipse.swt.SWT#ERROR_THREAD_INVALID_ACCESS} - if not called from the thread that created the receiver</li>
     *          </ul>
     * @exception IllegalArgumentException if listener is <code>null</code>
     */
    void removeSelectionListener(SelectionListener selectionListener);

    /**
     * If supported, adds a selection listener. A Selection event is sent by the widget when the
     * selection has changed.
     * <p>
     *
     * @param selectionListener the listener
     * @return <code>true</code> if adding a selection listener is supported
     *          <ul>
     *              <li>{@link org.eclipse.swt.SWT#ERROR_WIDGET_DISPOSED} - if the receiver has been disposed</li>
     *              <li>{@link org.eclipse.swt.SWT#ERROR_THREAD_INVALID_ACCESS} - if not called from the thread that created the receiver</li>
     *          </ul>
     * @exception IllegalArgumentException if listener is <code>null</code>
     */
    bool addSelectionListener(SelectionListener selectionListener);
}