RCP HandlerService und Parameter

G

Gast2

Gast
Hallo zusammen,

ich hab ein command und möchte gern in diesem Command einen anderen Command programmatisch ausführen. Jetzt möchte diesem Command gern einen eigenen von mir definierten Parameter übergeben. Da der andere Command einen Dialog öffnet einmal mit leerem Inhalt und einmal vorgefüllt mit einem Objekt dass in der Tabelle ausgewählt ist.

D.h wenn man in der Toolbar den command ausführt wird ein neuer Datensatz angelegt und wenn man in der Tabelle einen doppelklick (2.ter command) macht kann der aktuelle datensatz bearbeitet.

Der Open Command
Java:
public class OpenMyDialog extends AbstractHandler {

	@Override
	public Object execute(ExecutionEvent event) throws ExecutionException {
                //Hier würde ich gern noch ein Parameter auswerten wenn der gesetzt ist wird dem Dialog noch ein Objekt übergeben.

		MyDialog dialog = new MyDialog (HandlerUtil.getActiveShell(event));
		dialog.open();
		if(dialog.getReturnCode() == Dialog.OK){

		}

		return null;
	}

}


Java:
public class ShowSelected extends AbstractHandler {

	@Override
	public Object execute(ExecutionEvent event) throws ExecutionException {
		ISelection selection = HandlerUtil.getActiveWorkbenchWindow(event)
				.getActivePage().getSelection();
		if (selection != null & selection instanceof IStructuredSelection) {
			IStructuredSelection strucSelection = (IStructuredSelection) selection;
			MyObejct o = (MyObejct ) strucSelection.getFirstElement();
		
			IHandlerService handlerService = (IHandlerService)HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().getActivePart().getSite().getService(IHandlerService.class);
			try {
                                // wie kann ich dem command jetzt MyObject übergeben???
				handlerService.executeCommand("add.command", null);
			} catch (Exception ex) {
				throw new RuntimeException("add.command");
			}
		}
		return null;
	}

}
 

Koringar

Bekanntes Mitglied
Java:
public class ShowSelected extends AbstractHandler {

	@Override
	public Object execute(ExecutionEvent event) throws ExecutionException {
		ISelection selection = HandlerUtil.getActiveWorkbenchWindow(event)
				.getActivePage().getSelection();
		if (selection != null & selection instanceof IStructuredSelection) {
			IStructuredSelection strucSelection = (IStructuredSelection) selection;
			MyObejct o = (MyObejct ) strucSelection.getFirstElement();
		
			IHandlerService handlerService = (IHandlerService)HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().getActivePart().getSite().getService(IHandlerService.class);
			try {
                                // wie kann ich dem command jetzt MyObject übergeben???
				handlerService.executeCommand("add.command", null);
			} catch (Exception ex) {
				throw new RuntimeException("add.command");
			}
		}
		return null;
	}

}

Probier mal dem Command ein ExecutionEvent mitzugeben, auf dem kannst dann deine Parameter setzen als Map.

Java:
Map<String, Object> map = new HashMap<String, Object>();
map.put("key.des.parameter", deinParameterObject);

ExecutionEvent event = new ExecutionEvent("add.command", pParameters, null, null);
 

Koringar

Bekanntes Mitglied
Sehe gerade selber, dass das mit dem HandlerService nicht geht. Du musst dafür den CommandService verwenden:
[Java]
ICommandService commandService = (ICommandService) PlatformUI.getWorkbench().getService(ICommandService.class);
try {
Map<String, Object> parameters= new HashMap<String, Object>();
parameters.put("key.des.parameter", deinParameterObject);

Command command = commandService.getCommand("DeinCommand");
ExecutionEvent event = new ExecutionEvent(command, parameters, null, null);
command.executeWithChecks(event);
} catch (Exception e) {
logger.error("Kann Commando '" + pCommand + "' nicht ordnungsgemäß ausführen", e);
}
[/Java]
 
Zuletzt bearbeitet:
G

Gast2

Gast
Ah den Command Service kenn ich gar net versuch ich mal.

Dein pParameters müsste die Map normal sein...

EDIT: Klappt wunderbar =)
 
Zuletzt bearbeitet von einem Moderator:

Ähnliche Java Themen

Neue Themen


Oben