/* * RHQ Management Platform * Copyright (C) 2005-2010 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.inventory.resource.detail; import com.smartgwt.client.widgets.Canvas; import org.rhq.coregui.client.BookmarkableView; import org.rhq.coregui.client.ViewPath; import org.rhq.coregui.client.components.view.ViewName; import org.rhq.coregui.client.inventory.groups.detail.ResourceGroupDetailView; import org.rhq.coregui.client.util.enhanced.EnhancedHLayout; /** * @author Jay Shaughnessy * @author Greg Hinkle */ public class ResourceTopView extends EnhancedHLayout implements BookmarkableView { public static final ViewName VIEW_ID = new ViewName("Resource", MSG.common_title_resource()); private Canvas contentCanvas; private ResourceTreeView treeView; private ResourceDetailView detailView; private ResourceGroupDetailView autoGroupDetailView; public ResourceTopView() { super(); setWidth100(); setHeight100(); treeView = new ResourceTreeView(); addMember(treeView); contentCanvas = new Canvas(); addMember(contentCanvas); setToDetailView(); } public void setContent(Canvas newContent) { for (Canvas child : this.contentCanvas.getChildren()) { child.destroy(); } this.contentCanvas.addChild(newContent); this.contentCanvas.markForRedraw(); } private void setToDetailView() { this.detailView = new ResourceDetailView(treeView); this.detailView.addViewRenderedListener(new ResourceDetailView.ViewRenderedListener() { public void onViewRendered() { // re-enable the tree, the detail view has (hopefully) been safely rendered treeView.enable(); } }); this.setContent(detailView); this.autoGroupDetailView = null; } private void setToAutoGroupView() { this.autoGroupDetailView = new ResourceGroupDetailView(ResourceGroupDetailView.AUTO_GROUP_VIEW); this.autoGroupDetailView.addViewRenderedListener(new ResourceGroupDetailView.ViewRenderedListener() { public void onViewRendered() { // re-enable the tree, the autogroup view has (hopefully) been safely rendered treeView.enable(); } }); this.setContent(this.autoGroupDetailView); this.detailView = null; } public void renderView(ViewPath viewPath) { // disable the tree until it's safe to click a new node to prevent fast-click issues this.treeView.disable(); if ("AutoGroup".equals(viewPath.getCurrent().getPath())) { if (null == autoGroupDetailView) { setToAutoGroupView(); } this.treeView.renderView(viewPath); this.autoGroupDetailView.renderView(viewPath.next()); } else { if (null == detailView) { setToDetailView(); } this.treeView.renderView(viewPath); this.detailView.renderView(viewPath); } } }