Sections Custom Controls Sample for accordion panel (Smart GWT)
/* * SmartGWT (GWT for SmartClient) * Copyright 2008 and beyond, Isomorphic Software, Inc. * * SmartGWT is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License version 3 * as published by the Free Software Foundation. SmartGWT is also * available under typical commercial license terms - see * http://smartclient.com/license * This software 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. */ package com.smartgwt.sample.showcase.client; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.user.client.ui.RootPanel; import com.smartgwt.client.types.ListGridEditEvent; import com.smartgwt.client.types.Overflow; import com.smartgwt.client.types.VisibilityMode; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.ImgButton; import com.smartgwt.client.widgets.events.ClickEvent; import com.smartgwt.client.widgets.events.ClickHandler; import com.smartgwt.client.widgets.form.DynamicForm; import com.smartgwt.client.widgets.form.fields.SelectItem; import com.smartgwt.client.widgets.form.fields.events.ChangeEvent; import com.smartgwt.client.widgets.form.fields.events.ChangeHandler; import com.smartgwt.client.widgets.grid.ListGrid; import com.smartgwt.client.widgets.grid.ListGridField; import com.smartgwt.client.widgets.layout.SectionStack; import com.smartgwt.client.widgets.layout.SectionStackSection; public class Showcase implements EntryPoint { public void onModuleLoad() { RootPanel.get().add(getViewPanel()); } public Canvas getViewPanel() { final ListGrid listGrid = new ListGrid(); listGrid.setCanEdit(true); listGrid.setEditEvent(ListGridEditEvent.CLICK); listGrid.setFields(new ListGridField("system", "System"), new ListGridField("monitor", "Monitor")); final StatusCanvas statusReport = new StatusCanvas(); ImgButton addButton = new ImgButton(); addButton.setSrc("[SKIN]actions/add.png"); addButton.setSize(16); addButton.setShowFocused(false); addButton.setShowRollOver(false); addButton.setShowDown(false); addButton.addClickHandler(new ClickHandler() { public void onClick(ClickEvent event) { listGrid.startEditingNew(); } }); ImgButton removeButton = new ImgButton(); removeButton.setSrc("[SKIN]actions/remove.png"); removeButton.setSize(16); removeButton.setShowFocused(false); removeButton.setShowRollOver(false); removeButton.setShowDown(false); removeButton.addClickHandler(new ClickHandler() { public void onClick(ClickEvent event) { listGrid.removeSelectedData(); } }); DynamicForm form = new DynamicForm(); form.setHeight(1); form.setWidth(75); form.setNumCols(1); SelectItem selectItem = new SelectItem(); selectItem.setWidth(120); selectItem.setShowTitle(false); selectItem.setValueMap("Development", "Staging", "Production"); selectItem.setDefaultValue("Development"); selectItem.addChangeHandler(new ChangeHandler() { public void onChange(ChangeEvent event) { statusReport.setNewStatus((String) event.getValue()); } }); form.setFields(selectItem); SectionStack sectionStack = new SectionStack(); SectionStackSection section1 = new SectionStackSection(); section1.setTitle("Monitors"); section1.setItems(listGrid); section1.setControls(addButton, removeButton); section1.setExpanded(true); SectionStackSection section2 = new SectionStackSection(); section2.setTitle("Status"); section2.setItems(statusReport); section2.setControls(form); section2.setExpanded(true); sectionStack.setSections(section1, section2); sectionStack.setVisibilityMode(VisibilityMode.MULTIPLE); sectionStack.setAnimateSections(true); sectionStack.setWidth(300); sectionStack.setHeight(400); sectionStack.setOverflow(Overflow.HIDDEN); return sectionStack; } class StatusCanvas extends Canvas { StatusCanvas() { setPadding(5); setBorder("1px solid #808080"); } public void setNewStatus(String status) { setContents(status + ": <span style='color:green;font-weight:bold'>Normal</span><br>"); } } }