Страницы свойств

org.eclipse.ui.propertyPages

Эта точка расширения предназначена для добавления страницы свойств для объектов данного типа. После того как страницы свойств определены, они появляются в окне Свойства для объектов указанного типа.

Страница свойств предоставляет пользователю удобный способ взаимодействия со свойствами объекта. В отличие от панели Свойства, которая ограничивает пространство, доступное для изменения свойства объекта, страница свойств позволяет определять более масштабные и сложные элементы управления с метками, значками и т.д. Кроме того, логически связанные друг с другом свойства, которые "разбросаны" по разным местам в окне свойств, можно объединить в одну группу на странице свойств. Однако, в большинстве приложений более уместно часть свойств сделать доступными в окне свойств, а часть - на страницах свойств.

Страницы свойств отображаются в окне, которое обычно открывается при выборе пункта "Свойства" во всплывающем меню для объекта. Помимо класса объекта можно (но необязательно) задавать фильтр имен для регистрации страниц для определенных типов объектов.

Если указанных способов фильтрации недостаточно, то страница свойств может использовать элемент filter. В этом случае атрибуты целевого объекта описываются набором пар ключ-значение. Атрибуты, применяемые к выбранным объектам, зависят от типа и находятся вне домена самой рабочей среды, поэтому для фактического выбора рабочая среда делегирует фильтрацию на этот уровень.

<!ELEMENT extension (page*)>

<!ATTLIST extension

point CDATA #REQUIRED

id    CDATA #IMPLIED

name  CDATA #IMPLIED>


<!ELEMENT page (filter* , keywordReference* , enabledWhen?)>

<!ATTLIST page

id          CDATA #REQUIRED

name        CDATA #REQUIRED

icon        CDATA #IMPLIED

objectClass CDATA #IMPLIED

class       CDATA #REQUIRED

nameFilter  CDATA #IMPLIED

adaptable   (true | false)

category    CDATA #IMPLIED>


<!ELEMENT filter EMPTY>

<!ATTLIST filter

name  CDATA #REQUIRED

value CDATA #REQUIRED>

Этот элемент используется для проверки состояния атрибута каждого выбранного объекта. Совпадение достигается только в том случае, если атрибут каждого выбранного объекта находится в указанном состоянии. Каждый объект в выборе должен реализовать интерфейс org.eclipse.ui.IActionFilter или адаптироваться к нему.



<!ELEMENT keywordReference EMPTY>

<!ATTLIST keywordReference

id CDATA #IMPLIED>

Ссылка на ключевое слово. См. точку расширения ключевых слов.



<!ELEMENT enabledWhen (not | and | or | instanceof | test | systemTest | equals | count | with | resolve | adapt | iterate)>



<!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.



Ниже приведен пример определения страницы свойств:

   

<extension point=

"org.eclipse.ui.propertyPages"

>

<page id=

"com.xyz.projectPage"

name=

"Свойства Java XYZ"

objectClass=

"org.eclipse.core.resources.IFile"

class=

"com.xyz.ppages.JavaPropertyPage"

nameFilter=

"*.java"

>

<filter name=

"readOnly"

value=

"true"

/>

</page>

</extension>

Атрибут class должен задавать полное имя класса, реализующего org.eclipse.ui.IWorkbenchPropertyPage.

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