Интерфейс |
Описание |
IErrorContext |
Создает сообщения IStatus и заносит их в протокол
модуля. |
Bundle |
Комплект, содержащий реализацию компонента. Он
предоставляет другим компонентам, таким как реализация IErrorContext, информацию о
связанных модулях. |
IContainer |
Контейнер сайта. Он предоставляет сведения о
других интерфейсах сайта. Это может потребоваться, если компоненту необходимо
перенаправить все данные, поступающие от сайта, дочерним элементам. |
INameable |
Позволяет компоненту указать собственное имя,
значок, всплывающую подсказку и описание информационного наполнения. Заменяет различные
методы получения, а также получатели запросов IWorkbenchPart. |
Composite |
Родительский объект компонента. Он не связан с
другими компонентами и очищается вместе с компонентом. Компонент может задать макет этого
объекта, а также указать для него обработчиков событий. |
ISecondaryId |
Интерфейс, возвращающий вторичный ИД компонента,
если применяется панель с несколькими экземплярами. |
ResourceManager |
Безопасно выделяет и освобождает изображения,
шрифты, цвета и другие ресурсы SWT. Обеспечивает совестное применение компонентами
одинаковых ресурсов, а также очистку утечек при закрытии компонента. |
IDirtyHandler |
Позволяет компоненту задать или сбросить
черновое состояние. |
IMessageDialogs |
Отображает пользователю сообщения об ошибках,
предупреждения и информационные окна диалога. |
IActionBars |
Аналогичен
getViewSite().getActionBars() в API Eclipse 3.0. |
IMultiplexer |
Предоставляет компонент, поддерживающий
одновременную передачу, с доступом к мультиплексору, а также общим интерфейсам . |
ISavedState |
Содержит предыдущее постоянное состояние
компонента. |
IPartFactory |
Позволяет компоненту создавать вложенные панели и
редакторы. |
IPartDescriptor |
Содержит мета-информацию о компоненте, такую как
ИД, название, изображение по умолчанию и т.д. |
IEditorInput |
Содержит ввод редактора. Указывает на пустой ввод
редактора для панелей. |
ISelectionHandler |
Обрабатывает изменения выбранных элементов. С
помощью этого интерфейса компонент может изменить список выбранных элементов,
предоставляемый рабочей среде. |
Контекст, содержащий компонент, определяет, следует ли предоставить компоненту уникальный экземпляр для каждого интерфейса или объект, совместно используемый несколькими компонентами. Конструктору компонента никогда не передается нулевой аргумент.
Несмотря на то, что способ, предусматривающий добавление конструктора, достаточно
удобен, с практической точки зрения нецелесообразно вносить изменения во все существующие
редакторы и панели для обеспечения поддержки новых интерфейсов сайта. По этой причине все
новые интерфейсы доступны существующим панелям в качестве адаптеров IWorkbenchPartSite.
Ниже приведен пример панели с одной кнопкой, нажатие которой открывает окно диалога сообщения.
В следующем примере приведен исходный код панели, открывающей окно диалога с помощью нового интерфейса IMessageDialogs.
/**
* Показано, каким образом зависимости применяются в новом компоненте.
*
* @since 3.1
*/
public class DependenciesViewNew {
// Зависимости
private IMessageDialogs dialogs;
/**
* Конструктор компонента. Не следует вызывать непосредственно.
*/
public DependenciesViewNew(Composite parent, IMessageDialogs dialogs) {
this.dialogs = dialogs;
Button testButton = new Button(parent,
SWT.PUSH);
testButton.setText("Open a dialog");
testButton.addSelectionListener(new
SelectionAdapter() {
/* (не документация по Java)
* @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
*/
public void widgetSelected(SelectionEvent
e) {
openADialog();
}
});
}
private void openADialog() {
dialogs.open(IStatus.INFO, "This is a message");
}
}
В следующем примере рассмотрена стандартная панель, открывающая окно диалога с помощью
IMessageDialogs. Показано, каким образом это можно сделать с помощью обычного компонента рабочей
среды. Красным цветом выделены строки, соответствующие инициализации и применению
интерфейса IMessageDialogs.
/**
* Показано, каким образом зависимости компонента применяются в старой панели
*
* @since 3.1
*/
public class DependenciesViewOld extends ViewPart {
// Зависимости
private IMessageDialogs dialogs;
// Основной виджет
private Composite parent;
/* (не документация по Java)
* @see org.eclipse.ui.IWorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
*/
public void createPartControl(Composite parent) {
this.parent = parent;
this.dialogs = (IMessageDialogs)getSite().getAdapter(IMessageDialogs.class);
Button testButton = new Button(parent,
SWT.PUSH);
testButton.setText("Open a dialog");
testButton.addSelectionListener(new
SelectionAdapter() {
/* (не документация по Java)
* @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
*/
public void widgetSelected(SelectionEvent
e) {
openADialog();
}
});
}
private void openADialog() {
if (dialogs != null) {
dialogs.open(IStatus.INFO, "This is a message");
}
}
/* (не документация по Java)
* @see org.eclipse.ui.IWorkbenchPart#setFocus()
*/
public void setFocus() {
parent.setFocus();
}
}