Rozhraní webu

Argumenty v konstruktoru části se nazývají závislostmi. Závislosti části nahrazují různé adaptéry a získávají metody, například pro přístup k IActionBars webu by komponentová část měla mít ve svém konstruktoru instanci IActionBars.

Moderní weby (site) nabízejí neuzavřenou množinu rozhraní. Kterýkoli modul plug-in může tuto množinu rozhraní webu rozšířit s použitím bodu rozšíření org.eclipse.core.component.types. Ačkoli lze množinu rozhraní webu rozšířit, všechny weby podporují tutéž množinu, což zajišťuje, že lze jakoukoli část vložit do kteréhokoli webu. Kompletní množinu rozhraní webu lze zobrazit s použitím pohledu registru modulu plug-in PDE.

Pracovní plocha poskytuje následující rozhraní webu:

Rozhraní
Popis
IErrorContext
Sestavuje a zapisuje zprávy IStatus do protokolu modulu plug-in.
Bundle
Balíček modulu plug-in obsahující implementaci části. Informuje ostatní komponenty jako implementace IErrorContext automaticky o jejich modulech plug-in.
IContainer
Kontejner webu. Tento objekt lze dotazovat pro kterékoli jiné rozhraní webu, což lze použít, pokud část požaduje přesměrování nebo multiplexování všeho ze svého webu ke svým podřízeným prvkům.
INameable
Umožňuje nastavení názvu, ikony, popisu a popisu obsahu pro část. Nahrazuje různé metody get a listenery v IWorkbenchPart.
Composite
Nadřazený kompozitní prvek části. Tento kompozitní prvek nesdílejí ostatní části a likviduje se zároveň s částí. Části je povoleno nastavovat rozvržení a připojovat k tomuto kompozitnímu prvku listenery.
ISecondaryId
Rozhraní, které vrací sekundární ID části při použití ve funkci pohledu s více instancemi.
ResourceManager
Bezpečně alokuje a dealokuje obrázky, písma, barvy a ostatní prostředky SWT. Zaručuje částem sdílení identických prostředků a dále uvolňování paměti při uzavření části.
IDirtyHandler
Umožňuje částem nastavovat nebo mazat svůj neaktualizovaný stav.
IMessageDialogs
Zobrazuje chyby, výstrahy a informační dialogová okna uživateli.
IActionBars
Je určen k témuž účelu jako getViewSite().getActionBars() v kombinaci s rozhraním API Eclipse 3.0.
IMultiplexer
Poskytuje multiplexované komponentě přístup k jejímu multiplexeru a k veškerým sdíleným rozhraním.
.
ISavedState
Uchovává předchozí setrvalý stav části.
IPartFactory
Umožňuje části vytvářet vnořené pohledy a editory.
IPartDescriptor
Uchovává metainformace o části, tj. její ID, název, výchozí obrázek atd.
IEditorInput
Uchovává vstup editoru pro editor. Ukazuje na prázdný vstup editoru pro pohledy.
ISelectionHandler
Ošetřuje změny výběru. Části mohou tuto funkci používat ke změně výběru poskytovaného pracovní ploše.

Část obsahující kontext musí stanovit, zda část získává jedinečnou instanci pro každé rozhraní nebo objekt sdílený více částmi. Konstruktor části nepřijímá argument null.

 

Použití nových rozhraní webu se stávajícími částmi

Třebaže je vkládání do konstruktoru pohodlné, může být nepraktické přepisovat tímto způsobem všechny stávající editory a pohledy tak, aby mohly využívat předností nových rozhraní webu. Z tohoto důvodu jsou všechna nová rozhraní k dispozici stávajícím pohledům jako adaptéry v IWorkbenchPartSite.

Zde uvádíme pohled obsahující jediné tlačítko otevírající dialogové okno se zprávou.

Obrázek DependenciesViewOld

Následující příklad uvádí zdrojový text pohledu nového typu, který otevírá dialogové okno s použitím rozhraní IMessageDialogs.

/**
 * Předvádí použití závislostí komponenty v části nového typu.
 *
 * @od 3.1
 */
public class DependenciesViewNew {
    // Závislosti
    private IMessageDialogs dialogs;
   
    /**
     * Konstruktor komponenty. Nespouštějte přímo.
     */
    public DependenciesViewNew(Composite parent, IMessageDialogs dialogs) {
        this.dialogs = dialogs;
       
        Button testButton = new Button(parent, SWT.PUSH);
        testButton.setText("Otevřít dialogové okno");
        testButton.addSelectionListener(new SelectionAdapter() {
        /* (mimo Javadoc)
         * @viz org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
         */
        public void widgetSelected(SelectionEvent e) {
            openADialog();
        }
        });
    }
   
    private void openADialog() {
        dialogs.open(IStatus.INFO, "Toto je zpráva");
    }
}

Tento příklad ukazuje tradiční pohled, který otevírá dialogové okno s použitím IMessageDialogs a ukazuje tak, že lze tuto operaci provádět rovněž s použitím tradiční části pracovní plochy. Řádky zvýrazněné červeným písmem předvádějí způsob inicializace a použití rozhraní IMessageDialogs v jednotlivých případech.

/**
 * Předvádí použití závislostí komponenty v pohledu starého typu.
 *
 * @od 3.1
 */
public class DependenciesViewOld extends ViewPart {
    // Závislosti
    private IMessageDialogs dialogs;
    
    // Hlavní prvek widget
    private Composite parent;
    
    /* (mimo Javadoc)
     * @viz 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("Otevřít dialogové okno");
        testButton.addSelectionListener(new SelectionAdapter() {
        /* (mimo Javadoc)
         * @viz 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, "Toto je zpráva");
        }
    }

    /* (mimo Javadoc)
     * @viz org.eclipse.ui.IWorkbenchPart#setFocus()
     */
    public void setFocus() {
        parent.setFocus();
    }
}