package com.vaadin.tests.components.textfield;
import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractReindeerTestUI;
import com.vaadin.ui.AbstractTextField;
import com.vaadin.ui.Button;
import com.vaadin.ui.CheckBox;
import com.vaadin.ui.FormLayout;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Panel;
import com.vaadin.ui.TextField;
import com.vaadin.v7.ui.TextArea;
public class SelectionAndCursorPosition extends AbstractReindeerTestUI {
static final String DEFAULT_TEXT = "So we have some text to select";
static final String TEXTFIELD_ID = "tf";
static final String TEXTAREA_ID = "ta";
static final String SELECT_ALL_ID = "selectAll";
static final String RANGE_START_ID = "rS";
static final String RANGE_LENGTH_ID = "rL";
static final String CURSOR_POS_ID = "cp";
static final String RANGE_SET_BUTTON_ID = "setSelection";
static final String CURSOR_POS_SET_ID = "cps";
TextField textField = createTextField();
TextArea textArea = createTextArea();
AbstractTextField activeComponent = textField;
@Override
protected void setup(VaadinRequest request) {
FormLayout fl = new FormLayout();
Panel panel = new Panel(fl);
panel.setCaption("Hackers panel");
CheckBox ml = new CheckBox("Multiline");
// FIXME re-add this when TextArea has been replaced with vaadin8
// version
// ml.addListener(new Property.ValueChangeListener() {
// @Override
// public void valueChange(ValueChangeEvent event) {
// if (textField.getUI() == null
// || textField.getUI().getSession() == null) {
// replaceComponent(textArea, textField);
// activeComponent = textField;
// } else {
// replaceComponent(textField, textArea);
// activeComponent = textArea;
// }
// }
// });
fl.addComponent(ml);
Button selectAll = new Button("Select all ( selectAll() )");
selectAll.setId(SELECT_ALL_ID);
selectAll.addClickListener(event -> activeComponent.selectAll());
fl.addComponent(selectAll);
HorizontalLayout selectRange = new HorizontalLayout();
selectRange.setCaption(
"Select range of text ( setSelectionRange(int start, int lengt) )");
final TextField start = new TextField("From:");
start.setId(RANGE_START_ID);
final TextField length = new TextField("Selection length:");
length.setId(RANGE_LENGTH_ID);
Button select = new Button("select");
select.setId(RANGE_SET_BUTTON_ID);
select.addClickListener(event -> {
int startPos = Integer.parseInt(start.getValue());
int lenght = Integer.parseInt(length.getValue());
activeComponent.setSelection(startPos, lenght);
});
selectRange.addComponent(start);
selectRange.addComponent(length);
selectRange.addComponent(select);
fl.addComponent(selectRange);
HorizontalLayout setCursorPosition = new HorizontalLayout();
final TextField pos = new TextField("Position:");
pos.setId(CURSOR_POS_ID);
Button setCursorButton = new Button("set");
setCursorButton.setId(CURSOR_POS_SET_ID);
setCursorButton.addClickListener(event -> {
int startPos = Integer.parseInt(pos.getValue());
activeComponent.setCursorPosition(startPos);
});
setCursorPosition.addComponent(pos);
setCursorPosition.addComponent(setCursorButton);
setCursorPosition.setCaption(
"Set cursor position ( setCursorPosition(int pos) )");
fl.addComponent(setCursorPosition);
getLayout().addComponent(textField);
getLayout().addComponent(panel);
}
private static TextField createTextField() {
TextField textField = new TextField();
textField.setId(TEXTFIELD_ID);
textField.setCaption("Text field");
textField.setValue(DEFAULT_TEXT);
textField.setWidth("400px");
return textField;
}
private static TextArea createTextArea() {
TextArea textArea = new TextArea();
textArea.setId(TEXTAREA_ID);
textArea.setCaption("Text area");
textArea.setValue(DEFAULT_TEXT);
textArea.setWidth("400px");
textArea.setHeight("50px");
return textArea;
}
@Override
protected String getTestDescription() {
return "Tests that setSelectionRange and setCursorPosition works for a TextField";
}
@Override
protected Integer getTicketNumber() {
return 2058;
}
}