/* * RHQ Management Platform * Copyright (C) 2005-2011 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.admin; import com.google.gwt.user.client.rpc.AsyncCallback; import com.smartgwt.client.types.Overflow; import com.smartgwt.client.types.VisibilityMode; import com.smartgwt.client.widgets.Img; import com.smartgwt.client.widgets.Label; import com.smartgwt.client.widgets.form.DynamicForm; import com.smartgwt.client.widgets.form.fields.CanvasItem; import com.smartgwt.client.widgets.form.fields.StaticTextItem; import com.smartgwt.client.widgets.layout.SectionStack; import com.smartgwt.client.widgets.layout.SectionStackSection; import org.rhq.core.domain.plugin.Plugin; import org.rhq.coregui.client.CoreGUI; import org.rhq.coregui.client.ImageManager; import org.rhq.coregui.client.components.table.TimestampCellFormatter; import org.rhq.coregui.client.gwt.GWTServiceLookup; import org.rhq.coregui.client.gwt.PluginGWTServiceAsync; import org.rhq.coregui.client.util.enhanced.EnhancedVLayout; /** * Shows details of an agent plugin. * * @author John Mazzitelli */ public class AgentPluginDetailView extends EnhancedVLayout { private final PluginGWTServiceAsync pluginManager = GWTServiceLookup.getPluginService(); private final int pluginId; public AgentPluginDetailView(int pluginId) { super(); this.pluginId = pluginId; setHeight100(); setWidth100(); } @Override protected void onDraw() { super.onDraw(); final SectionStack sectionStack; sectionStack = new SectionStack(); sectionStack.setVisibilityMode(VisibilityMode.MULTIPLE); sectionStack.setWidth100(); sectionStack.setHeight100(); sectionStack.setOverflow(Overflow.AUTO); pluginManager.getAgentPlugin(this.pluginId, new AsyncCallback<Plugin>() { public void onSuccess(Plugin plugin) { prepareDetailsSection(sectionStack, plugin); prepareHelpSection(sectionStack, plugin); } public void onFailure(Throwable caught) { CoreGUI.getErrorHandler().handleError(MSG.view_admin_plugins_loadFailure(), caught); } }); addMember(sectionStack); } private void prepareHelpSection(SectionStack stack, Plugin plugin) { if (plugin.getHelp() != null && plugin.getHelp().length() > 0) { SectionStackSection section = new SectionStackSection(MSG.common_title_help()); section.setExpanded(true); Label help = new Label(plugin.getHelp()); section.setItems(help); stack.addSection(section); } return; } private void prepareDetailsSection(SectionStack stack, Plugin plugin) { DynamicForm form = new DynamicForm(); form.setMargin(10); form.setWidth100(); form.setWrapItemTitles(false); form.setNumCols(4); StaticTextItem nameItem = new StaticTextItem("name", MSG.common_title_name()); nameItem.setValue(plugin.getName()); StaticTextItem displayNameItem = new StaticTextItem("displayName", MSG.common_title_display_name()); displayNameItem.setValue(plugin.getDisplayName()); StaticTextItem versionItem = new StaticTextItem("version", MSG.common_title_version()); versionItem.setValue(plugin.getVersion()); StaticTextItem md5Item = new StaticTextItem("MD5", "MD5"); md5Item.setValue(plugin.getMD5()); StaticTextItem pathItem = new StaticTextItem("path", MSG.common_title_path()); pathItem.setValue(plugin.getPath()); StaticTextItem ampsItem = new StaticTextItem("ampsVersion", "AMPS " + MSG.common_title_version()); ampsItem.setValue(plugin.getAmpsVersion()); StaticTextItem descItem = new StaticTextItem("desc", MSG.common_title_description()); descItem.setValue(plugin.getDescription()); StaticTextItem mtimeItem = new StaticTextItem("mtime", MSG.common_title_lastUpdated()); mtimeItem.setValue(TimestampCellFormatter.format(Long.valueOf(plugin.getMtime()), TimestampCellFormatter.DATE_TIME_FORMAT_MEDIUM)); StaticTextItem kindItem = new StaticTextItem("kind", MSG.common_title_kind()); switch (plugin.getDeployment()) { case AGENT: kindItem.setValue(MSG.view_admin_plugins_agent()); break; case SERVER: kindItem.setValue(MSG.view_admin_plugins_server()); break; } CanvasItem enabledItem = new CanvasItem("enabled", MSG.common_title_enabled()); Img img = new Img(ImageManager.getAvailabilityIcon(plugin.isEnabled()), 16, 16); enabledItem.setCanvas(img); form.setItems(displayNameItem, nameItem, versionItem, ampsItem, md5Item, kindItem, descItem, pathItem, mtimeItem, enabledItem); SectionStackSection section = new SectionStackSection(MSG.common_title_details()); section.setExpanded(true); section.setItems(form); stack.addSection(section); return; } }