/* * 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. */ /* * Copyright 2007 Google Inc. * * 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 org.pentaho.pac.client.home; import org.pentaho.gwt.widgets.client.dialogs.MessageDialogBox; import org.pentaho.pac.client.IRefreshableAdminPage; import org.pentaho.pac.client.PacServiceAsync; import org.pentaho.pac.client.PacServiceFactory; import org.pentaho.pac.client.PentahoAdminConsole; import org.pentaho.pac.client.common.ui.GroupBox; import org.pentaho.pac.client.i18n.Messages; import org.pentaho.pac.client.utils.ExceptionParser; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.SimplePanel; /** * A panel that contains HTML, and which can attach child widgets to identified * elements within that HTML. */ public class HomePanel extends SimplePanel implements IRefreshableAdminPage{ private static int sUid; private GroupBox groupbox; private String url; /** * A helper method for creating unique IDs for elements within dynamically- * generated HTML. This is important because no two elements in a document * should have the same id. * * @return a new unique identifier */ public static String createUniqueId() { return "HomePanel_" + (++sUid); //$NON-NLS-1$ } /** * Creates an Home panel with the specified HTML contents. Any element within * this HTML that has a specified id can contain a child widget. * * @param html the panel's HTML */ public HomePanel(String url) { groupbox = new GroupBox("Welcome"); //$NON-NLS-1$ groupbox.setStyleName("homeGroupBox"); //$NON-NLS-1$ this.add(groupbox); this.url = url; } public void refresh() { PacServiceAsync pacService = PacServiceFactory.getPacService(); pacService.getHomePageAsHtml(url, new AsyncCallback<String>() { public void onFailure(Throwable caught) { MessageDialogBox messageDialog = new MessageDialogBox(ExceptionParser.getErrorHeader(caught.getMessage()), ExceptionParser.getErrorMessage(caught.getMessage(), Messages.getString("errorGettingHomepage")), false, false, true); //$NON-NLS-1$ messageDialog.center(); } public void onSuccess(String htmlContent) { SimplePanel tempPanel = new SimplePanel(); DOM.setInnerHTML(tempPanel.getElement(), htmlContent); groupbox.setContent(tempPanel); } }); } }