]> git.argeo.org Git - gpl/argeo-slc.git/blob - eclipse/plugins/org.argeo.slc.client.rcp/src/main/java/org/argeo/slc/client/rcp/SlcSecureWorkbenchWindowAdvisor.java
JCR UI can run processes
[gpl/argeo-slc.git] / eclipse / plugins / org.argeo.slc.client.rcp / src / main / java / org / argeo / slc / client / rcp / SlcSecureWorkbenchWindowAdvisor.java
1 package org.argeo.slc.client.rcp;
2
3 import org.argeo.security.ui.rcp.SecureWorkbenchWindowAdvisor;
4 import org.eclipse.swt.SWT;
5 import org.eclipse.swt.dnd.DropTargetAdapter;
6 import org.eclipse.swt.dnd.DropTargetEvent;
7 import org.eclipse.swt.graphics.Image;
8 import org.eclipse.swt.widgets.Event;
9 import org.eclipse.swt.widgets.Listener;
10 import org.eclipse.swt.widgets.Menu;
11 import org.eclipse.swt.widgets.MenuItem;
12 import org.eclipse.swt.widgets.Shell;
13 import org.eclipse.swt.widgets.Tray;
14 import org.eclipse.swt.widgets.TrayItem;
15 import org.eclipse.ui.IWorkbenchWindow;
16 import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
17 import org.eclipse.ui.part.EditorInputTransfer;
18
19 /**
20 * Set here initial default size of the UI
21 *
22 * @author bsinou
23 *
24 */
25 public class SlcSecureWorkbenchWindowAdvisor extends
26 SecureWorkbenchWindowAdvisor {
27
28 private TrayItem trayItem;
29
30 public SlcSecureWorkbenchWindowAdvisor(
31 IWorkbenchWindowConfigurer configurer, String username) {
32 super(configurer, username);
33 }
34
35 // public ActionBarAdvisor createActionBarAdvisor(
36 // IActionBarConfigurer configurer) {
37 // return new ApplicationActionBarAdvisor(configurer);
38 // }
39
40
41
42 public void postWindowOpen() {
43 initTray();
44 }
45
46
47
48 @Override
49 public void preWindowOpen() {
50 getWindowConfigurer().addEditorAreaTransfer(EditorInputTransfer.getInstance());
51 getWindowConfigurer().configureEditorAreaDropListener(new DropTargetAdapter() {
52
53 @Override
54 public void dragEnter(DropTargetEvent event) {
55 System.out.println("DROP enter!!! " + event);
56 }
57
58 @Override
59 public void dragLeave(DropTargetEvent event) {
60 System.out.println("DROP leave!!! " + event);
61 }
62
63 public void drop(DropTargetEvent event) {
64 System.out.println("DROP drop!!! " + event);
65
66 }
67
68 @Override
69 public void dropAccept(DropTargetEvent event) {
70 System.out.println("DROP accept!!! " + event);
71 super.dropAccept(event);
72 }
73
74 });
75 super.preWindowOpen();
76 }
77
78 @Override
79 public boolean preWindowShellClose() {
80 // hide but do not dispose if tray is supported
81 if (trayItem != null) {
82 getWindowConfigurer().getWindow().getShell().setVisible(false);
83 return false;
84 } else
85 return true;
86 }
87
88 /** Init tray support */
89 protected void initTray() {
90 IWorkbenchWindow window = getWindowConfigurer().getWindow();
91 final Tray tray = window.getShell().getDisplay().getSystemTray();
92 trayItem = new TrayItem(tray, SWT.NONE);
93 if (trayItem == null)
94 return;
95
96 // image
97 Image trayImage = ClientRcpPlugin.getDefault().getImageRegistry()
98 .get("argeoTrayIcon");
99 trayItem.setImage(trayImage);
100 trayItem.setToolTipText("Argeo SLC");
101
102 // add pop-menu
103 // TODO: contribute more commands
104 trayItem.addListener(SWT.MenuDetect, new Listener() {
105 public void handleEvent(Event event) {
106 IWorkbenchWindow window = getWindowConfigurer().getWindow();
107 Menu menu = new Menu(window.getShell(), SWT.POP_UP);
108 MenuItem exit = new MenuItem(menu, SWT.NONE);
109 exit.setText("Exit");
110 exit.addListener(SWT.Selection, new Listener() {
111 public void handleEvent(Event event) {
112 getWindowConfigurer().getWorkbenchConfigurer()
113 .getWorkbench().close();
114 }
115 });
116 menu.setVisible(true);
117 }
118 });
119
120 // add behavior when clicked upon
121 trayItem.addListener(SWT.Selection, new Listener() {
122 public void handleEvent(Event event) {
123 Shell shell = getWindowConfigurer().getWindow().getShell();
124 if (shell.isVisible()) {
125 if (shell.getMinimized())
126 shell.setMinimized(false);
127 else {
128 shell.setVisible(false);
129 shell.setMinimized(true);
130 }
131 } else {
132 shell.setVisible(true);
133 shell.setActive();
134 shell.setFocus();
135 shell.setMinimized(false);
136 }
137 }
138 });
139 }
140
141 @Override
142 public void dispose() {
143 if (trayItem != null)
144 trayItem.dispose();
145 }
146
147 }