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 2008 - 2009 Pentaho Corporation. All rights reserved. */ package org.pentaho.pac.client.common.ui.toolbar; import java.util.ArrayList; import java.util.List; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Image; import com.google.gwt.user.client.ui.SimplePanel; /** * Displays a collection of buttons in a standard toolbar view. Also supports * ToolbarGroup objects that manage related buttons. * * @author nbaker */ public class Toolbar extends HorizontalPanel { public static final int SEPARATOR = 1; public static final int GLUE = 2; //table holding the buttons private HorizontalPanel bar = new HorizontalPanel(); //Collection of buttons private List<ToolbarButton> buttons = new ArrayList<ToolbarButton>(); //collection of groups private List<ToolbarGroup> groups = new ArrayList<ToolbarGroup>(); public Toolbar() { this.setStylePrimaryName("toolbar"); //$NON-NLS-1$ add(bar); bar.setSpacing(1); setWidth("100%"); //$NON-NLS-1$ setHeight("100%"); //$NON-NLS-1$ } /** * Add in a collection of buttons assembled as a ToolbarGroup * * @param group ToolbarGroup to add. */ public void add(ToolbarGroup group) { //check to see if there's already a separator added before this group if (!(bar.getWidget(bar.getWidgetCount() - 1) instanceof Image)) { bar.add(group.getLeadingSeparator()); bar.setCellVerticalAlignment(group.getLeadingSeparator(), ALIGN_MIDDLE); } //if the group has a label tag, add it before the buttons if (group.getLabel() != null) { bar.add(group.getGroupLabel()); bar.setCellVerticalAlignment(group.getGroupLabel(), ALIGN_MIDDLE); } //add the buttons to the bar and buttons collection for (ToolbarButton btn : group.getButtons()) { bar.add(btn.getPushButton()); } bar.add(group.getTrailingSeparator()); bar.setCellVerticalAlignment(group.getTrailingSeparator(), ALIGN_MIDDLE); groups.add(group); } /** * Add a Button to the Toolbar */ public void add(ToolbarButton button) { bar.add(button.getPushButton()); buttons.add(button); } /** * Add a special element to the toolbar. Support for separator and glue. * @param key id of element to add */ public void add(int key) { switch (key) { case Toolbar.SEPARATOR: Image img = new Image("style/images/toolbarDivider.png"); //$NON-NLS-1$ bar.add(img); bar.setCellVerticalAlignment(img, ALIGN_MIDDLE); break; case Toolbar.GLUE: SimplePanel panel = new SimplePanel(); bar.add(panel); bar.setCellWidth(panel, "100%"); //$NON-NLS-1$ break; default: //add error logging message } } /** * Enable or Disable the toolbar. If passed in false it will disable all buttons, if true it * will restore the buttons to their previous state. * * @param enabled boolean flag */ public void setEnabled(boolean enabled) { try { for (ToolbarButton button : this.buttons) { button.setTempDisabled(enabled); } for (ToolbarGroup gp : groups) { gp.setTempDisabled(enabled); } } catch (Exception e) { System.out.println("Error with Disable: " + e); //$NON-NLS-1$ e.printStackTrace(System.out); } } }