Řada aktivních kompozitních částí bude zahrnovat pojem aktivního podřízeného prvku. Takovéto části mohou
požadovat dynamické připojování závislosti k podřízenému prvku, který je v této době aktivní.
Například můžeme chtít vytvořit pohled, který uspořádává své podřízené prvky do složky karty. Nadřazený prvek může požadovat nastavení svého vlastního názvu a ikony podle svého aktivního podřízeného prvku. Toto lze provést následujícím způsobem:
public class MultiplexNameView implementuje
IDisposable { private Multiplexer mplex; private ISite view1; private ISite view2; private Listener focusListener = new Listener() { /* (mimo Javadoc) * @viz org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event) */ public void handleEvent(Event
e) { if
(e.widget == view1.getControl()) {
mplex.setActivePart(view1); } else
if (e.widget == view2.getControl()) {
mplex.setActivePart(view2); }
} }; /** * Konstruktor komponenty. Nespouštějte přímo. */ public MultiplexNameView(Composite parent, IPartFactory
factory, INameable name) throws CoreException { // Vytvoří multiplexer. Přesměruje
náš INameable na multiplexer mplex = new Multiplexer(new ContainerContext().addInstance(INameable.class,
name)); // Vytvoří navigátor prostředků.
Poskytne navigátoru multiplexované INameable, avšak použije // výchozí hodnoty pro všechna ostatní rozhraní.
ContainerContext viewContext1 = new ContainerContext()
.delegateTo(INameable.class, mplex); view1 = factory.createView(
IPageLayout.ID_RES_NAV, parent, viewContext1, null); view1.getControl().addListener(SWT.Activate,
focusListener); // Vytvoří pohled Vlastnosti. Poskytne pohledu Vlastnosti multiplexované INameable, avšak použije // pro vše ostatní výchozí hodnoty.
ContainerContext viewContext2 = new ContainerContext()
.delegateTo(INameable.class, mplex); view2 = factory.createView(IPageLayout.ID_PROP_SHEET,
parent, viewContext2, null); view2.getControl().addListener(SWT.Activate,
focusListener); // Provádí počáteční aktivaci navigátoru
mplex.setActivePart(view1); parent.setLayout(new FillLayout());
} /* (mimo Javadoc) * @viz org.eclipse.core.component.IDisposable#dispose() */ public void dispose() { mplex.dispose(); }}