В этом разделе описаны обязательные изменения для приспособления модулей 3.1 к механизмам и API 3.2.
Eclipse 3.2 предоставляет новую инфраструктуру для связи конфигураций запуска с ресурсами. С помощью этого отображения платформа может выполнить основанную на ресурсах фильтрацию конфигураций запуска и удалять конфигурации запуска, если связанный с ними проект удален. Было расширено диалоговое окно запуска. Теперь в нем поддерживается набор фильтров, обеспечивающих возможность скрыть конфигурации, связанные с закрытыми и удаленными проектами. Также диалоговое окно запуска поддерживает фильтрацию, основанную на выбранных рабочих наборах в активном окне рабочей среды, которое также можно выбрать в диалоговом окне запуска.
За управление отображением ресурсов для конфигураций запуска отвечает клиент.
К ILaunchConfigurationWorkingCopy
был добавлен API для настройки
ресурсов, связанных с конфигурацией, а также к ILaunchConfiguration
был добавлен API для получения ресурсов, связанных с конфигурацией. Например, при
миграции следует принимать во внимание вкладки запуска, ярлыки запуска и участников
рефакторинга. Исходный код, создающий или изменяющий конфигурации запуска, также
должен обновлять отображения ресурсов.
Eclipse 3.2 предоставляет новую инфраструктуру для миграции конфигураций
запуска с целью обеспечения совместимости с новым инструментарием. Например,
в Eclipse 3.2 была добавлена поддержка фильтрации конфигураций запуска на
основании ресурсов. Следует обновить конфигурации запуска для обеспечения
преобразований ресурсов для использования этой новой возможности. Пользователи могут вручную перенести конфигурации запуске в рабочую
область, нажав на странице параметров
Запуск/Отладка > Запуск > Конфигурации запуска кнопку Перенести.
В точку расширения launchConfigurationTypes
был добавлен новый
необязательный атрибут делегата миграции, задающий класс, который реализует
новый интерфейс ILaunchConfigurationMigrationDelegate
.
Делегат миграции отвечает за идентификацию кандидатов на миграцию и их перенос.
В точку расширения launchModes
был добавлен новый необязательный
атрибут для поддержки экстернализации каскадных меток действий меню запуска.
Клиенты, дополняющие режимы запуска, должны указать правильную метку для
каскадных меню запуска, например, "Run As". Новый атрибут называется
launchAsLabel
. Платформой предоставляются соответствующие метки
для запуска, отладки и профилирования режимов запуска. Для совместимости с
предыдущими версиями, если этот новый атрибут не указан для режима запуска, то
метки каскадного меню генерируются как и ранее, с помощью MessageFormat с
"{0} As
". См. описание соответствующей ошибки 105235.
ICU4J является набором библиотек Java, который предоставляет более обширную поддержку для Unicode, глобализации программного обеспечения и интернационализации. С целью предоставления этой функциональной возможности для сообщества Eclipse, к платформе для Eclipse 3.2 был добавлен ICU4J. Он присутствует в виде модуля com.ibm.icu. Платформа Eclipse будет использовать API ICU в Eclipse 3.2.
Миграция кода приложения может быть выполнена постепенно. Это означает, что полное внедрение всех функций ICU4J не является необходимым для получения преимуществ от работы с ICU4J. Дополнительные сведения о миграции кода для использования ICU4J см. страницу ICU4J в Eclipse wiki.
Для модуля ICU4J требуется 3 Мб памяти. Некоторые приложения могут не захотеть включать ICU4J, если размер приложения имеет преимущество перед включением функции ICU4J. В этом случае доступен модуль замены (com.ibm.icu.base) на странице платформы Eclipse. Загрузите этот модуль, удалите модуль com.ibm.icu и его исходную копию из каталога /plugins и поместите в этот каталог модуль замены. Это необходимо, поскольку платформа Eclipse включает API ICU для версии 3.2, и простое удаление модуля ICU вызовет ошибки компиляции в исходном коде платформы. Модуль замещения имеет размер около 100 Кб и просто обращается к реализации JDK по умолчанию наиболее часто используемых классов и API в ICU4J. Дополнительные сведения о работе с модулем замены ICU см. страницу ICU4J в Eclipse wiki.
Для поддержки ICU4J в JFace потребовались некоторые дополнения API для предотвращения ссылок на классы ICU в API. В результате были добавлены:
org.eclipse.jface.viewers.ViewerComparator
, для которого
org.eclipse.jface.viewers.ViewerSorter
теперь является подклассом.
org.eclipse.jface.viewers.StructuredViewer
для поддержки дополнения
org.eclipse.jface.viewers.ViewerComparator
. Класс ViewerSorter
имеет внешний метод getCollator()
, возвращающий java.text.Collator
.
Поскольку этот метод является API, его нельзя просто изменить для работы с ICU Collator. Также классы ICU не могут являться
частью API (сигнатурами), поскольку прямая зависимость модуля от ICU не позволит использовать JFace автономно (с SWT).
Для преодоления этих ограничений был добавлен класс ViewerComparator
, использующий java.util.Comparator
вместо ICU Collator. Это потребовалось, поскольку класс ICU Collator реализует java.util.Comparator
.
Поэтому любой StructuredViewer
может теперь использовать ICU Collator вместо
java.text.Collator
, однако JFace не требуется добавлять зависимость от модуля ICU4J.
Два новых метода, добавленных к StructuredViewer
, поддерживают применение ICU Collator для сортировки
содержимого программы просмотра с помощью ViewerComparator
вместо ViewerSorter
.
Рекомендуется, чтобы StructuredViewer
использовал эти методы для получения/установки сортировщика
программы просмотра (службы сравнения) вместо методов getSorter()
и setSorter(ViewerSorter)
.
public ViewerComparator getComparator()
public void setComparator(ViewerComparator comparator)
В комплект org.eclipse.equinox.common входят несколько классов новых API (в том числе, Assert
и
ListenerList
), которым присвоены одинаковые имена. Если в коде указан класс с тем же именем и заданы операторы import *
для импорта локального класса и классов выполнения, может появиться следующее сообщение об ошибке:
Тип ABC - неоднозначный
Для устранения ошибки распределите операции импорта и выберите подходящий источник импорта.
В результате перемещения кода в новые модули выполнения к пользовательским сценариям, в которых содержится org.eclispe.core.runtime, возможно придется добавить один или несколько следующих модулей: