1 package org
.argeo
.slc
.client
.rcp
;
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
;
19 /** Set here initial default size of the UI */
20 public class SlcSecureWorkbenchWindowAdvisor
extends
21 SecureWorkbenchWindowAdvisor
{
23 private TrayItem trayItem
;
25 public SlcSecureWorkbenchWindowAdvisor(
26 IWorkbenchWindowConfigurer configurer
, String username
) {
27 super(configurer
, username
);
30 public void postWindowOpen() {
35 public void preWindowOpen() {
36 getWindowConfigurer().addEditorAreaTransfer(
37 EditorInputTransfer
.getInstance());
38 getWindowConfigurer().configureEditorAreaDropListener(
39 new DropTargetAdapter() {
42 public void dragEnter(DropTargetEvent event
) {
43 System
.out
.println("DROP enter!!! " + event
);
47 public void dragLeave(DropTargetEvent event
) {
48 System
.out
.println("DROP leave!!! " + event
);
51 public void drop(DropTargetEvent event
) {
52 System
.out
.println("DROP drop!!! " + event
);
57 public void dropAccept(DropTargetEvent event
) {
58 System
.out
.println("DROP accept!!! " + event
);
59 super.dropAccept(event
);
63 super.preWindowOpen();
67 public boolean preWindowShellClose() {
68 // hide but do not dispose if tray is supported
69 if (trayItem
!= null) {
70 getWindowConfigurer().getWindow().getShell().setVisible(false);
76 /** Init tray support */
77 protected void initTray() {
78 IWorkbenchWindow window
= getWindowConfigurer().getWindow();
79 final Tray tray
= window
.getShell().getDisplay().getSystemTray();
80 trayItem
= new TrayItem(tray
, SWT
.NONE
);
85 Image trayImage
= ClientRcpPlugin
.getDefault().getImageRegistry()
86 .get("argeoTrayIcon");
87 trayItem
.setImage(trayImage
);
88 trayItem
.setToolTipText("Argeo SLC");
91 // TODO: contribute more commands
92 trayItem
.addListener(SWT
.MenuDetect
, new Listener() {
93 public void handleEvent(Event event
) {
94 IWorkbenchWindow window
= getWindowConfigurer().getWindow();
95 Menu menu
= new Menu(window
.getShell(), SWT
.POP_UP
);
96 MenuItem exit
= new MenuItem(menu
, SWT
.NONE
);
98 exit
.addListener(SWT
.Selection
, new Listener() {
99 public void handleEvent(Event event
) {
100 getWindowConfigurer().getWorkbenchConfigurer()
101 .getWorkbench().close();
104 menu
.setVisible(true);
108 // add behavior when clicked upon
109 trayItem
.addListener(SWT
.Selection
, new Listener() {
110 public void handleEvent(Event event
) {
111 Shell shell
= getWindowConfigurer().getWindow().getShell();
112 if (shell
.isVisible()) {
113 if (shell
.getMinimized())
114 shell
.setMinimized(false);
116 shell
.setVisible(false);
117 shell
.setMinimized(true);
120 shell
.setVisible(true);
123 shell
.setMinimized(false);
130 public void dispose() {
131 if (trayItem
!= null)