]> git.argeo.org Git - gpl/argeo-slc.git/blob - eclipse/plugins/org.argeo.slc.client.rcp/src/main/java/org/argeo/slc/client/rcp/ApplicationWorkbenchWindowAdvisor.java
Add support for combo box in editing parameters.
[gpl/argeo-slc.git] / eclipse / plugins / org.argeo.slc.client.rcp / src / main / java / org / argeo / slc / client / rcp / ApplicationWorkbenchWindowAdvisor.java
1 package org.argeo.slc.client.rcp;
2
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;
18
19 /**
20 * Set here initial default size of the UI
21 *
22 * @author bsinou
23 *
24 */
25 public class ApplicationWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor {
26
27 private TrayItem trayItem;
28
29 public ApplicationWorkbenchWindowAdvisor(
30 IWorkbenchWindowConfigurer configurer) {
31 super(configurer);
32 }
33
34 public ActionBarAdvisor createActionBarAdvisor(
35 IActionBarConfigurer configurer) {
36 return new ApplicationActionBarAdvisor(configurer);
37 }
38
39 public void preWindowOpen() {
40 IWorkbenchWindowConfigurer configurer = getWindowConfigurer();
41
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);
48
49 }
50
51 public void postWindowOpen() {
52 initTray();
53 }
54
55 @Override
56 public boolean preWindowShellClose() {
57 // hide but do not dispose if tray is supported
58 if (trayItem != null) {
59 getWindowConfigurer().getWindow().getShell().setVisible(false);
60 return false;
61 } else
62 return true;
63 }
64
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);
70 if (trayItem == null)
71 return;
72
73 // image
74 Image trayImage = ClientRcpPlugin.getDefault().getImageRegistry()
75 .get("argeoTrayIcon");
76 trayItem.setImage(trayImage);
77 trayItem.setToolTipText("Argeo SLC");
78
79 // add pop-menu
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);
86 exit.setText("Exit");
87 exit.addListener(SWT.Selection, new Listener() {
88 public void handleEvent(Event event) {
89 getWindowConfigurer().getWorkbenchConfigurer()
90 .getWorkbench().close();
91 }
92 });
93 menu.setVisible(true);
94 }
95 });
96
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);
104 else {
105 shell.setVisible(false);
106 shell.setMinimized(true);
107 }
108 } else {
109 shell.setVisible(true);
110 shell.setActive();
111 shell.setFocus();
112 shell.setMinimized(false);
113 }
114 }
115 });
116 }
117
118 @Override
119 public void dispose() {
120 if (trayItem != null)
121 trayItem.dispose();
122 }
123
124 }