Java tutorial
/* * JBoss, Home of Professional Open Source * Copyright 2011 Red Hat Inc. and/or its affiliates and other contributors * as indicated by the @author tags. All rights reserved. * See the copyright.txt in the distribution for a * full listing of individual contributors. * * This copyrighted material is made available to anyone wishing to use, * modify, copy, or redistribute it subject to the terms and conditions * of the GNU Lesser General Public License, v. 2.1. * This program is distributed in the hope that it will be useful, but WITHOUT A * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General Public License, * v.2.1 along with this distribution; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. */ package org.jboss.as.console.client.domain.groups.deployment; import com.google.gwt.cell.client.ActionCell; import com.google.gwt.user.cellview.client.Column; import com.google.gwt.user.cellview.client.TextColumn; import com.google.gwt.user.client.ui.IsWidget; import com.google.gwt.user.client.ui.LayoutPanel; import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Widget; import com.google.gwt.view.client.ListDataProvider; import com.google.gwt.view.client.ProvidesKey; import com.google.gwt.view.client.SingleSelectionModel; import org.jboss.as.console.client.Console; import org.jboss.as.console.client.domain.model.HostInformationStore; import org.jboss.as.console.client.domain.model.ServerGroupRecord; import org.jboss.as.console.client.shared.deployment.DeploymentStore; import org.jboss.as.console.client.shared.deployment.model.ContentRepository; import org.jboss.as.console.client.shared.viewframework.builder.SimpleLayout; import org.jboss.as.console.client.widgets.pages.PagedView; import org.jboss.as.console.client.widgets.tables.ViewLinkCell; import org.jboss.ballroom.client.widgets.tables.DefaultCellTable; import org.jboss.ballroom.client.widgets.tables.DefaultPager; /** * Shows the server groups with a link to ServerGroupDeploymentView * * @author Harald Pehl * @date 12/12/2012 */ public class ServerGroupDeploymentPanel implements IsWidget { private final Widget widget; private final DomainDeploymentPresenter presenter; private final DeploymentStore deploymentStore; private final HostInformationStore hostInfoStore; private PagedView pagedView; private ListDataProvider<ServerGroupRecord> serverGroupData; private ServerGroupDeploymentBrowser groupDeploymentBrowser; private ContentRepository contentRepository; private SingleSelectionModel<ServerGroupRecord> selectionModel; public ServerGroupDeploymentPanel(DomainDeploymentPresenter presenter, DeploymentStore deploymentStore, HostInformationStore hostInfoStore) { this.presenter = presenter; this.deploymentStore = deploymentStore; this.hostInfoStore = hostInfoStore; this.widget = initUI(); } @SuppressWarnings("unchecked") private Widget initUI() { pagedView = new PagedView(); ProvidesKey<ServerGroupRecord> keyProvider = new ProvidesKey<ServerGroupRecord>() { @Override public Object getKey(ServerGroupRecord serverGroupRecord) { return serverGroupRecord.getName() + "_" + serverGroupRecord.getProfileName(); } }; DefaultCellTable<ServerGroupRecord> serverGroups = new DefaultCellTable<ServerGroupRecord>(8, keyProvider); serverGroupData = new ListDataProvider<ServerGroupRecord>(); this.serverGroupData.addDataDisplay(serverGroups); DefaultPager pager = new DefaultPager(); pager.setDisplay(serverGroups); selectionModel = new SingleSelectionModel<ServerGroupRecord>(keyProvider); serverGroups.setSelectionModel(selectionModel); Column nameColumn = new TextColumn<ServerGroupRecord>() { @Override public String getValue(ServerGroupRecord serverGroup) { return serverGroup.getName(); } }; Column profileColumn = new TextColumn<ServerGroupRecord>() { @Override public String getValue(ServerGroupRecord serverGroup) { return serverGroup.getProfileName(); } }; serverGroups.addColumn(nameColumn, Console.CONSTANTS.common_label_serverGroup()); serverGroups.addColumn(profileColumn, Console.CONSTANTS.common_label_profile()); ActionCell.Delegate<ServerGroupRecord> actionDelegate = new ActionCell.Delegate<ServerGroupRecord>() { @Override public void execute(ServerGroupRecord selection) { groupDeploymentBrowser.updateGroup(selection, contentRepository.getDeployments(selection)); pagedView.showPage(1); } }; Column<ServerGroupRecord, ServerGroupRecord> option = new Column<ServerGroupRecord, ServerGroupRecord>( new ViewLinkCell<ServerGroupRecord>(Console.CONSTANTS.common_label_view(), actionDelegate)) { @Override public ServerGroupRecord getValue(ServerGroupRecord manager) { return manager; } }; serverGroups.addColumn(option, Console.CONSTANTS.common_label_option()); VerticalPanel wrapper = new VerticalPanel(); wrapper.add(serverGroups.asWidget()); wrapper.add(pager); SimpleLayout overviewPanel = new SimpleLayout().setPlain(true).setHeadline("Server Groups") .setDescription("Please chose a server group to assign deployment contents.") .addContent("Available Groups", wrapper); groupDeploymentBrowser = new ServerGroupDeploymentBrowser(presenter, deploymentStore, hostInfoStore); pagedView.addPage(Console.CONSTANTS.common_label_back(), overviewPanel.build()); pagedView.addPage("Group Deployments", groupDeploymentBrowser.asWidget()); pagedView.showPage(0); LayoutPanel layout = new LayoutPanel(); layout.add(pagedView.asWidget()); return layout; } @Override public Widget asWidget() { return widget; } void reset(final ContentRepository contentRepository) { this.contentRepository = contentRepository; serverGroupData.setList(contentRepository.getServerGroups()); ServerGroupRecord selectedServerGroup = selectionModel.getSelectedObject(); if (pagedView.getPage() == 1 && selectedServerGroup != null) { groupDeploymentBrowser.updateGroup(selectedServerGroup, this.contentRepository.getDeployments(selectedServerGroup)); } } }