IResource.refreshLocal (IResource.DEPTH_INFINITE, null); не освежает - PullRequest
0 голосов
/ 15 июля 2011

После выполнения манипуляций в моем дереве просмотра, когда я вызываю этот API IResource.refreshLocal (IResource.DEPTH_INFINITE, null); это не обновляет интерфейс Есть ли какой-нибудь альтернативный способ обновить дерево?

Ответы [ 2 ]

2 голосов
/ 15 июля 2011

Если вы используете пользовательское средство просмотра дерева, которое зависит от изменений ресурса, то обновление ресурсов не приведет к изменениям в средстве просмотра: поставщик содержимого не будет повторно выполняться при изменении ресурса. Если вы хотите обновить пользовательский просмотрщик, вам нужно зарегистрировать resourcechangelistener, который будет вызывать методы обновления или обновления средства просмотра.

Однако, если вы используете Common Navigator Framework (CNF) со встроенной поддержкой ресурсов, он должен обновиться сам.

Обновление : CNF должен быть настроен следующим образом (извлечено из моего рабочего решения):

<extension
   point="org.eclipse.ui.navigator.viewer">
  <viewerContentBinding 
     viewerId="org.eclipse.viatra2.navigator">
    <includes>
      <contentExtension 
    pattern="org.eclipse.ui.navigator.resourceContent" />                     
      <contentExtension 
    pattern="org.eclipse.ui.navigator.resources.filters.*"/>
    </includes>
...
</extension>
1 голос
/ 15 июля 2011

Для пользовательских моделей, добавленных в Навигатор, используйте:

if (viewPart instanceof CommonNavigator) {
  CommonViewer viewer = ((CommonNavigator) viewPart).getCommonViewer();
  viewer.refresh();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...