import com.itmill.toolkit.demo.sampler.features.trees.TreeMouseEvents;
import com.itmill.toolkit.demo.sampler.features.trees.TreeMultiSelect;
import com.itmill.toolkit.demo.sampler.features.trees.TreeSingleSelect;
+import com.itmill.toolkit.demo.sampler.features.windows.NativeWindow;
import com.itmill.toolkit.demo.sampler.features.windows.Subwindow;
import com.itmill.toolkit.demo.sampler.features.windows.SubwindowAutoSized;
import com.itmill.toolkit.demo.sampler.features.windows.SubwindowClose;
super(
"Windows",
"Windows",
- "Windows can for instance organize the UI, save space (popup windows), focus attention (modal windows), provide multiple views for multitasking (native browser windows).",
+ "Windows can (for instance) organize the UI, save space (popup windows), focus attention (modal windows), or provide multiple views for the same data for multitasking or dual screen setups (native browser windows).",
new Feature[] {
//
new Subwindow(), //
new SubwindowSized(), //
new SubwindowPositioned(), //
new SubwindowClose(), //
- // new NativeWindow(), // in progress
+ new NativeWindow(), //
});
}
}
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.demo.sampler.FeatureSet.Links;\r
+import com.itmill.toolkit.demo.sampler.FeatureSet.Windows;\r
import com.itmill.toolkit.ui.Window;\r
\r
public class NativeWindow extends Feature {\r
\r
@Override\r
public String getName() {\r
- return "Subwindow";\r
+ return "Native window";\r
}\r
\r
@Override\r
public String getDescription() {\r
- return "A <i>Subwindow</i> is a popup-window within the browser window."\r
- + " There can be multiple subwindows in one (native) browser"\r
- + " window.";\r
+ return "A <i>NativeWindow</i> is a separate browser window, which"\r
+ + " looks and works just like the main window.<br/>"\r
+ + " There are multiple ways to make native windows; you can"\r
+ + " override Application.getWindow() (recommended in any case)"\r
+ + " but you can also use Application.addWindow() - the added"\r
+ + " window will be available from a separate URL (which is"\r
+ + " based on the window name.)<br/> When you view Sampler in"\r
+ + " a new window, the getWindow() method is used, this example"\r
+ + " also uses addWindow().";\r
}\r
\r
@Override\r
\r
@Override\r
public Class[] getRelatedFeatures() {\r
- return new Class[] { SubwindowModal.class };\r
+ return new Class[] { Subwindow.class, Links.class, Windows.class };\r
}\r
\r
@Override\r
package com.itmill.toolkit.demo.sampler.features.windows;\r
\r
+import java.util.Date;\r
+\r
import com.itmill.toolkit.terminal.ExternalResource;\r
import com.itmill.toolkit.ui.Button;\r
import com.itmill.toolkit.ui.Label;\r
+import com.itmill.toolkit.ui.Link;\r
import com.itmill.toolkit.ui.VerticalLayout;\r
import com.itmill.toolkit.ui.Window;\r
import com.itmill.toolkit.ui.Button.ClickEvent;\r
-import com.itmill.toolkit.ui.Window.CloseEvent;\r
\r
public class NativeWindowExample extends VerticalLayout {\r
\r
- Window window;\r
-\r
public NativeWindowExample() {\r
-\r
- // Create the window\r
- window = new Window("Automatically sized subwindow");\r
- // Native windows should be explicitly removed from the application\r
- // when appropriate; in this case when closed:\r
- window.addListener(new Window.CloseListener() {\r
- // inline close-listener\r
- public void windowClose(CloseEvent e) {\r
- getApplication().removeWindow(window);\r
- }\r
- });\r
-\r
- // Configure the windows layout; by default a VerticalLayout\r
- VerticalLayout layout = (VerticalLayout) window.getLayout();\r
- layout.setMargin(true);\r
- layout.setSpacing(true);\r
- // make it undefined for auto-sizing window\r
- layout.setSizeUndefined();\r
-\r
- // Add some content;\r
- window.addComponent(new Label("This is is native (browser) window."));\r
+ setSpacing(true);\r
\r
// Add a button for opening the window\r
Button open = new Button("Open native window",\r
new Button.ClickListener() {\r
// inline click-listener\r
public void buttonClick(ClickEvent event) {\r
+ Window window = new NativeWindow();\r
+ // Add the window to the application\r
getApplication().addWindow(window);\r
- getApplication().getMainWindow().open(\r
- new ExternalResource(window.getURL()),\r
- "NativeWindowExample", 500, 500,\r
- Window.BORDER_NONE);\r
+\r
+ // Get the URL for the window, and open that in a new\r
+ // browser window, in this case in a small window.\r
+ getWindow().open(new ExternalResource(window.getURL()), // URL\r
+ "_blank", // window name\r
+ 500, // width\r
+ 200, // weight\r
+ Window.BORDER_NONE // decorations\r
+ );\r
}\r
});\r
addComponent(open);\r
\r
+ // Add a link for opening sampler in a new window; this will cause\r
+ // Sampler's getWindow() to create a new Window.\r
+ Link openSampler = new Link("Open Sampler in a new window",\r
+ new ExternalResource("#"), // URL\r
+ "_blank", // window name\r
+ 700, // width\r
+ 500, // height\r
+ Link.TARGET_BORDER_NONE // decorations\r
+ );\r
+ addComponent(openSampler);\r
+\r
+ }\r
+\r
+ /*\r
+ * We'll be instantiating the same window multiple times, so we'll make an\r
+ * inner class for separation. You could of course just create a new\r
+ * Window() and addCompoent to that instead.\r
+ */\r
+ class NativeWindow extends Window {\r
+ NativeWindow() {\r
+ // Configure the layout\r
+ VerticalLayout layout = (VerticalLayout) getLayout();\r
+ layout.setMargin(true);\r
+ layout.setSpacing(true);\r
+\r
+ // Add some content; a label and a close-button\r
+ Label message = new Label("This is a native window, created at "\r
+ + new Date());\r
+ addComponent(message);\r
+\r
+ // It's a good idea to remove the window when it's closed (also\r
+ // when the browser window 'x' is used), unless you explicitly\r
+ // want the window to persist (if it's not removed from the\r
+ // application, it can still be retrieved from it's URL.\r
+ addListener(new CloseListener() {\r
+ public void windowClose(CloseEvent e) {\r
+ // remove from application\r
+ getApplication().removeWindow(NativeWindow.this);\r
+ }\r
+ });\r
+\r
+ }\r
}\r
\r
}
\ No newline at end of file
\r
import com.itmill.toolkit.demo.sampler.APIResource;\r
import com.itmill.toolkit.demo.sampler.Feature;\r
+import com.itmill.toolkit.demo.sampler.FeatureSet;\r
import com.itmill.toolkit.demo.sampler.NamedExternalResource;\r
import com.itmill.toolkit.ui.Window;\r
\r
\r
@Override\r
public Class[] getRelatedFeatures() {\r
- return new Class[] { SubwindowModal.class };\r
+ return new Class[] { NativeWindow.class, FeatureSet.Windows.class };\r
}\r
\r
@Override\r
\r
import com.itmill.toolkit.demo.sampler.APIResource;\r
import com.itmill.toolkit.demo.sampler.Feature;\r
+import com.itmill.toolkit.demo.sampler.FeatureSet;\r
import com.itmill.toolkit.demo.sampler.NamedExternalResource;\r
import com.itmill.toolkit.ui.Window;\r
\r
\r
@Override\r
public Class[] getRelatedFeatures() {\r
- return new Class[] { SubwindowModal.class };\r
+ return new Class[] { SubwindowSized.class, FeatureSet.Windows.class };\r
}\r
\r
@Override\r
\r
import com.itmill.toolkit.demo.sampler.APIResource;\r
import com.itmill.toolkit.demo.sampler.Feature;\r
+import com.itmill.toolkit.demo.sampler.FeatureSet;\r
import com.itmill.toolkit.demo.sampler.NamedExternalResource;\r
import com.itmill.toolkit.ui.Window;\r
\r
\r
@Override\r
public String getName() {\r
- return "Subwindow";\r
+ return "Window closing";\r
}\r
\r
@Override\r
\r
@Override\r
public Class[] getRelatedFeatures() {\r
- return new Class[] { SubwindowModal.class };\r
+ return new Class[] { FeatureSet.Windows.class };\r
}\r
\r
@Override\r
\r
import com.itmill.toolkit.demo.sampler.APIResource;\r
import com.itmill.toolkit.demo.sampler.Feature;\r
+import com.itmill.toolkit.demo.sampler.FeatureSet;\r
import com.itmill.toolkit.demo.sampler.NamedExternalResource;\r
-import com.itmill.toolkit.demo.sampler.features.blueprints.ProminentPrimaryAction;\r
import com.itmill.toolkit.ui.Window;\r
\r
public class SubwindowModal extends Feature {\r
\r
@Override\r
public String getDescription() {\r
- return "A <i>modal window</i> blocks access to the rest of the application, "\r
- + "until the window is closed (or made non-modal).<br/>"\r
+ return "A <i>modal window</i> blocks access to the rest of the application"\r
+ + " until the window is closed (or made non-modal).<br/>"\r
+ " Use modal windows when the user must finish the task in the"\r
+ " window before continuing.";\r
}\r
return new Class[] {\r
//\r
Subwindow.class, //\r
- ProminentPrimaryAction.class, //\r
- };\r
+ FeatureSet.Windows.class };\r
}\r
\r
@Override\r
\r
import com.itmill.toolkit.demo.sampler.APIResource;\r
import com.itmill.toolkit.demo.sampler.Feature;\r
+import com.itmill.toolkit.demo.sampler.FeatureSet;\r
import com.itmill.toolkit.demo.sampler.NamedExternalResource;\r
import com.itmill.toolkit.ui.Window;\r
\r
\r
@Override\r
public Class[] getRelatedFeatures() {\r
- return new Class[] { SubwindowModal.class };\r
+ return new Class[] { FeatureSet.Windows.class };\r
}\r
\r
@Override\r
layout.setComponentAlignment(close, "right bottom");\r
\r
// Add buttons for opening the subwindow\r
- Button fifty = new Button("Open positioned window at 50x50",\r
+ Button fifty = new Button("Open window at position 50x50",\r
new Button.ClickListener() {\r
// inline click-listener\r
public void buttonClick(ClickEvent event) {\r
- subwindow.setPositionX(50);\r
- subwindow.setPositionY(50);\r
if (subwindow.getParent() == null) {\r
// Open the subwindow by adding it to the main\r
// window\r
getApplication().getMainWindow().addWindow(\r
subwindow);\r
}\r
+\r
+ // Set window position\r
+ subwindow.setPositionX(50);\r
+ subwindow.setPositionY(50);\r
}\r
});\r
addComponent(fifty);\r
- Button onefifty = new Button("Open positioned window at 150x150",\r
+ Button onefifty = new Button("Open window at position 150x200",\r
new Button.ClickListener() {\r
// inline click-listener\r
public void buttonClick(ClickEvent event) {\r
- subwindow.setPositionX(150);\r
- subwindow.setPositionY(150);\r
if (subwindow.getParent() == null) {\r
// Open the subwindow by adding it to the main\r
// window\r
getApplication().getMainWindow().addWindow(\r
subwindow);\r
}\r
+\r
+ // Set window position\r
+ subwindow.setPositionX(150);\r
+ subwindow.setPositionY(200);\r
}\r
});\r
addComponent(onefifty);\r
new Button.ClickListener() {\r
// inline click-listener\r
public void buttonClick(ClickEvent event) {\r
- subwindow.center();\r
if (subwindow.getParent() == null) {\r
// Open the subwindow by adding it to the main\r
// window\r
getApplication().getMainWindow().addWindow(\r
subwindow);\r
}\r
+\r
+ // Center the window\r
+ subwindow.center();\r
}\r
});\r
addComponent(center);\r
\r
import com.itmill.toolkit.demo.sampler.APIResource;\r
import com.itmill.toolkit.demo.sampler.Feature;\r
+import com.itmill.toolkit.demo.sampler.FeatureSet;\r
import com.itmill.toolkit.demo.sampler.NamedExternalResource;\r
import com.itmill.toolkit.ui.Window;\r
\r
\r
@Override\r
public Class[] getRelatedFeatures() {\r
- return new Class[] { SubwindowModal.class };\r
+ return new Class[] { SubwindowAutoSized.class, FeatureSet.Windows.class };\r
}\r
\r
@Override\r