Unterschiede

Hier werden die Unterschiede zwischen der gewählten und der aktuellen Version gezeigt.

eclipse-rcp:wizard 2007/12/12 14:12 eclipse-rcp:wizard 2020/01/22 20:59 aktuell
Zeile 1: Zeile 1:
-====== Wizards ======+[[eclipse-rcp|Java - Eclipse-RCP]]\\ 
 +====== Java - Eclipse-RCP - Wizards ====== 
 +Basis dieses Beispiels ist wieder die [[source-example-application|Beispiel-Applikation]].\\ 
 +\\ 
 +<html> 
 +  <script type="text/javascript"><!-- 
 +      google_ad_client="pub-9681858985507948"; 
 +      google_ad_width = 468; 
 +      google_ad_height = 60; 
 +      google_ad_format = "468x60_as"; 
 +      google_ad_type = "text"; 
 +      google_ad_channel = ""; 
 +      google_color_border = "cccccc"; 
 +      google_color_bg = "FFFFFF"; 
 +      google_color_link = "1d2d8c"; 
 +      google_color_text = "000000"; 
 +      google_color_url = "1d2d8c"; 
 +      //--> 
 +  </script> 
 +  <script type="text/javascript" 
 +      src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> 
 +  </script> 
 +</html> 
 +\\ 
 +\\ 
 +Der (leere) Wizard:\\ 
 +<code java> 
 +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  
 +  } 
 +
 +</code>\\ 
 +\\ 
 +Der dazugehörige Handler:\\ 
 +<code java> 
 +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){ 
 +  } 
 +
 +</code>\\ 
 +\\ 
 +und die angepasste plugin.xml: 
 +<code 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> 
 +</code>\\ 
 +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. 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()).+Soll der Button bei geöffnetem Wizard enabled/disabled werden, so muss updateButtons() aufgerufen werden. (Dies resultiert dann in einem Aufruf von isPageComplete()).\\
<code java> <code java>
private boolean m_isPageComplete = false; private boolean m_isPageComplete = false;
-void myMethod(){ +/** Diese Methode enabled den Finish-Button **/ 
-  m_isPageComplete = true;+private void myMethod(){ 
 +  m_isPageComplete = true; // Das Flag, welches enabled/disabled
  getWizard().getContainer().updateButtons();   getWizard().getContainer().updateButtons();
} }
 +/** Liefert zurück, ob der Finish-Button enabled werden kann **/
@Override @Override
public boolean isPageComplete() { public boolean isPageComplete() {
  return m_isPageComplete;   return m_isPageComplete;
} }
-</code>+</code>\\

Eigene Werkzeuge
Werkzeuge

gratis Counter by GOWEB
seit 9.10.2007