Többszöröző komponensek megvalósítása

Többszörözőben használathoz a helyfelületeknek be kell jegyezniük egy alternatív alapértelmezett megvalósítást az org.eclipse.ui.part.SiteMultiplexerInitializer hatókörrel. Mivel ez kiterjeszti a helyhatókört, ezért a specifikusabb többszöröző változat nagyobb prioritást fog élvezni az alapértelmezett változattal szemben a Többszörözőben használat során.

Egy töbszörözött komponens szinte minden esetben az alábbi mintát használja:
  1. Megvalósítja az INestedComponent életciklus felületet;
  2. Egy IMultiplexer felületet fogad a konstruktorában és a felületek osztott változatának elérésére használja;
  3. Eltárolja a rész állapotát;
  4. Figyeli az állapotváltozásokat az utódban és ennek megfelelően frissíti a tárolt állapotot;
  5. A komponens minden egyes aktiválásakor továbbítania kell a tárolt állapotot az osztott felületnek a többszörözőben;
  6. Amíg a komponens aktív, továbbítania kell az állapotváltozásokat közvetlenül az osztott felületnek.
Az alábbi példa a munkaterület által az ISelectionHandler felület ChildSelectionHandler elemmel többszörözésére használt kódot mutatja be.
/**
 * Az ISelectionHandler felület többszörözött változata
 *
 * A 3.1 változat óta
 */
public class ChildSelectionHandler implements ISelectionHandler, INestedComponent {

    private ISelectionHandler parent;
    private ISelection selection;
    private boolean isActive = false;
    private IMultiplexer multiplexer;

    public ChildSelectionHandler(IMultiplexer mplex) throws DependencyException {
        this.multiplexer = mplex;        
        // Hozzáférés a többszörözendő megosztott ISelectionHandler elemhez (csak akkor kell        
        // módosítanunk, ha ez az objektum az aktív utód)        
        this.parent = (ISelectionHandler)
            mplex.getSharedComponents().getComponent(ISelectionHandler.class);        
                
        // A kezdeti állapot beállítása (A rész kiinduló kijelölése üres,        
        // amíg kifejezetten be nem állítja azt).        
    }        

    public IMultiplexer getMultiplexer() {        
        // A többszöröző visszaadása, mellyel az objektum létrejött        
        return multiplexer;        
    }

    public void activate() {        
        // A tárolt kijelölés továbbítása az osztott felülethez        
        parent.setSelection(selection);        
        isActive = true;        
    }        
            
    public void deactivate() {        
        isActive = false;        
    }        

    public void setSelection(ISelection newSelection) {        
        //  Az utód új kijelölésének megjegyzése        
        selection = newSelection;        
        if (isActive) {        
             // Ha aktív az objektum, akkor továbbítani kell a kijelölést közvetlenül az osztott
             // felülethez        
             parent.setSelection(newSelection);        
        }        
    }        
}        
Ez a ChildSelectionHandler osztályhoz tartozó kiterjesztési pont kódja.
<extension point="org.eclipse.core.component.types">        
    <component        
            implementation="org.eclipse.ui.internal.part.services.ChildSelectionHandler"        
            interface="org.eclipse.ui.part.services.ISelectionHandler"        
            singleton="false"        
            initializer="org.eclipse.ui.part.SiteMultiplexerInitializer"/>        
   </extension>        
TestCompositeView képernyőképe