/******************************************************************************* * Copyright (c) 2015 Pivotal, Inc. * 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: * Pivotal, Inc. - initial API and implementation *******************************************************************************/ package org.springframework.ide.eclipse.boot.dash.views.sections; import org.eclipse.jface.fieldassist.IControlContentAdapter; import org.eclipse.jface.fieldassist.IControlContentAdapter2; import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.widgets.Control; /** * Content Adapter for StyledText widget * * @author Alex Boyko * */ public class StyledTextContentAdapter implements IControlContentAdapter, IControlContentAdapter2 { @Override public String getControlContents(Control control) { StyledText styledText = (StyledText) control; return styledText.getText(); } @Override public void setControlContents(Control control, String text, int cursorPosition) { StyledText styledText = (StyledText) control; styledText.setText(text); styledText.setSelection(cursorPosition, cursorPosition); } @Override public void insertControlContents(Control control, String text, int cursorPosition) { StyledText styledText = (StyledText) control; Point selection = styledText.getSelection(); styledText.insert(text); // Insert will leave the cursor at the end of the inserted text. If this // is not what we wanted, reset the selection. if (cursorPosition < text.length()) { styledText.setSelection(selection.x + cursorPosition, selection.x + cursorPosition); } } @Override public int getCursorPosition(Control control) { StyledText styledText = (StyledText) control; return styledText.getCaretOffset(); } @Override public Rectangle getInsertionBounds(Control control) { StyledText styledText = (StyledText) control; return styledText.getCaret().getBounds(); } @Override public void setCursorPosition(Control control, int position) { StyledText styledText = (StyledText) control; styledText.setSelection(new Point(position, position)); } @Override public Point getSelection(Control control) { StyledText styledText = (StyledText) control; return styledText.getSelection(); } @Override public void setSelection(Control control, Point range) { StyledText styledText = (StyledText) control; styledText.setSelection(range); } }