package com.smartgwt.sample.showcase.client.layout; import com.smartgwt.client.core.Rectangle; import com.smartgwt.client.util.Page; import com.smartgwt.client.widgets.AnimationCallback; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.IButton; import com.smartgwt.client.widgets.Label; import com.smartgwt.client.widgets.Window; import com.smartgwt.client.widgets.events.ClickEvent; import com.smartgwt.client.widgets.events.ClickHandler; import com.smartgwt.client.widgets.events.CloseClickEvent; import com.smartgwt.client.widgets.events.CloseClickHandler; import com.smartgwt.client.widgets.layout.VLayout; import com.smartgwt.sample.showcase.client.PanelFactory; import com.smartgwt.sample.showcase.client.ShowcasePanel; import com.smartgwt.sample.showcase.client.SourceEntity; public class SplitPaneSample extends ShowcasePanel { private static final String DESCRIPTION = "SplitPane displays up to 3 panes in a device- and orientation-sensitive manner, "+ "automatically providing navigation controls between panes for devices that don't have "+ "enough room to display panes side-by-side. "+ "<p>"+ "Compare this sample running on a desktop browser vs a tablet or handset. A "+ "handset or tablet in portrait mode shows just one pane at a time and "+ "provides automatic navigation between the panes. Two panes are shown "+ "simultaneously for a tablet device in landscape mode, and all 3 panes are "+ "shown simultaneously for desktop browsers. "+ "<p>"+ "Note that the example viewer you are currently using is also based on "+ "SplitPane."; public static class Factory implements PanelFactory { private String id; public ShowcasePanel create() { SplitPaneSample panel = new SplitPaneSample(); id = panel.getID(); return panel; } public String getID() { return id; } public String getDescription() { return DESCRIPTION; } } public Canvas getViewPanel() { VLayout layout = new VLayout(15); layout.addMember(new Label("This is a full-screen example - click the \"Show Example\" button to show fullscreen.")); final IButton button = new IButton("Show Example"); button.setWidth(140); button.addClickHandler(new ClickHandler() { public void onClick(ClickEvent event) { Rectangle rect = button.getPageRect(); final Canvas animateOutline = new Canvas(); animateOutline.setBorder("2px solid black"); animateOutline.setTop(rect.getTop()); animateOutline.setLeft(rect.getLeft()); animateOutline.setWidth(rect.getLeft()); animateOutline.setHeight(rect.getHeight()); animateOutline.show(); animateOutline.animateRect(0, 0, Page.getWidth(), Page.getHeight(), new AnimationCallback() { public void execute(boolean earlyFinish) { animateOutline.hide(); final FullScreenApplication appWindow = new FullScreenApplication(); appWindow.addCloseClickHandler(new CloseClickHandler() { public void onCloseClick(CloseClickEvent event) { animateOutline.setRect(0, 0, Page.getWidth(), Page.getHeight()); animateOutline.show(); appWindow.destroy(); Rectangle targetRect = button.getPageRect(); animateOutline.animateRect(targetRect.getLeft(), targetRect.getTop(), targetRect.getWidth(), targetRect.getHeight(), new AnimationCallback() { public void execute(boolean earlyFinish) { animateOutline.hide(); } }, 500); } }); appWindow.show(); } }, 500 ); } }); layout.addMember(button); return layout; } class FullScreenApplication extends Window { FullScreenApplication() { setTitle("SplitPane"); setWidth100(); setHeight100(); setShowMinimizeButton(false); setShowCloseButton(true); setCanDragReposition(false); setCanDragResize(false); setShowShadow(false); addItem(new SplitPanePanel()); } } @Override public SourceEntity[] getSourceUrls() { return new SourceEntity[] { new SourceEntity("SplitPaneSample.java", "source/layout/SplitPaneSample.java.html") }; } public String getIntro() { return DESCRIPTION; } }