1 package org
.argeo
.slc
.client
.rcp
;
3 import org
.eclipse
.swt
.SWT
;
4 import org
.eclipse
.swt
.graphics
.Image
;
5 import org
.eclipse
.swt
.graphics
.Point
;
6 import org
.eclipse
.swt
.widgets
.Event
;
7 import org
.eclipse
.swt
.widgets
.Listener
;
8 import org
.eclipse
.swt
.widgets
.Menu
;
9 import org
.eclipse
.swt
.widgets
.MenuItem
;
10 import org
.eclipse
.swt
.widgets
.Shell
;
11 import org
.eclipse
.swt
.widgets
.Tray
;
12 import org
.eclipse
.swt
.widgets
.TrayItem
;
13 import org
.eclipse
.ui
.IWorkbenchWindow
;
14 import org
.eclipse
.ui
.application
.ActionBarAdvisor
;
15 import org
.eclipse
.ui
.application
.IActionBarConfigurer
;
16 import org
.eclipse
.ui
.application
.IWorkbenchWindowConfigurer
;
17 import org
.eclipse
.ui
.application
.WorkbenchWindowAdvisor
;
20 * Set here initial default size of the UI
25 public class ApplicationWorkbenchWindowAdvisor
extends WorkbenchWindowAdvisor
{
27 private TrayItem trayItem
;
29 public ApplicationWorkbenchWindowAdvisor(
30 IWorkbenchWindowConfigurer configurer
) {
34 public ActionBarAdvisor
createActionBarAdvisor(
35 IActionBarConfigurer configurer
) {
36 return new ApplicationActionBarAdvisor(configurer
);
39 public void preWindowOpen() {
40 IWorkbenchWindowConfigurer configurer
= getWindowConfigurer();
42 configurer
.getWorkbenchConfigurer().restoreState();
43 // set default window size
44 configurer
.setInitialSize(new Point(1200, 900));
45 configurer
.setShowCoolBar(false);
46 configurer
.setShowStatusLine(true);
47 configurer
.setShowPerspectiveBar(true);
51 public void postWindowOpen() {
56 public boolean preWindowShellClose() {
57 // hide but do not dispose if tray is supported
58 if (trayItem
!= null) {
59 getWindowConfigurer().getWindow().getShell().setVisible(false);
65 /** Init tray support */
66 protected void initTray() {
67 IWorkbenchWindow window
= getWindowConfigurer().getWindow();
68 final Tray tray
= window
.getShell().getDisplay().getSystemTray();
69 trayItem
= new TrayItem(tray
, SWT
.NONE
);
74 Image trayImage
= ClientRcpPlugin
.getDefault().getImageRegistry()
75 .get("argeoTrayIcon");
76 trayItem
.setImage(trayImage
);
77 trayItem
.setToolTipText("Argeo SLC");
80 // TODO: contribute more commands
81 trayItem
.addListener(SWT
.MenuDetect
, new Listener() {
82 public void handleEvent(Event event
) {
83 IWorkbenchWindow window
= getWindowConfigurer().getWindow();
84 Menu menu
= new Menu(window
.getShell(), SWT
.POP_UP
);
85 MenuItem exit
= new MenuItem(menu
, SWT
.NONE
);
87 exit
.addListener(SWT
.Selection
, new Listener() {
88 public void handleEvent(Event event
) {
89 getWindowConfigurer().getWorkbenchConfigurer()
90 .getWorkbench().close();
93 menu
.setVisible(true);
97 // add behavior when clicked upon
98 trayItem
.addListener(SWT
.Selection
, new Listener() {
99 public void handleEvent(Event event
) {
100 Shell shell
= getWindowConfigurer().getWindow().getShell();
101 if (shell
.isVisible()) {
102 if (shell
.getMinimized())
103 shell
.setMinimized(false);
105 shell
.setVisible(false);
106 shell
.setMinimized(true);
109 shell
.setVisible(true);
112 shell
.setMinimized(false);
119 public void dispose() {
120 if (trayItem
!= null)