/*
 * Copyright 2000-2016 Vaadin Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */

package com.vaadin.tests.components.gridlayout;

import com.vaadin.server.UserError;
import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractReindeerTestUI;
import com.vaadin.tests.components.TestDateField;
import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.GridLayout;
import com.vaadin.ui.Panel;

public class LayoutAfterHidingError extends AbstractReindeerTestUI {

    @Override
    protected void setup(VaadinRequest request) {
        final Panel panel = new Panel();
        panel.setWidth("300px");
        addComponent(panel);

        GridLayout gl = new GridLayout();
        gl.setWidth("100%");
        panel.setContent(gl);

        final AbstractDateField<?, ?> df = new TestDateField();
        df.setWidth("100%");
        gl.addComponent(df);

        Button err = new Button("Set error");
        err.addClickListener(new ClickListener() {

            @Override
            public void buttonClick(ClickEvent event) {
                df.setComponentError(new UserError("foo"));
            }
        });
        gl.addComponent(err);

        err = new Button("Clear error");
        err.addClickListener(new ClickListener() {

            @Override
            public void buttonClick(ClickEvent event) {
                df.setComponentError(null);
            }
        });
        gl.addComponent(err);
    }

    @Override
    protected String getTestDescription() {
        return "Setting an error icon for a component in GridLayout and then removing it should properly re-size the component";
    }

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

}
