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.
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.
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.
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.
Guiden är ansvarig för att skapa sidorna och tillhandahålla "avslutningslogik".
I grundmönstren för implementering av en guide ingår:
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 kompletta guiden ser ut så här: