/******************************************************************************* * Copyright (c) 2005, 2015 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 org.eclipse.jface.fieldassist; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.widgets.Control; /** * This interface is used to set and retrieve text content from an arbitrary * control. Clients are expected to implement this interface when defining a * {@link ContentProposalAdapter}, in order to specify how to retrieve and set * the contents of the control being adapted. * * @since 3.2 */ public interface IControlContentAdapter { /** * Set the contents of the specified control to the specified text. Must not * be <code>null</code>. * * @param control * the control whose contents are to be set (replaced). * @param contents * the String specifying the new control content. * @param cursorPosition * the zero-based index representing the desired cursor position * in the control's contents after the contents are set. */ public void setControlContents(Control control, String contents, int cursorPosition); /** * Insert the specified contents into the control's current contents. Must * not be <code>null</code>. * * @param control * the control whose contents are to be altered. * @param contents * the String to be inserted into the control contents. * @param cursorPosition * the zero-based index representing the desired cursor position * within the inserted contents after the insertion is made. */ public void insertControlContents(Control control, String contents, int cursorPosition); /** * Get the text contents of the control. * * @param control * the control whose contents are to be retrieved. * @return the String contents of the control. */ public String getControlContents(Control control); /** * Get the current cursor position in the control. The position is specified * as a zero-based index into the string. Valid ranges are from 0 to N, * where N is the size of the contents string. A value of N indicates that * the cursor is at the end of the contents. * * @param control * the control whose position is to be retrieved. * @return the zero-based index representing the cursor position in the * control's contents. */ public int getCursorPosition(Control control); /** * Get the bounds (in pixels) of the insertion point for the control * content. This is a rectangle, in coordinates relative to the control, * where the insertion point is displayed. If the implementer does not have * an insertion point, or cannot determine the location of the insertion * point, it is appropriate to return the bounds of the entire control. This * value may be used to position a content proposal popup. * * @param control * the control whose offset is to be retrieved. * @return the pixel width representing the distance between the edge of the * control and the insertion point. */ public Rectangle getInsertionBounds(Control control); /** * Set the current cursor position in the control. The position is specified * as a zero-based index into the string. Valid ranges are from 0 to N, * where N is the size of the contents string. A value of N indicates that * the cursor is at the end of the contents. * * @param control * the control whose cursor position is to be set. * @param index * the zero-based index representing the cursor position in the * control's contents. */ public void setCursorPosition(Control control, int index); }