org.eclipse.ui.newWizards

Du kan legge til veivisere i menyvalget Fil > Ny(tt) på arbeidsbenken, via utvidelsespunktet org.eclipse.ui.newWizards. Eksempelet med readme-verktøyet nedenfor bruker dette utvidelsespunktet til å legge til veiviseren for 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>

Category beskriver veivisergrupperingen. En eventuell parentCategory oppretter den nye kategorien som underordnet en eksisterende kategori.

Toppnivåkategorier vises på menyen Fil > Ny(tt).  I dette eksempelet settes parentCategory til kategorien "Examples". Hvor kommer så den overordnede kategorien fra?  Plugin-modulen org.eclipse.ui definerer en standard eksempelkategori i kodesettet:

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

Denne kategorien vises på menyen Fil > Ny(tt).

Ny(tt)-menyen med eksempelkategorien

 

Readme-verktøyets kategorinavn definerer etiketten som brukes ved neste grupperingslag under den overordnede kategorien.  Disse kategoriene vises som det andre nivået i treet som vises i veiviseren Nytt eksempel.  Navnet og ikonet for veiviseren vises nedenfor når du utvider kategorien. Beskrivelsen av den valgte veiviseren vises øverst i veiviseren når du velger den.

Veiviser for nytt eksempel med readme-oppføringer

Informasjonen om veiviseren vises utelukkende på grunn av kodetypen i filen plugin.xml. Plugin-koden kjøres ikke før brukeren velger knappen Neste. Når dette skjer oppretter arbeidsbenken en forekomst av veiviserklassen som er oppgitt i kodetypen og overfører en forventet valgklasse.

Klassen som er identifisert i denne utvidelsen (ReadmeCreationWizard), må implementere grensesnittet INewWizard.  De fleste veivisere gjør dette ved å utvide plattformens Wizard-klasse selv om dette er en implementeringsfunksjon som ikke kreves av utvidelsespunktet.

Veiviseren selv gjør ikke så mye annet enn å opprette veivisersidene. La oss se på implementeringen av den første siden før vi kommer tilbake til veiviseren.

Sider

Arbeidsbenkens basisklasser for veivisersider støtter behandlingstypen som utføres for hvert av utvidelsespunktene for veiviseren. Du kan bruke disse sidene eller utvide dem for å legge til ytterligere behandling.

Målet med ReadmeCreationWizard er å opprette en ny fil, legge til nødvendig innhold i filen og eventuelt åpne et redigeringsprogram i filen. Siden må definere kontroller slik at brukeren kan angi filinnholdet og om det skal startes et redigeringsprogram.

Veivisersiden ReadmeCreationPage opprettes ved å utvide WizardNewFileCreationPage. Kontrollene for veivisersiden defineres omtrent på samme måte som kontrollene for en visning eller et redigeringsprogram. Siden implementerer metoden createControl slik at det opprettes nødvendige SWT-widgeter som underordnede for oppgitt Kompositt. Ettersom superklassen allerede legger til widgeter som støtter ny filbehandling, trenger vi bare å utvide metoden createControl på veivisersiden for å legge til flere avmerkingsbokser som kontrollerer generering av seksjoner og åpning av redigeringsprogrammet.

    public void createControl(Composite parent) {
      // inherit default container and name specification widgets
      super.createControl(parent);
      Composite composite = (Composite)getControl();
      ...
      // sample section generation group
      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));
      ...
      // sample section generation checkboxes
      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);
      ...
      // open file for editing checkbox
      openFileCheckbox = new Button(composite,SWT.CHECK);
      openFileCheckbox.setText(MessageUtil.getString("Open_file_for_editing_when_done"));
      openFileCheckbox.setSelection(true);
      ...
   }

Du kan følge denne koden hvis du forstår begrepene i Standard widget-verktøysett.

Grunnleggende mønstre for implementering av en side:

Klassen ReadmeCreationPage arver mye av funksjonaliteten fra WizardNewFileCreationPage.  Du finner mer informasjon ved å bla gjennom implementeringen av disse klassene.

Nå har vi sett hva sidene gjør og kan igjen rette oppmerksomheten mot veiviseren.

Veiviser

Veiviseren skal opprette og sikre "fullføringslogikk".

De grunnleggende mønstrene for implementering av en veiviser omfatter:

Den fullførte veiviseren ser slik ut:

Veiviserside for opprettelse av readme-fil