Funktioner og leverancer

Med funktionsklasserne kan du definere brugerkommandoer uafhængigt af deres præsentation i grænsefladen. Det giver dig fleksibilitet til at ændre præsentationen af en funktion i plugin'en uden at ændre den kode, der faktisk udfører kommandoen, når den først er valgt. Leveranceklasserne bruges til at styre de egentlige UI-elementer, der repræsenterer kommandoerne. Du skal ikke programmere leveranceklasserne, men du kan se dem på arbejdsbænken og i JFace API.

Funktioner

En funktion (IAction) repræsenterer en kommando, der kan udløses af slutbrugeren. Funktioner knyttes typisk til knapper, menupunkter og elementer på værktøjslinjer.

Selvom funktioner ikke placerer sig selv i grænsefladen, har de UI-orienterede egenskaber, f.eks. værktøjstiptekst, etikettekst og et billede. Derved kan andre klasser konstruere elementer til brug for præsentation af funktionen.

Når brugeren udløser funktionen i grænsefladen, startes funktionens udførelsesmetode for at udføre det egentlige arbejde. Et generelt mønster i udførelsesmetoden er at forespørge på arbejdsbænkvalg og at manipulere med de valgte objekter. Et andet generelt mønster er at starte en guide eller dialogboks, når en funktion vælges.

Du skal ikke implementere IAction-grænsefladen direkte. I stedet for skal du underinddele klassen Action i klasser. Gennemgå underklasserne for denne klasse for at se mange af de generelle mønstre for funktioner. Koden nedenfor implementerer funktionen "About". Det er en af de simplere funktioner på arbejdsbænken.

      public void run() {
      new AboutDialog(workbenchWindow.getShell()).open();
   }

Tidligere så vi på arbejdsbænkgrænsefladerne IViewActionDelegate og IEditorActionDelegate. Disse grænseflader bruges, når der leveres oversigts- eller editorfunktioner til arbejdsbænken. Arbejdsbænkfunktioner initialiseres med en reference til deres tilknyttede oversigt eller editor. De kan navigere til arbejdsbænksiden eller -vinduet og opnå adgang til valg eller andre oplysninger, der kræves for at udføre funktionen.

Du kan implementere dine egne funktionsklasser, hver gang du vil definere en kommando i din plugin. Hvis du leverer funktioner til andre oversigter og editorer, skal du implementere funktionsdelegerede.

Leveranceelementer

Et leveranceelement (IContributionItem) repræsenterer UI-delen af en funktion. For at være mere specifik repræsenterer det et element, der er leveret til en delt UI-ressource, f.eks. en menu eller værktøjslinje.

Leveranceelementer ved, hvordan de skal udfylde et specifikt SWT-element med det relevante SWT-element, der repræsenterer leverancen.

Du skal ikke bekymre dig om at oprette et leveranceelement, når du leverer funktioner til arbejdsbænk-UI'et. Dette gøres for dig, når arbejdsbænken opretter UI-elementer for de funktioner, du har defineret.

Funktioner til styring af leverancer

En funktion til styring af leverancer (IContributionManager) repræsenterer en samling leveranceelementer, der præsenteres i grænsefladen. Du kan tilføje og indsætte leveranceelementer vha. navngivne leverance-id'er til at placere elementerne i den korrekte rækkefølge. Du kan også finde elementer efter id og fjerne individuelle elementer.

Hver implementering af IContributionManager ved, hvordan et specifikt SWT-element skal udfylde sine elementer. JFace stiller funktioner til styring af leverancer til rådighed for menuer (IMenuManager), værktøjslinjer (IToolBarManager) og statuslinjer (IStatusLineManager).

Som plugin-udvikler behøver du ikke at implementere disse grænseflader, men du vil se referencer til nogle af disse styringsfunktioner i API-metoder.