Diálogos de assistentes

O exemplo anterior facultava um assistente para um ponto de extensão especificado. Outro caso, talvez mais comum, será querer lançar um assistente de plug-in próprio a partir de alguma acção que se tenha definido. (Em Contributos para o menu da área de trabalho, abordamos as formas em que se pode contribuir com acções para a área de trabalho.)

Os assistentes são apresentados na UI por estarem colocados num diálogo contentor.  Este detalhe é efectuado automaticamente quando este contribui com uma extensão de assistente.  Ao lançar o seu próprio assistente, terá de o apresentar junto com um WizardDialog.

Por exemplo, o ReadmeCreationWizard poderia ser lançado independentemente criando um diálogo de assistente e associando-o ao ReadmeCreationWizard. A porção de código seguinte mostra como realizar isto a partir de algum delegado de acção. (O método implica que conheçamos a área de trabalho e a selecção.)

public void run(IAction action) {
      // Create the wizard
      ReadmeCreationWizard wizard = new ReadmeCreationWizard();
      wizard.init(getWorkbench(), selection);

      // Create the wizard dialog
      WizardDialog dialog = new WizardDialog
         (getWorkbench().getActiveWorkbenchWindow().getShell(),wizard);
      // Open the wizard dialog
      dialog.open();
   }

Se precisar de incorporar o assistente em qualquer outro lugar da interface de utilizador, a interface IWizardContainer definirá o protocolo necessário para alojar um assistente.