|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object net.sf.click.control.AbstractControl net.sf.click.extras.tree.Tree net.sf.click.extras.tree.CheckboxTree
Implementation of a tree control that provides checkboxes to enable selection of nodes. This implementation assumes the tree is wrapped inside a html form. Each time the form is submitted, all checkbox values are processed by this control.
Below is screenshot of how the tree will render in a browser.public class PlainTreePage extends BorderPage { protected Submit submit; protected Submit cancel; protected Form form; public PlainTreePage() { Tree tree = createTree(); form = createForm(); form.add(tree); addControl(form); submit = new Submit("submit", this, "onSubmitClick"); cancel = new Submit("cancel", this, "onCancelClick"); form.add(submit); form.add(cancel); } public Tree createTree() { Tree tree = new CheckboxTree("tree"); // Build the tree model, by default the root node is not rendered. // This can be changed by calling setRootNodeDisplayed(true); TreeNode root = new TreeNode("c:"); TreeNode dev = new TreeNode("dev", "1", root); new TreeNode("java.pdf", "2", dev); new TreeNode("ruby.pdf", "3", dev); TreeNode programFiles = new TreeNode("program files", "4", root); TreeNode adobe = new TreeNode("Adobe", "5", programFiles); // This node is a directory not a file, so setChildrenSupported to true. adobe.setChildrenSupported(true); TreeNode download = new TreeNode("downloads", "6", root); TreeNode web = new TreeNode("web", "7", download); new TreeNode("html.pdf", "8", web); new TreeNode("css.html", "9", web); TreeNode databases = new TreeNode("databases", "10", download); new TreeNode("mysql.html", "11", databases); new TreeNode("oracle.pdf", "12", databases); new TreeNode("postgres", "13", databases); tree.setRootNode(root); return tree; } public Form createForm() { Form form = new Form("form") { // PLEASE NOTE: CheckboxTree will only be processed by form if the // Form is submitted. Thus expanding and collapsing Tree nodes // won't work by default because the Tree won't be processed. // Here we override the default behavior and explicitly process // CheckboxTree so that expanding and collapsing nodes will still work, // even if the Form was not submitted. public boolean onProcess() { if (form.isFormSubmission()) { return super.onProcess(); } else { return tree.onProcess(); } } }; return form; } }
Tree
,
Serialized FormNested Class Summary | |
protected class |
CheckboxTree.BaseCheckboxJavascriptRenderer
Please note this class is only meant for developers of this control, not users. |
protected class |
CheckboxTree.CheckboxCookieHandler
Please note this class is only meant for developers of this control, not users. |
protected class |
CheckboxTree.CheckboxCookieJavascriptRenderer
Please note this class is only meant for developers of this control, not users. |
protected static interface |
CheckboxTree.CheckboxJavascriptRenderer
Please note this interface is only meant for developers of this control, not users. |
protected class |
CheckboxTree.CheckboxSessionHandler
Please note this class is only meant for developers of this control, not users. |
protected class |
CheckboxTree.CheckboxSessionJavascriptRenderer
Please note this class is only meant for developers of this control, not users. |
Nested classes inherited from class net.sf.click.extras.tree.Tree |
Tree.AbstractJavascriptRenderer, Tree.Callback, Tree.CookieHandler, Tree.CookieRenderer, Tree.JavascriptHandler, Tree.JavascriptRenderer, Tree.SessionHandler, Tree.SessionRenderer |
Field Summary | |
static String |
HTML_IMPORTS
Client side javascript import. |
protected static String[] |
TREE_RESOURCES
The Tree resource file names. |
Fields inherited from class net.sf.click.extras.tree.Tree |
COLLAPSE_ICON, EXPAND_ICON, EXPAND_TREE_NODE_PARAM, expandOrCollapseNodeIds, JAVASCRIPT_COOKIE_IMPORTS, JAVASCRIPT_COOKIE_POLICY, JAVASCRIPT_IMPORTS, JAVASCRIPT_SESSION_POLICY, javascriptHandler, LEAF_ICON, rootNode, SELECT_TREE_NODE_PARAM, selectOrDeselectNodeIds, TREE_IMAGES, TREE_IMPORTS |
Fields inherited from class net.sf.click.control.AbstractControl |
actionListener, attributes, listener, listenerMethod, messages, name, parent, styles |
Fields inherited from interface net.sf.click.Control |
CONTROL_MESSAGES |
Constructor Summary | |
CheckboxTree()
Create a Tree with no name defined. |
|
CheckboxTree(String name)
Create an Tree control for the given name. |
Method Summary | |
void |
bindRequestValue()
This method binds any expand/collapse changes from the request parameters. |
void |
bindSelectOrDeselectValues()
Binds the users request of selected nodes to the tree's nodes. |
protected Decorator |
createDecorator()
Creates and returns a custom Decorator that will render a Checkbox
for each tree node. |
protected Tree.JavascriptHandler |
createJavascriptHandler(int javascriptPolicy)
Creates and return a new JavascriptHandler for the specified tree node. |
String |
getHtmlImports()
Return the HTML head import statements for the CSS stylesheet file: click/tree/checkbox-tree.js. |
protected String |
getInputType()
Return the input type of the CheckboxTree, default value is "checkbox". |
boolean |
isSelectChildNodes()
Returns true if child nodes will also be selected/deselected. |
void |
onDeploy(ServletContext servletContext)
Deploy all files defined in the constant TREE_RESOURCES
to the click/tree web directory when the application is initialized. |
protected void |
onFormSubmission()
This method is invoked when the CheckboxTree parent Form is submitted. |
void |
onInit()
Create and set the Tree's decorator that will render a Checkbox for each tree node. |
protected void |
renderCheckbox(HtmlStringBuffer buffer,
TreeNode treeNode)
Renders a Checkbox for the specified treeNode to the buffer. |
void |
setSelectChildNodes(boolean selectChildNodes)
Sets whether child nodes will also be selected/deselected. |
Methods inherited from class net.sf.click.control.AbstractControl |
addStyleClass, appendAttributes, getActionListener, getAttribute, getAttributes, getContext, getId, getMessage, getMessage, getMessage, getMessages, getName, getPage, getParent, getStyle, getStyles, getTag, hasAttribute, hasAttributes, hasStyles, onDestroy, onRender, registerActionEvent, removeStyleClass, renderTagBegin, renderTagEnd, setAttribute, setId, setName, setParent, setStyle |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
public static final String HTML_IMPORTS
Tree
.
protected static final String[] TREE_RESOURCES
Constructor Detail |
public CheckboxTree(String name)
name
- the tree name
IllegalArgumentException
- if the name is nullpublic CheckboxTree()
Method Detail |
public void onInit()
createDecorator()
,
Control.onInit()
public boolean isSelectChildNodes()
public void setSelectChildNodes(boolean selectChildNodes)
JavaScript
support is enabled.
selectChildNodes
- determines if child nodes will be
selected/deselectedpublic String getHtmlImports()
getHtmlImports
in interface Control
getHtmlImports
in class Tree
public void onDeploy(ServletContext servletContext)
TREE_RESOURCES
to the click/tree web directory when the application is initialized.
This method calls super.onDeploy() to copy any files defined in the
super class.
onDeploy
in interface Control
onDeploy
in class Tree
servletContext
- the servlet contextControl.onDeploy(ServletContext)
public void bindSelectOrDeselectValues()
onFormSubmission()
for more details.
If you do not want CheckboxTree to automatically invoke this method,
you can override onFormSubmission()
to do nothing by default.
Then you must manually invoke this method when the form is submitted.
For example:
public void onInit() { CheckboxTree tree = new CheckboxTree("tree") { public void onFormSubmission() { // Do nothing } } Form form = createForm(); form.add(tree); Submit submit = new Submit("submit"); form.add(submit); submit.setActionListener(new ActionListener() { public boolean onAction(Control source) { tree.bindSelectOrDeselectValues(); return true; } }); addControl(form); }
bindSelectOrDeselectValues
in class Tree
public void bindRequestValue()
bindRequestValue
in class Tree
Tree.bindExpandOrCollapseValues()
protected void onFormSubmission()
bindSelectOrDeselectValues()
in order
to update the selected and deselected nodes.
protected Decorator createDecorator()
Decorator
that will render a Checkbox
for each tree node.
protected void renderCheckbox(HtmlStringBuffer buffer, TreeNode treeNode)
getInputType()
which returns "checkbox"
by default, but allows subclasses to change the input type if necessary.
buffer
- string buffer containing the markuptreeNode
- treeNode to renderprotected String getInputType()
protected Tree.JavascriptHandler createJavascriptHandler(int javascriptPolicy)
createJavascriptHandler
in class Tree
javascriptPolicy
- the current javascript policy
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |