2 x "Next" im Plugin

Status
Nicht offen für weitere Antworten.
K

Kel

Gast
Hallo zusammen

habe ein plugin geschrieben über welches man einen wizard aufrufen kann, der neue Dateien anlegt.

Die Extension ist quasi bei "File->New->Other->Kategorie-Ordner->Wizard"
findet er auch alles und ist auch an der richtigen Position. Aus irgendeinem grund, muss man aber 2 mal den "next" button drücken und ich komm nicht dahinter wieso.

Hab eben nochmal testweise mit dem Pluginwizard einen "Create-File" wizard erstellt und dort ist es genau das gleiche.

Verwende eclipse 3.2

Hat jemand eine Idee, woran das liegen könnte?

Vielen dank im Voraus und Grüße
 

Ralf W. Balz

Mitglied
Hallo,

poste doch mal den Java-Code (kurz und lauffähig), vielleicht kann ja jemand was dazu sagen, vielleicht auch ich. Interessieren tut es mich auf jeden Fall, auch wenn ich dort nicht ad hoc was dazu sagen kann.

Gruß Ralf
 
K

Kel

Gast
Hi Ralf, erstmal danke für die Antwort. Hier ist der Code zum Wizard:
Code:
package de.dwpbank.eclipse.usecase.wizards;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.InvocationTargetException;

import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Status;
import org.eclipse.jdt.core.IPackageFragment;
import org.eclipse.jdt.core.IPackageFragmentRoot;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.ui.INewWizard;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchWizard;

/**
 * This is a sample new wizard. Its role is to create a new file 
 * resource in the provided container. If the container resource
 * (a folder or a project) is selected in the workspace 
 * when the wizard is opened, it will accept it as the target
 * container. The wizard creates one file with the extension
 * "jar". If a sample multi-page editor (also available
 * as a template) is registered for the same extension, it will
 * be able to open it.
 */

public class NewUsecaseWizard extends Wizard implements INewWizard {
	private NewUsecaseWizardPage page;
	private ISelection selection;
	/**
	 * Constructor for NewWizard.
	 */
	public NewUsecaseWizard() {
		super();
		setNeedsProgressMonitor(true);
	}
	
	/**
	 * Adding the page to the wizard.
	 */

	public void addPages() {
		page = new NewUsecaseWizardPage(selection);
		addPage(page);
		page.createControl(null);
	}

	/**
	 * This method is called when 'Finish' button is pressed in
	 * the wizard. We will create an operation and run it
	 * using wizard as execution context.
	 */
	public boolean performFinish() {
		final String sourceFolder = page.getSourceFolder();
		final String usecaseName = page.getUsecaseName();
		final String packageName = page.getPackageName();
		final IPackageFragmentRoot proot = page.getPackageFragmentRoot();
		IRunnableWithProgress op = new IRunnableWithProgress() {
			public void run(IProgressMonitor monitor) throws InvocationTargetException {
				try {
					doFinish(sourceFolder, usecaseName, packageName, proot, monitor);
				} catch (CoreException e) {
					throw new InvocationTargetException(e);
				} catch (Throwable t){
					t.printStackTrace();
				}
				finally {
					monitor.done();
				}
			}
		};
		try {
			getContainer().run(true, false, op);
		} catch (InterruptedException e) {
			return false;
		} catch (InvocationTargetException e) {
			Throwable realException = e.getTargetException();
			MessageDialog.openError(getShell(), "Error", realException.getMessage());
			return false;
		}
		return true;
	}
	
	/**
	 * The worker method. It will find the container, create the
	 * file if missing or just replace its contents, and open
	 * the editor on the newly created file.
	 */

	private void doFinish(
		String sourceFolder,
		String usecaseName,
		String packageName,
		IPackageFragmentRoot proot,
		IProgressMonitor monitor)
		throws CoreException {
		//variablen
		IPackageFragment packageFragment = null;
		// get Project information
		IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
		IResource res = root.findMember(new Path(sourceFolder));
		if (!(proot.isOpen())){
			proot.open(monitor);
		}
		// create UsecasePackage
		System.out.println("------Creating Packages-------");
		String packName= packageName + "." + usecaseName;
		packageFragment = createPackage(proot, packName, monitor);
		// create bom Package
		packName=  packageName + "." + usecaseName + ".bom";
		createPackage(proot, packName, monitor);
        // create Pages Package
		packName =  packageName + "." + usecaseName + ".pages";
		createPackage(proot, packName, monitor);
		// create Process Package
		packName =  packageName + "." + usecaseName + ".process";
		createPackage(proot, packName, monitor);		
		// create dakarconf file
		monitor.beginTask("Creating dakarconf", 2);
		if (!res.exists() || !(res instanceof IContainer)) {
			throwCoreException("Container \"" + sourceFolder + "\" does not exist.");
		}
		final IFile file = root.getFileForLocation(new Path(root.getLocation().toString() + packageFragment.getPath()  + "/usecase.dakarconf"));
		try {
			InputStream stream = openContentStream(usecaseName);
			if (file.exists()) {
				file.setContents(stream, true, true, monitor);
			} else {
			file.create(stream, true, monitor);
			}
			stream.close();
		} catch (IOException e) {
		}
		monitor.worked(1);
	}
	
	/**
	 * We will initialize file contents with a sample text.
	 */

	private InputStream openContentStream(String usecaseName) {
		String contents =
			//TODO Inhalt der DakarConf einfügen
			"<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n" +
			"<Usecases xmlns:xsi=\"\" xsi:noNamespaceSchemaLocation=\"\"> \n" +
			"\t <Usecase name=\"" + usecaseName + "\"> \n" +
			"\t </Usecase> \n" +
			"</Usecases>";
		
		return new ByteArrayInputStream(contents.getBytes());
	}

	private void throwCoreException(String message) throws CoreException {
		IStatus status =
			new Status(IStatus.ERROR, "de.dwpbank.eclipse.usecase", IStatus.OK, message, null);
		throw new CoreException(status);
	}

	/**
	 * We will accept the selection in the workbench to see if
	 * we can initialize from it.
	 * @see IWorkbenchWizard#init(IWorkbench, IStructuredSelection)
	 */
	public void init(IWorkbench workbench, IStructuredSelection selection) {
		this.selection = selection;
		
	}
	
	private IPackageFragment createPackage(IPackageFragmentRoot parameterRoot, String parameterPackageName, IProgressMonitor m) throws CoreException{
		IPackageFragment packageFragment = null;
		try {
			m.beginTask("Creating " + parameterPackageName + " Package", 1);
			packageFragment = parameterRoot.createPackageFragment(parameterPackageName, true, m);
			m.worked(1);
		} catch (JavaModelException e){
			throwCoreException(e);
		}
		return packageFragment;
	}

	private void throwCoreException(Exception e) throws CoreException {
		IStatus status =
			new Status(IStatus.ERROR, "de.dwpbank.eclipse.usecase", IStatus.OK, e.getMessage(), e);
		throw new CoreException(status);		
	}
}

ansonsten gäbe es noch den activator (vom Eclipse-Wizard erstellt ) und die Wizzard-Page. Brauchst du davon noch was?
 
K

Kel

Gast
aah!

habe eben beim durchschauen folgendes gefunden:
Code:
   public void addPages() {
      page = new NewUsecaseWizardPage(selection);
      addPage(page);
      page.createControl(null);
   }

und das
Code:
      page.createControl(null);

mal auskommentiert. Jetzt muss ich den Button nur einmal drücken.
 

Ralf W. Balz

Mitglied
Hallo,

die Kunst, gute fragen zu stellen, besteheht darin, dass Problem soweit zu minimieren, so das man selber auf die Lösung kommt.

Danke für den Code, werde ihn mir mal anschauen!

Gruß Ralf
 
K

Kel

Gast
Ralf W. Balz hat gesagt.:
die Kunst, gute fragen zu stellen, besteheht darin, dass Problem soweit zu minimieren, so das man selber auf die Lösung kommt.

da hast du absolut recht! Leider fällt mir gerade bei Java auf, dass man gewisse Probleme nur extrem schwer minimieren kann, da man nur sehr schwer abschätzen kann, woher der Fehler kommt.

Danke für die Hilfe :)
 

Wildcard

Top Contributor
Wenn du nicht irgendwo Exceptions verschluckst und sich dein Code an übliche SWT Vorgehensweisen hält, dann wirft diese Zeile einen NullPointer:
Code:
page.createControl(null);
Ich finde das Problem lässt sich also durchaus eingrenzen.
 
K

Kel

Gast
ja, stimmt.

ich denke auch, dass wenn man tiefer in der Materie ist, als ich im Moment, weiß man auch einfach, wo man zu suchen hat. Mir fällt das im Moment noch sehr schwer, aber dafür gibts ja Anfängerforen, so wie hier (gott sei dank :) )

Gruß
Kel

ps: der Haken kann dann auch gesetzt werden (als unregistrierte geht das scheinbar nicht)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D next() Methode mehrfach verwenden Java Basics - Anfänger-Themen 1
G while.next() Verständnisfrage Java Basics - Anfänger-Themen 16
M Liste Implementation, doppelt next() Java Basics - Anfänger-Themen 13
B OOP next cannot be resolved or is not a field Java Basics - Anfänger-Themen 6
gstarplayer [Verständnisprobleme] Java next(),nextLine,nextInt und parseInt! Java Basics - Anfänger-Themen 22
S Iterator next() Nullpointer Java Basics - Anfänger-Themen 2
G Erklärung .next Java Basics - Anfänger-Themen 4
L Next()-Aufruf zweimal innerhalb einer While-Schleife bei ListIterator Java Basics - Anfänger-Themen 10
C Methoden Verkettete listen - next methode Java Basics - Anfänger-Themen 3
M Frage zu ResultSet.next() Java Basics - Anfänger-Themen 7
N Scanner next() oder nextLine() zur prüfung auf leere Eingabe... Java Basics - Anfänger-Themen 6
A next in einer Schleife Java Basics - Anfänger-Themen 2
K next() und getFirst() Methode in LinkedList Java Basics - Anfänger-Themen 6
M previous und next einbauen Java Basics - Anfänger-Themen 53
D On Error Resume Next Java Basics - Anfänger-Themen 16
Q Iterator next erstellen Java Basics - Anfänger-Themen 4
G String mit next()-Methode einlesen - keine Leerzeichen! Java Basics - Anfänger-Themen 11
J int temp = (int) it.next(); -> inconvertible types? Waru Java Basics - Anfänger-Themen 3
S Wie arbeitet iter.next() Java Basics - Anfänger-Themen 3
Oneixee5 Maven Plugin wird 2 mal ausgeführt Java Basics - Anfänger-Themen 10
U Spigot-Plugin Java Basics - Anfänger-Themen 0
R Mein Plugin funktioniert nicht? Java Basics - Anfänger-Themen 10
sensus Jigloo Plugin Sicherheitswarnung Java Basics - Anfänger-Themen 0
C JOptionPane tritt manchmal bei Plugin in den Hintergrund Java Basics - Anfänger-Themen 2
P Wie Java-Plugin in Firefox (nachträglich) installieren? Java Basics - Anfänger-Themen 2
elischa Eclipse Plugin Projekt, Maven Projekt und dependencies Java Basics - Anfänger-Themen 5
C Fragen zum Spigot Plugin (1.8) Java Basics - Anfänger-Themen 6
TheFischPlayz Erste Schritte Plugin Wird Nicht angezeigt ? Java Basics - Anfänger-Themen 4
P Wie Java-Plugin in Browser installieren OHNE volles Java ausserhalb? *.jnlp not startable Java Basics - Anfänger-Themen 1
M Frage zu Maven Plugin für Eclipse IDE Java Basics - Anfänger-Themen 1
M Frage zum Confilctauflösen in SVN (Eclipse Plugin) Java Basics - Anfänger-Themen 3
B Java Plugin im Firefox abschalten Java Basics - Anfänger-Themen 3
L Java Bukkit Plugin + config.yml Java Basics - Anfänger-Themen 5
C [Bukkit Plugin] Blöcke eine bestimmte route entlang fliegen Java Basics - Anfänger-Themen 3
L Bukkit Plugin Scanner Java Basics - Anfänger-Themen 2
M Java Bukkit Plugin (selbst erstellt) Java Basics - Anfänger-Themen 9
A Erstellung eines einfachen Plugin HILFE ! Java Basics - Anfänger-Themen 19
M PlugIn System - GUI Java Basics - Anfänger-Themen 8
C Netbeans will Plugin mangelns JDK nicht installieren ? Java Basics - Anfänger-Themen 2
sc0p Plugin VE/JEdit etc. starten Java Basics - Anfänger-Themen 3
A langsames Java-Browser-Plugin für knuddels.de Java Basics - Anfänger-Themen 8
S Kennt jemand die Default-Cache Zeit beim Java-Plugin? Java Basics - Anfänger-Themen 2
T Plugin-Dependencies bearbeiten Java Basics - Anfänger-Themen 15
K Entwicklungsumgebung Eclipse und Visual Editor Plugin Java Basics - Anfänger-Themen 5
R Velocity Plugin installieren Java Basics - Anfänger-Themen 6
P mp3-PlugIn installieren Java Basics - Anfänger-Themen 2
S Wie programmiert man ein Plugin-System in Java? Java Basics - Anfänger-Themen 4
K Eclipse - Sysdeo Plugin - Tomcat Server Java Basics - Anfänger-Themen 2
D Apache.Xerces unter Eclispe? import/plugin/package? Java Basics - Anfänger-Themen 2
G Plugin in Eclipse einbinden Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben