/* * Copyright 2007 Aditya Kapur <addy AT gwtiger.org> * * 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.onecmdb.ui.gwt.toolkit.client.view.screen.header; /** * @author Addy * */ import org.onecmdb.ui.gwt.toolkit.client.OneCMDBApplication; import org.onecmdb.ui.gwt.toolkit.client.control.OneCMDBSession; import org.onecmdb.ui.gwt.toolkit.client.control.OneCMDBUtils; import org.onecmdb.ui.gwt.toolkit.client.model.onecmdb.GWT_CiBean; import org.onecmdb.ui.gwt.toolkit.client.model.onecmdb.GWT_ValueBean; import org.onecmdb.ui.gwt.toolkit.client.view.screen.OneCMDBBaseScreen; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.ClickListener; import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Image; import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Widget; /** * The top panel, which contains the 'welcome' message and various links. */ public class HeaderScreen extends OneCMDBBaseScreen implements ClickListener { //private HTML signOutLink = new HTML("<font size=\"small\"><a href='javascript:;'>Sign Out</a></font>"); private HTML welcomeString = new HTML("Anonymous"); private HTML logout = new HTML("<a href='javascript:;'>[logout]</a>"); private Image icon = new Image("images/onecmdblogo.jpg"); public HeaderScreen() { HorizontalPanel outer = new HorizontalPanel(); VerticalPanel inner = new VerticalPanel(); outer.setWidth("100%"); outer.setHeight("3em"); //outer.setHorizontalAlignment(HorizontalPanel.ALIGN_RIGHT); inner.setHorizontalAlignment(HorizontalPanel.ALIGN_RIGHT); inner.setWidth("100%"); inner.setHeight("100%"); HorizontalPanel authInfo = new HorizontalPanel(); //authInfo.setSpacing(4); logout.setStyleName("logout-style"); authInfo.add(welcomeString); authInfo.add(logout); logout.setVisible(false); logout.addClickListener(this); inner.add(authInfo); HorizontalPanel actionPanel = new HorizontalPanel(); actionPanel.setStyleName("onecmdb-header-label"); actionPanel.setSpacing(10); actionPanel.add(getFeedbackWidget()); actionPanel.add(getCheckUpdateWidget()); actionPanel.add(getHomeWidegt()); actionPanel.add(getHelpWidget()); inner.add(actionPanel); inner.setCellVerticalAlignment(actionPanel, VerticalPanel.ALIGN_BOTTOM); inner.setCellVerticalAlignment(authInfo, VerticalPanel.ALIGN_TOP); //DockPanel iconPanel = new DockPanel(); //iconPanel.setWidth("100%"); //welcomePanel.setSpacing(10); //iconPanel.add(icon,DockPanel.EAST); // welcomePanel.add(new HTML("<b> </b>"),DockPanel.CENTER); outer.add(icon); outer.setCellHorizontalAlignment(icon, HorizontalPanel.ALIGN_LEFT); outer.add(inner); outer.setCellHorizontalAlignment(inner, HorizontalPanel.ALIGN_RIGHT); // Show welcome page. icon.addClickListener(new ClickListener() { public void onClick(Widget sender) { getBaseEntryScreen().showScreen(OneCMDBApplication.WELCOME_SCREEN); } }); initWidget(outer); //outer.setStyleName("one-top-panel"); } private Widget getHelpWidget() { HTML html = new HTML("<a href='http://www.onecmdb.org/wiki/index.php/Documentation'><img src='images/help16.gif'</a>"); html.setTitle("Help - On onecmdb.org"); return(html); } private Widget getHomeWidegt() { HTML html = new HTML("<a href='../../index.html'><img src='images/home16.gif'</a>"); html.setTitle("Goto first page!"); return(html); } private Widget getFeedbackWidget() { HTML good = new HTML("<a href='javascript:;'>[Good]</a> "); HTML bad = new HTML("<a href='javascript:;'>[Bad]</a>"); good.addClickListener(new ClickListener() { public void onClick(Widget sender) { Window.open("http://www.onecmdb.org/feedback/good.html" + "?version=" + getBaseEntryScreen().getVersion() + "&action=" + getBaseEntryScreen().getCurrentPage(), "Good", "height=500,width=500"); } } ); bad.addClickListener(new ClickListener() { public void onClick(Widget sender) { Window.open("http://www.onecmdb.org/feedback/bad.html" + "?version=" + getBaseEntryScreen().getVersion() + "&action=" + getBaseEntryScreen().getCurrentPage(), "Bad", "height=500,width=500"); } } ); HTML info = new HTML("Your feedback to onecmdb.org: "); HorizontalPanel panel = new HorizontalPanel(); panel.setStyleName("onecmdb-header-label"); panel.add(info); panel.add(good); panel.add(bad); return(panel); } public Widget getCheckUpdateWidget() { HTML html = new HTML("<a href='javascript:;'>[Check for updates]</a>"); html.addClickListener(new ClickListener() { public void onClick(Widget sender) { Window.open("http://sourceforge.net/project/showfiles.php?group_id=176340", "_blank", ""); } }); return(html); } public boolean isScrollable() { return(false); } public boolean isRightPanel() { return(false); } public void onClick(Widget sender) { if (sender == logout) { // Log out AsyncCallback callback = new AsyncCallback() { public void onSuccess (Object result) { OneCMDBUtils.redirect("../../index.html"); //getBaseEntryScreen().setLogoutScreen(); } public void onFailure (Throwable ex) { System.out.println("Error "+ex); ex.printStackTrace(); } }; getService().logout(OneCMDBSession.getAuthToken(), callback); } } public void setAccount(GWT_CiBean account) { String username = "admin"; if (account != null) { GWT_ValueBean aBean = account.fetchAttributeValueBean("username", 0); if (aBean != null) { username = aBean.getValue(); } } welcomeString.setHTML("Logged in as <b>" + username + "</b> on server " + OneCMDBSession.getOneCMDBURL() + " "); logout.setVisible(true); } }