/* * RHQ Management Platform * Copyright (C) 2010 Red Hat, Inc. * All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation version 2 of the License. * * 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package org.rhq.coregui.client.util; import com.smartgwt.client.util.SC; import com.smartgwt.client.widgets.form.DynamicForm; import com.smartgwt.client.widgets.form.fields.FormItem; import com.smartgwt.client.widgets.form.fields.FormItemIcon; import com.smartgwt.client.widgets.form.fields.events.IconClickEvent; import com.smartgwt.client.widgets.form.fields.events.IconClickHandler; import org.rhq.coregui.client.ImageManager; /** * A collection of utility methods for working with SmartGWT {@link DynamicForm}s. * * @author Joseph Marques */ public class FormUtility { private FormUtility() { // static utility class only } public static String getStringSafely(FormItem item) { return getStringSafely(item, null); } public static String getStringSafely(FormItem item, String defaultValue) { if (item.getValue() == null) { return defaultValue; } else { return item.getValue().toString(); } } /** * Adds a help icon to the given form item. When the help icon is clicked, * the helpText is displayed to the user. * * @param item item that will get a single help icon added to it * @param helpText the help text to show the user when the help icon is clicked */ public static void addContextualHelp(FormItem item, final String helpText) { addContextualHelp(item, helpText, (FormItemIcon[]) null); } /** * Just like {@link #addContextualHelp(FormItem, String)} except this will also add * the given icons to the form item, with the help icon being the last icon. * * @param item item that will get the given icons plus a help icon added to it * @param helpText the help text to show the user when the help icon is clicked * @param icons other icons to add to the form item - these will appear before the help icon */ public static void addContextualHelp(FormItem item, final String helpText, FormItemIcon... icons) { final FormItemIcon helpIcon = new FormItemIcon(); helpIcon.setSrc(ImageManager.getHelpIcon()); if (icons == null) { item.setIcons(helpIcon); } else { FormItemIcon[] allIcons = new FormItemIcon[icons.length + 1]; System.arraycopy(icons, 0, allIcons, 0, icons.length); allIcons[icons.length] = helpIcon; item.setIcons(allIcons); } item.addIconClickHandler(new IconClickHandler() { public void onIconClick(IconClickEvent event) { if (event.getIcon().equals(helpIcon)) { SC.say(helpText); } } }); } }