Alternativer Start einer RCP-Anwendung per Taste möglich

Zoerre

Grünschnabel
Hi,

hab da ein kleines Problem und zwar möchte ich meine RCP-Anwendung über eine
Taste die ich während des Startes drücke "alternativ" starten.

Bsp.:

Wenn ich die Anwendung per Doppelklick starte, startet die angesprochene
Anwendung normal. Öffne ich sie jedoch mit gedrückter Umschalttaste, so soll sie
normal Starten und direkt den Dialog zum öffnen einer Datei anezigen.



Ist es daher möglich irgendwie festzustellen ob während des Öffnens eine Taste
gedrückt wurde, da es sehr unwarscheinlich ist dass der Anwender währen des
kompletten Startes die Taste durchgehend gedrückt hält.



Würde mich sehr über Hilfestellungen jeglicher Art freuen.



Dankö im Vorraus :D
 
Hallo,

dafür gibts leider noch keine offizielle Unterstützung.

Hier mal ein Weg für Windows:
Java:
package mail;

import org.eclipse.equinox.app.IApplication;
import org.eclipse.equinox.app.IApplicationContext;
import org.eclipse.swt.SWT;
import org.eclipse.swt.internal.win32.OS;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.PlatformUI;

/**
 * This class controls all aspects of the application's execution
 */
public class Application implements IApplication {

	/* (non-Javadoc)
	 * @see org.eclipse.equinox.app.IApplication#start(org.eclipse.equinox.app.IApplicationContext)
	 */
	public Object start(IApplicationContext context) {
		Display display = PlatformUI.createDisplay();
		
		if(OS.GetKeyState(OS.VK_SHIFT) != 0){
			System.out.println("Shift Down");
		}
		
		try {
			int returnCode = PlatformUI.createAndRunWorkbench(display, new ApplicationWorkbenchAdvisor());
			if (returnCode == PlatformUI.RETURN_RESTART) {
				return IApplication.EXIT_RESTART;
			}
			return IApplication.EXIT_OK;
		} finally {
			display.dispose();
		}
	}

	/* (non-Javadoc)
	 * @see org.eclipse.equinox.app.IApplication#stop()
	 */
	public void stop() {
		final IWorkbench workbench = PlatformUI.getWorkbench();
		if (workbench == null)
			return;
		final Display display = workbench.getDisplay();
		display.syncExec(new Runnable() {
			public void run() {
				if (!display.isDisposed())
					workbench.close();
			}
		});
	}
}

Gruß Tom
 
Danke für die schnell und gute Antwort... War so ziemlich genau das was ich gesucht hatte.

P.s. wollte mich mal noch bei dir bedanken für deine vielen und vorallem guten Beiträge hier im Forum, die haben mir schon das eine oder andere mal weitergeholfen.



Grüße Zoerre
 

Neue Beiträge

Zurück