Java - Eclipse-RCP

Java - Eclipse-RCP - Wizards

Basis of this example is the example-application.



The (empty) 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() {
      // here, the WizardPages can be added (see further down)
   }
 
   public Object getResult() {
      return null;  // should deliver back the in the Wizard generated data
   }
}



The handler which goes with it:

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;  // Has to be true, or else there is an exception
   }
 
   @Override
   public void removeHandlerListener(IHandlerListener handlerListener){
   }
}



and the conformist 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>


Now, you can start the still empty Wizard.


To enable the Finish-Button in a Wizard, the method has to deliver back isPageComplete() true. Shall the Button be enabled/disabled during an opened Wizard, so the updateButtons() have to be called up. (This results in a call from isPageComplete()).

private boolean m_isPageComplete = false;
 
/** This method enabled the Finish-Button **/
private void myMethod(){
   m_isPageComplete = true;  //  TheFlag, which enabled/disabled
   getWizard().getContainer().updateButtons();
}
 
/** Delivers back, if the Finish-Button can be enabled **/
@Override
public boolean isPageComplete() {
   return m_isPageComplete;
}



Eigene Werkzeuge
Werkzeuge

gratis Counter by GOWEB
seit 9.10.2007