org.eclipse.ui.newWizards

Du kan tilføje en guide til menupunktet Fil > Ny på arbejdsbænken ved at bruge udvidelsespunktet org.eclipse.ui.newWizards. Readme-værktøjets eksempel anvender denne definition af udvidelsespunktet til at tilføje Readme-filens guide:

<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>   

category beskriver den gruppering, der gælder for guiden. En valgfri parentCategory etablerer den nye kategori som en underordnet kategori til den eksisterende kategori.

Kategorier på øverste niveau vises på menuen Fil > Ny. I dette eksempel fastsættes parentCategory til kategorien "Examples". Hvor stammer den overordnede kategori fra? Plugin-funktionen org.eclipse.ui definerer en kategori med standardeksempler i sin kodning:

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

Denne kategori vises på menuen Fil > Ny .

Ny menu med kategorien 'Examples'

 

Readme-værktøjets kategori name definerer den etiket, som bruges til næste lag grupperinger under den overordnede kategori.  Disse kategorier vises som andet niveau i den træstruktur, der vises i guiden Nyt eksempel. Guidens navn og ikon vises nedenunder, når du udvider kategorien. Beskrivelsen af den valgte guide vises øverst i guiden, når du vælger den.

Guiden Nyt eksempel med Readme-indgange

Disse oplysninger om guiden vises udelukkende på grund af kodningen i filen plugin.xml. Plugin-koden udføres først, når brugeren vælger knappen Næste. Når det sker, starter arbejdsbænken den guideklasse, som er angivet i kodningen, og videregiver en forventet valgklasse til den.

Den klasse, der er identificeret i udvidelsen(ReadmeCreationWizard), skal implementere grænsefladen INewWizard.  Det gør de fleste guider ved at udvide platformens Guide-klasse, selvom det er en implementeringsmekanisme, som ikke kræves af udvidelsespunktet.

Selve guiden udfører ikke ret meget, men opretter de interne sider. Lad os først se på implementeringen af siden og herefter vende tilbage til guiden.

Sider

Arbejdsbænken giver mulighed for nogle grundlæggende guide-sideklasser, der understøtter den type behandling, der udføres for hvert enkelt udvidelsespunkt i guiden. Du kan enten bruge disse sider eller udvide dem, så der tilføjes yderligere behandlingsfunktioner.

Målet for ReadmeCreationWizard er at oprette en ny fil, tilføje det nødvendige indhold til filen og evt. åbne en editor med filen. Vores side skal definere de kontroller, der lader brugeren angive, hvad der skal placeres i filen, og om der skal startes en editor.

Vi opretter guidesiden ReadmeCreationPage ved at udvide WizardNewFileCreationPage. Kontrollerne til en guideside defineres på en måde, der minder om definitionen af en oversigt eller editor. Siden implementerer metoden createControl og opretter de nødvendige SWT-elementer som underordnede elementer til Composite. Da superklassen allerede tilføjer elementer, som understøtter behandling af nye filer, behøver vi kun udvide metoden createControl på vores guideside for at tilføje de yderligere afkrydsningsfelter, der styrer generering af afsnit og åbning af editoren.

    public void createControl(Composite parent) {
      // overtag standardelementer for opbevaringssted og navnespecifikation
      super.createControl(parent);
      Composite composite = (Composite)getControl();
      ...
      // gruppe for generering af sektionseksempel
      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));
      ...
      // afkrydsningsfelter for generering af sektionseksempel
      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);
      ...
      // afkrydsningsfelt for åbn fil til redigering
      openFileCheckbox = new Button(composite,SWT.CHECK);
      openFileCheckbox.setText(MessageUtil.getString("Open_file_for_editing_when_done"));
      openFileCheckbox.setSelection(true);
      ...
   }

Du vil sandsynligvis være i stand til at følge denne kode, hvis du forstår begreberne i Standard Widget Toolkit.

Grundmønstrene for implementering af en side omfatter:

Klassen ReadmeCreationPage overtager en stor del af denne funktionsmåde fra WizardNewFileCreationPage.  Gennemse implementeringen af disse klasser for at få flere oplysninger.

Nu da vi forstår, hvad en side gør, ser vi på guiden igen.

Guiden

Guiden er ansvarlig for at oprette siderne og stille afslutningslogikken ("finish") til rådighed.

Grundmønstrene for implementering af en guide omfatter:

Den færdiggjorte guide skal se sådan ud:

Siden med guiden Opret Readme-fil