我已经制作了一个RCP应用程序,默认情况下在系统启动时启动。它有一个登录对话框,可在创建工作台之前对用户进行身份验证。
我的应用程序默认在系统托盘中启动。下面是代码(我只发布了相关代码)。
Application.java
public Object start(IApplicationContext context) {
Display display = PlatformUI.createDisplay();
minimizeToTray(display,context);
}
private void minimizeToTray(Display display,IApplicationContext context){
Shell displayShell = new Shell(display);
URL imageURL = Platform.getProduct().getDefiningBundle().getEntry(Platform.getProduct().getProperty("trayIcon"));
Image image = ImageDescriptor.createFromURL(imageURL).createImage();
//Create Tray and add listener for double click
trayItem.addSelectionListener(new SelectionAdapter() {
public void widgetDefaultSelected(SelectionEvent e) {
image.dispose();
item.dispose();
startLogin(); //Call login dialog and create workbench after authentication
displayShell.dispose();
}
});
//Close current splash screen.
context.applicationRunning();
//Do-event loop
while(!displayShell.isDisposed()){
if(!display.readAndDispatch()){
display.sleep();
}
}
}
应用程序启动时,会显示启动画面。将应用程序添加到系统托盘后,我使用context.applicationRunning();
关闭启动画面并等待用户双击托盘图标。
用户双击图标后,我想再次显示启动画面。