/* * Copyright 2016 Nokia Solutions and Networks * Licensed under the Apache License, Version 2.0, * see license.txt file for details. */ package org.robotframework.red.jface.assist; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Control; public class RedComboContentAdapter implements RedControlContentAdapter { @Override public String getControlContents(final Control control) { return ((Combo) control).getText(); } @Override public void setControlContents(final Control control, final RedContentProposal proposal) { final String content = proposal.getContent(); final int cursorPosition = proposal.getCursorPosition(); ((Combo) control).setText(content); ((Combo) control).setSelection(new Point(cursorPosition, cursorPosition)); } @Override public void insertControlContents(final Control control, final RedContentProposal proposal) { proposal.getModificationStrategy().insert((Combo) control, proposal); } @Override public int getCursorPosition(final Control control) { return ((Combo) control).getCaretPosition(); } @Override public Rectangle getInsertionBounds(final Control control) { final Combo combo = (Combo) control; final Point caretOrigin = combo.getCaretLocation(); // We fudge the y pixels due to problems with getCaretLocation // See https://bugs.eclipse.org/bugs/show_bug.cgi?id=52520 return new Rectangle(caretOrigin.x + combo.getClientArea().x, caretOrigin.y + combo.getClientArea().y + 3, 1, combo.getTextHeight()); } @Override public void setCursorPosition(final Control control, final int position) { ((Combo) control).setSelection(new Point(position, position)); } @Override public Point getSelection(final Control control) { return ((Combo) control).getSelection(); } @Override public void setSelection(final Control control, final Point range) { ((Combo) control).setSelection(range); } }