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
{
22 public final static String IN_TRAY_PROPERTY
= "org.argeo.slc.ui.inTray";
24 private TrayItem trayItem
;
26 public SlcSecureWorkbenchWindowAdvisor(
27 IWorkbenchWindowConfigurer configurer
, String username
) {
28 super(configurer
, username
);
31 public void postWindowOpen() {
32 String inTray
= System
.getProperty(IN_TRAY_PROPERTY
);
33 if (inTray
!= null && inTray
.equals("true")) {
39 public void preWindowOpen() {
40 getWindowConfigurer().addEditorAreaTransfer(
41 EditorInputTransfer
.getInstance());
42 getWindowConfigurer().configureEditorAreaDropListener(
43 new DropTargetAdapter() {
46 public void dragEnter(DropTargetEvent event
) {
47 System
.out
.println("DROP enter!!! " + event
);
51 public void dragLeave(DropTargetEvent event
) {
52 System
.out
.println("DROP leave!!! " + event
);
55 public void drop(DropTargetEvent event
) {
56 System
.out
.println("DROP drop!!! " + event
);
61 public void dropAccept(DropTargetEvent event
) {
62 System
.out
.println("DROP accept!!! " + event
);
63 super.dropAccept(event
);
67 super.preWindowOpen();
71 public boolean preWindowShellClose() {
72 // hide but do not dispose if tray is supported
73 if (trayItem
!= null) {
74 getWindowConfigurer().getWindow().getShell().setVisible(false);
80 /** Init tray support */
81 protected void initTray() {
82 IWorkbenchWindow window
= getWindowConfigurer().getWindow();
83 Shell shell
= window
.getShell();
84 final Tray tray
= shell
.getDisplay().getSystemTray();
85 trayItem
= new TrayItem(tray
, SWT
.NONE
);
90 Image trayImage
= ClientRcpPlugin
.getDefault().getImageRegistry()
91 .get("argeoTrayIcon");
92 trayItem
.setImage(trayImage
);
93 trayItem
.setToolTipText("Argeo SLC");
96 // TODO: contribute more commands
97 trayItem
.addListener(SWT
.MenuDetect
, new Listener() {
98 public void handleEvent(Event event
) {
99 IWorkbenchWindow window
= getWindowConfigurer().getWindow();
100 Menu menu
= new Menu(window
.getShell(), SWT
.POP_UP
);
101 MenuItem exit
= new MenuItem(menu
, SWT
.NONE
);
102 exit
.setText("Exit");
103 exit
.addListener(SWT
.Selection
, new Listener() {
104 public void handleEvent(Event event
) {
105 getWindowConfigurer().getWorkbenchConfigurer()
106 .getWorkbench().close();
109 menu
.setVisible(true);
113 // add behavior when clicked upon
114 trayItem
.addListener(SWT
.Selection
, new Listener() {
115 public void handleEvent(Event event
) {
116 Shell shell
= getWindowConfigurer().getWindow().getShell();
117 if (shell
.isVisible()) {
118 if (shell
.getMinimized())
119 shell
.setMinimized(false);
121 shell
.setVisible(false);
122 shell
.setMinimized(true);
125 shell
.setVisible(true);
128 shell
.setMinimized(false);
134 // shell.setVisible(false);
138 public void dispose() {
139 if (trayItem
!= null)