📄 extdefaulttreemodel.java
字号:
}
} else {
startNode = currentNode;//the default sitiation
resultNode = startNode;//at first the startNode is equal to the resultNode;
//search each of the dentry
for(int i = 0;i < dentry.length;i++){
//search each child
startNode = resultNode;//prepare for the next search ,reset the startNode to the new start
for(int j = 0;j < startNode.getChildCount();j++){
//if the dentry is equal to the name of the inode
if(dentry[i].equals(((DefaultMutableTreeNode)startNode.getChildAt(j)).getUserObject().toString())){
resultNode = startNode.getChildAt(j);//let the resultNode record the tree of the dentry
break;//jump to next dentry
}
}
//if the resultNode = startNode, it means that the search of the dentry at this time has been failed
if(startNode == resultNode){
break;//search failed,no longer need to search next dentry
}
}
//if search failed , set the resultNode null
if(resultNode == startNode){
resultNode = null;
}
}
return resultNode;
}
/**extend the removeNodeFromParent method , let it has the ability to deal with the inode*/
public void removeNodeFromParent(MutableTreeNode node){
MutableTreeNode parent;
parent = (MutableTreeNode)node.getParent();
//first let the i nodenode break away from the parent
((INode)(((DefaultMutableTreeNode)parent).getUserObject())).delPointer(((INode)(((DefaultMutableTreeNode)node).getUserObject())).getFileDescriptor());
//destroy the i nodenode from the disk
((INode)(((DefaultMutableTreeNode)node).getUserObject())).destroy(((INode)(((DefaultMutableTreeNode)node).getUserObject())).getFileDescriptor());
//destory the tree node
super.removeNodeFromParent(node);
}
/**extend the insertNodeInto method , let it has the ability to deal with the inode*/
public void insertNodeInto(MutableTreeNode newChild,MutableTreeNode parent,int index){
super.insertNodeInto(newChild,parent,index);
//add the child's i node to the parent's data field
((INode)(((DefaultMutableTreeNode)parent).getUserObject())).addPointer(((INode)(((DefaultMutableTreeNode)newChild).getUserObject())).getFileDescriptor());
}
/**For class debuging */
public static void main(String[] args){
//test the constructor
Disk simDisk = new Disk();//create a simDisk
INode rootNode = new INode("/",simDisk);//create the root node,route: /
DefaultMutableTreeNode root = new DefaultMutableTreeNode(rootNode);
ExtDefaultTreeModel model = new ExtDefaultTreeModel(root);
INode xxNode = new INode("xx",simDisk);//create the xx node,route: /xx
DefaultMutableTreeNode xx = new DefaultMutableTreeNode(xxNode);
// root.add(xx);//the old method to add a child node to parent node
model.insertNodeInto(xx,root,root.getChildCount());//the new method to insert a node to a tree
INode yyNode = new INode("yy",simDisk);//create the yy node,route: /xx/yy
DefaultMutableTreeNode yy = new DefaultMutableTreeNode(yyNode);
// xx.add(yy);//the old method to add a child node to parent node
model.insertNodeInto(yy,xx,xx.getChildCount());//the new method to insert a node to a tree
INode zzNode = new INode("zz",simDisk);//create the yy node,route:/xx/yy/zz
DefaultMutableTreeNode zz = new DefaultMutableTreeNode(zzNode);
// yy.add(zz);
model.insertNodeInto(zz,yy,yy.getChildCount());//the new method to insert a node to a tree
INode kkNode = new INode("kk",simDisk);//create the yy node,route:/kk
DefaultMutableTreeNode kk = new DefaultMutableTreeNode(kkNode);
// root.add(kk);
model.insertNodeInto(kk,root,root.getChildCount());//the new method to insert a node to a tree
//test the removeNodeFromParent() method
model.removeNodeFromParent(yy);
//test the getParent method
String path1 = "/xx/yy/zz";
String path2 = "xx/yy/zz";
String path3 = "./kk";
String path4 = "../xx/yy/zz";
String path5 = "/";
String path6 = "/xx";
String path7 = ".";
String path8 = "./xx";
String path9 = "..";
String path10 = "../xx";
String path11 = "xx";
String path12 = "xx/yy/zz";
String[] dentry1 = path1.split("/");
DefaultMutableTreeNode result1 = (DefaultMutableTreeNode)model.getParent(dentry1);
if(result1 != null){
System.out.println(result1.getUserObject().toString());
} else {
System.out.println("null");
}
//test the setCurrentNode() method
model.setCurrentNode(root);
String[] dentry2 = path2.split("/");
DefaultMutableTreeNode result2 = (DefaultMutableTreeNode)model.getParent(dentry2);
if(result2 != null){
System.out.println(result2.getUserObject().toString());
} else {
System.out.println("null");
}
String[] dentry3 = path3.split("/");
DefaultMutableTreeNode result3 = (DefaultMutableTreeNode)model.getParent(dentry3);
if(result3 != null){
System.out.println(result3.getUserObject().toString());
} else {
System.out.println("null");
}
String[] dentry4 = path4.split("/");
DefaultMutableTreeNode result4 = (DefaultMutableTreeNode)model.getParent(dentry4);
if(result4 != null){
System.out.println(result4.getUserObject().toString());
} else {
System.out.println("null");
}
// String[] dentry5 = path5.split("/");
// DefaultMutableTreeNode result5 = (DefaultMutableTreeNode)model.getParent(dentry5);
// if(result5 != null){
// System.out.println(result5.getUserObject().toString());
// } else {
// System.out.println("null");
// }
String[] dentry6 = path6.split("/");
DefaultMutableTreeNode result6 = (DefaultMutableTreeNode)model.getParent(dentry6);
if(result6 != null){
System.out.println(result6.getUserObject().toString());
} else {
System.out.println("null");
}
String[] dentry7 = path7.split("/");
DefaultMutableTreeNode result7 = (DefaultMutableTreeNode)model.getParent(dentry7);
if(result7 != null){
System.out.println(result7.getUserObject().toString());
} else {
System.out.println("null");
}
String[] dentry8 = path8.split("/");
DefaultMutableTreeNode result8 = (DefaultMutableTreeNode)model.getParent(dentry8);
if(result8 != null){
System.out.println(result8.getUserObject().toString());
} else {
System.out.println("null");
}
String[] dentry9 = path9.split("/");
DefaultMutableTreeNode result9 = (DefaultMutableTreeNode)model.getParent(dentry9);
if(result9 != null){
System.out.println(result9.getUserObject().toString());
} else {
System.out.println("null");
}
String[] dentry10 = path10.split("/");
DefaultMutableTreeNode result10 = (DefaultMutableTreeNode)model.getParent(dentry10);
if(result10 != null){
System.out.println(result10.getUserObject().toString());
} else {
System.out.println("null");
}
String[] dentry11 = path11.split("/");
DefaultMutableTreeNode result11 = (DefaultMutableTreeNode)model.getParent(dentry11);
if(result11 != null){
System.out.println(result11.getUserObject().toString());
} else {
System.out.println("null");
}
String[] dentry12 = path12.split("/");
DefaultMutableTreeNode result12 = (DefaultMutableTreeNode)model.getParent(dentry12);
if(result12 != null){
System.out.println(result12.getUserObject().toString());
} else {
System.out.println("null");
}
System.out.println("-------------------------------------------------------");
result1 = (DefaultMutableTreeNode)model.getChild(dentry1);
if(result1 != null){
System.out.println(result1.getUserObject().toString());
} else {
System.out.println("null");
}
result2 = (DefaultMutableTreeNode)model.getChild(dentry2);
if(result2 != null){
System.out.println(result2.getUserObject().toString());
} else {
System.out.println("null");
}
result3 = (DefaultMutableTreeNode)model.getChild(dentry3);
if(result3 != null){
System.out.println(result3.getUserObject().toString());
} else {
System.out.println("null");
}
result4 = (DefaultMutableTreeNode)model.getChild(dentry4);
if(result4 != null){
System.out.println(result4.getUserObject().toString());
} else {
System.out.println("null");
}
// result5 = (DefaultMutableTreeNode)model.getChild(dentry5);
// if(result5 != null){
// System.out.println(result5.getUserObject().toString());
// } else {
// System.out.println("null");
// }
result6 = (DefaultMutableTreeNode)model.getChild(dentry6);
if(result6 != null){
System.out.println(result6.getUserObject().toString());
} else {
System.out.println("null");
}
result7 = (DefaultMutableTreeNode)model.getChild(dentry7);
if(result7 != null){
System.out.println(result7.getUserObject().toString());
} else {
System.out.println("null");
}
result8 = (DefaultMutableTreeNode)model.getChild(dentry8);
if(result8 != null){
System.out.println(result8.getUserObject().toString());
} else {
System.out.println("null");
}
result9 = (DefaultMutableTreeNode)model.getChild(dentry9);
if(result9 != null){
System.out.println(result9.getUserObject().toString());
} else {
System.out.println("null");
}
result10 = (DefaultMutableTreeNode)model.getChild(dentry10);
if(result10 != null){
System.out.println(result10.getUserObject().toString());
} else {
System.out.println("null");
}
result11 = (DefaultMutableTreeNode)model.getChild(dentry11);
if(result11 != null){
System.out.println(result11.getUserObject().toString());
} else {
System.out.println("null");
}
result12 = (DefaultMutableTreeNode)model.getChild(dentry12);
if(result12 != null){
System.out.println(result12.getUserObject().toString());
} else {
System.out.println("null");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -