2013-06-28 2 views
1

Я создал часть редактора в затмении, чтобы визуализировать график Zest. Моя проблема: если я попытаюсь закрыть часть редактора, которая содержит большой график (~ 6000 узлов, 9000 ребер), eclipse не сможет обработать операцию закрытия и повесить трубку.Не удается закрыть часть редактора с большой диаграммой zest

Любые идеи для решения проблемы или ее отладки?

Я думаю, проблема заключается в том, чтобы избавиться от объекта графика, но у меня нет идеи его решить.

Заранее благодарен!

ответ

0

Проблема была метод «org.eclipse.gef4.zest.layouts.algorithms.TreeLayoutObserver.TreeNode .isAncestorO f (потомок потомков TreeNode) ". Я исправил его для меня, и я сообщу об ошибке (для сообщения об ошибке в комментариях). Если кому-то нужно быстро исправить баг:

старая версия:

public boolean isAncestorOf(TreeNode descendant) { 
     while (descendant.depth > this.depth) { 
      descendant = descendant.parent; 
     } 
     return descendant == this; 
    } 

новая версия:

public boolean isAncestorOf(TreeNode descendant) { 
     while (descendant.depth > this.depth) { 
      if (descendant == descendant.parent) { 
       return false; 
      } else { 
       descendant = descendant.parent; 
      } 
     } 
     return descendant == this; 
    } 
+0

https://bugs.eclipse.org/bugs/show_bug.cgi?id=412446 – Yannic

0

Чтобы отладить его, я попытался бы заглянуть в файл журнала Eclipse (workspace/.metadata/.log), чтобы узнать, что произошло. Это может быть проблема с памятью. Если это звучит так, как в файле журнала, вы можете попытаться изменить конфигурацию eclipse.ini, в частности значения -XX:MaxPermSize, -Xms и -Xmx (см. http://wiki.eclipse.org/Eclipse.ini).

Если проблема сохраняется при разумных значениях памяти, было бы здорово, если бы вы могли подать ошибку: https://bugs.eclipse.org/bugs/enter_bug.cgi?product=GEF&component=Zest

+0

Там не вошли сведения о моей проблеме, и я не думаю, что это проблема памяти, потому что в этом случае я должен получить некоторые исключения? – Yannic

+0

@Yannic Я все равно попытаюсь установить некоторые более крупные настройки памяти и посмотреть, что произойдет. Вы также можете попробовать чистую настройку Eclipse, например. просто SDK + Zest. Если он все еще зависает, я был бы очень доволен сообщением об ошибке с SSCCE: http://sscce.org/ –

+0

Я сделал несколько простых примеров с 7000 узлами и 10 000 ребер. Мои результаты: закрытие одного графика с 7000 узлов и 10 000 ребер не представляет проблемы. Проблема с закрытием объекта Graph с 10 подграфами. Можете ли вы объяснить, какие методы вызывают, когда пользователь закрывает редактор, в котором содержится объект Graph? Я попытался создать новый класс ExtendedGraph, который расширяет класс Graph и переопределяет метод dispose для регистрации вызовов этого метода. Но звонка нет ... – Yannic