package com.vaadin.tests.layouts;

import com.vaadin.tests.components.TestBase;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.GridLayout;
import com.vaadin.ui.Label;
import com.vaadin.ui.TextField;

public class GridLayoutMoveComponent extends TestBase {

    @Override
    protected void setup() {
        final GridLayout grid = new GridLayout(2, 3);
        grid.setCaption("Fixed size grid");
        grid.setWidth("300px");
        grid.setHeight("100px");
        addComponent(grid);

        final Label l = new Label("100% label");
        final Button b = new Button("100px button");
        b.setWidth("100px");
        final TextField tf = new TextField("Undef textfield");

        // Adding component to grid
        grid.addComponent(l, 0, 0);
        grid.addComponent(b, 0, 1);
        grid.addComponent(tf, 0, 2);

        addComponent(new Button("Shift label right",
                new Button.ClickListener() {
                    @Override
                    public void buttonClick(ClickEvent event) {
                        // Moving component from 0,0 -> 1,0
                        grid.removeComponent(l);
                        grid.addComponent(l, 1, 0);
                    }
                }));

        addComponent(new Button("Shift button right",
                new Button.ClickListener() {
                    @Override
                    public void buttonClick(ClickEvent event) {
                        grid.removeComponent(b);
                        grid.addComponent(b, 1, 1);
                    }
                }));

        addComponent(new Button("Shift text field right",
                new Button.ClickListener() {
                    @Override
                    public void buttonClick(ClickEvent event) {
                        grid.removeComponent(tf);
                        grid.addComponent(tf, 1, 2);
                    }
                }));
    }

    @Override
    protected String getDescription() {
        return "Click the buttons below the GridLayout to move the components to the right. Should definitely work no matter what.";
    }

    @Override
    protected Integer getTicketNumber() {
        return 5525;
    }

}
