Fenster Fehlermeldung Ecplipse RCP

konbs

Mitglied
Hey!

ich schreibe gerade ein Eclipse RCP Plugin und erweitere den ImportWizart. Der Benutzer kann einige XML Dateien auswählen und Importprozess auslösen. Hier können unterschiedliche Fehler auftreten, die ich gerne dem Benutzer anzeigen würde.

Mein ersten Ansatz, das direkte Anzeigen der Fehlermeldung ohne separaten Thread. Leider war im Hintergrund immer noch das Job-Fenster zu sehen. Der aktuelle Ablauf (mit Thread siehe unten) ist super, leider ist Fenster nicht an Eclipse gebunden. Ich hätte es gerne, dass der Benutzer erst die Meldung bestätigen muss, bevor es weiter gehen kann.

Java:
@Override
	public boolean performFinish() {
		final String path = this.one.getPath();

		final Job job = new Job("Import XML Files in: " + path) {
			@Override
			protected IStatus run(IProgressMonitor monitor) {
				final List<String> errorMessage = ImportXml.perform(path);
				new Thread() {
					public void run() {
						Shell shell = new Shell(display);
						MessageBox messageBox = new MessageBox(shell,
								SWT.ICON_WARNING | SWT.OK);
						messageBox.setText("Warning");
						StringBuilder sb = new StringBuilder();
						for (String string : errorMessage) {
							sb.append("- ").append(string).append("\n");
						}
						messageBox.setMessage(sb.toString());
						int buttonID = messageBox.open();
					}

				}.start();
				return Status.OK_STATUS;
			}
		};

		job.setUser(true);
		job.schedule();
		return true;
	}
 
M

maki

Gast
Mehrere Modale Messageboxen haben den Effekt, dass der User irgendwann nur noch auf OK klickt ohne zu lesen worum eigentlich geht...

Würde es denn reichen die Fehlermeldungen im Standard Eclipse Log View anzuzeigen?
 

konbs

Mitglied
Ohne Thread blockiert das Fenster mit den Fehlermeldung das Job-Fenstern. So habe ich Eclipse -> Job Fenster -> Fehlermeldungsfenster (als Ebenen betrachtet)

Ich stelle mir den Ablauf so vor:

- Job Fenster aktiv ...
- Fehler beim importieren des Import tritt auf -> Job Fenster wird geschlossen
- Fenster mit der Fehlermeldung wird geöffnet (modular)

Danke.

kon
 

Wildcard

Top Contributor
Der Wizard Container kann selbst background Tasks ausführen und bring bereits alles mit um den Benutzer über Fehler zu informieren.
Hab die Methodennamen gerade nicht im Kopf, aber in etwa:
Java:
setNeedsProgressBar(true) // beim initialisieren des Wizards
getWizardContainer().run(new RunnableWithProgress...
setError
setMessage
 

konbs

Mitglied
Hey Wildcard,

danke für die Antwort. Bei meinem ImportWizard habe ich nur ein Page, somit führe ich den Import in der performFinish() Methode des Wurzel-ImportWizard aus. Anschließend wird das Fenster sofort geschlossen und Fehlermeldungen bekommt der Benutzer nicht mit.

Eine Idee wäre es, ein weiter Page einzubauen und den Import durch Page1 ausführen zu lassen. Oder gibt es evlt. eine andere Lösung? Danke.

Viele Grüße,

Kon
 
Zuletzt bearbeitet:

Ähnliche Java Themen


Oben