Helyfelületek

Egy rész konstruktorában lévő argumentumokat függőségeknek nevezzük. A rész függőségek kicserélik a különféle illesztőket és lekérő metódusokat, például egy hely IActionBars felületének eléréséhez egy komponens alapú rész egy IActionBars példányt fogad a konstruktorában.

Az új stílusú helyek felületek nyíltvégű halmazát biztosítják. Bármely bedolgozó kiterjesztheti a helyfelületek halmazát az org.eclipse.core.component.types kiterjesztési pont használatával. Bár a helyfelületek halmaza kiterjeszthető, minden hely ugyanazt a halmazt támogatja, amely azt biztosítja, hogy bármely rész használható legyen bedolgozóként bármely helyben. A helyfelületek teljes halmaza megtekinthető a PDE bedolgozó-nyilvántartás nézet használatával.

A munkaterület az alábbi helyfelületeket biztosítja:

Felület
Leírás
IErrorContext
Összeállítja és naplózza az IStatus üzeneteket a bedolgozó naplójába.
Bundle
A bedolgozóköteg, amely a rész megvalósítását tartalmazza. Ez tájékoztatja automatikusan a bedolgozókról a többi olyan komponenst, mint az IErrorContext megvalósítása.
IContainer
A hely tárolója. Ez az objektum lekérdezhető a többi helyfelület bármelyike számára, ami hasznos lehet, ha a rész át szeretne irányítani vagy többszörözni akar mindent a helyéről az utódokhoz.
INameable
Lehetővé teszi egy rész számára a nevének, ikonjának, előugró leírásának és tartalomleírásának beállítását. Kicseréli a különféle lekérő metódusokat és figyelőket az IWorkbenchPart felületben.
Composite
A rész szülőösszetétele. Ez az összetétel nincs megosztva a többi résszel és a résszel egyidőben kerül eldobásra. A rész beállíthatja az elrendezést és figyelőket csatolhat ezen összetételhez.
ISecondaryId
Az a felület, amely egy rész másodlagos azonosítóját adja vissza, amikor az többpéldányos nézetként kerül felhasználásra.
ResourceManager
Biztonságosan lefoglalja és felszabadítja a képeket, betűtípusokat, színeket és más SWT erőforrásokat. Az azonos erőforrások részek közti megosztását és a szivárgások eltakarítását biztosítja a rész bezárásakor.
IDirtyHandler
Lehetővé teszi a részek számára a rendezetlen állapotuk beállítását vagy törlését.
IMessageDialogs
Hiba, figyelmeztető és információs párbeszédablakokat jelenít meg a felhasználó számára.
IActionBars
Ugyanazt biztosítja, amit a getViewSite().getActionBars() nyújtott az Eclipse 3.0 API-val.
IMultiplexer
Egy többszörözött komponenst biztosít a többszörözőjének és a megosztott felületek elérésével.
.
ISavedState
A rész korábban eltárolt állapotát tartalmazza.
IPartFactory
Lehetővé teszi egy rész számára beágyazott nézetek és szerkesztők létrehozását.
IPartDescriptor
Olyan metaadatokat tárol egy részről, mint az azonosító, cím, alapértelmezett kép, stb.
IEditorInput
Egy szerkesztő bemenetét tartalmazza. A nézetek üres szerkesztőbemenetére mutat.
ISelectionHandler
A kijelölésváltozásokat kezeli. A részek a munkaterület számára biztosított kijelölések módosítására használhatják.

A részt tartalmazó környezettől függ annak meghatározása, hogy a rész egyedi példányt vagy számos rész között megosztott objektumot kér minden felülethez. A rész konstruktora sohasem fogad null argumentumot.

 

Új helyfelületek használata létező részekkel

Bár a konstruktormegadás kényelmes, nem lenne célravezető minden meglévő szerkesztő és nézet újraírása azért, hogy a konstruktormegadást használjuk az új helyfelületek előnyeinek kihasználása érdekében. Emiatt az összes új felület a meglévő nézetek számára is elérhető illesztőként az IWorkbenchPartSite felületben.

Alább egy nézet látható, amely egy üzenet párbeszédablakot megnyitó gombot tartalmaz.

DependenciesViewOld képe

Az alábbi példa egy új stílusú nézet forrását mutatja be, amely a párbeszédablakot az új IMessageDialogs felület használatával nyitja meg.

/**
 * A komponensfüggőségek új stílusú részben használatának módját mutatja be.
 *
 * A 3.1 változat óta
 */
public class DependenciesViewNew {
    // Függőségek
    private IMessageDialogs dialogs;
   
    /**
     * A komponens konstruktora. Ne hívja meg közvetlenül.
     */
    public DependenciesViewNew(Composite parent, IMessageDialogs dialogs) {
        this.dialogs = dialogs;
       
        Button testButton = new Button(parent, SWT.PUSH);
        testButton.setText("Párbeszédablak megnyitása");
        testButton.addSelectionListener(new SelectionAdapter() {
        /* (nem Javadoc)
         * @lásd: org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
         */
        public void widgetSelected(SelectionEvent e) {
            openADialog();
        }
        });
    }
   
    private void openADialog() {
        dialogs.open(IStatus.INFO, "Ez egy üzenet");
    }
}

Ez a példa egy hagyományos nézetet mutat be, amely az IMessageDialogs felület használatával nyit meg egy párbeszédablakot bemutatva, hogy ez egy hagyományos munkaterület rész használatával is lehetséges. A vörös betűtípussal írt sorok azt mutatják, hogy az IMessageDialogs felület hogyan került inicializálásra és felhasználásra az egyes esetekben.

/**
 * A komponensfüggőségek régi stílusú nézetben használatának módját mutatja be.
 *
 * A 3.1 változat óta
 */
public class DependenciesViewOld extends ViewPart {
    // Függőségek
    private IMessageDialogs dialogs;
    
    // Fő felületi elem
    private Composite parent;
    
    /* (nem Javadoc)
     * @lásd: 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("Párbeszédablak megnyitása");
        testButton.addSelectionListener(new SelectionAdapter() {
        /* (nem Javadoc)
         * @lásd: 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, "Ez egy üzenet");
        }
    }

    /* (nem Javadoc)
     * @lásd: org.eclipse.ui.IWorkbenchPart#setFocus()
     */
    public void setFocus() {
        parent.setFocus();
    }
}