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 + -
显示快捷键?