Ниже перечислены различные варианты создания контекста родительским объектом:
/** * Панель с примером создания двух вложенных дочерних объектов * с контекстом по умолчанию. */public class DefaultContextView { public DefaultContextView(Composite parent, IPartFactory
factory) throws CoreException { // Создание навигатора ресурсов ContainerContext viewContext1
= new ContainerContext(); ISite view1 = factory.createView(
IPageLayout.ID_RES_NAV, parent, viewContext1, null); // Создание панели свойств ContainerContext viewContext2
= new ContainerContext(); ISite view2 = factory.createView(IPageLayout.ID_PROP_SHEET,
parent, viewContext2, null); parent.setLayout(new FillLayout());
}}public class RedirectContextView { /** * Конструктор компонента. Не следует вызывать
непосредственно. */ public RedirectContextView(Composite parent, IPartFactory
factory, ISelectionHandler selection, IActionBars actionBars) throws CoreException
{ // Создание навигатора ресурсов.
Элементы, выбранные в навигаторе ресурсов, перенаправляются непосредственно
родительскому объекту. ContainerContext viewContext1
= new ContainerContext() .addInstance(ISelectionHandler.class,
selection); ISite view1 = factory.createView(
IPageLayout.ID_RES_NAV,
parent, viewContext1, null); // Создание панели свойств. Панели
свойств разрешено непосредственно использовать панели действий. ContainerContext viewContext2
= new ContainerContext() .addInstance(IActionBars.class,
actionBars); ISite view2 = factory.createView(IPageLayout.ID_PROP_SHEET,
parent, viewContext2, null); parent.setLayout(new FillLayout());
}}public class OverrideInstanceView {
/**
* Конструктор компонента. Не следует вызывать непосредственно.
*/
public OverrideInstanceView(Composite parent, IPartFactory
factory, final INameable name) throws CoreException {
ContainerContext viewContext1 = new
ContainerContext();
// Добавление ISelectionHandler в контекст
панели. При изменении элемента, выбранного на панели,
// отображение числа выбранных элементов в
описании информационного наполнения
viewContext1.addInstance(ISelectionHandler.class,
new ISelectionHandler() {
/* (не документация по Java)
* @see
org.eclipse.ui.part.services.ISelectionHandler#setSelection(org.eclipse.jface.viewers.ISelection)
*/
public void
setSelection(ISelection newSelection) {
if (newSelection instanceof IStructuredSelection) {
IStructuredSelection sel = (IStructuredSelection)newSelection;
int selectionSize = sel.size();
name.setContentDescription(MessageFormat.format("{0} problems selected",
new String[] {Integer.toString(selectionSize)}));
}
}
});
// Создание панели неполадок
ISite view1 = factory.createView(
IPageLayout.ID_PROBLEM_VIEW, parent, viewContext1, null);
// Создание панели свойств
ContainerContext viewContext2 = new
ContainerContext();
ISite view2 = factory.createView(IPageLayout.ID_PROP_SHEET,
parent, viewContext2, null);
parent.setLayout(new FillLayout());
}
}