Я не могу найти решение, почему мой менеджер Explorer (BeanTreeView или OutlineView) в приложении NetBeans Platform 7.1 прекрасно работает с древовидной структурой, при удалении одного узла, но не при удалении нескольких узлов .Проблема связана с обновлением дерева, а не с удалением .При вызове действия удаления (системного действия) он вызывает метод destroy () на моем узле:
@Override
public void destroy() throws IOException {
//removing the business object
...
try {
IReloadableViewCapability rvc;
if (getParentNode() != null) {
rvc = this.getParentNode().getLookup().lookup(IReloadableViewCapability.class);
}
rvc.reloadChildren();
} catch (Exception ex) {
logger.log(Level.WARNING, null, ex);
}
fireNodeDestroyed();
}
И скажем, у меня есть такая структура:
Теперь, скажем, я хочу удалить узлы 1.1, 1.2 и 1.3.Я выбираю их все, вызываю действие удаления, и он вызывает метод destroy () узла 1.1, где он удаляет данные для него и вызывает мой метод reloadChildren () для parentNode узла 1.1 (как показано вкод выше).Затем после удаления узла 1.2 доходит до 1.3. Удаляет удаляемые данные для 1.3, но теперь getParentNode () возвращает ноль, хотя он снова должен возвращать Node 1 .
Аналогичная проблема возникает при удалении Node 1 и Node 2.вместе (или любые другие верхние узлы), даже если они являются потомками специального узла RootNode.Единственная разница в корне состоит в том, что там все идет нормально только для первого узла, но, чем любой другой выбранный, не может найти своего родителя.
Где может быть проблема?