Java tutorial
/*! * This program is free software; you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software * Foundation. * * You should have received a copy of the GNU Lesser General Public License along with this * program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html * or from the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Lesser General Public License for more details. * * Copyright (c) 2002-2013 Pentaho Corporation.. All rights reserved. */ package org.pentaho.gwt.widgets.client.utils; import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.HasHorizontalAlignment; import com.google.gwt.user.client.ui.HasVerticalAlignment; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Image; import com.google.gwt.user.client.ui.Panel; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.VerticalPanel; public final class ButtonHelper { public static enum ButtonLabelType { TEXT_ON_TOP, TEXT_ON_RIGHT, TEXT_ON_BOTTOM, TEXT_ON_LEFT, TEXT_ONLY, NO_TEXT } public static String createButtonLabel(Image image, String text, ButtonLabelType type) { return createButtonLabel(image, text, type, null); } public static Panel createButtonElement(Image image, String text, ButtonLabelType type) { return createButtonElement(image, text, type, null); } public static String createButtonLabel(Image img, String text, ButtonLabelType type, String cssName) { final HTML html = new HTML(text, false); if (cssName != null) { html.addStyleDependentName(cssName); img.addStyleDependentName(cssName); } if (type == ButtonLabelType.TEXT_ONLY) { return text; } else if (type == ButtonLabelType.TEXT_ON_LEFT || type == ButtonLabelType.TEXT_ON_RIGHT) { HorizontalPanel hpanel = new HorizontalPanel(); if (cssName != null) { hpanel.addStyleName(cssName); } if (type == ButtonLabelType.TEXT_ON_LEFT) { hpanel.add(html); hpanel.add(new HTML(" ")); //$NON-NLS-1$ hpanel.add(img); } else { hpanel.add(img); hpanel.add(new HTML(" ")); //$NON-NLS-1$ hpanel.add(html); } hpanel.setCellVerticalAlignment(html, HasVerticalAlignment.ALIGN_MIDDLE); hpanel.setCellVerticalAlignment(img, HasVerticalAlignment.ALIGN_MIDDLE); return hpanel.getElement().getString(); } else { VerticalPanel vpanel = new VerticalPanel(); if (type == ButtonLabelType.TEXT_ON_TOP) { vpanel.add(html); vpanel.add(img); } else { vpanel.add(img); vpanel.add(html); } vpanel.setCellHorizontalAlignment(html, HasHorizontalAlignment.ALIGN_CENTER); vpanel.setCellHorizontalAlignment(img, HasHorizontalAlignment.ALIGN_CENTER); return vpanel.getElement().getString(); } } public static Panel createButtonElement(Image img, String text, ButtonLabelType type, String cssName) { final HTML html = new HTML(text, false); if (cssName != null) { html.addStyleDependentName(cssName); img.addStyleDependentName(cssName); } if (type == ButtonLabelType.TEXT_ONLY) { SimplePanel sp = new SimplePanel(); sp.add(html); return sp; } else if (type == ButtonLabelType.TEXT_ON_LEFT || type == ButtonLabelType.TEXT_ON_RIGHT) { HorizontalPanel hpanel = new HorizontalPanel(); if (cssName != null) { hpanel.addStyleName(cssName); } if (type == ButtonLabelType.TEXT_ON_LEFT) { hpanel.add(html); hpanel.add(new HTML(" ")); //$NON-NLS-1$ hpanel.add(img); } else { hpanel.add(img); hpanel.add(new HTML(" ")); //$NON-NLS-1$ hpanel.add(html); } hpanel.setCellVerticalAlignment(html, HasVerticalAlignment.ALIGN_MIDDLE); hpanel.setCellVerticalAlignment(img, HasVerticalAlignment.ALIGN_MIDDLE); return hpanel; } else { VerticalPanel vpanel = new VerticalPanel(); if (type == ButtonLabelType.TEXT_ON_TOP) { vpanel.add(html); vpanel.add(img); } else { vpanel.add(img); vpanel.add(html); } vpanel.setCellHorizontalAlignment(html, HasHorizontalAlignment.ALIGN_CENTER); vpanel.setCellHorizontalAlignment(img, HasHorizontalAlignment.ALIGN_CENTER); return vpanel; } } }