com.hybridbpm.ui.component.TableButton.java Source code

Java tutorial

Introduction

Here is the source code for com.hybridbpm.ui.component.TableButton.java

Source

/*
 * Copyright (c) 2011-2015 Marat Gubaidullin. 
 *
 * This file is part of HYBRIDBPM.
 *
 * 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.hybridbpm.ui.component;

import com.vaadin.server.FontAwesome;
import com.vaadin.server.Resource;
import com.vaadin.ui.Button;
import com.vaadin.ui.themes.ValoTheme;

/**
 *
 * @author Marat Gubaidullin
 * @param <T>
 */
public final class TableButton<T> extends Button {

    private final TYPE type;

    public enum TYPE {

        PERMISSION(FontAwesome.SHIELD, "Permissions"), EDIT(FontAwesome.EDIT, "Edit"), DELETE(
                FontAwesome.TIMES_CIRCLE,
                "Delete"), SYNC(FontAwesome.EXCHANGE, "Sync"), DOWNLOAD(FontAwesome.DOWNLOAD, "Download");

        private Resource icon;
        private String description;

        private TYPE(Resource icon, String description) {
            this.icon = icon;
            this.description = description;
        }
    };

    private final T customData;

    public TableButton(TableButton.TYPE type, T data, ClickListener clickListener) {
        this.type = type;
        this.customData = data;
        addStyleName(ValoTheme.BUTTON_LINK);
        setIcon(type.icon);
        setDescription(type.description);
        if (clickListener != null) {
            addClickListener(clickListener);
        }
    }

    public static <T> TableButton createEdit(T data, ClickListener clickListener) {
        return new TableButton(TYPE.EDIT, data, clickListener);
    }

    public static <T> TableButton createDelete(T data, ClickListener clickListener) {
        return new TableButton(TYPE.DELETE, data, clickListener);
    }

    public static <T> TableButton createSync(T data, ClickListener clickListener) {
        return new TableButton(TYPE.SYNC, data, clickListener);
    }

    public static <T> TableButton createPermissions(T data, ClickListener clickListener) {
        return new TableButton(TYPE.PERMISSION, data, clickListener);
    }

    public static <T> TableButton createDownload(T data, ClickListener clickListener) {
        return new TableButton(TYPE.DOWNLOAD, data, clickListener);
    }

    public T getCustomData() {
        return customData;
    }

    public TYPE getType() {
        return type;
    }

}