Выражение triggerPoints описывает элементы, которые позволяют вызвать это расширение либо для дочерних объектов, либо для меток. Выражение possibleChildren описывает элементы, для которых расширение может представить родительский объект. В клиентах должны быть описаны все элементы, которые могут являться вариантами выбора, для того чтобы ссылка с поддержкой редактора могла быть правильно развернута к требуемому узлу.
<!ELEMENT extension ((navigatorContent? | actionProvider? | commonWizard? | commonFilter?))>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
<!ELEMENT navigatorContent ((enablement | (triggerPoints , possibleChildren)) , actionProvider* , commonSorter* , override? , dropAssistant* , commonWizard*)>
<!ATTLIST navigatorContent
id CDATA #REQUIRED
name CDATA #REQUIRED
priority (lowest|lower|low|normal|high|higher|highest)
contentProvider CDATA #REQUIRED
icon CDATA #IMPLIED
activeByDefault (true | false)
providesSaveables (true | false)
labelProvider CDATA #REQUIRED>
Расширение содержимого навигатора определяет поставщика содержимого и поставщика меток,
которые можно использовать для предоставления дочерних объектов, если элемент соответствует
выражению triggerPoints, а также предоставления родительского объекта, если элемент
соответствует выражению possibleChildren.
(Необязательно) Клиенты могут также предоставлять поставщика действий, который может
предоставить дополнения меню и панели действий, если выбран элемент, предоставляемый в
расширении, либо если элемент соответствует выражению triggerPoints. Клиенты могут
также предоставлять сортировщик для сортировки элементов, предоставляемых в расширении.
org.eclipse.ui.navigator.CommonActionProvider
). org.eclipse.jface.viewers.ITreeContentProvider
или org.eclipse.ui.navigator.ICommonContentProvider
.
org.eclipse.jface.viewers.ILabelProvider
либо расширенную функциональную возможность - org.eclipse.ui.navigator.ICommonLabelProvider
.
org.eclipse.ui.navigator.IDescriptionProvider
с целью добавления
текста в строку состояния в нижней части рабочей среды Eclipse на основании выбора в программе просмотра. <!ELEMENT enablement (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
Выражения включения позволяет клиентам указывать одинаковые выражения для triggerPoints и possibleChildren.
При использовании actionProvider клиенты должны определить выражение, которое будет указывать, когда
следует вызывать org.eclipse.ui.navigator.CommonActionProvider
. Из-за дополнений к IActionBars
клиенты должны вызываться при выборе объекта, который им требуется. Поэтому клиенты должны проявлять осторожность
при принятии решения о том, когда следует включать их расширение.
<!ELEMENT triggerPoints (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
Выражение triggerPoints определяет узлы в дереве, в которых данное расширение должно вызываться для дочерних объектов.
<!ELEMENT possibleChildren (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
Выражение possibleChildren определяет узлы в дереве, которые могут дополняться данным расширением. Клиенты должны описывать, когда данное расширение содержимого может предоставлять родительский объект для элементов, соответствующих этому выражению.
<!ELEMENT actionProvider (enablement?)>
<!ATTLIST actionProvider
class CDATA #REQUIRED
id CDATA #IMPLIED
dependsOn CDATA #IMPLIED
overrides CDATA #IMPLIED>
Предоставляет имя класса, реализующего org.eclipse.ui.navigator.CommonActionProvider
.
Модуль действий включает возможность внесения дополнений в контекстное меню, а также действия, цель которых
можно изменять, определенные в IActionBars для панели, содержащей навигатор. Клиенты могут также вносить дополнения
непосредственно в меню панели с помощью меню панели IActionBars.
Верхний уровень actionProvider является видимым для произвольной программы просмотра, если для
этого actionProvider существует viewerActionBinding. Для модулей actionProvider, вложенных в элемент
navigatorContent, область видимости определяется ИД расширения navigatorContent. Дочерние модули действий
будут автоматически подхвачены соответствующими элементами viewerContentBinding.
Дополнительная информация о привязках областей видимости см. в org.eclipse.ui.navigator.viewer.
Клиенты могут предоставлять actionProvider в корневом элементе extention (соседним с другим navigatorContent) для улучшения управления их включением и связыванием с программой просмотра (см. veiwerActionBinding).
Если для корневого actionProviders не задан ИД, то ИД по умолчанию - "org.eclipse.ui.navigator.actionProvider.X".
Для того чтобы для данных actionProvider существовала возможность вносить дополнения в меню и панели действий
программы просмотра, должно быть определено viewerActionBinding (как часть точки расширения
org.eclipse.ui.navigator.viewer), которое объявляет связывание между определенной программой просмотра и
ИД по умолчанию ("org.eclipse.ui.navigator.actionProvider.*"). Дополнительная информация приведена в
документации по viewerActionBinding в документации схемы org.eclipse.ui.navigator.viewer.
<!ELEMENT commonWizard (enablement)>
<!ATTLIST commonWizard
type (import|export|new)
wizardId CDATA #REQUIRED
menuGroupId CDATA #IMPLIED
associatedExtensionId CDATA #IMPLIED>
Точка расширения предоставляет возможность вносить дополнения в меню, определенное данным типом.
<!ELEMENT commonFilter (filterExpression?)>
<!ATTLIST commonFilter
id CDATA #REQUIRED
name CDATA #REQUIRED
description CDATA #IMPLIED
class CDATA #IMPLIED
activeByDefault (true | false) >
Определяет фильтр, который может быть связан с определенным Common Viewer. Стандартные фильтры связываются с программой просмотра, как и расширения содержимого, с помощью org.eclipse.ui.navigator.viewer/viewerContentBinding.
<!ELEMENT filterExpression (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
Необязательное базовое выражение Eclipse, которое определяет, что фильтр должен скрыть в определенной панели.
Например, клиенты могут скрыть все ресурсы, в имени которых содержится определенный шаблон (например, "*.acme").
Если фильтр активен (включен по умолчанию или пользователем), то все ресурсы, имя которых заканчивается на "acme",
будут скрыты от пользователя.
Можно использовать либо filterExpression, либо атрибут "class" (но не оба варианта).
<!ELEMENT commonSorter (parentExpression)>
<!ATTLIST commonSorter
id CDATA #REQUIRED
class CDATA #REQUIRED>
commonSorter объявляет производный класс org.eclipse.jface.viewers.ViewerSorter
, который применяется для
сортировки дочерних объектов в дереве. Вложенный parentExpression описывает, когда следует использовать commonSorter.
Если элемент соответствует parentExpression, то его дочерние элементы будут отсортированы данным commonSorter.
org.eclipse.jface.viewers.ViewerSorter
.<!ELEMENT parentExpression (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
parentExpression применяется commonSorter для идентификации того, когда этот сортировщик следует применять. Если parentExpression для commonSorter соответствует данному элементу, тогда этот commonSorter будет применяться для сортировки дочерних элементов данного элемента (возвращенных модулем содержимого службы информационного наполнения).
<!ELEMENT override EMPTY>
<!ATTLIST override
suppressedExtensionId CDATA #REQUIRED
policy (InvokeOnlyIfSuppressedExtAlsoVisibleAndActive|InvokeAlwaysRegardlessOfSuppressedExt) "InvokeAlwaysRegardlessOfSuppressedExt">
Если для данного элемента включены и выражение triggerPoints опускаемого расширения, и объявленное расширение,
то это расширение будет вызвано, а его опускаемое расширение - нет. Клиенты, указавшие элемент override, также должны
предоставить модуль содержимого, реализующий org.eclipse.ui.navigator.IPipelinedTreeContentProvider
, который
предоставляет методы для перехвата запросов дочерних и родительских объектов и прямых обновления для программы просмотра.
<!ELEMENT dropAssistant (possibleDropTargets)>
<!ATTLIST dropAssistant
id CDATA #REQUIRED
class CDATA #REQUIRED>
Предоставляет производный класс org.eclipse.ui.navigator.CommonDropAdapterAssistant
, который может обеспечить программную
проверку операции вставки, запросить дополнительные типы передачи и управлять операцией вставки.
dropAssistant будет вызван при совпадении переносимых элементов выражению possibleChildren включающего расширения
navigatorContent и цель переноса описывается выражением possibleDropTargets элемента dropAssistant.
Расширение может иметь несколько адаптеров переноса с взаимно исключающими выражениями possibleDropTargets.
Первый найденный адаптер переноса, который соответствует данной цели переноса и возвращает состояние OK для
CommonDropAdapterAssistant.validateDrop(...)
, будет иметь возможность управлять переносом.
org.eclipse.ui.navigator.CommonDropAdapterAssistant
<!ELEMENT possibleDropTargets (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
Описывает возможные цели переноса, которыми может управлять определенный dropAssistant.
<!ELEMENT enablement (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
Шаблонный корневой элемент. Этот элемент может использоваться внутри точки расширения для определения ее выражения enablement. Для объединения подэлементов выражения enablement используется операция and.
<!ELEMENT not (not | and | or | instanceof | test | systemTest | equals | count | with | resolve | adapt | iterate)>
Этот элемент представляет операцию НЕ над результатом вычисления выражения его подэлемента.
<!ELEMENT and (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
Этот элемент представляет операцию И над результатом вычисления выражений всех его подэлементов.
<!ELEMENT or (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
Этот элемент представляет операцию ИЛИ над результатом вычисления выражений всех его подэлементов.
<!ELEMENT instanceof EMPTY>
<!ATTLIST instanceof
value CDATA #REQUIRED>
Этот элемент позволяет проверить допустимость преобразования типа выбранного объекта к указанному типу. Выражение возвращает EvaluationResult.TRUE, если тип объекта является производным типом типа, указанного в значении атрибута. В противном случае возвращается EvaluationResult.FALSE.
<!ELEMENT test EMPTY>
<!ATTLIST test
property CDATA #REQUIRED
args CDATA #IMPLIED
value CDATA #IMPLIED>
Этот элемент используется для проверки состояния свойства выбранного объекта. Набор тестируемых свойств можно расширить с помощью точки расширения средства тестирования свойств. Выражение test возвращает EvaluationResult.NOT_LOADED, если средство тестирования свойств, выполняющее фактическую проверку, еще не загружено.
<!ELEMENT systemTest EMPTY>
<!ATTLIST systemTest
property CDATA #REQUIRED
value CDATA #REQUIRED>
Тестирует системное свойство, вызывая для этого метод System.getProperty и сравнивая результат со значением, указанным в атрибуте value.
<!ELEMENT equals EMPTY>
<!ATTLIST equals
value CDATA #REQUIRED>
Этот элемент применяется для выполнения проверки equals объекта в фокусе. Выражение возвращает EvaluationResult.TRUE, если объект равен значению атрибута value. В противном случае возвращается EvaluationResult.FALSE.
<!ELEMENT count EMPTY>
<!ATTLIST count
value CDATA #REQUIRED>
Этот элемент применяется для проверки числа элементов в наборе.
<!ELEMENT with (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
<!ATTLIST with
variable CDATA #REQUIRED>
Этот элемент изменяет проверяемый объект для всех своих подэлементов, заменяя его объектом, на который указывает переменная в атрибуте variable. Если разрешить переменную невозможно, то при вычислении выражения возбуждается ситуация ExpressionException. Для объединения подэлементов выражения with используется операция and.
<!ELEMENT resolve (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
<!ATTLIST resolve
variable CDATA #REQUIRED
args CDATA #IMPLIED>
Этот элемент изменяет проверяемый объект для всех своих подэлементов, заменяя его объектом, на который указывает переменная в атрибуте variable. Если разрешить переменную невозможно, то при вычислении выражения возбуждается ситуация ExpressionException. Для объединения подэлементов выражения with используется операция and.
<!ELEMENT adapt (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
<!ATTLIST adapt
type CDATA #REQUIRED>
Данный элемент используется для адаптации выбранного объекта к типу, указанному в атрибуте type. Если адаптер или указанный тип еще не загружены, выражение возвращает NOT_LOADED. Если имя типа вообще не существует, то при вычислении выражения возбуждается ситуация ExpressionException. Для объединения подэлементов выражения adapt используется операция and.
<!ELEMENT iterate (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
<!ATTLIST iterate
operator (or|and) >
Этот элемент используется для выполнения итераций с переменной, относящейся к типу java.util.Collection. Если тип выбранного объекта - не java.util.Collection, то при вычислении этого выражения возбуждается ситуация ExpressionException.
В следующем примере описано расширение содержимого, которое предоставляет содержимое ресурса. Выражение triggerPoints определяет, когда этот расширение вызывается. Если viewerContentBinding соответствует данному расширению, и атрибут "isRoot"=true, то это расширение будет использовано независимо от того, соответствует ли корневой элемент выражению triggerPoints.
<extension point=
"org.eclipse.ui.navigator.navigatorContent"
>
<navigatorContent name=
"%resource.extension.name"
priority=
"low"
icon=
"icons/full/eview16/resource_persp.gif"
activeByDefault=
"true"
contentProvider=
"org.eclipse.ui.navigator.resources.internal.workbench.ResourceExtensionContentProvider"
labelProvider=
"org.eclipse.ui.navigator.resources.internal.workbench.ResourceExtensionLabelProvider"
sorter=
"org.eclipse.ui.navigator.resources.internal.workbench.ResourceSorter"
id=
"org.eclipse.ui.navigator.resourceContent"
>
<triggerPoints>
<or>
<instanceof value=
"org.eclipse.core.resources.IWorkspaceRoot"
/>
<instanceof value=
"org.eclipse.core.resources.IProject"
/>
<instanceof value=
"org.eclipse.core.resources.IFolder"
/>
</or>
</triggerPoints>
<possibleChildren>
<or>
<instanceof value=
"org.eclipse.core.resources.IWorkspaceRoot"
/>
<instanceof value=
"org.eclipse.core.resources.IProject"
/>
<instanceof value=
"org.eclipse.core.resources.IResource"
/>
<instanceof value=
"org.eclipse.core.resources.IFolder"
/>
<instanceof value=
"org.eclipse.core.resources.IFile"
/>
</or>
</possibleChildren>
</navigatorContent>
</extension>
Клиенты могут использовать дополнения объектов или программы просмотра (см. org.eclipse.ui.popupMenus)
для предоставления действий для своей панели. Иногда клиентам требуется большая гибкость, по
сравнению с допускаемой этими подходами, и поэтому среда Common Navigator поддерживает добавление
модулей действий. "Модули действий" являются производным классом org.eclipse.ui.actions.ActionGroup
и имеют возможность заполнять панели действий и меню на основании различных событий (выбор и щелчок правой
кнопкой мыши, соответственно).
Клиенты могут либо связать один или несколько модулей действий с определенным расширением содержимого, либо объявить модули действий как дополнения верхнего уровня, не связанные с каким-либо определенным расширением содержимого. Модули действий верхнего уровня должны быть связаны с определенным экземпляром программы просмотра с помощью точки расширения org.eclipse.ui.navigator.viewer/viewerActionBinding. Вложенные модули действий автоматически связываются с программой просмотра на основании того, связано ли содержащее их расширение с программой просмотра (см. org.eclipse.ui.navigator/viewerContentBinding).
В следующем примере представлены оба подхода. "TestNestedActionProvider" будет иметь возможность
вносить дополнения в меню и org.eclipse.ui.IActionBars
только в том случае, если
расширение "org.eclipse.ui.tests.navigator.testContent" является видимым и активным.
Если пользователь деактивирует тестовое расширение в диалоговом окне "Доступные настройки", то
вложенный модуль действий более не сможет вносить дополнения.
<extension point=
"org.eclipse.ui.navigator.navigatorContent"
>
<navigatorContent id=
"org.eclipse.ui.tests.navigator.testContent"
name=
"%test.navigator.extension"
contentProvider=
"org.eclipse.ui.tests.navigator.extension.TestContentProvider"
labelProvider=
"org.eclipse.ui.tests.navigator.extension.TestLabelProvider"
activeByDefault=
"true"
priority=
"normal"
>
<triggerPoints>
<instanceof value=
"org.eclipse.core.resources.IProject"
/>
</triggerPoints>
<actionProvider class=
"org.eclipse.ui.tests.navigator.extension.TestNestedActionProvider"
id=
"org.eclipse.ui.tests.navigator.extension.TestNestedActionProvider"
>
<enablement>
<instanceof value=
"org.eclipse.core.resources.IResource"
/>
</enablement>
</actionProvider>
</navigatorContent>
<actionProvider class=
"org.eclipse.ui.navigator.resources.internal.actions.NewActionProvider"
id=
"org.eclipse.ui.navigator.resources.NewActions"
>
<enablement>
<or>
<adapt type=
"org.eclipse.core.resources.IFile"
/>
<adapt type=
"org.eclipse.core.resources.IFolder"
/>
<adapt type=
"org.eclipse.core.resources.IProject"
/>
<adapt type=
"org.eclipse.core.resources.IWorkspaceRoot"
/>
</or>
</enablement>
</actionProvider>
</extension>
Клиенты могут определять фильтры либо с помощью подклассов org.eclipse.jface.viewers.ViewerFilter
,
либо с помощью базовых выражений Eclipse. В следующем примере представлены оба способа. Клиенты могут
использовать только одну из двух опций. Расширения, в которых ошибочно указаны обе опции, будут учитываться
только фильтры базовых выражений. Поля имени и описания являются переводимыми и следует экспортировать
строки в реальных средах.
<extension point=
"org.eclipse.ui.navigator.navigatorContent"
>
<commonFilter class=
"org.eclipse.ui.tests.navigator.extension.TestItemsThatEndIn3"
description=
"Скрыть объекты TestItem, заканчивающиеся числом "3""
id=
"org.eclipse.ui.tests.navigator.filters.TestItemsThatEndWith3"
name=
"TestItems, заканчивающиеся на "3""
activeByDefault=
"true"
/>
<commonFilter description=
"Скрыть все экземпляры Test Item"
id=
"org.eclipse.ui.tests.navigator.filters.AllTestItems"
name=
"Фильтр выражения TestItem (должно быть отсортировано по алфавиту)"
>
<filterExpression>
<instanceof value=
"org.eclipse.ui.tests.navigator.extension.TestExtensionTreeData"
/>
</filterExpression>
</commonFilter>
Стандартный сортировщик определяется для набора дочерних элементов на основании
родительского элемента. Класс сортировщика должен являться подклассом
org.eclipse.jface.viewers.ViewerSorter
.
<extension point=
"org.eclipse.ui.navigator.navigatorContent"
>
<commonSorter class=
"org.eclipse.ui.navigator.resources.internal.workbench.ResourceExtensionSorter"
id=
"org.eclipse.ui.navigator.resources.sorters.defaultSorter"
>
<parentExpression>
<or>
<instanceof value=
"org.eclipse.core.resources.IWorkspaceRoot"
/>
<instanceof value=
"org.eclipse.core.resources.IProject"
/>
<instanceof value=
"org.eclipse.core.resources.IResource"
/>
<instanceof value=
"org.eclipse.core.resources.IFolder"
/>
<instanceof value=
"org.eclipse.core.resources.IFile"
/>
</or>
</parentExpression>
</commonSorter>
</extension>
В следующем примере показано добавление действий ярлыков мастеров "New Folder" (Создать папку) и "New File" (Создать файл), которые включаются определенными подклассами org.eclipse.core.resources.IResource. Клиенты могут использовать любые части org.eclipse.core.expressions, необходимые для описания того, когда опции меню должны быть доступны. Указанный ниже wizardId должен соответствовать одной из точек расширения org.eclipse.ui.xxxWizards.
Клиенты, создающие свои программы просмотра или части панели, должны использовать
org.eclipse.ui.navigator.WizardActionGroup
для правильного заполнения
меню. Дополнительная информация об этой функциональной возможности приведена в
документации по этому классу.
<extension point=
"org.eclipse.ui.navigator.navigatorContent"
>
<commonWizard type=
"new"
wizardId=
"org.eclipse.ui.wizards.new.folder"
>
<enablement>
<or>
<adapt type=
"org.eclipse.core.resources.IFile"
/>
<adapt type=
"org.eclipse.core.resources.IFolder"
/>
<adapt type=
"org.eclipse.core.resources.IProject"
/>
<adapt type=
"org.eclipse.core.resources.IWorkspaceRoot"
/>
</or>
</enablement>
</commonWizard>
<commonWizard type=
"new"
wizardId=
"org.eclipse.ui.wizards.new.file"
>
<enablement>
<or>
<adapt type=
"org.eclipse.core.resources.IFile"
/>
<adapt type=
"org.eclipse.core.resources.IFolder"
/>
<adapt type=
"org.eclipse.core.resources.IProject"
/>
<adapt type=
"org.eclipse.core.resources.IWorkspaceRoot"
/>
</or>
</enablement>
</commonWizard>
</extension>
Copyright (c) 2002, 2005 IBM Corporation и другие.
Все права защищены. Эта программа и сопутствующие материалы распространяются на условиях Eclipse Public License v1.0, поставляемой вместе с продуктом и доступной на Web-сайте
http://www.eclipse.org/legal/epl-v10.html