对于DND中,设置…
Author
Zhou Renjian
Create@
2004-02-29 00:26
对于DND中,设置TreeViewer中两个元素相等,要讲究,要不对导致意想不到的效果,譬如说
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (!(obj instanceof INoteItem))
return false;
INoteItem ni = (INoteItem)obj;
if (parent == null) {
if (ni.parent != null) {
return false;
}
if (!(ni.note.equals(note))) {
return false;
}
} else {
if (ni.parent == null) {
return false;
}
if (!(ni.parent.note.equals(parent.note))) {
return false;
}
if (!(ni.note.equals(note))) {
return false;
}
}
return true;
}
public boolean equals(INoteItem obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (!(obj instanceof INoteItem))
return false;
return note.equals(((INoteItem)obj).note);
}
是两种不同的相同,第一种相同过于严格,会导致dnd时,不能够充分认识到一些祖先和子女之间的密切联系。
第二种则相对宽松,但会导致譬如双击或重新select元素时候,元素不能准确定位,例如双击相同的两个books中的第二个,而展开的是第一个books!从而上两种相同要分开来讨论。