Dies ist eine alte Version des Dokuments!


Java - Eclipse-RCP - Wizards

Basis dieses Beispiels ist wieder die Beispiel-Applikation.

Der (leere) Wizard:

package com.sowas.javawiki.rcpbaseapplication.wizard;
 
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.ui.INewWizard;
import org.eclipse.ui.IWorkbench;
 
public class MyWizard extends Wizard implements INewWizard{
 
   @Override
   public boolean performFinish(){
      return false;
   }
 
   @Override
   public void init(IWorkbench workbench, IStructuredSelection selection){
   }
 
   @Override
   public void addPages() {
      // Hier können die WizardPages hinzugefügt werden (Siehe weiter unten)
   }
 
   public Object getResult() {
      return null;  // Sollte natürlich die im Wizard erstellten Daten zurückliefern 
   }
}



Der dazugehörige Handler:

package com.sowas.javawiki.rcpbaseapplication.wizard;
 
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.commands.IHandler;
import org.eclipse.core.commands.IHandlerListener;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Display;
 
public class MyWizardHandler implements IHandler{
   @Override
   public void addHandlerListener(IHandlerListener handlerListener){
   }
 
   @Override
   public void dispose(){
   }
 
   @Override
   public Object execute(ExecutionEvent event) throws ExecutionException{
      MyWizard myWizard =  new MyWizard(); //(person);
 
      WizardDialog wizardDialog = new WizardDialog(Display.getDefault().getActiveShell(), myWizard);        
      wizardDialog.create();
      Point defaultSize = wizardDialog.getShell().getSize();
      wizardDialog.getShell().setSize(
          Math.max(400, defaultSize.x),
          Math.max(600, defaultSize.y));
 
      wizardDialog.setBlockOnOpen(true);
 
      Object result = null;
      if (WizardDialog.OK == wizardDialog.open()) {
         result = myWizard.getResult();
      }
      return result;
   }
 
   @Override
   public boolean isEnabled(){
      return true;
   }
 
   @Override
   public boolean isHandled(){
      return true;  // Muss true sein, sonst gibt's eine Exception
   }
 
   @Override
   public void removeHandlerListener(IHandlerListener handlerListener){
   }
}



und die angepasste plugin.xml:

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.2"?>
<plugin>
 
   <extension
         id="application"
         point="org.eclipse.core.runtime.applications">
      <application>
         <run
               class="com.sowas.javawiki.rcpbaseapplication.Application">
         </run>
      </application>
   </extension>
   <extension
         point="org.eclipse.ui.perspectives">
      <perspective
            name="Perspective"
            class="com.sowas.javawiki.rcpbaseapplication.MyPerspective"
            id="BaseApplication.perspective">
      </perspective>
   </extension>
   <extension
         point="org.eclipse.ui.views">
      <view
            name="MyView"
            class="com.sowas.javawiki.rcpbaseapplication.MyView"
            id="com.sowas.javawiki.rcpbaseapplication.MyView">
      </view>
   </extension>
   <extension
         point="org.eclipse.ui.editors">
      <editor
            class="com.sowas.javawiki.rcpbaseapplication.MyEditor"
            default="false"
            id="com.sowas.javawiki.rcpbaseapplication.MyEditor"
            name="MyEditor">
      </editor>
   </extension>
   <extension
         point="org.eclipse.ui.menus">
      <menuContribution
            locationURI="menu:org.eclipse.ui.main.menu?after=additions">
         <menu
               label="Wizard">
            <command
                  commandId="com.sowas.javawiki.rcpbaseapplication.wizard.Wizard"
                  style="push">
            </command>
         </menu>
      </menuContribution>
   </extension>
   <extension
         point="org.eclipse.ui.commands">
      <command
            defaultHandler="com.sowas.javawiki.rcpbaseapplication.wizard.MyWizardHandler"
            id="com.sowas.javawiki.rcpbaseapplication.wizard.Wizard"
            name="Start Wizard">
      </command>
   </extension>
 
</plugin>


Nun kann man den noch leeren Wizard bereits starten.


Um den Finish-Button in einem Wizard zu enablen, muss die Methode isPageComplete() true zurückliefern. Soll der Button bei geöffnetem Wizard enabled/disabled werden, so muss updateButtons() aufgerufen werden. (Dies resultiert dann in einem Aufruf von isPageComplete()).

private boolean m_isPageComplete = false;
 
/** Diese Methode enabled den Finish-Button **/
private void myMethod(){
   m_isPageComplete = true;  // Das Flag, welches enabled/disabled
   getWizard().getContainer().updateButtons();
}
 
/** Liefert zurück, ob der Finish-Button enabled werden kann **/
@Override
public boolean isPageComplete() {
   return m_isPageComplete;
}



Eigene Werkzeuge
Werkzeuge

gratis Counter by GOWEB
seit 9.10.2007