Процессор быстрой помощи

org.eclipse.jdt.ui.quickAssistProcessors

Версия 3.0

Данная точка расширения позволяет добавлять процессор быстрой помощи для предложения новых операций быстрой помощи в редакторе Java. Эта точка расширения поддерживает тег enablement. Проверяемые параметры:
  • compilationUnit: тип ICompilationUnit - блок компиляции, на который распространяется быстрая помощь
  • projectNatures: тип Collection, все классификаторы текущего проекта
  • sourceLevel: тип String, совместимость исходного кода текущего проекта
  • <!ELEMENT extension (quickAssistProcessor*)>

    <!ATTLIST extension

    point CDATA #REQUIRED

    id    CDATA #IMPLIED

    name  CDATA #IMPLIED>


    <!ELEMENT quickAssistProcessor (enablement)>

    <!ATTLIST quickAssistProcessor

    id                  CDATA #REQUIRED

    name                CDATA #IMPLIED

    class               CDATA #IMPLIED

    requiredSourceLevel CDATA #IMPLIED>


    <!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.jdt.ui.quickAssistProcessors"

    >

    <quickAssistProcessor id=

    "AdvancedQuickAssistProcessor"

    name=

    "Advanced Quick Assist Processor"

    requiredSourceLevel=

    "1.5"

    class=

    "com.example.AdvancedQuickAssistProcessor"

    >

    </quickAssistProcessor>

    <enablement>

    <with variable=

    "projectNatures"

    >

    <iterate operator=

    "or"

    >

    <equals value=

    "org.eclipse.jdt.core.javanature"

    />

    </iterate>

    </with>

    </enablement>

    </extension>

    Дополняемый класс должен реализовывать org.eclipse.jdt.ui.text.java.IQuickAssistProcessor