/* *************************************************************************
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.demo.features;
import com.itmill.toolkit.ui.*;
import com.itmill.toolkit.ui.Window.CloseEvent;
public class FeatureWindow extends Feature implements Window.CloseListener {
private Button addButton = new Button("Add window", this, "addWin");
private Button removeButton = new Button("Remove window", this, "delWin");
private Window demoWindow;
private Form windowProperties;
public FeatureWindow() {
super();
}
protected Component getDemoComponent() {
OrderedLayout layoutRoot = new OrderedLayout();
OrderedLayout layoutUpper = new OrderedLayout();
OrderedLayout layoutLower = new OrderedLayout();
demoWindow = new Window("Feature Test Window");
demoWindow.addListener(this);
demoWindow.setWidth(400);
demoWindow.setHeight(200);
demoWindow.setTheme("default");
layoutUpper.addComponent(addButton);
layoutUpper.addComponent(removeButton);
updateWinStatus();
// Properties
propertyPanel = new PropertyPanel(demoWindow);
propertyPanel.dependsOn(addButton);
propertyPanel.dependsOn(removeButton);
windowProperties = propertyPanel.createBeanPropertySet(new String[] {
"width", "height", "name", "theme", "border", "scrollable", });
windowProperties.replaceWithSelect("border", new Object[] {
new Integer(Window.BORDER_DEFAULT),
new Integer(Window.BORDER_NONE),
new Integer(Window.BORDER_MINIMAL) }, new Object[] { "Default",
"None", "Minimal" });
// Disabled, not applicable for default theme
windowProperties.getField("border").setEnabled(false);
windowProperties.getField("scrollable").setEnabled(false);
propertyPanel.addProperties("Window Properties", windowProperties);
windowProperties.getField("width").setDescription(
"Minimum width is 100");
windowProperties.getField("height").setDescription(
"Minimum height is 100");
setJavadocURL("ui/Window.html");
layoutRoot.addComponent(layoutUpper);
layoutRoot.addComponent(layoutLower);
return layoutRoot;
}
protected String getExampleSrc() {
return "Window win = new Window();\n"
+ "getApplication().addWindow(win);\n";
}
protected String getDescriptionXHTML() {
return "The window support in IT Mill Toolkit allows for opening and closing windows, "
+ "refreshing one window from another (for asynchronous terminals), "
+ "resizing windows and scrolling window content. "
+ "There are also a number of preset window border styles defined by "
+ "this feature.";
}
protected String getImage() {
return "icon_demo.png";
}
protected String getTitle() {
return "Window";
}
public void addWin() {
propertyPanel.commit();
getApplication().addWindow(demoWindow);
demoWindow.removeAllComponents();
demoWindow
.addComponent(new Label(
"
This is a new window created by "
+ "Add window"
+ " button's event.
You may simply"
+ " close this window or select "
+ "Remove window from the Feature Browser window.",
Label.CONTENT_XHTML));
// prevent user to change window name tag (after window is created)
windowProperties.getField("name").setEnabled(false);
windowProperties.getField("name").setReadOnly(true);
demoWindow.setVisible(true);
updateWinStatus();
}
public void delWin() {
getApplication().removeWindow(demoWindow);
// allow user to change window name tag (before window is created)
windowProperties.getField("name").setEnabled(true);
windowProperties.getField("name").setReadOnly(false);
updateWinStatus();
}
private void updateWinStatus() {
if (demoWindow.getApplication() == null) {
addButton.setEnabled(true);
removeButton.setEnabled(false);
} else {
addButton.setEnabled(false);
removeButton.setEnabled(true);
}
}
public void windowClose(CloseEvent e) {
delWin();
}
}