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 .
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.
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.
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 er ansvarlig for at oprette siderne og stille afslutningslogikken ("finish") til rådighed.
Grundmønstrene for implementering af en guide omfatter:
public void init(IWorkbench workbench,IStructuredSelection selection) { this.workbench = workbench; this.selection = selection; setWindowTitle(MessageUtil.getString("New_Readme_File")); setDefaultPageImageDescriptor(ReadmeImages.README_WIZARD_BANNER); }
public void addPages() { mainPage = new ReadmeCreationPage(workbench, selection); addPage(mainPage); }
public boolean performFinish() { return mainPage.finish(); }
Den færdiggjorte guide skal se sådan ud: