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; import org.pentaho.pac.client.i18n.Messages; import org.pentaho.pac.client.utils.PacImageBundle; import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.ClickListener; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Image; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; public class AdminConsoleToolbar extends HorizontalPanel { ToolbarIndicator toolbarIndicator; private Timer statusTimer = null; HorizontalPanel buttonsPanel = new HorizontalPanel(); HorizontalPanel indicatorsRight = new HorizontalPanel(); public void addImageButton(Image image) { buttonsPanel.setStyleName("buttons"); //$NON-NLS-1$ buttonsPanel.add(image); } public AdminConsoleToolbar(final IRefreshableAdminConsole console) { this(console, null); } public AdminConsoleToolbar(final IRefreshableAdminConsole console, final String helpUrlOverride) { super(); setStyleName("adminconsole-toolbar"); //$NON-NLS-1$ //Left end-cap SimplePanel leftCap = new SimplePanel(); leftCap.setStyleName("adminconsole-toolbar_left"); //$NON-NLS-1$ add(leftCap); this.setCellWidth(leftCap, "5px"); //$NON-NLS-1$ //the body of the toolbar HorizontalPanel centerPanel = new HorizontalPanel(); centerPanel.setStyleName("adminconsole-toolbar_center"); //$NON-NLS-1$ add(centerPanel); //Right end-cap SimplePanel rightCap = new SimplePanel(); rightCap.setStyleName("adminconsole-toolbar_right"); //$NON-NLS-1$ add(rightCap); this.setCellWidth(rightCap, "6px"); //$NON-NLS-1$ SimplePanel indicatorsPanel = new SimplePanel(); indicatorsPanel.setStyleName("toolBarIndicators"); //$NON-NLS-1$ centerPanel.add(indicatorsPanel); SimplePanel indicatorsLeft = new SimplePanel(); indicatorsLeft.setStyleName("indicators_left"); //$NON-NLS-1$ indicatorsPanel.add(indicatorsLeft); indicatorsRight.setStyleName("indicators_right"); //$NON-NLS-1$ indicatorsLeft.add(indicatorsRight); contructToolbarIndicator(); setIndicators(toolbarIndicator); Image refreshConsoleImage = PacImageBundle.getBundle().refreshIcon().createImage(); refreshConsoleImage.setTitle(Messages.getString("resetServer")); //$NON-NLS-1$ refreshConsoleImage.addClickListener(new ClickListener() { public void onClick(Widget sender) { console.refresh(); } }); addImageButton(refreshConsoleImage); Image helpImage = PacImageBundle.getBundle().helpIcon().createImage(); helpImage.setTitle(Messages.getString("help")); //$NON-NLS-1$ helpImage.addClickListener(new ClickListener() { public void onClick(Widget sender) { if (helpUrlOverride != null && helpUrlOverride.length() > 0) { Window.open(helpUrlOverride, Messages.getString("userGuide"), ""); //$NON-NLS-1$ //$NON-NLS-2$ } else { PacServiceFactory.getPacService().getHelpUrl(new AsyncCallback<String>() { public void onFailure(Throwable arg0) { //TODO show error message } public void onSuccess(String helpUrl) { Window.open(helpUrl, Messages.getString("userGuide"), ""); //$NON-NLS-1$ //$NON-NLS-2$ } }); } } }); addImageButton(helpImage); centerPanel.add(buttonsPanel); centerPanel.setCellHorizontalAlignment(buttonsPanel, HorizontalPanel.ALIGN_RIGHT); centerPanel.setCellVerticalAlignment(buttonsPanel, HorizontalPanel.ALIGN_MIDDLE); statusTimer = new Timer() { public void run() { PacServiceFactory.getPacService().isBiServerAlive(new AsyncCallback<Object>() { public void onSuccess(Object isAlive) { toolbarIndicator.displayServerAlive(); } public void onFailure(Throwable caught) { toolbarIndicator.displayServerDead(); } }); } }; PacServiceFactory.getPacService().getBiServerStatusCheckPeriod(new AsyncCallback<Integer>() { public void onSuccess(Integer checkPeriod) { if (checkPeriod > 0) { statusTimer.scheduleRepeating(checkPeriod); } } public void onFailure(Throwable caught) { // otherwise we don't know what the status check period is, so don't schedule anything } }); } public HorizontalPanel getButtonPanel() { return buttonsPanel; } public void setToolbarIndicator(ToolbarIndicator toolbarIndicator) { this.toolbarIndicator = toolbarIndicator; } public ToolbarIndicator getToolbarIndicator() { return this.toolbarIndicator; } public void contructToolbarIndicator() { ToolbarIndicator toolbarIndicator = new ToolbarIndicator(); toolbarIndicator.buildToolbarIndicator(); setToolbarIndicator(toolbarIndicator); } public void setIndicators(ToolbarIndicator toolbarIndicator) { indicatorsRight.add(toolbarIndicator); } }