Добавление динамических вкладок в представление свойств вкладок Eclipse - PullRequest
4 голосов
/ 06 марта 2012

Я пытаюсь создать представление свойств с вкладками согласно данной статье: Представление свойств вкладок Eclipse

Согласно статье, точка расширения org.eclipse.ui.views.properties.tabbed.propertyTabs может использоваться для добавления новых вкладок.,

<extension point="org.eclipse.ui.views.properties.tabbed.propertyTabs">
      <propertyTabs contributorId="mview.views.SampleView">
         <propertyTab
            category="sample"
               id="mview.ButtonTab"
            label="Button"/>
         <propertyTab
            afterTab="mview.ButtonTab"
            category="sample"
               id="mview.AdvancedTab"
            label="Advanced"/>
      </propertyTabs>
   </extension>

Однако в моем случае вкладки представления свойств различаются в зависимости от элемента, выбранного в представлении.Поэтому я должен добавлять вкладки динамически в расширение в зависимости от выбранного элемента.

Пожалуйста, предложите, как это сделать.

Обновление: Один из способов сделать это (я не уверен, рекомендуется ли это) - использовать метод IExtensionRegistry.addContribution ().Здесь я предоставил объект inputtream, содержащий требуемые детали расширения.Это добавило вкладки к представлению свойств во время выполнения.Однако с изменением выбора элемента в просмотрщике списка вид свойства не обновляется.Пожалуйста, предложите, если это правильный подход.

Ответы [ 3 ]

4 голосов
/ 14 марта 2012

Хорошо, я получил решение Это двухэтапный процесс.С его помощью можно динамически добавлять вкладки (и их разделы):

Шаг 1. Связать поставщика дескрипторов вкладок с представлением.

Добавить точку расширения - org.eclipse.ui.views.properties.tabbed.propertyContributor к виду (если еще не добавлено).В разделе propertyContributor добавьте класс для элемента tabDescriptorProvider.Этот класс будет реализовывать интерфейс ITabDescriptorProvider.

Шаг 2. Предоставление вкладок и разделов:

Поставщик TabDescriptor будет возвращать массив TabDescriptors при вызове его метода getTabDescriptor ().Каждый TabDescriptor возвращает список SectionDecriptors, и каждый SectionDescriptor связан с Разделом.Наконец, это класс Section, который содержит виджеты для отображения на экране.Каждый виджет в классе Section имеет изменяемый список, который обновляет свойства выбранных элементов.

1 голос
/ 03 мая 2012

Хотя ответ из Вирусный может не соответствовать конкретным потребностям ОП, предоставленный ответ, вероятно, приемлем для многих.

Если на вкладке нет разделов для отображения,значение по умолчанию TabbedPropertySheetPage не будет отображать эту вкладку.Таким образом, если проблемный домен указан в терминах IFilter реализации классов, могут быть достигнуты «динамические» вкладки.

Вкладки будут добавляться или удаляться при изменении выбора в зависимости от наличия каких-либо разделов.На видимой вкладке может присутствовать один или несколько разделов, а количество разделов на видимой вкладке может изменяться от выбора к выделению.

Когда я натолкнулся на эту страницу с той же основной проблемой, я былнемного разочарован тем, что мне нужно будет вмешаться так, как предложил ФП.После некоторых экспериментов я смог достичь того, что мне было нужно, исключительно с помощью IFilter подхода, предложенного Viral .

0 голосов
/ 08 марта 2012

Учебное пособие предоставляется на http://www.eclipse.org/articles/Article-Tabbed-Properties/tabbed_properties_view.html

Вам необходимо определить новый YourPropertySection, полученный из Abstract PropertySection. Также определите фильтр, полученный из IFilter, и переопределите метод select, чтобы он возвращал true только для желаемого типа выбора. Затем в plugin.xml напишите точку расширения, которая сопоставит ваш PropertySection с требуемым PropertyTab, а также свяжет ваш фильтр. Таким образом, этот раздел и вкладка будут отображаться только тогда, когда ваш фильтр возвращает true.

...