Åtgärder och innehåll

Med åtgärdsklasserna kan du definiera användarkommandon oberoende av deras presentation i användargränssnittet. Detta ger dig flexibiliteten att ändra presentationen av en åtgärd i insticksprogrammet utan att ändra den kod som verkligen utför kommandot när det har valts. Innehållsklasserna används för att hantera de verkliga objekt i användargränssnittet som representerar kommandona. Du programmerar inte innehållsklasser men du kan se dem i vissa arbetsmiljö- och JFace-API:er.

Åtgärder

En åtgärd (IAction) representerar ett kommando som kan utlösas av slutanvändaren. Åtgärder associeras vanligen med knappar, menyalternativ och objekt i verktygsfält.

Även om åtgärder inte placerar sig själva i användargränssnittet har de sådana egenskaper, t.ex. text i verktygstips, etiketter och bilder. Detta gör att andra klasser kan konstruera gränssnittskontroller för presentation av åtgärden.

När användaren utlöser åtgärden i användargränssnittet anropas åtgärdens körmetod för att göra det verkliga jobbet. Ett vanligt mönster i körmetoden är att fråga efter val i arbetsmiljön och manipulera valda objekt. Ett annat vanligt mönster är att starta en guide eller en dialogruta när en åtgärd väljs.

Du bör inte implementera gränssnittet IAction direkt. Du bör i stället underordna klassen till klassen Action. Bläddra igenom de underordnade klasserna till den här klassen och se många av de vanliga mönstren för åtgärder. Följande kod implementerar åtgärden"Om". Det är en av de enklare åtgärderna i arbetsmiljön.

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

Tidigare såg vi arbetsmiljögränssnitten IViewActionDelegate och IEditorActionDelegate. Dessa gränssnitt används vid tillägg av vyåtgärder och redigeraråtgärder i arbetsmiljön. Arbetsmiljöns åtgärdsdelegater initieras med en referens till deras associerade vy eller redigerare. Med denna kunskap kan de navigera till arbetsmiljösidan eller -fönstret och accessa urval eller annan information som behövs för att utföra åtgärden.

Du implementerar egna åtgärdsklasser närhelst du vill definiera ett kommando i insticksprogrammet. Om du lägger till åtgärder i andra vyer och redigerare implementeras åtgärdsdelegater.

Innehållsobjekt

Ett innehållsobjekt (IContributionItem) representerar användargränssnittsdelen av en åtgärd. Mer specifikt representerar den ett objekt som läggs till i en delad användargränssnittsresurs, t.ex. en meny eller ett verktygsfält.

Innehållsobjekt vet hur de ska fylla en specifik SWT-gränssnittskontroll med lämpligt SWT-objekt som representerar innehållet.

Du behöver inte oroa dig för att skapa ett innehållsobjekt när du lägger till åtgärder i arbetsmiljöns användargränssnitt. Detta görs för din räkning när arbetsmiljön skapar användargränssnittsobjekt för åtgärder som du har definierat.

Innehållshanterare

En innehållshanterare (IContributionManager) representerar en samling innehållsobjekt som presenteras i användargränssnittet. Du kan lägga till och infoga innehållsobjekt med hjälp av namngivna innehålls-IDn för att placera objekten i lämplig ordning. Du kan också hitta objekt med hjälp av ID och ta bort enskilda objekt.

Varje implementation av IContributionManager vet hur en specifik SWT-gränssnittskontroll ska fyllas med sina objekt. JFace tillhandahåller innehållshanterare för menyer (IMenuManager), verktygsfält (IToolBarManager) och statusrader (IStatusLineManager).

Som utvecklare av insticksprogram behöver du inte implementera dessa gränssnitt men du ser referenser till vissa av dessa hanterare i API-metoder.