aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/itmill/toolkit/tests/featurebrowser/FeatureFrameWindow.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/itmill/toolkit/tests/featurebrowser/FeatureFrameWindow.java')
-rw-r--r--src/com/itmill/toolkit/tests/featurebrowser/FeatureFrameWindow.java166
1 files changed, 166 insertions, 0 deletions
diff --git a/src/com/itmill/toolkit/tests/featurebrowser/FeatureFrameWindow.java b/src/com/itmill/toolkit/tests/featurebrowser/FeatureFrameWindow.java
new file mode 100644
index 0000000000..62bd3bd9a0
--- /dev/null
+++ b/src/com/itmill/toolkit/tests/featurebrowser/FeatureFrameWindow.java
@@ -0,0 +1,166 @@
+/* *************************************************************************
+
+ IT Mill Toolkit
+
+ Development of Browser User Interfaces Made Easy
+
+ Copyright (C) 2000-2006 IT Mill Ltd
+
+ *************************************************************************
+
+ This product is distributed under commercial license that can be found
+ from the product package on license.pdf. Use of this product might
+ require purchasing a commercial license from IT Mill Ltd. For guidelines
+ on usage, see licensing-guidelines.html
+
+ *************************************************************************
+
+ For more information, contact:
+
+ IT Mill Ltd phone: +358 2 4802 7180
+ Ruukinkatu 2-4 fax: +358 2 4802 7181
+ 20540, Turku email: info@itmill.com
+ Finland company www: www.itmill.com
+
+ Primary source for information and releases: www.itmill.com
+
+ ********************************************************************** */
+
+package com.itmill.toolkit.tests.featurebrowser;
+
+import java.util.HashMap;
+import java.util.List;
+
+import com.itmill.toolkit.ui.*;
+import com.itmill.toolkit.ui.Button.ClickEvent;
+
+public class FeatureFrameWindow extends Feature implements Button.ClickListener {
+
+ private Button addButton = new Button("Add to application", this, "addWin");
+
+ private Button removeButton = new Button("Remove from application", this,
+ "delWin");
+
+ private FrameWindow demoWindow;
+
+ private HashMap windowToFramesetMap = new HashMap();
+
+ private int count = 0;
+
+ protected Component getDemoComponent() {
+ OrderedLayout l = new OrderedLayout();
+ demoWindow = new FrameWindow("Feature Test Window");
+ demoWindow.getFrameset()
+ .newFrame(createFrame(demoWindow.getFrameset()));
+
+ l.addComponent(addButton);
+ l.addComponent(removeButton);
+ updateWinStatus();
+
+ // Properties
+ propertyPanel = new PropertyPanel(demoWindow);
+ propertyPanel.dependsOn(addButton);
+ propertyPanel.dependsOn(removeButton);
+ Form ap = propertyPanel.createBeanPropertySet(new String[] { "width",
+ "height", "name", "border", "theme" });
+ ap.replaceWithSelect("border", new Object[] {
+ new Integer(Window.BORDER_DEFAULT),
+ new Integer(Window.BORDER_NONE),
+ new Integer(Window.BORDER_MINIMAL) }, new Object[] { "Default",
+ "None", "Minimal" });
+
+ propertyPanel.addProperties("FrameWindow Properties", ap);
+
+ setJavadocURL("ui/FrameWindow.html");
+
+ return l;
+ }
+
+ protected String getDescriptionXHTML() {
+ return "<p>This component implements a window that contains a hierarchical set of frames. "
+ + "Each frame can contain a web-page, window or a set of frames that divides the space "
+ + "horizontally or vertically.</p>";
+ }
+
+ protected String getExampleSrc() {
+ return "FrameWindow f = new FrameWindow(\"Frame example\");\n"
+ + "f.getFrameset().newFrame(window);\n"
+ + "f.getFrameset().newFrame(resource,\"targetName\");\n";
+ }
+
+ protected String getImage() {
+ return "icon_demo.png";
+ }
+
+ protected String getTitle() {
+ return "FrameWindow";
+ }
+
+ public void addWin() {
+ getApplication().addWindow(demoWindow);
+ updateWinStatus();
+ }
+
+ public void delWin() {
+ getApplication().removeWindow(demoWindow);
+ updateWinStatus();
+ }
+
+ private void updateWinStatus() {
+ if (demoWindow.getApplication() == null) {
+ addButton.setEnabled(true);
+ removeButton.setEnabled(false);
+ } else {
+ addButton.setEnabled(false);
+ removeButton.setEnabled(true);
+ }
+ }
+
+ public void buttonClick(ClickEvent event) {
+
+ if (event.getButton().getCaption().equals("Remove")) {
+ Window w = event.getButton().getWindow();
+ FrameWindow.Frameset fs = (FrameWindow.Frameset) windowToFramesetMap
+ .get(w);
+ if (fs == demoWindow.getFrameset() && fs.size() <= 1) {
+ // Do not remove the last frame
+ } else if (fs.size() > 1) {
+ fs.removeFrame(fs.getFrame(w.getName()));
+ windowToFramesetMap.remove(w);
+ } else {
+ FrameWindow.Frameset p = fs.getParentFrameset();
+ if (p != demoWindow.getFrameset() || p.size() > 1)
+ p.removeFrame(fs);
+ if (p.size() == 0)
+ p.newFrame(createFrame(p));
+ }
+ }
+
+ if (event.getButton().getCaption().equals("Split")) {
+ Window w = event.getButton().getWindow();
+ FrameWindow.Frameset fs = (FrameWindow.Frameset) windowToFramesetMap
+ .get(w);
+ int index = 0;
+ List l = fs.getFrames();
+ while (index < l.size() && fs.getFrame(index).getWindow() != w)
+ index++;
+ fs.removeFrame(fs.getFrame(w.getName()));
+ windowToFramesetMap.remove(w);
+ if (index > fs.size())
+ index = fs.size();
+ fs = fs.newFrameset((Math.random() > 0.5), index);
+ for (int i = 2 + (int) (Math.random() * 2.0); i > 0; i--)
+ fs.newFrame(createFrame(fs));
+ }
+ }
+
+ private Window createFrame(FrameWindow.Frameset fs) {
+ Window w = new Window();
+ w.addComponent(new Label("<b>Frame: " + (++count) + "</b>",
+ Label.CONTENT_UIDL));
+ w.addComponent(new Button("Split", this));
+ w.addComponent(new Button("Remove", this));
+ windowToFramesetMap.put(w, fs);
+ return w;
+ }
+}