Java tutorial
/* * 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; } }