Оговорка: В Eclipse версии 3.2 точка расширения org.eclipse.ui.menus
реализована не полностью. В настоящий момент не
поддерживаются определения и расширения меню и панелей управления (вместо них используйте расширения существующих дополнений). Однако это
единственный механизм, позволяющий добавить "врезку" к рабочей среде. В этом разделе описано, как использовать точку расширения для
этой цели.
"Врезка" - это управляющий элемент, расположенный по периметру окна Рабочей среды, в так называемой "области врезки". Самый распространенный пример врезки - базовая "линия состояния", расположенная в большинстве графических интерфейсов в нижней части окна. Точка расширения org.eclipse.ui.menus позволяет модулям добавлять панели к рабочей среде. Модули, добавляющие врезку, должны зарегистрировать ее в своем файле plugin.xml и задать параметры ее конфигурации , в том числе, класс реализации, группу (панель врезки) и сведения о расположении (например, будет ли использоваться дополнительное пространство области врезки).
Интерфейс добавленной врезки определяется в IWorkbenchWidget, но рекомендуется расширять класс AbstractWorkbenchTrimWidget, а не добавлять интерфейс с нуля.
Для примера readmetool мы создали простую врезку, которая выводится как строка и указывает, с какой стороны в данный момент закреплена врезка.
Ниже приведена характеристика определения точки расширения, которая используется для добавления врезки:
В первой части расширения (в определении "группы") задан ИД группы и определено "расположение" группы в начале группы "состояние" (то есть в начале нижней части области врезки). Во второй части (в определении "виджета) задан класс реализации виджета и определено его "расположение" в заданной до этого группе.
Обратите внимание, что в обоих случаях для "типа" панели задано значение trim (врезка). В данный момент это единственный доступный тип.
После установки действительного примера readmetool
обратите внимание на реализацию метода ReadmeTrimWidget's
fill
. Он отличается от других методов fill
, применяемых для добавления виджетов к меню или панелям инструментов, тем, что
позволяет перетаскивать врезку из одной области в другую или менять расположение и направление врезки. В настоящее время реализация
этого метода позволяет изменить выводимый текст, указывающий на текущее расположение. Обратите внимание, что при выполнении цикла
'dispose'/'fill' методы dispose
и fill
вызываются несколько раз в результате изменений рабочей среды (например,
при изменении проекций или расположения врезки).
В коде примера не указано, что администратор макетов подразумевает, что в виджете настроен метод computeSize
.
Виджет должен обладать способностью вычисления и возврата "предпочитаемого" размера, так как этот параметр используется при составлении
макета для определения границ области врезки.
За инструкциями по правильной реализации метода computeSize
обратитесь к документации SWT.