--- /dev/null
+package com.itmill.toolkit.demo.sampler.features.layouts;\r
+\r
+import com.itmill.toolkit.demo.sampler.APIResource;\r
+import com.itmill.toolkit.demo.sampler.Feature;\r
+import com.itmill.toolkit.demo.sampler.NamedExternalResource;\r
+import com.itmill.toolkit.ui.SplitPanel;\r
+\r
+public class SplitPanelBasic extends Feature {\r
+\r
+ @Override\r
+ public String getName() {\r
+ return "SplitPanel";\r
+ }\r
+\r
+ @Override\r
+ public String getDescription() {\r
+ return "SplitPanel is a component container that can contain two components."\r
+ + " The split orientation can be either horizontal or vertical. Various"\r
+ + " settings regarding eg. region sizes and resizeability can be set."\r
+ + "<br>Click the button for a demo in a new window.";\r
+ }\r
+\r
+ @Override\r
+ public APIResource[] getRelatedAPI() {\r
+ return new APIResource[] { new APIResource(SplitPanel.class),\r
+\r
+ };\r
+ }\r
+\r
+ @Override\r
+ public Class[] getRelatedFeatures() {\r
+ return new Class[] {};\r
+ }\r
+\r
+ @Override\r
+ public NamedExternalResource[] getRelatedResources() {\r
+ return null;\r
+ }\r
+}\r
--- /dev/null
+package com.itmill.toolkit.demo.sampler.features.layouts;\r
+\r
+import java.net.URL;\r
+\r
+import com.itmill.toolkit.demo.sampler.ExampleUtil;\r
+import com.itmill.toolkit.terminal.ExternalResource;\r
+import com.itmill.toolkit.ui.AbstractSelect;\r
+import com.itmill.toolkit.ui.Button;\r
+import com.itmill.toolkit.ui.Label;\r
+import com.itmill.toolkit.ui.SplitPanel;\r
+import com.itmill.toolkit.ui.TabSheet;\r
+import com.itmill.toolkit.ui.Tree;\r
+import com.itmill.toolkit.ui.VerticalLayout;\r
+import com.itmill.toolkit.ui.Window;\r
+import com.itmill.toolkit.ui.Button.ClickEvent;\r
+\r
+public class SplitPanelBasicExample extends VerticalLayout {\r
+\r
+ private URL nativeWindowURL = null;\r
+ private Button b1;\r
+\r
+ public SplitPanelBasicExample() {\r
+ setSpacing(true);\r
+\r
+ b1 = new Button("Open a new window with a SplitPanel", this,\r
+ "openButtonClick");\r
+ addComponent(b1);\r
+\r
+ }\r
+\r
+ public void openButtonClick(ClickEvent event) {\r
+ if (nativeWindowURL == null) {\r
+ getApplication().addWindow(createWindow());\r
+ }\r
+ getApplication().getMainWindow().open(\r
+ new ExternalResource(nativeWindowURL), "_blank");\r
+ }\r
+\r
+ /*\r
+ * Create new window which contains the layout obtained from\r
+ * createDemoLayout()\r
+ */\r
+ private Window createWindow() {\r
+ // Create a new window for the SplitPanel\r
+ final Window w = new Window("SplitPanel Demo");\r
+ getApplication().addWindow(w);\r
+ w.setLayout(createDemoLayout());\r
+ nativeWindowURL = w.getURL();\r
+ return w;\r
+ }\r
+\r
+ /*\r
+ * Creates the actual Layout with two SplitPanels and some content\r
+ */\r
+ private SplitPanel createDemoLayout() {\r
+ // Create a new SplitPanel\r
+ SplitPanel demoSP = new SplitPanel();\r
+ // Set orientation\r
+ demoSP.setOrientation(SplitPanel.ORIENTATION_HORIZONTAL);\r
+ // Set split position (from left edge) in pixels\r
+ demoSP.setSplitPosition(200, UNITS_PIXELS);\r
+\r
+ // Create an example tree component, set to full size\r
+ Tree t = new Tree("Hardware Inventory", ExampleUtil\r
+ .getHardwareContainer());\r
+ t.setItemCaptionPropertyId(ExampleUtil.hw_PROPERTY_NAME);\r
+ t.setItemCaptionMode(AbstractSelect.ITEM_CAPTION_MODE_PROPERTY);\r
+ t.setSizeFull();\r
+\r
+ // Add the Tree component to the SplitPanel\r
+ demoSP.addComponent(t);\r
+\r
+ // Create a second SplitPanel\r
+ SplitPanel subSP = new SplitPanel();\r
+ // Set orientation\r
+ subSP.setOrientation(SplitPanel.ORIENTATION_VERTICAL);\r
+ // Set split position in percentage\r
+ subSP.setSplitPosition(80);\r
+ // Set the split locked (= not resizeable)\r
+ subSP.setLocked(true);\r
+\r
+ // Create an example tabsheet component with some content\r
+ final TabSheet ts = new TabSheet();\r
+ final Label l1 = new Label(\r
+ "This window shows an example of a SplitPanel component."\r
+ + " A second SplitPanel is inserted into the first one"\r
+ + " to allow a split into three regions.");\r
+ final Label l2 = new Label(\r
+ "Try resizing the window (horizontally) and you will"\r
+ + " notice that the leftmost region does not resize because"\r
+ + " the split position is set in pixels."\r
+ + " If you resize the window vertically you will see"\r
+ + " how the split position ratio works.");\r
+ final Label l3 = new Label(\r
+ "You may resize the left and right regions by dragging the"\r
+ + " vertical split handle left or right. Resizing the"\r
+ + " upper and lower regions has been disabled.");\r
+ ts.addTab(l1);\r
+ ts.setTabCaption(l1, "SplitPanel demo");\r
+ ts.addTab(l2);\r
+ ts.setTabCaption(l2, "Resizing");\r
+ ts.addTab(l3);\r
+ ts.setTabCaption(l3, "Resizing the regions");\r
+ ts.setSizeFull();\r
+\r
+ // Add the components to the sub-SplitPanel\r
+ subSP.addComponent(ts);\r
+ subSP.addComponent(new Label("Comment area"));\r
+\r
+ // Add sub-SplitPanel to main SplitPanel\r
+ demoSP.addComponent(subSP);\r
+\r
+ return demoSP;\r
+ }\r
+}
\ No newline at end of file