replicatedtreedemo.java

来自「JGRoups源码」· Java 代码 · 共 716 行 · 第 1/2 页

JAVA
716
字号
            TableColumn column=null;            column=table.getColumnModel().getColumn(0);            column.setMinWidth(KEY_COL_WIDTH);            column.setPreferredWidth(KEY_COL_WIDTH);            column=table.getColumnModel().getColumn(1);            column.setPreferredWidth(VAL_COL_WIDTH);        }        private void createMenus() {            menubar=new JMenuBar();            operationsMenu=new JMenu("Operations");            AddNodeAction addNode=new AddNodeAction();            addNode.putValue(AbstractAction.NAME, "Add to this node");            RemoveNodeAction removeNode=new RemoveNodeAction();            removeNode.putValue(AbstractAction.NAME, "Remove this node");            AddModifyDataForNodeAction addModAction=new AddModifyDataForNodeAction();            addModAction.putValue(AbstractAction.NAME, "Add/Modify data");            ExitAction exitAction=new ExitAction();            exitAction.putValue(AbstractAction.NAME, "Exit");            operationsMenu.add(addNode);            operationsMenu.add(removeNode);            operationsMenu.add(addModAction);            operationsMenu.add(exitAction);            menubar.add(operationsMenu);            setJMenuBar(menubar);            operationsPopup=new JPopupMenu();            operationsPopup.add(addNode);            operationsPopup.add(removeNode);            operationsPopup.add(addModAction);        }        HashMap getData(ReplicatedTree tree, String fqn) {            HashMap data;            Set keys;            String key;            Object value;            if(tree == null || fqn == null) return null;            keys=tree.getKeys(fqn);            if(keys == null) return null;            data=new HashMap();            for(Iterator it=keys.iterator(); it.hasNext();) {                key=(String)it.next();                value=tree.get(fqn, key);                if(value != null)                    data.put(key, value);            }            return data;        }        /* -------------------------- End of Private Methods ------------------------------ */        /*----------------------- Actions ---------------------------*/        class ExitAction extends AbstractAction {            public void actionPerformed(ActionEvent e) {                System.exit(0);            }        }        class AddNodeAction extends AbstractAction {            public void actionPerformed(ActionEvent e) {                JTextField fqnTextField=new JTextField();                if(selected_node != null)                    fqnTextField.setText(selected_node);                Object[] information={"Enter fully qualified name",                                      fqnTextField};                final String btnString1="OK";                final String btnString2="Cancel";                Object[] options={btnString1, btnString2};                int userChoice=JOptionPane.showOptionDialog(null,                        information,                        "Add Node",                        JOptionPane.YES_NO_OPTION,                        JOptionPane.PLAIN_MESSAGE,                        null,                        options,                        options[0]);                if(userChoice == 0) {                    String userInput=fqnTextField.getText();                    tree.put(userInput, null);                }            }        }        class RemoveNodeAction extends AbstractAction {            public void actionPerformed(ActionEvent e) {                tree.remove(selected_node);            }        }        class AddModifyDataForNodeAction extends AbstractAction {            public void actionPerformed(ActionEvent e) {                HashMap data=getData(tree, selected_node);                if(data != null) {                }                else {                    clearTable();                    data=new HashMap();                    data.put("Add Key", "Add Value");                }                populateTable(data);                getContentPane().add(tablePanel, BorderLayout.SOUTH);                validate();            }        }//        public static void main(String args[]) {//            ReplicatedTree tree;////            for(int i=0; i < args.length; i++) {//                if(args[i].equals("-help")) {//                    System.out.println("ReplicatedTreeView [-help]");//                    return;//                }//            }////            try {//                tree=new ReplicatedTree(null);//                tree.setRemoteCalls(false);//                HashMap map=new HashMap();//                map.put("name", "Framework");//                map.put("pid", new Integer(322649));//                tree.put("/federations/fed1/servers/Framework", map);//                tree.put("/federations/fed1/servers/Security", null);////                // demo.setVisible(true);//                new ReplicatedTreeView(tree, "<null address>");////                tree.put("/federations/fed1/servers/Security/components/RuntimeMonitor", null);//                tree.put("/federations/fed1/servers/fenics", null);//////            }//            catch(Exception ex) {//                ex.printStackTrace(System.err);//            }//        }        class MyNode extends DefaultMutableTreeNode {            String name="<unnamed>";            MyNode(String name) {                this.name=name;            }            /**             * Adds a new node to the view. Intermediary nodes will be created if they don't yet exist.             * Returns the first node that was created or null if node already existed             */            public MyNode add(String fqn) {                MyNode curr, n, ret=null;                StringTokenizer tok;                String child_name;                if(fqn == null) return null;                curr=this;                tok=new StringTokenizer(fqn, ReplicatedTreeView.SEP);                while(tok.hasMoreTokens()) {                    child_name=tok.nextToken();                    n=curr.findChild(child_name);                    if(n == null) {                        n=new MyNode(child_name);                        if(ret == null) ret=n;                        curr.add(n);                    }                    curr=n;                }                return ret;            }            /**             * Removes a node from the view. Child nodes will be removed as well             */            public void remove(String fqn) {                removeFromParent();            }            MyNode findNode(String fqn) {                MyNode curr, n;                StringTokenizer tok;                String child_name;                if(fqn == null) return null;                curr=this;                tok=new StringTokenizer(fqn, ReplicatedTreeView.SEP);                while(tok.hasMoreTokens()) {                    child_name=tok.nextToken();                    n=curr.findChild(child_name);                    if(n == null)                        return null;                    curr=n;                }                return curr;            }            MyNode findChild(String relative_name) {                MyNode child;                if(relative_name == null || getChildCount() == 0)                    return null;                for(int i=0; i < getChildCount(); i++) {                    child=(MyNode)getChildAt(i);                    if(child.name == null) {                        continue;                    }                    if(child.name.equals(relative_name))                        return child;                }                return null;            }            String print(int indent) {                StringBuffer sb=new StringBuffer();                for(int i=0; i < indent; i++)                    sb.append(' ');                if(!isRoot()) {                    if(name == null)                        sb.append("/<unnamed>");                    else {                        sb.append(ReplicatedTreeView.SEP + name);                    }                }                sb.append('\n');                if(getChildCount() > 0) {                    if(isRoot())                        indent=0;                    else                        indent+=4;                    for(int i=0; i < getChildCount(); i++)                        sb.append(((MyNode)getChildAt(i)).print(indent));                }                return sb.toString();            }            public String toString() {                return name;            }        }    }    public static void main(String args[]) {        ReplicatedTree tree;        String start_directory=null;        boolean jmx=false;        String props="UDP(mcast_addr=224.0.0.36;mcast_port=55566;ip_ttl=32;" +                "mcast_send_buf_size=150000;mcast_recv_buf_size=80000):" +                "PING(timeout=2000;num_initial_members=3):" +                "MERGE2(min_interval=5000;max_interval=10000):" +                "FD_SOCK:" +                "VERIFY_SUSPECT(timeout=1500):" +                "pbcast.NAKACK(gc_lag=50;retransmit_timeout=600,1200,2400,4800):" +                "UNICAST(timeout=600,1200,2400,4800):" +                "pbcast.STABLE(desired_avg_gossip=20000):" +                "FRAG(frag_size=16000;down_thread=false;up_thread=false):" +                "pbcast.GMS(join_timeout=5000;join_retry_timeout=2000;" +                "shun=false;print_local_addr=true):" +                "pbcast.STATE_TRANSFER";        // "PERF(details=true)";        for(int i=0; i < args.length; i++) {            if("-props".equals(args[i])) {                props=args[++i];                continue;            }            if("-start_directory".equals(args[i])) {                start_directory=args[++i];                continue;            }            if("-jmx".equals(args[i])) {                jmx=true;                continue;            }            help();            return;        }        try {            tree=new ReplicatedTree("ReplicatedTreeDemo-Group", props, 10000, jmx);            new ReplicatedTreeView(tree, tree.getLocalAddress());            // demo.setVisible(true);            if(start_directory != null && start_directory.length() > 0) {                populateTree(tree, start_directory);            }            else {                /*                HashMap map=new HashMap();                map.put("name", "Framework");                map.put("pid", new Integer(322649));                tree.put("/federations/fed1/servers/Framework", map);                tree.put("/federations/fed1/servers/Security", null);                tree.put("/federations/fed1/servers/Security/components/RuntimeMonitor", null);                tree.put("/federations/fed1/servers/fenics", null);                */            }        }        catch(Exception ex) {            ex.printStackTrace(System.err);        }    }    static void help() {        System.out.println("ReplicatedTreeView [-help] " +                "[-props <channel properties>] [-start_directory <dirname>] [-jmx]");    }    static void populateTree(ReplicatedTree tree, String dir) {        File file=new File(dir);        if(!file.exists()) return;        tree.put(dir, null);        if(file.isDirectory()) {            String[] children=file.list();            if(children != null && children.length > 0) {                for(int i=0; i < children.length; i++)                    populateTree(tree, dir + '/' + children[i]);            }        }    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?