SWT - Problem durch Konflikt zwischen 2 Auslösern einunddesselben Events

Tinobee

Mitglied
hallo leute,

kaum ist das eine thema erledigt, kommt schon direkt das nächste ^^. hoffe, das ist kein problem. also ich hab meinem gui neben der standard menüleiste auch eine toolbar spendiert. jetzt will ich folgendes problem geschickt lösen. wenn ich aus dem menü > File > Neu eine neue datei anlege, ist das ok. dazu wird in die shell ein composite geladen, in dem alles gewüschte drin ist. wenn ich jetzt auf das "Neu" icon der toolbar wird geprüft, ob schon eine neue datei erstellt wurde und wenn ja, geht eine messagebox auf und fragt, ob vor dem schließen gespeichert werden soll. das habe ich so gelöst:
PHP:
ToolItem newProject = new ToolItem(toolBar, SWT.PUSH);
		newProject.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(final SelectionEvent sev) {
				MessageBox messageBox = new MessageBox(shell, SWT.YES | SWT.NO);
				messageBox.setMessage("Save current Project before closing?");
				int response = messageBox.open();
				if (response == SWT.YES){
					FileDialog fd = new FileDialog(shell, SWT.SAVE);
					fd.setText("Save");
					fd.setFilterPath("C:/");
					String[] filterExt = { "*.*" };
					fd.setFilterExtensions(filterExt);
					String selected = fd.open();
					System.out.println(selected);
					guiComposite.dispose();
					guiComposite = new GUIComposite(shell, SWT.NONE);
					guiComposite.setSize(600,800);
					guiComposite.setVisible(true);
				}
			}
		});
		newProject.setToolTipText("open a document from a folder");
Problem:

wenn ich jetzt nach dem start der anwendung statt über das menü direkt über das toolbar-icon eine neue datei erstelle, bekomme ich den dialog. außerdem kann ich nicht über die menüleiste > Neu prüfen, ob schon ein projekt erstellt wurde.
PHP:
		final MenuItem newProjectMenuItem = new MenuItem(menu_1, SWT.NONE);
		newProjectMenuItem.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(final SelectionEvent sev) {
//				prüfen, ob über das Toolbar-Icon schon ein Projekt erstellt wurde
//				wenn ja, fragen, ob speichern vorm Schließen
//				siehe Toolbar Event
//				geht nur leider nicht beides - es braucht eine Prüfung, ob schon ein P. existiert
//				aber wie prüfen?
//				guiComposite.dispose();	
				guiComposite = new GUIComposite(shell, SWT.NONE);
				guiComposite.setLayoutData(fd_guiComposite);
				guiComposite.setLayout(new FormLayout());
				guiComposite.setSize(800,600);
				guiComposite.setVisible(true);
			}
		});
		newProjectMenuItem.setAccelerator(SWT.CTRL | 'N');
		newProjectMenuItem.setText("&New\tCTRL+N");

wie kann ich die existens eines composites in meiner shell prüfen und meine events entsprechend abhängig machen?

gruß, tinobee
 
Zuletzt bearbeitet:
Zurück