Новое в версии 3.2

Ниже описаны наиболее значимые изменения платформы Eclipse и SWT, вошедшие в выпуск Eclipse 3.2, которые будут интересны разработчикам модулей.

Описание новых функций, предназначенных для конечных пользователей платформы, можно найти в разделе Новое в этом выпуске Руководства пользователя рабочей среды.

Изменения в платформе

Изменение структуры среды выполнения

Для того чтобы увеличить гибкость среды выполнения Eclipse и предоставить возможность независимо использовать динамические компоненты, модуль org.eclipse.core.runtime был разбит на несколько модулей:

  • org.eclipse.equinox.common - общий код, используемый несколькими фрагментами старого динамического модуля (например, IPath, IStatus, IProgressMonitor).
  • org.eclipse.equinox.registry - реестр расширений
  • org.eclipse.equinox.preferences - механизм анализа предпочтений
  • org.eclipse.core.jobs - механизм заданий
  • org.eclipse.core.contenttype - механизм содержимого
  • org.eclipse.equinox.supplement - дополнительный "модуль", поддерживающий работу без OSGi.

Для управления работой динамических фрагментов добавлены новые API.

Изменение структуры среды выполнения никак не скажется на работе других модулей. За дополнительной информацией обратитесь к руководству по миграции Eclipse 3.2.

Общий навигатор

Новый модуль org.eclipse.ui.navigator предоставляет среду для создания программ просмотра, объединяющих данные из нескольких моделей доменов. Среда допускает декларативное дополнение содержимого, меток, действий, фильтров и других функций. Модуль org.eclipse.ui.navigator.resources предоставляет реализацию этой среды в виде панели Структура проектов и декларативные расширения программы просмотра для модели IResource.

Изображение панели структуры проектов

Вкладки свойств

Были добавлены вкладки свойств. Они заменяют страницу свойств, позволяя работать со свойствами, показанными на панели Свойства, с помощью произвольных средств управления. Свойства организованы в виде вкладок и разделов в соответствии с реестром расширений.

Изображение вкладок свойств

За дополнительной информацией обратитесь к статье The Eclipse Tabbed Properties View.

API файловой системы

Новый модуль org.eclipse.core.filesystem предоставляет новый базовый API для взаимодействия с файловыми системами. Этот API стал использоваться в платформе вместо API java.io. Это означает, что ресурсы можно создавать в любых базовых файловых системах, а в модули можно включать поддержку новых типов файловых систем.

В мастеры проектов и связанных ресурсов добавлены возможности для создания ресурсов, связанных с другими файловыми системами. Модули с определениями альтернативных файловых систем можно встроить в мастер с помощью точки расширения org.eclipse.ui.ide.filesystemSupport.

Изображение удаленной файловой системы

Функции импорта и экспорта теперь поддерживают список категорий

Точки расширения org.eclipse.ui.importWizards и org.eclipse.ui.exportWizards теперь поддерживают список категорий.

Изображение точек расширения

Подсказки к аннотациям в текстовых редакторах

Из компонента JDT Text в Platform Text были перенесены всплывающие подсказки к аннотациям. Поддержка всплывающих подсказок для текста, вертикальной линейки и обзорной линейки устанавливается с помощью TextSourceViewerConfiguration, применяемого в текстовых редакторах:

Изображение всплывающей подсказки к аннотации

Навигация по аннотациям в текстовых редакторах

Из компонента JDT Text в Platform Text была перенесена навигация по аннотациям. Теперь она доступна во всех текстовых редакторах:

Изображение значков навигации

Помощь в заполнении полей JFace

JFace оказывает поддержку пользователям в заполнении полей форм и окон диалога. В пакете org.eclipse.jface.fieldassist предусмотрены классы, позволяющие выбрать для любых управляющих элементов изображения и текст всплывающей подсказки. С их помощью можно обозначать обязательные поля, выводить информацию об ошибочном заполнении полей или оказывать помощью при заполнении полей. Кроме того, пакет позволяет задать варианты содержимого для управляющего элемента, в том числе всплывающие окна диалога с вариантами содержимого, вспомогательные всплывающие окна с более подробной информацией и возможность просмотра вариантов вручную или их автоматического (упреждающего) применения.

Рисунок, демонстрирующий помощь в заполнении полей

Улучшенный элемент JFace TreeViewer

AbstractTreeViewer теперь позволяет создать в дереве несколько одинаковых элементов с разными цепочками родительских элементов. Для применения этой возможности клиенты должны активировать карту элементов, вызвав setUseHashLookup(true).

TreeViewer теперь поддерживает деревья SWT.VIRTUAL. Предусмотрен соответствующий источник содержимого ILazyTreeContentProvider, который возвращает содержимое по мере необходимости.

Поддержка динамического содержимого справки

Справочная система теперь поддерживает динамическое формирование содержимого справки. Разделы, созданные с помощью XHMTL, могут содержать специальный код Eclipse для динамической фильтрации содержимого в зависимости от значений os/ws/arch, наличия модулей, активированных функций и т.п. В несколько документов можно включить общее содержимое. Наконец, модули могут предоставлять фрагменты XHTML, подключаемые по ссылкам к другим документам. Это позволяет разработчикам справки создать динамическую документацию, адаптирующуюся к текущему контексту.

Улучшена функция поиска по справке

В функции индексации и поиска было внесено несколько существенных улучшений. С помощью точки расширения можно зарегистрировать дополнительных агентов поиска, которые могут пополнить индекс Lucene. Теперь справочная система поддерживает агентов поиска XHTML, которые могут индексировать динамические документы справки, созданные с помощью XHMTL (см. приведенную выше информацию). Кроме того, теперь в индексе показаны те документы, которые раньше не входили в его состав (такие как памятки и страницы приветствия). Результаты поиска помечаются разными значками, а службе поиска можно передать право на выполнение действия 'open'.

Рисунок, демонстрирующий улучшения системы поиска

Неполадки можно объединять в группы

Неполадки на панели неполадок можно объединять в группы. Предусмотрен ряд стандартных групп, отражающих уровень серьезности и тип неполадки. Дополнительные группы можно добавить с помощью точки расширения org.eclipse.ui.ide.markerSupport.

Улучшена справка в окнах диалога

Большинство окон диалога в Eclipse теперь содержат стандартную кнопку справки, расположенную в нижнем левом углу. Эта кнопка позволяет открыть контекстную справку, которая вызывается нажатием F1 (в Windows). Кроме того, теперь справка отображается внутри окна диалога, а не в отдельном окне. Для использования этой функции в пользовательских окнах следует создавать подкласс нового класса TrayDialog, а не класса Dialog. Для тех действий, которые предусматривают открытие окон диалога, можно предусмотреть памятки, отображаемые в этих окнах.

Ссылки на команды в информации, приведенной в помощью пользователю

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

Ссылки на команды в разделе справки

Поддержка запуска команд из памяток

Теперь можно запускать команды из памяток. Следующий файл содержит команды для открытия панели Поиск и Структура пакетов.
<?xml version="1.0" encoding="UTF-8"?>
<cheatsheet title="Пример команд в памятке">
  <intro>

    <description>Памятка показывает
			структуру пакетов</description>
  </intro>
  <item title="Показать панель Поиск">
     <description>На этом шаге вызывается команда,
		открывающая панель поиска.</description>

     <command serialization=
		"org.eclipse.search.ui.views.SearchView"/>  
  </item>
  <item title="Шаг 2">
    <description>На этом шаге вызывается команда
		с параметрами, вызывающая структуру пакетов.</description>

     <command serialization="org.eclipse.ui.views.showView(
		org.eclipse.ui.views.showView.viewId=
		org.eclipse.jdt.ui.PackageExplorer)"/> 
     <onCompletion>
         Пример команд завершен.
     </onCompletion>
  </item>
</cheatsheet>

Сообщение о выполнении

В шаг внутри памятки можно добавить сообщение о выполнении, отображаемое после выполнения шага.

Изображение сообщения о выполнении из памятки

Составные памятки

В Eclipse 3.2 поддерживаются составные памятки. Составная памятка представляет большое руководство по устранению неполадки, поделенное на несколько задач, для каждой из которых предусмотрена собственная памятка. Задачи можно объединять в группы. Составные памятки, запущенные из окна выбора памяток, открываются на панели памяток. Для каждой задачи предусмотрено описание. Для навигации пользователя по задачам используются гиперссылки.

Изображение составной памятки

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

Изображение составной памятки

Содержимое составной памятки определяется в файле XML. В файле содержимого можно определить зависимости между задачами, указывающие, что задачу можно выполнять только после завершения других обязательных задач.

Предметный указатель справки

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

Примечание: Содержимое предметного указателя пока недоступно в SDK (предметный указатель отображается только при наличии содержимого).

Изображение панели Справка

Средство преобразования справочных документов XHTML

В PDE предусмотрена новая утилита для быстрого преобразования справочных документов модулей в формате HML в формат XHTML. Помимо корректного преобразования из HTML в XHTML, утилита обновляет расширение файла и оглавление, а также добавляет необходимые привязки для поддержки динамического содержимого и поиска по содержимому XHTML. После завершения преобразования можно воспользоваться новыми функциями справки выпуска 3.2, включающими в себя динамическую фильтрацию содержимого, многократное использование содержимого и динамическое создание содержимого. Все эти функции работают с содержимым в формате XHTML.

Для вызова этой функции выберите в контекстном меню проекта модуля пункт Инструменты PDE > Преобразовать файлы справки в формат XHTML.

Рисунок, демонстрирующий инструмент преобразования в XHTML

Универсальное приветствие

В этом выпуске предусмотрено универсальное приветствие, которое основано на опыте многочисленных реализаций страниц приветствия и может применяться в любом продукте. Можно выбрать один из 7 стандартных вариантов: Обзор, Первые шаги, Учебники, Примеры, Новое в этом выпуске, Web-ресурсы и Миграция (в Eclipse SDK используется 4 из этих вариантов). Универсальное приветствие позволяет задать макет страницы и степень важности каждого дополнения и обеспечивает полную поддержку тем. Кроме того, оно обеспечивает поддержку презентаций HTML и SWT на всех платформах.

Предусмотренная в универсальном приветствии страница параметров позволяет предоставить конечным пользователям возможность настройки приветствия. Ее можно включить в состав любого продукта. Дополнительную информацию об этой функции можно найти в статье Universal Welcome specification.

Универсальное приветствие

Поддержка конфигурации и тем в приветствии

Начальная среда предоставляет расширенные возможности для настройки. Компонент настройки начальной среды можно дополнять, что позволяет однократно вычислять состав групп, выполнять подстановку переменных и определять путь метки на позднем этапе. Эти возможности активно используются в универсальном приветствии, однако они доступны и для других реализаций приветствия.

Тема представляет собой именованный набор файлов CSS, свойств и изображений, совокупность которых определяет внешний вид приветствия. В универсальном приветствии предусмотрена возможность выбора темы. В выпуске 3.2 на выбор предоставляется две темы: 'Круги' и 'Пурпурная сеть'.

Изображение тем в приветствии

Поддержка пространства имен для точек расширения Ant

Точки расширения org.eclipse.ant.core, antTasks и antTypes теперь позволяют указывать URI определения. Описание всех внесенных изменений приведено в информации об ошибке 133190.

Поддержка коллективной работы для интеграции логических моделей

Был добавлен API, позволяющий логическим моделям участвовать в коллективных операциях. С помощью этого API модуль совместной работы может выполнять следующие действия:
  • Используя модели, проверять наличие всех необходимых ресурсов в коллективной операции.
  • Использовать семантику модели для устранения конфликтов при слиянии.
  • Позволять моделям участвовать в отображении ресурсов при выполнении коллективных операций

Синхронизация с моделями Java и Ресурс

Изменения в SWT

Индикатор сортировки в таблицах и деревьях

Таблицы и деревья теперь поддерживают отображение индикатора последовательности сортировки в заголовке столбцов.

Изображение индикатора последовательности сортировки

Фрагменты кода SWT, демонстрирующие сортировку по столбцу (простую) и сортировку по столбцу (в виртуальной таблице).

Изменение порядка столбцов в деревьях

В Eclipse 3.1 была добавлена возможность изменять порядок столбцов в таблице. Теперь эта возможность добавлена для деревьев.

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

Изменение порядка столбцов

Пример фрагмента кода.

Расширенная поддержка темы в XP

В Windows XP SWT показывает фактурный фон в окнах с вкладками. Для этого фона прозрачны все группы, метки, выключатели и другие управляющие элементы. Кроме того, пользовательские виджеты, такие как StyledText, теперь показывают правильную границу для основной темы Windows XP.

Рисунок, демонстрирующий поддержку тем в XP

Инструкции по использованию оболочки Windows XP можно найти в SWT FAQ.

Анимированные изображения GIF

Анимированные изображения формата GIF можно сохранять в файле.

Рисунок, демонстрирующий поддержку анимированных изображений GIF

Пример приведен во фрагменте кода SWT.

Уведомление об изменении внешнего вида рабочего стола

При изменении внешнего вида рабочего стола, например темы, шрифта или цветов по умолчанию, для Display генерируется событие SWT.Settings.

Рисунок, демонстрирующий уведомление об изменении вида рабочего стола

Уведомление Dispose

Ранее при получении события SWT.Dispose для составного родительского элемента размещались все дочерние элементы, после чего к ним нельзя было обращаться. В версии 3.2 событие Dispose принимается до выпуска дочерних элементов в операционной системе.

Подсказки для столбцов

С помощью метода TableColumn/TreeColumn.setTooltipText(String) для заголовка столбца таблицы или дерева можно задать текст подсказки.

Вертикальный элемент CoolBar

С помощью стиля SWT.VERTICAL можно создать вертикальный элемент CoolBar.

Рисунок, демонстрирующий вертикальный CoolBar

Поддержка OpenGL

Теперь OpenGL можно использовать в приложениях SWT. Интерфейс OpenGL использует библиотеки OpenGL других разработчиков, в том числе LWJGL.

Рисунок, демонстрирующий пример OpenGL

Примеры приведены в следующих фрагментах кода SWT:

Виртуальное дерево

Теперь дерево поддерживает стиль SWT.VIRTUAL. Это позволяет быстро создавать деревья с большим объемом данных. Элементы TreeItem создаются по запросу.

Пример приведен во фрагменте кода SWT.

Кнопки с изображениями и текстом

На кнопках помимо текста могут быть показаны изображения. Эта функция поддерживается в Windows XP, Mac OS X и GTK.

Кнопка с изображением

HIView в Mac OS X

SWT теперь использует HIView в Mac OS X. Это позволяет решить многие проблемы с усечением и изменением размера.

Встроенные в текст объекты

С помощью TextLayout в текст можно встраивать объекты, например изображения и виджеты. При этом можно указывать характеристики глифов, такие как наклон и ширина. Объекты обтекаются текстом.

Рисунок, демонстрирующий изображение, встроенное в текст

Пример приведен во фрагменте кода SWT.

Настройка отступов и выравнивание текста

Теперь TextLayout поддерживает отступы и выравнивание текста.

Рисунок, демонстрирующий выравнивание текста

Пример приведен во фрагменте кода SWT.

Подъем базовой линии текста

С помощью TextLayout и TextStyle можно поднять базовую линию для фрагмента текста.

Рисунок, изображающий текст с поднятой базовой линией

Пример приведен во фрагменте кода SWT.

Поддержка цветов HSB

Существует возможность создавать цвета, указывая оттенок, насыщенность и яркость. Кроме того, можно получить перечисленные характеристики заданного цвета.

Рисунок, демонстрирующий поддержку HSB

Пример приведен во фрагменте кода SWT

Выравнивание и отступы в StyledText

Теперь StyledText поддерживает отступы и выравнивание текста.

Рисунок, демонстрирующий выравнивание в StyledText

Пример приведен во фрагменте кода SWT

Встроенные объекты в StyledText

Теперь StyledText позволяет встраивать в текст объекты, например изображения и виджеты. Объекты обтекаются текстом.

Рисунок, демонстрирующий встроенное в текст изображение

Пример приведен во фрагменте кода SWT

Фоновое изображение

Теперь для управляющих элементов можно выбирать фоновое изображение. Фон может наследоваться дочерними виджетами, например метками.

Рисунок, демонстрирующий фоновое изображение в управляющем элементе

Пример приведен во фрагменте кода SWT

Загрузка изображений системными средствами

Теперь конструктор Image(Device device, String filename) загружает изображения, используя средства операционной системы. Это позволило ускорить загрузку изображений и увеличить их максимальный размер.

Перетаскивание текста

Если событие SWT.DragDetect обрабатывается в Text или StyledText, то выделение текста не очищается при перетаскивании текста из выделенного фрагмента. Это позволяет перетаскивать текст из виджетов Text и StyledText.

Пример приведен во фрагменте кода SWT

Новый виджет ExpandBar

Виджет ExpandBar позволяет показывать и скрывать наборы виджетов щелчком на заголовке. ExpandBar состоит из нескольких элементов, заголовки которых могут содержать изображение и название.

Рисунок, демонстрирующий, как скрыть виджеты

Пример приведен в этом фрагменте кода SWT.

Маркеры в StyledText

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

Рисунок, демонстрирующий маркеры в StyledText

Пример приведен в этом фрагменте кода SWT.

Пользовательский способ рисования дерева

Виджет Tree поддерживает пользовательский способ рисования отдельных ячеек. Приложение может улучшить внешний вид дерева, настроив вывод данных. В приложении можно настраивать высоту строк дерева, что позволяет выводить в них несколько строк текста. Кроме того, можно добавлять по несколько изображений в одну ячейку, изменять шрифт и цвет произвольное число раз и изменять способ выделения.

Рисунок, демонстрирующий пользовательский способ рисования ячеек дерева

Примеры приведены в следующих фрагментах кода:

Пользовательский способ рисования таблицы

Виджет Table поддерживает пользовательский способ рисования отдельных ячеек. Сохраняя общий стиль таблицы, пользователи могут настраивать внешний вид ячеек, представляя данные в формате, отличном от текста с изображением, отображая несколько строк текста в одной ячейке, применяя различные шрифты и цвета в одной ячейке и переопределяя стандартный способ выделения.

Рисунок, демонстрирующий пользовательский способ рисования ячеек таблицы

Примеры приведены в следующих фрагментах кода:

Визуальные эффекты перетаскивания в таблице и дереве

Виджеты Table и Tree теперь поддерживают визуальные эффекты перетаскивания.

Рисунок, демонстрирующий эффекты при перетаскивании

Новый класс Tooltip

Новый класс ToolTip позволяет создавать всплывающие подсказки, которые не связаны напрямую с управляющим элементом. Эти всплывающие подсказки могут располагаться в любом месте. Они могут иметь формат, стандартный для платформы, либо показанный ниже формат BALLOON.

Рисунок, демонстрирующий всплывающую подсказку со стилем BALLOON