org.eclipse.ui.newWizards

Du kan lägga till en guide till menyalternativen Arkiv > Ny i arbetsmiljön med hjälp av utökningspunkten org.eclipse.ui.newWizards. I exemplet med Readme-verktyget används denna utökningspunktsdefinition för att lägga till guiden för Readme-filen:

<extension
      point = "org.eclipse.ui.newWizards">
	<category
	   id = "org.eclipse.ui.examples.readmetool.new"
	   parentCategory="org.eclipse.ui.Examples"
	   name="%NewWizard.category">
	</category>
 	<wizard
	   id = "org.eclipse.ui.examples.readmetool.wizards.new.file"
      	   name = "%NewWizard.name"
	   class="org.eclipse.ui.examples.readmetool.ReadmeCreationWizard"
	   category="org.eclipse.ui.Examples/org.eclipse.ui.examples.readmetool.new"
	   icon="icons/obj16/newreadme_wiz.png">
    	   <description>%NewWizard.desc</description>
	   <selection class="org.eclipse.core.resources.IResource"/>
	</wizard>
</extension>

I kategorin beskrivs guidens gruppering. En extra parentCategory etablerar den nya kategorin som en underordnad till en befintlig kategori.

Kategorier på högsta nivå visas i menyn Arkiv > Ny.  I det här exemplet är parentCategory inställd på en "Exempelkategori". Varifrån kom den överordnade kategorin? I kodstycket i insticksprogrammet org.eclipse.ui definieras en kategori för standardexempel:

<extension
        point="org.eclipse.ui.newWizards">
    <category
          name="%NewWizards.Category.Examples"
          id="org.eclipse.ui.Examples">
    </category>
    ...

Den här kategorin visas i menyn Arkiv > Ny.

Menyn Ny med kategorin Exempel

 

I Readme-verktygets kategori namn definieras den etikett som används för nästa skikt av grupper under den överordnade kategorin. Dessa kategorier visas som den andra nivån i trädet som visas i guiden Nytt exempel. Guidens namn och ikon visas undertill när du expanderar kategorin. Beskrivningen av den valda guiden visas högst upp i guiden när du väljer den.

Guiden Nytt exempel med Readme-poster

Denna information om guiden visas endast p.g.a. kodstycket i filen plugin.xml. Ingen insticksprogramkod körs förrän användaren väljer knappen Nästa. När detta inträffar, instantierar arbetsmiljön guidens klass som anges i kodstycket och skickar en förväntad urvalsklass till den.

Klassen som identifieras i detta tillägg (ReadmeCreationWizard) måste implementera gränssnittet INewWizard.  I de flesta guider görs detta genom utökning av plattformsklassen Wizard, även om detta är en implementeringsmekanism och krävs inte av utökningspunkten.

Själva guiden gör inte så mycket mer än skapar sidorna i den. Låt oss först titta på implementeringen av sidan och sedan återgå till guiden.

Sidor

I arbetsmiljön finns klasser för grundläggande guidesidor, som stöder den typ av bearbetning som utförs för varje utökningspunkt i guiden. Du kan använda dessa sidor eller utöka dem för att lägga till ytterligare bearbetning.

Målet med ReadmeCreationWizard är att skapa en ny fil, lägga till erforderligt innehåll i filen och som tillval öppna en redigerare för filen. Du måste definiera sidans kontroller som gör att användaren kan ange var innehåll ska placeras i filen och om en redigerare ska startas.

Vi skapar guidesidan, ReadmeCreationPage, genom att utöka WizardNewFileCreationPage. Kontrollerna för en guidesida definieras på ett sätt som liknar definitionen för en vy eller redigerare. Sidan implementerar en createControl-metod, skapar erforderliga SWT-gränssnittskontroller som underordnade till den tillhandahållna Composite. Eftersom superklassen redan lägger till gränssnittskontroller som stöder bearbetning av nya filer, behöver vi bara utöka createControl-metoden på vår guidesida för att lägga till ytterligare kryssrutor som styr genereringen av sektioner och öppnandet av redigeraren.

   public void createControl(Composite parent) {
      // ärver standardbehållare och gränssnittskontroller för namnspecifikation
      super.createControl(parent);
      Composite composite = (Composite)getControl();
      ...
      // grupper för generering av provsektion
      Group group = new Group(composite,SWT.NONE);
      group.setLayout(new GridLayout());
      group.setText(MessageUtil.getString("Automatic_sample_section_generation"));
      group.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL |
         GridData.HORIZONTAL_ALIGN_FILL));
      ...
      // kryssrutor för generering av provsektion
      sectionCheckbox = new Button(group,SWT.CHECK);
      sectionCheckbox.setText(MessageUtil.getString("Generate_sample_section_titles"));
      sectionCheckbox.setSelection(true);
      sectionCheckbox.addListener(SWT.Selection,this);

      subsectionCheckbox = new Button(group,SWT.CHECK);
      subsectionCheckbox.setText(MessageUtil.getString("Generate_sample_subsection_titles"));
      subsectionCheckbox.setSelection(true);
      subsectionCheckbox.addListener(SWT.Selection,this);
      ...
      // öppna fil för redigering, kryssruta
      openFileCheckbox = new Button(composite,SWT.CHECK);
      openFileCheckbox.setText(MessageUtil.getString("Open_file_for_editing_when_done"));
      openFileCheckbox.setSelection(true);
      ...
   }

Om du förstår koncepten i Standard Widget Toolkit bör du kunna tolka detta kodstycke.

I grundmönstren för implementering av en sida ingår att:

Klassen ReadmeCreationPage ärver mycket av detta beteende från WizardNewFileCreationPage.  Bläddra igenom implementeringen av dessa klasser för vidare information.

När vi nu förstår vad en sida gör, kan vi återgå till guiden.

Guide

Guiden är ansvarig för att skapa sidorna och tillhandahålla "avslutningslogik".

I grundmönstren för implementering av en guide ingår:

Den kompletta guiden ser ut så här:

Guidesida för skapande av Readme-fil