package com.smartgwt.sample.showcase.client.sections;
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;
import com.smartgwt.sample.showcase.client.PanelFactory;
import com.smartgwt.sample.showcase.client.ShowcasePanel;
public class SectionsCustomControlsSample extends ShowcasePanel {
private static final String DESCRIPTION = "<p>Custom controls may appear on section headers.</p>";
public static class Factory implements PanelFactory {
private String id;
public ShowcasePanel create() {
SectionsCustomControlsSample panel = new SectionsCustomControlsSample();
id = panel.getID();
return panel;
}
public String getID() {
return id;
}
public String getDescription() {
return DESCRIPTION;
}
}
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);
}
public void setNewStatus(String status) {
setContents(status + ": <span style='color:green;font-weight:bold'>Normal</span><br>");
}
}
public String getIntro() {
return DESCRIPTION;
}
}