You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2013/05/24 09:29:37 UTC
[4/4] git commit: WICKET-5201 Remove deprecated classes/methods/fields
WICKET-5201 Remove deprecated classes/methods/fields
Remove the old Swing based Tree components
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/fbe42230
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/fbe42230
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/fbe42230
Branch: refs/heads/master
Commit: fbe422303dc72fd0ace44a407bc1ecc46d2feb36
Parents: 4e6837d
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Fri May 24 10:28:33 2013 +0300
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Fri May 24 10:28:33 2013 +0300
----------------------------------------------------------------------
.../wicket/devutils/diskstore/PageWindowModel.java | 74 -
.../examples/ajax/builtin/AjaxApplication.java | 6 -
.../examples/ajax/builtin/tree/BaseTreePage.html | 18 -
.../examples/ajax/builtin/tree/BaseTreePage.java | 162 --
.../examples/ajax/builtin/tree/EditablePanel.html | 20 -
.../examples/ajax/builtin/tree/EditablePanel.java | 58 -
.../ajax/builtin/tree/EditableTreeTablePage.html | 22 -
.../ajax/builtin/tree/EditableTreeTablePage.java | 79 -
.../examples/ajax/builtin/tree/ModelBean.java | 188 --
.../ajax/builtin/tree/PropertyEditableColumn.java | 88 -
.../examples/ajax/builtin/tree/SimpleTreePage.html | 18 -
.../examples/ajax/builtin/tree/SimpleTreePage.java | 54 -
.../examples/ajax/builtin/tree/TreeTablePage.html | 15 -
.../examples/ajax/builtin/tree/TreeTablePage.java | 71 -
.../extensions/markup/html/tree/AbstractTree.java | 1771 ---------------
.../extensions/markup/html/tree/BaseTree.html | 23 -
.../extensions/markup/html/tree/BaseTree.java | 478 ----
.../markup/html/tree/DefaultAbstractTree.java | 589 -----
.../markup/html/tree/DefaultTreeState.java | 297 ---
.../extensions/markup/html/tree/ITreeState.java | 128 --
.../markup/html/tree/ITreeStateListener.java | 69 -
.../markup/html/tree/LabelIconPanel.html | 20 -
.../markup/html/tree/LabelIconPanel.java | 188 --
.../extensions/markup/html/tree/LabelTree.java | 110 -
.../extensions/markup/html/tree/LinkIconPanel.html | 20 -
.../extensions/markup/html/tree/LinkIconPanel.java | 89 -
.../extensions/markup/html/tree/LinkTree.java | 111 -
.../extensions/markup/html/tree/LinkType.java | 62 -
.../wicket/extensions/markup/html/tree/Tree.html | 25 -
.../wicket/extensions/markup/html/tree/Tree.java | 148 --
.../markup/html/tree/WicketTreeModel.java | 56 -
.../extensions/markup/html/tree/package.html | 27 -
.../markup/html/tree/res/base-tree-images.png | Bin 969 -> 0 bytes
.../extensions/markup/html/tree/res/base-tree.css | 131 --
.../markup/html/tree/res/dotted-line.png | Bin 198 -> 0 bytes
.../markup/html/tree/res/folder-closed.gif | Bin 372 -> 0 bytes
.../markup/html/tree/res/folder-open.gif | Bin 376 -> 0 bytes
.../extensions/markup/html/tree/res/item.gif | Bin 582 -> 0 bytes
.../markup/html/tree/res/tree-images.png | Bin 343 -> 0 bytes
.../extensions/markup/html/tree/res/tree-table.css | 232 --
.../extensions/markup/html/tree/res/tree.css | 142 --
.../wicket/extensions/markup/html/tree/res/tree.js | 157 --
.../markup/html/tree/table/AbstractColumn.java | 132 --
.../html/tree/table/AbstractColumnsView.java | 121 -
.../html/tree/table/AbstractPropertyColumn.java | 171 --
.../markup/html/tree/table/ColumnLocation.java | 169 --
.../extensions/markup/html/tree/table/IColumn.java | 124 -
.../markup/html/tree/table/IRenderable.java | 46 -
.../markup/html/tree/table/MiddleColumnsView.java | 229 --
.../html/tree/table/PropertyRenderableColumn.java | 165 --
.../markup/html/tree/table/PropertyTreeColumn.java | 99 -
.../markup/html/tree/table/SideColumnsView.java | 197 --
.../markup/html/tree/table/TreeTable.html | 56 -
.../markup/html/tree/table/TreeTable.java | 426 ----
.../markup/html/tree/table/TreeTableItem.html | 24 -
.../markup/html/tree/table/TreeTableItem.java | 46 -
...veChildToParentNodeMarkedForRecreationTest.java | 48 -
...ildToParentNodeMarkedForRecreationTestPage.html | 23 -
...ildToParentNodeMarkedForRecreationTestPage.java | 78 -
.../extensions/markup/html/tree/TreeTest.java | 144 --
60 files changed, 0 insertions(+), 8044 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/fbe42230/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/PageWindowModel.java
----------------------------------------------------------------------
diff --git a/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/PageWindowModel.java b/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/PageWindowModel.java
deleted file mode 100644
index 31f548c..0000000
--- a/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/PageWindowModel.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.devutils.diskstore;
-
-import java.util.List;
-
-import javax.swing.tree.DefaultMutableTreeNode;
-import javax.swing.tree.DefaultTreeModel;
-
-import org.apache.wicket.Application;
-import org.apache.wicket.extensions.markup.html.tree.AbstractTree;
-import org.apache.wicket.model.AbstractReadOnlyModel;
-import org.apache.wicket.pageStore.PageWindowManager.PageWindow;
-import org.apache.wicket.serialize.ISerializer;
-
-/**
- * A model which can be used to show the PageWindows in a {@link AbstractTree tree}
- */
-// Currently not used
-class PageWindowModel extends AbstractReadOnlyModel<DefaultTreeModel>
-{
- private final DefaultTreeModel treeModel;
-
- public PageWindowModel(String sessionId, DebugDiskDataStore dataStore)
- {
- List<PageWindow> pageWindows = dataStore.getLastPageWindows(sessionId, 50);
- DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode();
- initialize(rootNode, pageWindows, dataStore, sessionId);
- treeModel = new DefaultTreeModel(rootNode);
- }
-
- @Override
- public DefaultTreeModel getObject()
- {
- return treeModel;
- }
-
- private void initialize(final DefaultMutableTreeNode root, final List<PageWindow> pageWindows,
- DebugDiskDataStore dataStore, String sessionId)
- {
- ISerializer serializer = Application.get().getFrameworkSettings().getSerializer();
-
- for (PageWindow pageWindow : pageWindows)
- {
- int pageId = pageWindow.getPageId();
- DefaultMutableTreeNode pageIdNode = new DefaultMutableTreeNode(pageId);
- root.add(pageIdNode);
-
- byte[] data = dataStore.getData(sessionId, pageId);
- Object page = serializer.deserialize(data);
- DefaultMutableTreeNode pageNameNode = new DefaultMutableTreeNode(page.getClass()
- .getName());
- pageIdNode.add(pageNameNode);
-
- DefaultMutableTreeNode pageSizeNode = new DefaultMutableTreeNode("Size: " +
- data.length + " bytes");
- pageIdNode.add(pageSizeNode);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/wicket/blob/fbe42230/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/AjaxApplication.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/AjaxApplication.java b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/AjaxApplication.java
index a276d99..88b9209 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/AjaxApplication.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/AjaxApplication.java
@@ -19,9 +19,6 @@ package org.apache.wicket.examples.ajax.builtin;
import org.apache.wicket.Page;
import org.apache.wicket.examples.WicketExampleApplication;
import org.apache.wicket.examples.ajax.builtin.modal.ModalWindowPage;
-import org.apache.wicket.examples.ajax.builtin.tree.EditableTreeTablePage;
-import org.apache.wicket.examples.ajax.builtin.tree.SimpleTreePage;
-import org.apache.wicket.examples.ajax.builtin.tree.TreeTablePage;
import org.apache.wicket.response.filter.AjaxServerAndClientTimeFilter;
@@ -69,9 +66,6 @@ public class AjaxApplication extends WicketExampleApplication
mountPage("tabbed-panel", TabbedPanelPage.class);
mountPage("todo-list", TodoList.class);
mountPage("world-clock", WorldClockPage.class);
- mountPage("tree/simple", SimpleTreePage.class);
- mountPage("tree/table", TreeTablePage.class);
- mountPage("tree/table/editable", EditableTreeTablePage.class);
mountPage("upload", FileUploadPage.class);
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/fbe42230/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/BaseTreePage.html
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/BaseTreePage.html b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/BaseTreePage.html
deleted file mode 100644
index a9cfb20..0000000
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/BaseTreePage.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<wicket:extend xmlns:wicket="http://wicket.apache.org">
-
- <div style="border-bottom: 1px solid gray; width: 30em; margin-bottom: 1em; padding-bottom: 0.3em; margin-top: -2.89em; margin-left: 10em;">
- <wicket:link>
- <a href="SimpleTreePage.html">Simple tree</a>
-   
- <a href="TreeTablePage.html">Tree table</a>
-   
- <a href="EditableTreeTablePage.html">Editable tree table</a>
- </wicket:link>
- </div>
-
- <a wicket:id="expandAll">Expand all nodes</a>  
- <a wicket:id="collapseAll">Collapse all nodes</a>  
- <a wicket:id="switchRootless">Switch rootless mode</a>
- <wicket:child/>
-
-</wicket:extend>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/wicket/blob/fbe42230/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/BaseTreePage.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/BaseTreePage.java b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/BaseTreePage.java
deleted file mode 100644
index eb749f0..0000000
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/BaseTreePage.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.examples.ajax.builtin.tree;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.swing.tree.DefaultMutableTreeNode;
-import javax.swing.tree.DefaultTreeModel;
-import javax.swing.tree.TreeModel;
-
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.markup.html.AjaxLink;
-import org.apache.wicket.examples.ajax.builtin.BasePage;
-import org.apache.wicket.extensions.markup.html.tree.AbstractTree;
-
-
-/**
- * This is a base class for all pages with tree example.
- *
- * @author Matej Knopp
- */
-@Deprecated
-public abstract class BaseTreePage extends BasePage
-{
-
- /**
- * Default constructor
- */
- public BaseTreePage()
- {
- add(new AjaxLink<Void>("expandAll")
- {
- @Override
- public void onClick(AjaxRequestTarget target)
- {
- getTree().getTreeState().expandAll();
- getTree().updateTree(target);
- }
- });
-
- add(new AjaxLink<Void>("collapseAll")
- {
- @Override
- public void onClick(AjaxRequestTarget target)
- {
- getTree().getTreeState().collapseAll();
- getTree().updateTree(target);
- }
- });
-
- add(new AjaxLink<Void>("switchRootless")
- {
- @Override
- public void onClick(AjaxRequestTarget target)
- {
- getTree().setRootLess(!getTree().isRootLess());
- getTree().updateTree(target);
- }
- });
- }
-
- /**
- * Returns the tree on this pages. This is used to collapse, expand the tree and to switch the
- * rootless mode.
- *
- * @return Tree instance on this page
- */
- protected abstract AbstractTree getTree();
-
- /**
- * Creates the model that feeds the tree.
- *
- * @return New instance of tree model.
- */
- protected TreeModel createTreeModel()
- {
- List<Object> l1 = new ArrayList<Object>();
- l1.add("test 1.1");
- l1.add("test 1.2");
- l1.add("test 1.3");
- List<Object> l2 = new ArrayList<Object>();
- l2.add("test 2.1");
- l2.add("test 2.2");
- l2.add("test 2.3");
- List<Object> l3 = new ArrayList<Object>();
- l3.add("test 3.1");
- l3.add("test 3.2");
- l3.add("test 3.3");
-
- l2.add(l3);
-
- l2.add("test 2.4");
- l2.add("test 2.5");
- l2.add("test 2.6");
-
- l3 = new ArrayList<Object>();
- l3.add("test 3.1");
- l3.add("test 3.2");
- l3.add("test 3.3");
- l2.add(l3);
-
- l1.add(l2);
-
- l2 = new ArrayList<Object>();
- l2.add("test 2.1");
- l2.add("test 2.2");
- l2.add("test 2.3");
-
- l1.add(l2);
-
- l1.add("test 1.3");
- l1.add("test 1.4");
- l1.add("test 1.5");
-
- return convertToTreeModel(l1);
- }
-
- private TreeModel convertToTreeModel(List<Object> list)
- {
- TreeModel model = null;
- DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode(new ModelBean("ROOT"));
- add(rootNode, list);
- model = new DefaultTreeModel(rootNode);
- return model;
- }
-
- private void add(DefaultMutableTreeNode parent, List<Object> sub)
- {
- for (Object obj : sub)
- {
- if (obj instanceof List)
- {
- DefaultMutableTreeNode child = new DefaultMutableTreeNode(new ModelBean(
- "subtree..."));
- parent.add(child);
- add(child, (List<Object>)obj);
- }
- else
- {
- DefaultMutableTreeNode child = new DefaultMutableTreeNode(new ModelBean(
- obj.toString()));
- parent.add(child);
- }
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/wicket/blob/fbe42230/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/EditablePanel.html
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/EditablePanel.html b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/EditablePanel.html
deleted file mode 100644
index 8e5bc4e..0000000
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/EditablePanel.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<html xmlns:wicket="http://wicket.apache.org">
-<wicket:head>
- <style>
- input.edit-cell {
- width: 100%;
- margin: 0px;
- font-size: 100%;
- background-color: white;
- color: black;
- border: 1px solid black;
-
- _position: relative; _top: -1px;
- }
-
- </style>
-</wicket:head>
-<wicket:panel>
- <input type="text" wicket:id="textfield" class="edit-cell"/>
-</wicket:panel>
-</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/wicket/blob/fbe42230/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/EditablePanel.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/EditablePanel.java b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/EditablePanel.java
deleted file mode 100644
index 5a9722c..0000000
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/EditablePanel.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.examples.ajax.builtin.tree;
-
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
-import org.apache.wicket.markup.html.form.TextField;
-import org.apache.wicket.markup.html.panel.Panel;
-import org.apache.wicket.model.IModel;
-
-/**
- * Panel that contains an text field that submits automatically after it loses focus.
- *
- * @author Matej Knopp
- */
-public class EditablePanel extends Panel
-{
-
- /**
- * Panel constructor.
- *
- * @param id
- * Markup id
- *
- * @param inputModel
- * Model of the text field
- */
- public EditablePanel(String id, IModel<?> inputModel)
- {
- super(id);
-
- TextField<?> field = new TextField("textfield", inputModel);
- add(field);
-
- field.add(new AjaxFormComponentUpdatingBehavior("blur")
- {
- @Override
- protected void onUpdate(AjaxRequestTarget target)
- {
- }
- });
- }
-
-}
http://git-wip-us.apache.org/repos/asf/wicket/blob/fbe42230/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/EditableTreeTablePage.html
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/EditableTreeTablePage.html b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/EditableTreeTablePage.html
deleted file mode 100644
index b4d9ef0..0000000
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/EditableTreeTablePage.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<html xmlns:wicket="http://wicket.apache.org">
-<wicket:head>
- <style>
- input {
- font-family: 'Lucida Sans', 'Helvetica', 'Sans-serif', 'sans';
- font-size: 9pt;
- }
- form {
- margin: 0px; padding: 0px;
- }
- div.my-tree div.wicket-tree-table {
- }
- </style>
-</wicket:head>
-
-<wicket:extend>
- <form wicket:id="form">
- <div wicket:id="treeTable" class="my-tree">
- </div>
- </form>
-</wicket:extend>
-</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/wicket/blob/fbe42230/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/EditableTreeTablePage.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/EditableTreeTablePage.java b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/EditableTreeTablePage.java
deleted file mode 100644
index 863adcd..0000000
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/EditableTreeTablePage.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.examples.ajax.builtin.tree;
-
-import org.apache.wicket.extensions.markup.html.tree.AbstractTree;
-import org.apache.wicket.extensions.markup.html.tree.table.ColumnLocation;
-import org.apache.wicket.extensions.markup.html.tree.table.ColumnLocation.Alignment;
-import org.apache.wicket.extensions.markup.html.tree.table.ColumnLocation.Unit;
-import org.apache.wicket.extensions.markup.html.tree.table.IColumn;
-import org.apache.wicket.extensions.markup.html.tree.table.PropertyTreeColumn;
-import org.apache.wicket.extensions.markup.html.tree.table.TreeTable;
-import org.apache.wicket.markup.html.form.Form;
-
-
-/**
- * Page that shows a tree table with editable cells.
- *
- * @author Matej Knopp
- */
-@Deprecated
-public class EditableTreeTablePage extends BaseTreePage
-{
- private static final long serialVersionUID = 1L;
-
- private final TreeTable tree;
-
- /**
- * Page constructor.
- */
- public EditableTreeTablePage()
- {
- IColumn columns[] = new IColumn[] {
- new PropertyTreeColumn<String>(new ColumnLocation(Alignment.LEFT, 18, Unit.EM),
- "Tree Column", "userObject.property1"),
- new PropertyEditableColumn<String>(new ColumnLocation(Alignment.LEFT, 12, Unit.EM),
- "L2", "userObject.property2"),
- new PropertyEditableColumn<String>(new ColumnLocation(Alignment.MIDDLE, 2,
- Unit.PROPORTIONAL), "M1", "userObject.property3"),
- new PropertyEditableColumn<String>(new ColumnLocation(Alignment.MIDDLE, 2,
- Unit.PROPORTIONAL), "M2", "userObject.property4"),
- new PropertyEditableColumn<String>(new ColumnLocation(Alignment.MIDDLE, 3,
- Unit.PROPORTIONAL), "M3", "userObject.property5"),
- new PropertyEditableColumn<String>(new ColumnLocation(Alignment.RIGHT, 8, Unit.EM),
- "R1", "userObject.property6"),
-
- };
-
- Form<Void> form = new Form<Void>("form");
- add(form);
-
- tree = new TreeTable("treeTable", createTreeModel(), columns);
- form.add(tree);
- tree.getTreeState().collapseAll();
- }
-
- /**
- * @see BaseTreePage#getTree()
- */
- @Override
- protected AbstractTree getTree()
- {
- return tree;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/wicket/blob/fbe42230/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/ModelBean.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/ModelBean.java b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/ModelBean.java
deleted file mode 100644
index 252bd8f..0000000
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/ModelBean.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.examples.ajax.builtin.tree;
-
-import java.io.Serializable;
-
-/**
- * Bean that is set to every node of tree as user object. This bean has properties that are used to
- * hold values for the cells.
- *
- * @author Matej Knopp
- */
-public class ModelBean implements Serializable
-{
- private static final long serialVersionUID = 1L;
-
- private String property1;
- private String property2;
- private String property3;
- private String property4;
- private String property5;
- private String property6;
-
- /**
- * Creates the bean.
- *
- * @param s
- * String that will be suffix of each property.
- */
- public ModelBean(String s)
- {
- property1 = "1:" + s;
- property2 = "2:" + s;
- property3 = "3:" + s;
- property4 = "4:" + s;
- property5 = "5:" + s;
- property6 = "6:" + s;
- }
-
- /**
- * Returns the first property.
- *
- * @return First property
- */
- public String getProperty1()
- {
- return property1;
- }
-
- /**
- * Sets the value of first property.
- *
- * @param property1
- * Mew value
- */
- public void setProperty1(String property1)
- {
- this.property1 = property1;
- }
-
- /**
- * Returns the second property.
- *
- * @return Second property
- */
- public String getProperty2()
- {
- return property2;
- }
-
- /**
- * Sets the value of second property
- *
- * @param property2
- * New value
- */
- public void setProperty2(String property2)
- {
- this.property2 = property2;
- }
-
- /**
- * Returns the value of third property.
- *
- * @return Third property
- */
- public String getProperty3()
- {
- return property3;
- }
-
- /**
- * Sets the value of third property
- *
- * @param property3
- * New value
- */
- public void setProperty3(String property3)
- {
- this.property3 = property3;
- }
-
- /**
- * Returns the value of fourth property
- *
- * @return Value of fourth property
- */
- public String getProperty4()
- {
- return property4;
- }
-
- /**
- * Sets the value of fourth property
- *
- * @param property4
- * New value
- */
- public void setProperty4(String property4)
- {
- this.property4 = property4;
- }
-
- /**
- * Returns the value of fifth property
- *
- * @return Value of fifth property
- */
- public String getProperty5()
- {
- return property5;
- }
-
- /**
- * Sets the value of fifth property
- *
- * @param property5
- * New value
- */
- public void setProperty5(String property5)
- {
- this.property5 = property5;
- }
-
- /**
- * Returns the value of sixth property.
- *
- * @return Value of sixth property
- */
- public String getProperty6()
- {
- return property6;
- }
-
- /**
- * Sets the value of sixth property
- *
- * @param property6
- * New value
- */
- public void setProperty6(String property6)
- {
- this.property6 = property6;
- }
-
- /**
- * @see java.lang.Object#toString()
- */
- @Override
- public String toString()
- {
- return getProperty1() + ", " + getProperty2() + ", " + getProperty3();
- }
-}
http://git-wip-us.apache.org/repos/asf/wicket/blob/fbe42230/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/PropertyEditableColumn.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/PropertyEditableColumn.java b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/PropertyEditableColumn.java
deleted file mode 100644
index 28cf09d..0000000
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/PropertyEditableColumn.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.examples.ajax.builtin.tree;
-
-import javax.swing.tree.TreeNode;
-
-import org.apache.wicket.Component;
-import org.apache.wicket.MarkupContainer;
-import org.apache.wicket.extensions.markup.html.tree.table.ColumnLocation;
-import org.apache.wicket.extensions.markup.html.tree.table.IColumn;
-import org.apache.wicket.extensions.markup.html.tree.table.IRenderable;
-import org.apache.wicket.extensions.markup.html.tree.table.PropertyRenderableColumn;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.model.PropertyModel;
-
-
-/**
- * Column, that either shows a readonly cell or an editable panel, depending on whether the current
- * row is selected.
- *
- * @author Matej Knopp
- * @param <T>
- * the type of the property that is rendered in this column
- */
-public class PropertyEditableColumn<T> extends PropertyRenderableColumn<T>
-{
- private static final long serialVersionUID = 1L;
-
- /**
- * Column constructor.
- *
- * @param location
- * @param header
- * @param propertyExpression
- */
- public PropertyEditableColumn(ColumnLocation location, String header, String propertyExpression)
- {
- this(location, Model.of(header), propertyExpression);
- }
-
- /**
- * Column constructor.
- *
- * @param location
- * @param header
- * @param propertyExpression
- */
- public PropertyEditableColumn(ColumnLocation location, IModel<String> header, String propertyExpression)
- {
- super(location, header, propertyExpression);
- }
-
- /**
- * @see IColumn#newCell(MarkupContainer, String, TreeNode, int)
- */
- @Override
- public Component newCell(MarkupContainer parent, String id, TreeNode node, int level)
- {
- return new EditablePanel(id, new PropertyModel<T>(node, getPropertyExpression()));
- }
-
- /**
- * @see IColumn#newCell(TreeNode, int)
- */
- @Override
- public IRenderable newCell(TreeNode node, int level)
- {
- if (getTreeTable().getTreeState().isNodeSelected(node))
- return null;
- else
- return super.newCell(node, level);
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/wicket/blob/fbe42230/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/SimpleTreePage.html
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/SimpleTreePage.html b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/SimpleTreePage.html
deleted file mode 100644
index b29012c..0000000
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/SimpleTreePage.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<head xmlns:wicket="http://wicket.apache.org">
-<wicket:head>
- <style>
- table.wicket-tree-content {
- width: 100%;
- }
- td {
- font-size: 82%;
- }
- </style>
-</wicket:head>
-<wicket:extend>
- <table style="border: 1px solid #eee"><tr><td>
- <div wicket:id="tree" class="my-tree">
- </div>
- </td></tr></table>
-</wicket:extend>
-</head>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/wicket/blob/fbe42230/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/SimpleTreePage.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/SimpleTreePage.java b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/SimpleTreePage.java
deleted file mode 100644
index e4a97a6..0000000
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/SimpleTreePage.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.examples.ajax.builtin.tree;
-
-import org.apache.wicket.extensions.markup.html.tree.AbstractTree;
-import org.apache.wicket.extensions.markup.html.tree.BaseTree;
-import org.apache.wicket.extensions.markup.html.tree.LinkTree;
-
-
-/**
- * Page that shuws a simple tree (not a table).
- *
- * @author Matej
- *
- */
-@Deprecated
-public class SimpleTreePage extends BaseTreePage
-{
- private static final long serialVersionUID = 1L;
-
- private final BaseTree tree;
-
- @Override
- protected AbstractTree getTree()
- {
- return tree;
- }
-
- /**
- * Page constructor
- *
- */
- public SimpleTreePage()
- {
- tree = new LinkTree("tree", createTreeModel());
- add(tree);
- tree.getTreeState().collapseAll();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/wicket/blob/fbe42230/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/TreeTablePage.html
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/TreeTablePage.html b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/TreeTablePage.html
deleted file mode 100644
index 0a8c028..0000000
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/TreeTablePage.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<html xmlns:wicket="http://wicket.apache.org">
-<wicket:head>
- <style>
- div.my-tree div.wicket-tree-table-body {
- height: 20em;
- overflow: auto;
- }
- </style>
-</wicket:head>
-
-<wicket:extend>
- <div wicket:id="treeTable" class="my-tree">
- </div>
-</wicket:extend>
-</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/wicket/blob/fbe42230/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/TreeTablePage.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/TreeTablePage.java b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/TreeTablePage.java
deleted file mode 100644
index 690a1c0..0000000
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/TreeTablePage.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.examples.ajax.builtin.tree;
-
-import org.apache.wicket.extensions.markup.html.tree.AbstractTree;
-import org.apache.wicket.extensions.markup.html.tree.table.ColumnLocation;
-import org.apache.wicket.extensions.markup.html.tree.table.ColumnLocation.Alignment;
-import org.apache.wicket.extensions.markup.html.tree.table.ColumnLocation.Unit;
-import org.apache.wicket.extensions.markup.html.tree.table.IColumn;
-import org.apache.wicket.extensions.markup.html.tree.table.PropertyRenderableColumn;
-import org.apache.wicket.extensions.markup.html.tree.table.PropertyTreeColumn;
-import org.apache.wicket.extensions.markup.html.tree.table.TreeTable;
-
-/**
- * Page that shows a simple tree table.
- *
- * @author Matej Knopp
- */
-@Deprecated
-public class TreeTablePage extends BaseTreePage
-{
- private static final long serialVersionUID = 1L;
-
- private final TreeTable tree;
-
- /**
- * Page constructor.
- */
- public TreeTablePage()
- {
- IColumn columns[] = new IColumn[] {
- new PropertyTreeColumn<String>(new ColumnLocation(Alignment.MIDDLE, 8,
- Unit.PROPORTIONAL), "Tree Column (middle)", "userObject.property1"),
- new PropertyRenderableColumn<String>(
- new ColumnLocation(Alignment.LEFT, 7, Unit.EM), "L2", "userObject.property2"),
- new PropertyRenderableColumn<String>(new ColumnLocation(Alignment.MIDDLE, 2,
- Unit.PROPORTIONAL), "M1", "userObject.property3"),
- new PropertyRenderableColumn<String>(new ColumnLocation(Alignment.MIDDLE, 2,
- Unit.PROPORTIONAL), "M2", "userObject.property4"),
- new PropertyRenderableColumn<String>(new ColumnLocation(Alignment.MIDDLE, 3,
- Unit.PROPORTIONAL), "M3", "userObject.property5"),
- new PropertyRenderableColumn<String>(
- new ColumnLocation(Alignment.RIGHT, 8, Unit.EM), "R1", "userObject.property6"), };
-
- tree = new TreeTable("treeTable", createTreeModel(), columns);
- tree.getTreeState().setAllowSelectMultiple(true);
- add(tree);
- tree.getTreeState().collapseAll();
- }
-
- @Override
- protected AbstractTree getTree()
- {
- return tree;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/wicket/blob/fbe42230/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/AbstractTree.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/AbstractTree.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/AbstractTree.java
deleted file mode 100644
index 4d3989e..0000000
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/AbstractTree.java
+++ /dev/null
@@ -1,1771 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.extensions.markup.html.tree;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import javax.swing.event.TreeModelEvent;
-import javax.swing.event.TreeModelListener;
-import javax.swing.tree.TreeModel;
-import javax.swing.tree.TreeNode;
-
-import org.apache.wicket.Component;
-import org.apache.wicket.MarkupContainer;
-import org.apache.wicket.WicketRuntimeException;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.behavior.Behavior;
-import org.apache.wicket.markup.ComponentTag;
-import org.apache.wicket.markup.IMarkupFragment;
-import org.apache.wicket.markup.head.IHeaderResponse;
-import org.apache.wicket.markup.head.JavaScriptHeaderItem;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.internal.HtmlHeaderContainer;
-import org.apache.wicket.markup.html.list.AbstractItem;
-import org.apache.wicket.markup.html.panel.Panel;
-import org.apache.wicket.model.IDetachable;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.request.Response;
-import org.apache.wicket.request.resource.JavaScriptResourceReference;
-import org.apache.wicket.request.resource.ResourceReference;
-import org.apache.wicket.util.lang.Args;
-import org.apache.wicket.util.string.AppendingStringBuffer;
-import org.apache.wicket.util.visit.IVisit;
-import org.apache.wicket.util.visit.IVisitor;
-
-
-/**
- * This class encapsulates the logic for displaying and (partial) updating the tree. Actual
- * presentation is out of scope of this class. User should derive they own tree (if needed) from
- * {@link BaseTree} (recommended).
- *
- * @author Matej Knopp
- */
-@Deprecated
-public abstract class AbstractTree extends Panel
- implements
- ITreeStateListener,
- TreeModelListener,
- AjaxRequestTarget.ITargetRespondListener
-{
- private static final long serialVersionUID = 1L;
-
- /**
- * Interface for visiting individual tree items.
- */
- private static interface IItemCallback
- {
- /**
- * Visits the tree item.
- *
- * @param item
- * the item to visit
- */
- void visitItem(TreeItem item);
- }
-
- /**
- * This class represents one row in rendered tree (TreeNode). Only TreeNodes that are visible
- * (all their parent are expanded) have TreeItem created for them.
- */
- private final class TreeItem extends AbstractItem
- {
- /**
- * whether this tree item should also render it's children to response. this is set if we
- * need the whole subtree rendered as one component in ajax response, so that we can replace
- * it in one step (replacing individual rows is very slow in javascript, therefore we
- * replace the whole subtree)
- */
- private final static int FLAG_RENDER_CHILDREN = FLAG_RESERVED8;
-
- private static final long serialVersionUID = 1L;
-
- /**
- * tree item children - we need this to traverse items in correct order when rendering
- */
- private List<TreeItem> children = null;
-
- /** tree item level - how deep is this item in tree */
- private final int level;
-
- private final TreeItem parent;
-
- /**
- * Construct.
- *
- * @param id
- * The component id
- * @param node
- * tree node
- * @param level
- * current level
- * @param parent
- */
- public TreeItem(TreeItem parent, String id, final Object node, int level)
- {
- super(id, new Model<Serializable>((Serializable)node));
-
- this.parent = parent;
-
- nodeToItemMap.put(node, this);
- this.level = level;
- setOutputMarkupId(true);
-
- // if this isn't a root item in rootless mode
- if (level != -1)
- {
- populateTreeItem(this, level);
- }
- }
-
- public TreeItem getParentItem()
- {
- return parent;
- }
-
- /**
- * @return The children
- */
- public List<TreeItem> getChildren()
- {
- return children;
- }
-
- /**
- * @return The current level
- */
- public int getLevel()
- {
- return level;
- }
-
- /**
- * @see org.apache.wicket.Component#getMarkupId()
- */
- @Override
- public String getMarkupId()
- {
- // this is overridden to produce id that begins with id of tree
- // if the tree has set (shorter) id in markup, we can use it to
- // shorten the id of individual TreeItems
- return AbstractTree.this.getMarkupId() + "_" + getId();
- }
-
- /**
- * Sets the children.
- *
- * @param children
- * The children
- */
- public void setChildren(List<TreeItem> children)
- {
- this.children = children;
- }
-
- /**
- * Whether to render children.
- *
- * @return whether to render children
- */
- protected final boolean isRenderChildren()
- {
- return getFlag(FLAG_RENDER_CHILDREN);
- }
-
- /**
- * Whether the TreeItem has any child TreeItems
- *
- * @return true if there are one or more child TreeItems; false otherwise
- */
- public boolean hasChildTreeItems()
- {
- return children != null && !children.isEmpty();
- }
-
- /**
- * @see org.apache.wicket.MarkupContainer#onRender()
- */
- @Override
- protected void onRender()
- {
- // is this root and tree is in rootless mode?
- if (this == rootItem && isRootLess() == true)
- {
- // yes, write empty div with id
- // this is necessary for createElement js to work correctly
- String tagName = ((ComponentTag)getMarkup().get(0)).getName();
- Response response = getResponse();
- response.write("<" + tagName + " style=\"display:none\" id=\"" + getMarkupId() +
- "\">");
- if ("table".equals(tagName))
- {
- response.write("<tbody><tr><td></td></tr></tbody>");
- }
- response.write("</" + tagName + ">");
- }
- else
- {
- // render the item
- super.onRender();
-
- // should we also render children (ajax response)
- if (isRenderChildren())
- {
- // visit every child
- visitItemChildren(this, new IItemCallback()
- {
- @Override
- public void visitItem(TreeItem item)
- {
- // render child
- item.onRender();
-
- // go through the behaviors and invoke IBehavior.afterRender
- List<? extends Behavior> behaviors = item.getBehaviors();
- for (Behavior behavior : behaviors)
- {
- behavior.afterRender(item);
- }
- }
- });
- }
- }
- }
-
- /**
- *
- * @return model object
- */
- public Object getModelObject()
- {
- return getDefaultModelObject();
- }
-
- @Override
- public void internalRenderHead(final HtmlHeaderContainer container)
- {
- super.internalRenderHead(container);
-
- if (isRenderChildren())
- {
- // visit every child
- visitItemChildren(this, new IItemCallback()
- {
- @Override
- public void visitItem(TreeItem item)
- {
- if (item.isVisible())
- {
- item.internalRenderHead(container);
- }
-
- // write header contributions from the children of item
- item.visitChildren(new IVisitor<Component, Void>()
- {
- @Override
- public void component(final Component component,
- final IVisit<Void> visit)
- {
- if (component.isVisible())
- {
- component.internalRenderHead(container);
- }
- else
- {
- visit.dontGoDeeper();
- }
- }
- });
- }
- });
- }
- }
-
- protected final void setRenderChildren(boolean value)
- {
- setFlag(FLAG_RENDER_CHILDREN, value);
- }
-
- @Override
- protected void onDetach()
- {
- super.onDetach();
- Object object = getModelObject();
- if (object instanceof IDetachable)
- {
- ((IDetachable)object).detach();
- }
-
- if (isRenderChildren())
- {
- // visit every child
- visitItemChildren(this, new IItemCallback()
- {
- @Override
- public void visitItem(TreeItem item)
- {
- item.detach();
- }
- });
- }
-
- // children are rendered, clear the flag
- setRenderChildren(false);
- }
-
- @Override
- protected void onBeforeRender()
- {
- onBeforeRenderInternal();
- super.onBeforeRender();
-
- if (isRenderChildren())
- {
- // visit every child
- visitItemChildren(this, new IItemCallback()
- {
- @Override
- public void visitItem(TreeItem item)
- {
- item.prepareForRender();
- }
- });
- }
- }
-
- @Override
- protected void onAfterRender()
- {
- super.onAfterRender();
- if (isRenderChildren())
- {
- // visit every child
- visitItemChildren(this, new IItemCallback()
- {
- @Override
- public void visitItem(TreeItem item)
- {
- item.afterRender();
- }
- });
- }
- }
-
- private boolean hasParentWithChildrenMarkedToRecreation()
- {
- return getParentItem() != null &&
- (getParentItem().getChildren() == null || getParentItem().hasParentWithChildrenMarkedToRecreation());
- }
- }
-
- /**
- * Components that holds tree items. This is similar to ListView, but it renders tree items in
- * the right order.
- */
- private class TreeItemContainer extends WebMarkupContainer
- {
- private static final long serialVersionUID = 1L;
-
- /**
- * Construct.
- *
- * @param id
- * The component id
- */
- public TreeItemContainer(String id)
- {
- super(id);
- }
-
- /**
- * @see org.apache.wicket.MarkupContainer#remove(org.apache.wicket.Component)
- */
- @Override
- public TreeItemContainer remove(Component component)
- {
- // when a treeItem is removed, remove reference to it from
- // nodeToItemMAp
- if (component instanceof TreeItem)
- {
- nodeToItemMap.remove(((TreeItem)component).getModelObject());
- }
- super.remove(component);
- return this;
- }
-
- /**
- * @see org.apache.wicket.MarkupContainer#onRender()
- */
- @Override
- protected void onRender()
- {
- // is there a root item? (non-empty tree)
- if (rootItem != null)
- {
- IItemCallback callback = new IItemCallback()
- {
- @Override
- public void visitItem(TreeItem item)
- {
- // render component
- item.render();
- }
- };
-
- // visit item and it's children
- visitItemAndChildren(rootItem, callback);
- }
- }
-
- @Override
- public IMarkupFragment getMarkup(final Component child)
- {
- // The childs markup is always equal to the parents markup.
- return getMarkup();
- }
- }
-
- private boolean attached = false;
-
- /** comma separated list of ids of elements to be deleted. */
- private final AppendingStringBuffer deleteIds = new AppendingStringBuffer();
-
- /**
- * whether the whole tree is dirty (so the whole tree needs to be refreshed).
- */
- private boolean dirtyAll = false;
-
- /**
- * list of dirty items. if children property of these items is null, the children will be
- * rebuild.
- */
- private final Set<TreeItem> dirtyItems = new HashSet<TreeItem>();
-
- /**
- * list of dirty items which need the DOM structure to be created for them (added items)
- */
- private final Set<TreeItem> dirtyItemsCreateDOM = new HashSet<TreeItem>();
-
- /** counter for generating unique ids of every tree item. */
- private int idCounter = 0;
-
- /** Component whose children are tree items. */
- private TreeItemContainer itemContainer;
-
- /**
- * map that maps TreeNode to TreeItem. TreeItems only exists for TreeNodes, that are visible
- * (their parents are not collapsed).
- */
- // TODO this field is not serializable but nested inside an serializable component
- private final Map<Object, TreeItem> nodeToItemMap = new HashMap<Object, TreeItem>();
-
- /**
- * we need to track previous model. if the model changes, we unregister the tree from listeners
- * of old model and register the tree as listener of new model.
- */
-
- // TODO this field is not serializable but nested inside an serializable component
- private TreeModel previousModel = null;
-
- /** root item of the tree. */
- private TreeItem rootItem = null;
-
- /** whether the tree root is shown. */
- private boolean rootLess = false;
-
- /** stores reference to tree state. */
- private ITreeState state;
-
- /**
- * Tree constructor
- *
- * @param id
- * The component id
- */
- public AbstractTree(String id)
- {
- super(id);
- init();
- }
-
- /**
- * Tree constructor
- *
- * @param id
- * The component id
- * @param model
- * The tree model
- */
- public AbstractTree(String id, IModel<? extends TreeModel> model)
- {
- super(id, model);
- init();
- }
-
- /** called when all nodes are collapsed. */
- @Override
- public final void allNodesCollapsed()
- {
- invalidateAll();
- }
-
- /** called when all nodes are expanded. */
- @Override
- public final void allNodesExpanded()
- {
- invalidateAll();
- }
-
- /**
- *
- * @return model
- */
- @SuppressWarnings("unchecked")
- public IModel<? extends TreeModel> getModel()
- {
- return (IModel<? extends TreeModel>)getDefaultModel();
- }
-
- /**
- * @return treemodel
- */
- public TreeModel getModelObject()
- {
- return (TreeModel)getDefaultModelObject();
- }
-
- /**
- *
- * @param model
- * @return this
- */
- public MarkupContainer setModel(IModel<? extends TreeModel> model)
- {
- setDefaultModel(model);
- return this;
- }
-
- /**
- *
- * @param model
- * @return this
- */
- public MarkupContainer setModelObject(TreeModel model)
- {
- setDefaultModelObject(model);
- return this;
- }
-
- /**
- * Returns the TreeState of this tree.
- *
- * @return Tree state instance
- */
- public ITreeState getTreeState()
- {
- if (state == null)
- {
- state = newTreeState();
-
- // add this object as listener of the state
- state.addTreeStateListener(this);
- }
- return state;
- }
-
- /**
- * This method is called before the onAttach is called. Code here gets executed before the items
- * have been populated.
- */
- protected void onBeforeAttach()
- {
- }
-
- // This is necessary because MarkupContainer.onBeforeRender involves calling
- // beforeRender on children, which results in stack overflow when called from TreeItem
- private void onBeforeRenderInternal()
- {
- if (attached == false)
- {
- onBeforeAttach();
-
- checkModel();
-
- // Do we have to rebuild the whole tree?
- if (dirtyAll && rootItem != null)
- {
- clearAllItem();
- }
- else
- {
- // rebuild children of dirty nodes that need it
- rebuildDirty();
- }
-
- // is root item created? (root item is null if the items have not
- // been created yet, or the whole tree was dirty and clearAllITem
- // has been called
- if (rootItem == null)
- {
- Object rootNode = getModelObject().getRoot();
- if (rootNode != null)
- {
- if (isRootLess())
- {
- rootItem = newTreeItem(null, rootNode, -1);
- }
- else
- {
- rootItem = newTreeItem(null, rootNode, 0);
- }
- itemContainer.add(rootItem);
- buildItemChildren(rootItem);
- }
- }
-
- attached = true;
- }
- }
-
- /**
- * Called at the beginning of the request (not ajax request, unless we are rendering the entire
- * component)
- */
- @Override
- public void onBeforeRender()
- {
- onBeforeRenderInternal();
- super.onBeforeRender();
- }
-
- /**
- * @see org.apache.wicket.MarkupContainer#onDetach()
- */
- @Override
- public void onDetach()
- {
- attached = false;
- super.onDetach();
- if (getTreeState() instanceof IDetachable)
- {
- ((IDetachable)getTreeState()).detach();
- }
- }
-
- /**
- * Call to refresh the whole tree. This should only be called when the roodNode has been
- * replaced or the entiry tree model changed.
- */
- public final void invalidateAll()
- {
- updated();
- dirtyAll = true;
- }
-
- /**
- * @return whether the tree root is shown
- */
- public final boolean isRootLess()
- {
- return rootLess;
- }
-
- /**
- * @see org.apache.wicket.extensions.markup.html.tree.ITreeStateListener#nodeCollapsed(Object)
- */
- @Override
- public final void nodeCollapsed(Object node)
- {
- if (isNodeVisible(node) == true)
- {
- invalidateNodeWithChildren(node);
- }
- }
-
- /**
- * @see org.apache.wicket.extensions.markup.html.tree.ITreeStateListener#nodeExpanded(Object)
- */
- @Override
- public final void nodeExpanded(Object node)
- {
- if (isNodeVisible(node) == true)
- {
- invalidateNodeWithChildren(node);
- }
- }
-
- /**
- * @see org.apache.wicket.extensions.markup.html.tree.ITreeStateListener#nodeSelected(Object)
- */
- @Override
- public final void nodeSelected(Object node)
- {
- if (isNodeVisible(node))
- {
- invalidateNode(node, isForceRebuildOnSelectionChange());
- }
- }
-
- /**
- * @see org.apache.wicket.extensions.markup.html.tree.ITreeStateListener#nodeUnselected(Object)
- */
- @Override
- public final void nodeUnselected(Object node)
- {
- if (isNodeVisible(node))
- {
- invalidateNode(node, isForceRebuildOnSelectionChange());
- }
- }
-
- /**
- * Determines whether the TreeNode needs to be rebuilt if it is selected or deselected
- *
- * @return true if the node should be rebuilt after (de)selection, false otherwise
- */
- protected boolean isForceRebuildOnSelectionChange()
- {
- return true;
- }
-
- /**
- * Sets whether the root of the tree should be visible.
- *
- * @param rootLess
- * whether the root should be visible
- */
- public void setRootLess(boolean rootLess)
- {
- if (this.rootLess != rootLess)
- {
- this.rootLess = rootLess;
- invalidateAll();
-
- // if the tree is in rootless mode, make sure the root node is
- // expanded
- if (rootLess == true && getModelObject() != null)
- {
- getTreeState().expandNode(getModelObject().getRoot());
- }
- }
- }
-
- /**
- * @see javax.swing.event.TreeModelListener#treeNodesChanged(javax.swing.event.TreeModelEvent)
- */
- @Override
- public final void treeNodesChanged(TreeModelEvent e)
- {
- if (dirtyAll)
- {
- return;
- }
- // has root node changed?
- if (e.getChildren() == null)
- {
- if (rootItem != null)
- {
- invalidateNode(rootItem.getModelObject(), true);
- }
- }
- else
- {
- // go through all changed nodes
- Object[] children = e.getChildren();
- if (children != null)
- {
- for (Object node : children)
- {
- if (isNodeVisible(node))
- {
- // if the nodes is visible invalidate it
- invalidateNode(node, true);
- }
- }
- }
- }
- }
-
- /**
- * Marks the last but one visible child node of the given item as dirty, if give child is the
- * last item of parent.
- *
- * We need this to refresh the previous visible item in case the inserted / deleted item was
- * last. The reason is that the line shape of previous item changes from L to |- .
- *
- * @param parent
- * @param child
- */
- private void markTheLastButOneChildDirty(TreeItem parent, TreeItem child)
- {
- if (parent.getChildren().indexOf(child) == parent.getChildren().size() - 1)
- {
- // go through the children backwards, start at the last but one
- // item
- for (int i = parent.getChildren().size() - 2; i >= 0; --i)
- {
- TreeItem item = parent.getChildren().get(i);
-
- // invalidate the node and it's children, so that they are
- // redrawn
- invalidateNodeWithChildren(item.getModelObject());
-
- }
- }
- }
-
- /**
- * @see javax.swing.event.TreeModelListener#treeNodesInserted(javax.swing.event.TreeModelEvent)
- */
- @Override
- public final void treeNodesInserted(TreeModelEvent e)
- {
- if (dirtyAll)
- {
- return;
- }
-
- // get the parent node of inserted nodes
- Object parentNode = e.getTreePath().getLastPathComponent();
- TreeItem parentItem = nodeToItemMap.get(parentNode);
-
-
- if (parentItem != null && isNodeVisible(parentNode))
- {
- List<?> eventChildren = Arrays.asList(e.getChildren());
-
- // parentNode was a leaf before this insertion event only if every one of
- // its current children is in the event's list of children
- boolean wasLeaf = true;
- int nodeChildCount = getChildCount(parentNode);
- for (int i = 0; wasLeaf && i < nodeChildCount; i++)
- {
- wasLeaf = eventChildren.contains(getChildAt(parentNode, i));
- }
-
- boolean addingToHiddedRoot = parentItem.getParentItem() == null && isRootLess();
- // if parent was a presented leaf
- if (wasLeaf && !addingToHiddedRoot)
- {
- // parentNode now has children for the first time, so we may need to invalidate
- // grandparent so that parentNode's junctionLink gets rebuilt with a plus/minus link
- Object grandparentNode = getParentNode(parentNode);
- boolean addingToHiddedRootSon = grandparentNode != null &&
- getParentNode(grandparentNode) == null && isRootLess();
- // if visible, invalidate the grandparent
- if (grandparentNode != null && !addingToHiddedRootSon)
- {
- invalidateNodeWithChildren(grandparentNode);
- }
- else
- {
- // if not, simply invalidating the parent node
- // OBS.: forcing rebuild since unlike the grandparent, the old
- // leaf parent needs to rebuild with plus/minus link
- invalidateNode(parentNode, true);
- }
- getTreeState().expandNode(parentNode);
- }
- else
- {
- if (isNodeExpanded(parentNode))
- {
- List<TreeItem> itemChildren = parentItem.getChildren();
- int childLevel = parentItem.getLevel() + 1;
- final int[] childIndices = e.getChildIndices();
- for (int i = 0; i < eventChildren.size(); ++i)
- {
- TreeItem item = newTreeItem(parentItem, eventChildren.get(i), childLevel);
- itemContainer.add(item);
-
- if (itemChildren != null)
- {
- itemChildren.add(childIndices[i], item);
- markTheLastButOneChildDirty(parentItem, item);
- }
-
- if (!dirtyItems.contains(item))
- {
- dirtyItems.add(item);
- }
-
- if (!dirtyItemsCreateDOM.contains(item) &&
- !item.hasParentWithChildrenMarkedToRecreation())
- {
- dirtyItemsCreateDOM.add(item);
- }
- }
- }
- }
- }
- }
-
- /**
- * @see javax.swing.event.TreeModelListener#treeNodesRemoved(javax.swing.event.TreeModelEvent)
- */
- @Override
- public final void treeNodesRemoved(TreeModelEvent removalEvent)
- {
- if (dirtyAll)
- {
- return;
- }
-
- // get the parent node of deleted nodes
- Object parentNode = removalEvent.getTreePath().getLastPathComponent();
- TreeItem parentItem = nodeToItemMap.get(parentNode);
-
- // unselect all removed items
- List<Object> selection = new ArrayList<Object>(getTreeState().getSelectedNodes());
- List<Object> removed = Arrays.asList(removalEvent.getChildren());
- for (Object selectedNode : selection)
- {
- Object cursor = selectedNode;
- while (cursor != null)
- {
- if (removed.contains(cursor))
- {
- getTreeState().selectNode(selectedNode, false);
- }
- if (cursor instanceof TreeNode)
- {
- cursor = ((TreeNode)cursor).getParent();
- }
- else
- {
- cursor = null;
- }
- }
- }
-
- if (parentItem != null && isNodeVisible(parentNode))
- {
- if (isNodeExpanded(parentNode))
- {
- // deleted nodes were visible; we need to delete their TreeItems
- for (Object deletedNode : removalEvent.getChildren())
- {
- TreeItem itemToDelete = nodeToItemMap.get(deletedNode);
- if (itemToDelete != null)
- {
- markTheLastButOneChildDirty(parentItem, itemToDelete);
-
- // remove all the deleted item's children
- visitItemChildren(itemToDelete, new IItemCallback()
- {
- @Override
- public void visitItem(TreeItem item)
- {
- removeItem(item);
- }
- });
-
- parentItem.getChildren().remove(itemToDelete);
- removeItem(itemToDelete);
- }
- }
- }
-
- if (!parentItem.hasChildTreeItems())
- {
- // rebuild parent's icon to show it no longer has children
- invalidateNode(parentNode, true);
- }
- }
- }
-
- /**
- * @see javax.swing.event.TreeModelListener#treeStructureChanged(javax.swing.event.TreeModelEvent)
- */
- @Override
- public final void treeStructureChanged(TreeModelEvent e)
- {
- if (dirtyAll)
- {
- return;
- }
-
- // get the parent node of changed nodes
- Object node = e.getTreePath() != null ? e.getTreePath().getLastPathComponent() : null;
-
- // has the tree root changed?
- if (node == null || e.getTreePath().getPathCount() == 1)
- {
- invalidateAll();
- }
- else
- {
- invalidateNodeWithChildren(node);
- }
- }
-
- /**
- * Allows to intercept adding dirty components to AjaxRequestTarget.
- *
- * @param target
- * @param component
- */
- protected void addComponent(AjaxRequestTarget target, Component component)
- {
- target.add(component);
- }
-
- @Override
- public void onTargetRespond(AjaxRequestTarget target)
- {
- // check whether the model hasn't changed
- checkModel();
-
- // is the whole tree dirty
- if (dirtyAll)
- {
- // render entire tree component
- addComponent(target, this);
- }
- else
- {
- // remove DOM elements that need to be removed
- if (deleteIds.length() != 0)
- {
- String js = getElementsDeleteJavaScript();
-
- // add the javascript to target
- target.prependJavaScript(js);
- }
-
- // We have to repeat this as long as there are any dirty items to be
- // created.
- // The reason why we can't do this in one pass is that some of the
- // items
- // may need to be inserted after items that has not been inserted
- // yet, so we have
- // to detect those and wait until the items they depend on are
- // inserted.
- while (dirtyItemsCreateDOM.isEmpty() == false)
- {
- for (Iterator<TreeItem> i = dirtyItemsCreateDOM.iterator(); i.hasNext();)
- {
- TreeItem item = i.next();
- TreeItem parent = item.getParentItem();
- int index = parent.getChildren().indexOf(item);
- TreeItem previous;
- // we need item before this (in dom structure)
-
- if (index == 0)
- {
- previous = parent;
- }
- else
- {
- previous = parent.getChildren().get(index - 1);
- // get the last item of previous item subtree
- while (previous.getChildren() != null && previous.getChildren().size() > 0)
- {
- previous = previous.getChildren()
- .get(previous.getChildren().size() - 1);
- }
- }
- // check if the previous item isn't waiting to be inserted
- if (dirtyItemsCreateDOM.contains(previous) == false)
- {
- // it's already in dom, so we can use it as point of
- // insertion
- target.prependJavaScript("Wicket.Tree.createElement(\"" +
- item.getMarkupId() + "\"," + "\"" + previous.getMarkupId() + "\")");
-
- // remove the item so we don't process it again
- i.remove();
- }
- else
- {
- // we don't do anything here, inserting this item will
- // have to wait
- // until the previous item gets inserted
- }
- }
- }
-
- // iterate through dirty items
- for (TreeItem item : dirtyItems)
- {
- // does the item need to rebuild children?
- if (item.getChildren() == null)
- {
- // rebuild the children
- buildItemChildren(item);
-
- // set flag on item so that it renders itself together with
- // it's children
- item.setRenderChildren(true);
- }
-
- // add the component to target
- addComponent(target, item);
- }
-
- // clear dirty flags
- updated();
- }
- }
-
- /**
- * Convenience method that updates changed portions on tree. You can call this method during
- * Ajax response, where calling {@link #updateTree(org.apache.wicket.ajax.AjaxRequestTarget)}
- * would be appropriate, but you don't have the AjaxRequestTarget instance. However, it is also
- * safe to call this method outside Ajax response.
- */
- public final void updateTree()
- {
- AjaxRequestTarget target = getRequestCycle().find(AjaxRequestTarget.class);
- if (target == null)
- {
- throw new WicketRuntimeException(
- "No AjaxRequestTarget available to execute updateTree(ART target)");
- }
-
- updateTree(target);
- }
-
- /**
- * Updates the changed portions of the tree using given AjaxRequestTarget. Call this method if
- * you modified the tree model during an ajax request target and you want to partially update
- * the component on page. Make sure that the tree model has fired the proper listener functions.
- * <p>
- * <b>You can only call this method once in a request.</b>
- *
- * @param target
- * Ajax request target used to send the update to the page
- */
- public final void updateTree(final AjaxRequestTarget target)
- {
- Args.notNull(target, "target");
- target.registerRespondListener(this);
- }
-
- /**
- * Returns whether the given node is expanded.
- *
- * @param node
- * The node to inspect
- * @return true if the node is expanded, false otherwise
- */
- protected final boolean isNodeExpanded(Object node)
- {
- // In root less mode the root node is always expanded
- if (isRootLess() && rootItem != null && rootItem.getModelObject().equals(node))
- {
- return true;
- }
-
- return getTreeState().isNodeExpanded(node);
- }
-
- /**
- * Creates the TreeState, which is an object where the current state of tree (which nodes are
- * expanded / collapsed, selected, ...) is stored.
- *
- * @return Tree state instance
- */
- protected ITreeState newTreeState()
- {
- return new DefaultTreeState();
- }
-
- /**
- * Called after the rendering of tree is complete. Here we clear the dirty flags.
- */
- @Override
- protected void onAfterRender()
- {
- super.onAfterRender();
- // rendering is complete, clear all dirty flags and items
- updated();
- }
-
- /**
- * This method is called after creating every TreeItem. This is the place for adding components
- * on item (junction links, labels, icons...)
- *
- * @param item
- * newly created tree item. The node can be obtained as item.getModelObject()
- *
- * @param level
- * how deep the component is in tree hierarchy (0 for root item)
- */
- protected abstract void populateTreeItem(WebMarkupContainer item, int level);
-
- /**
- * Builds the children for given TreeItem. It recursively traverses children of it's TreeNode
- * and creates TreeItem for every visible TreeNode.
- *
- * @param item
- * The parent tree item
- */
- private void buildItemChildren(TreeItem item)
- {
- List<TreeItem> items;
-
- // if the node is expanded
- if (isNodeExpanded(item.getModelObject()))
- {
- // build the items for children of the items' treenode.
- items = buildTreeItems(item, nodeChildren(item.getModelObject()), item.getLevel() + 1);
- }
- else
- {
- // it's not expanded, just set children to an empty list
- items = new ArrayList<TreeItem>(0);
- }
-
- item.setChildren(items);
- }
-
- /**
- * Builds (recursively) TreeItems for the given Iterator of TreeNodes.
- *
- * @param parent
- * @param nodes
- * The nodes to build tree items for
- * @param level
- * The current level
- * @return List with new tree items
- */
- private List<TreeItem> buildTreeItems(TreeItem parent, Iterator<Object> nodes, int level)
- {
- List<TreeItem> result = new ArrayList<TreeItem>();
-
- // for each node
- while (nodes.hasNext())
- {
- Object node = nodes.next();
- // create tree item
- TreeItem item = newTreeItem(parent, node, level);
- itemContainer.add(item);
-
- // builds it children (recursively)
- buildItemChildren(item);
-
- // add item to result
- result.add(item);
- }
-
- return result;
- }
-
- /**
- * Checks whether the model has been changed, and if so unregister and register listeners.
- */
- private void checkModel()
- {
- // find out whether the model object (the TreeModel) has been changed
- TreeModel model = getModelObject();
- if (model != previousModel)
- {
- if (previousModel != null)
- {
- previousModel.removeTreeModelListener(this);
- }
-
- previousModel = model;
-
- if (model != null)
- {
- model.addTreeModelListener(this);
- }
- // model has been changed, redraw whole tree
- invalidateAll();
- }
- }
-
- /**
- * Removes all TreeItem components.
- */
- private void clearAllItem()
- {
- visitItemAndChildren(rootItem, new IItemCallback()
- {
- @Override
- public void visitItem(TreeItem item)
- {
- item.remove();
- }
- });
- rootItem = null;
- }
-
- /**
- * Returns the javascript used to delete removed elements.
- *
- * @return The javascript
- */
- private String getElementsDeleteJavaScript()
- {
- // build the javascript call
- final AppendingStringBuffer buffer = new AppendingStringBuffer(100);
-
- buffer.append("Wicket.Tree.removeNodes(\"");
-
- // first parameter is the markup id of tree (will be used as prefix to
- // build ids of child items
- buffer.append(getMarkupId() + "_\",[");
-
- // append the ids of elements to be deleted
- buffer.append(deleteIds);
-
- // does the buffer end if ','?
- if (buffer.endsWith(","))
- {
- // it does, trim it
- buffer.setLength(buffer.length() - 1);
- }
-
- buffer.append("]);");
-
- return buffer.toString();
- }
-
- //
- // State and Model callbacks
- //
-
- /**
- * returns the short version of item id (just the number part).
- *
- * @param item
- * The tree item
- * @return The id
- */
- private String getShortItemId(TreeItem item)
- {
- // show much of component id can we skip? (to minimize the length of
- // javascript being sent)
- final int skip = getMarkupId().length() + 1; // the length of id of
- // tree and '_'.
- return item.getMarkupId().substring(skip);
- }
-
- private final static ResourceReference JAVASCRIPT = new JavaScriptResourceReference(
- AbstractTree.class, "res/tree.js");
-
- /**
- * Initialize the component.
- */
- private void init()
- {
- setVersioned(false);
-
- // we need id when we are replacing the whole tree
- setOutputMarkupId(true);
-
- // create container for tree items
- itemContainer = new TreeItemContainer("i");
- add(itemContainer);
-
- checkModel();
- }
-
- /**
- * INTERNAL
- *
- * @param node
- */
- public final void markNodeDirty(Object node)
- {
- invalidateNode(node, false);
- }
-
- /**
- * INTERNAL
- *
- * @param node
- */
- public final void markNodeChildrenDirty(Object node)
- {
- TreeItem item = nodeToItemMap.get(node);
- if (item != null)
- {
- visitItemChildren(item, new IItemCallback()
- {
- @Override
- public void visitItem(TreeItem item)
- {
- invalidateNode(item.getModelObject(), false);
- }
- });
- }
- }
-
- /**
- * Invalidates single node (without children). On the next render, this node will be updated.
- * Node will not be rebuilt, unless forceRebuild is true.
- *
- * @param node
- * The node to invalidate
- * @param forceRebuild
- */
- private void invalidateNode(Object node, boolean forceRebuild)
- {
- if (dirtyAll == false)
- {
- // get item for this node
- TreeItem item = nodeToItemMap.get(node);
-
- if (item != null)
- {
- boolean createDOM = false;
-
- if (forceRebuild)
- {
- // recreate the item
- int level = item.getLevel();
- List<TreeItem> children = item.getChildren();
- String id = item.getId();
-
- // store the parent of old item
- TreeItem parent = item.getParentItem();
-
- // if the old item has a parent, store it's index
- int index = parent != null ? parent.getChildren().indexOf(item) : -1;
-
- createDOM = dirtyItemsCreateDOM.contains(item);
-
- dirtyItems.remove(item);
- dirtyItemsCreateDOM.remove(item);
-
- item.remove();
-
- item = newTreeItem(parent, node, level, id);
- itemContainer.add(item);
-
- item.setChildren(children);
-
- // was the item an root item?
- if (parent == null)
- {
- rootItem = item;
- }
- else
- {
- parent.getChildren().set(index, item);
- }
- }
-
- if (!dirtyItems.contains(item))
- {
- dirtyItems.add(item);
- }
-
- if (createDOM && !dirtyItemsCreateDOM.contains(item))
- {
- dirtyItemsCreateDOM.add(item);
- }
- }
- }
- }
-
- /**
- * Invalidates node and it's children. On the next render, the node and children will be
- * updated. Node children will be rebuilt.
- *
- * @param node
- * The node to invalidate
- */
- private void invalidateNodeWithChildren(Object node)
- {
- if (dirtyAll == false)
- {
- // get item for this node
- TreeItem item = nodeToItemMap.get(node);
-
- // is the item visible?
- if (item != null)
- {
- // go though item children and remove every one of them
- visitItemChildren(item, new IItemCallback()
- {
- @Override
- public void visitItem(TreeItem item)
- {
- removeItem(item);
- }
- });
-
- // set children to null so that they get rebuild
- item.setChildren(null);
-
- if (!dirtyItems.contains(item))
- {
- // add item to dirty items
- dirtyItems.add(item);
- }
- }
- }
- }
-
- /**
- * Returns whether the given node is visible, e.g. all it's parents are expanded.
- *
- * @param node
- * The node to inspect
- * @return true if the node is visible, false otherwise
- */
- private boolean isNodeVisible(Object node)
- {
- if (node == null)
- {
- return false;
- }
- Object parent = getParentNode(node);
- while (parent != null)
- {
- if (isNodeExpanded(parent) == false)
- {
- return false;
- }
- parent = getParentNode(parent);
- }
- return true;
- }
-
- /**
- * Returns parent node of given node.
- *
- * @param node
- * @return parent node
- */
- public Object getParentNode(Object node)
- {
- TreeItem item = nodeToItemMap.get(node);
- if (item == null)
- {
- return null;
- }
- else
- {
- TreeItem parent = item.getParentItem();
- return parent == null ? null : parent.getModelObject();
- }
- }
-
- /**
- * Creates a tree item for given node.
- *
- * @param parent
- * @param node
- * The tree node
- * @param level
- * The level *
- * @return The new tree item
- */
- private TreeItem newTreeItem(TreeItem parent, Object node, int level)
- {
- return new TreeItem(parent, "" + idCounter++, node, level);
- }
-
- /**
- * Creates a tree item for given node with specified id.
- *
- * @param parent
- * @param node
- * The tree node
- * @param level
- * The level
- * @param id
- * the component id
- * @return The new tree item
- */
- private TreeItem newTreeItem(TreeItem parent, Object node, int level, String id)
- {
- return new TreeItem(parent, id, node, level);
- }
-
- /**
- * Return the representation of node children as Iterator interface.
- *
- * @param node
- * The tree node
- * @return iterable presentation of node children
- */
- public final Iterator<Object> nodeChildren(Object node)
- {
- TreeModel model = getTreeModel();
- int count = model.getChildCount(node);
- List<Object> nodes = new ArrayList<Object>(count);
- for (int i = 0; i < count; ++i)
- {
- nodes.add(model.getChild(node, i));
- }
- return nodes.iterator();
- }
-
- /**
- * @param parent
- * @param index
- * @return child
- */
- public final Object getChildAt(Object parent, int index)
- {
- return getTreeModel().getChild(parent, index);
- }
-
- /**
- *
- * @param node
- * @return boolean
- */
- public final boolean isLeaf(Object node)
- {
- return getTreeModel().isLeaf(node);
- }
-
- /**
- * @param parent
- * @return child count
- */
- public final int getChildCount(Object parent)
- {
- return getTreeModel().getChildCount(parent);
- }
-
- private TreeModel getTreeModel()
- {
- return getModelObject();
- }
-
- /**
- * Rebuilds children of every item in dirtyItems that needs it. This method is called for
- * non-partial update.
- */
- private void rebuildDirty()
- {
- // go through dirty items
- for (TreeItem item : dirtyItems)
- {
- // item children need to be rebuilt
- if (item.getChildren() == null)
- {
- buildItemChildren(item);
- }
- }
- }
-
- /**
- * Removes the item, appends it's id to deleteIds. This is called when a items parent is being
- * deleted or rebuilt.
- *
- * @param item
- * The item to remove
- */
- private void removeItem(TreeItem item)
- {
- // even if the item is dirty it's no longer necessary to update id
- dirtyItems.remove(item);
-
- // if the item was about to be created
- if (dirtyItemsCreateDOM.contains(item))
- {
- // we needed to create DOM element, we no longer do
- dirtyItemsCreateDOM.remove(item);
- }
- else
- {
- // add items id (it's short version) to ids of DOM elements that
- // will be
- // removed
- deleteIds.append(getShortItemId(item));
- deleteIds.append(",");
- }
-
- if (item.getParent() != null)
- {
- // remove the id
- // note that this doesn't update item's parent's children list
- item.remove();
- }
- }
-
- /**
- * Calls after the tree has been rendered. Clears all dirty flags.
- */
- private void updated()
- {
- dirtyAll = false;
- dirtyItems.clear();
- dirtyItemsCreateDOM.clear();
- deleteIds.clear();
- }
-
- /**
- * Call the callback#visitItem method for the given item and all it's children.
- *
- * @param item
- * The tree item
- * @param callback
- * item call back
- */
- private void visitItemAndChildren(TreeItem item, IItemCallback callback)
- {
- callback.visitItem(item);
- visitItemChildren(item, callback);
- }
-
- /**
- * Call the callback#visitItem method for every child of given item.
- *
- * @param item
- * The tree item
- * @param callback
- * The callback
- */
- private void visitItemChildren(TreeItem item, IItemCallback callback)
- {
- if (item.getChildren() != null)
- {
- for (TreeItem child : item.getChildren())
- {
- visitItemAndChildren(child, callback);
- }
- }
- }
-
- /**
- * Returns the component associated with given node, or null, if node is not visible. This is
- * useful in situations when you want to touch the node element in html.
- *
- * @param node
- * Tree node
- * @return Component associated with given node, or null if node is not visible.
- */
- public Component getNodeComponent(Object node)
- {
- return nodeToItemMap.get(node);
- }
-
- @Override
- public void renderHead(IHeaderResponse response)
- {
- response.render(JavaScriptHeaderItem.forReference(JAVASCRIPT));
- }
-}
http://git-wip-us.apache.org/repos/asf/wicket/blob/fbe42230/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/BaseTree.html
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/BaseTree.html b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/BaseTree.html
deleted file mode 100644
index a123a26..0000000
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/BaseTree.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<wicket:panel xmlns:wicket="http://wicket.apache.org">
-<table wicket:id="i" class="wicket-tree-content"><tr>
-<a wicket:id="junctionLink"></a>
-<td wicket:id="nodeComponent"></td>
-</tr></table>
-</wicket:panel>
\ No newline at end of file