wicket中当在一个类中要操作种UI时,的解决办法

来源:互联网 发布:淘宝网店怎么开 编辑:程序博客网 时间:2024/05/22 02:02
package com.shzhsoft.webapp.test.datatable;

import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeModel;

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.PropertyRenderableColumn;
import org.apache.wicket.extensions.markup.html.tree.table.PropertyTreeColumn;
import org.apache.wicket.extensions.markup.html.tree.table.TreeTable;
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.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.html.panel.Panel;
/**
 *
 * @author 向诗熠
 * 测试树的操作,点击树上的节点弹出Panel,以产生不同的页面
 */
public class TreeTestPage extends WebPage {
   
    private static final long serialVersionUID = 1L;
    TreePanelOne treePanelOne;
    TreePanelTwo treePanelTwo;
    TreeTable tree;
    public TreeTestPage(){
        super();
        treePanelOne=new TreePanelOne("first");
        add(treePanelOne);
        treePanelTwo=new TreePanelTwo("second");
        add(treePanelTwo);
        IColumn columns[] = new IColumn[] { new PropertyTreeColumn(new
                ColumnLocation(Alignment.LEFT, 18, Unit.EM), "作者", "userObject.author"),
                new PropertyRenderableColumn(new ColumnLocation(Alignment.LEFT, 12,
                Unit.EM), "标题", "userObject.title"), };
                tree = new TreeTable("treeTable", buildTreeModel(), columns){
                    private static final long serialVersionUID = 1L;
                    //private void
                };
                tree.getTreeState().setAllowSelectMultiple(true);
                add(tree);
               
                add(new Link("expandAll") {
                    private static final long serialVersionUID = 1L;

                    public void onClick() {
                        tree.getTreeState().expandAll();
                        treePanelOne.setVisible(false);
                        treePanelTwo.setVisible(true);
                    }
                });
               
                add(new Link("collapseAll") {
                    private static final long serialVersionUID = 1L;

                    public void onClick() {
                        tree.getTreeState().collapseAll();
                        treePanelOne.setVisible(true);
                        treePanelTwo.setVisible(false);
                    }
                });
        }
   
        private TreeModel buildTreeModel() {
            Book rootBook = new Book();
            rootBook.setAuthor("根作者");
            rootBook.setTitle("根标题");
            DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode(rootBook);
            for (int i = 0; i < 10; i++) {
                Book parentBook = new Book();
                DefaultMutableTreeNode parentNode = new    DefaultMutableTreeNode(parentBook);
                parentBook.setAuthor("父作者"+ i);
                parentBook.setTitle("父标题"    + i);
                for (int j = 0; j < 5; j++) {
                    Book childBook = new Book();
                    childBook.setAuthor("子作者"    + (10 * i + j));
                    childBook.setTitle("子标题"+ (10 * i + j));
                    parentNode.add(new DefaultMutableTreeNode(childBook));
                }
            rootNode.add(parentNode);
            }
            return new DefaultTreeModel(rootNode);
        }

    //------------
    public class TreePanelOne extends Panel{
        private static final long serialVersionUID = 1L;
        public TreePanelOne(String id){
            super(id);
            this.add(new Label("message","第一个窗体,以维护单位信息"));
            this.setVisible(false);
        }
       
    }
    //------------------------------
    public class TreePanelTwo extends Panel{
        private static final long serialVersionUID = 1L;
        public TreePanelTwo(String id){
            super(id);
            this.add(new Label("message","第二个窗体,维护规则号信息"));
            this.setVisible(false);
        }
    }
}

下面是几个HtML TreeTestPage.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Insert title here</title>
<style type="text/css" media="all">
<!div.
mytree
div.wickettree
{
height: 80em;
}
>
</style>
</head>
<body>
<table>
<tr>
    <td>
        <table>
            <a href="#" wicket:id="expandAll">展开所有结点</a>
            <a href="#" wicket:id="collapseAll">折叠所有结点</a>
            <div wicket:id="treeTable" class="mytree"></div>
        </table>
     </td>
    <td>
        <table>
            <span wicket:id="first"></span>
            <span wicket:id="second"></span>
        </table>
    </td>
</tr>
</table>
</body>
</html>

//TreeTestPage$TreePanelOne .html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<wicket:panel>
    <span wicket:id="message"></span>
</wicket:panel>
</body>
</html>
//TreeTestPage$TreePanelTwo .html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<wicket:panel>
    <span wicket:id="message"></span>
</wicket:panel>
</body>
</html>