Index: tmp/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/swt/SwingChartComposite.java
===================================================================
--- tmp/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/swt/SwingChartComposite.java	(revision 1810)
+++ tmp/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/swt/SwingChartComposite.java	(revision 1811)
@@ -13,6 +13,10 @@
 import java.awt.datatransfer.DataFlavor;
 import java.awt.datatransfer.Transferable;
 import java.awt.datatransfer.UnsupportedFlavorException;
+import java.awt.event.FocusEvent;
+import java.awt.event.FocusListener;
+import java.awt.event.WindowEvent;
+import java.awt.event.WindowFocusListener;
 import java.awt.image.BufferedImage;
 import java.io.IOException;
 import java.lang.reflect.Method;
@@ -111,67 +115,99 @@
 		// SJ: Workaround to fix a bug with some Java version and some OS where the focus of an embedded Swing component does not delegate to SWT, eg. the Part is not activated.
 		// see: https://bugs.eclipse.org/bugs/show_bug.cgi?id=377104
 		// see: https://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8203855
-		this.frame.addWindowListener(new java.awt.event.WindowAdapter() {
+//		this.frame.addWindowListener(new java.awt.event.WindowAdapter() {
+//			@Override
+//			public void windowActivated(java.awt.event.WindowEvent e) {
+//				SwingChartComposite.this.getDisplay().asyncExec(new Runnable() {
+//					@Override
+//					public void run() {
+//						if (Display.getCurrent().getFocusControl() == SwingChartComposite.this) {
+//							Stack<Control> stack = new Stack<Control>();
+//							Control starter = SwingChartComposite.this;
+//							Shell shell = SwingChartComposite.this.getShell();
+//							while (starter != null && !(starter instanceof Shell)) {
+//								stack.push(starter.getParent());
+//								starter = starter.getParent();
+//							}
+//
+//							Method m = null;
+//							try {
+//								// instead of calling the originally proposed
+//								// workaround solution (below),
+//								//
+//								// Event event = new Event();
+//								// event.display = Display.getCurrent();
+//								// event.type = SWT.Activate;
+//								// event.widget = stack.pop();
+//								// event.widget.notifyListeners(SWT.Activate, event);
+//								//
+//								// which should but does NOT set the active
+//								// widget/control on the shell, we had
+//								// to call the setActiveControl method directly.
+//								// Updating the active control on the shell is
+//								// important so that the last active
+//								// control, when selected again, get the proper
+//								// activation events fired.
+//
+//								m = shell.getClass().getDeclaredMethod("setActiveControl", Control.class);// $NON-NLS-1$
+//								m.setAccessible(true);
+//								while (!stack.isEmpty()) {
+//									m.invoke(shell, stack.pop());
+//								}
+//								
+//								// force the Swing component focus
+//								//setFocus();
+//								
+//							}
+//							catch (Exception e) {
+//								Log.severe("** Embedded part was not able to set active control on Shell. This will result in other workbench parts not getting activated."); //$NON-NLS-1$
+//								Log.printStackTrace(e);
+//							}
+//							finally {
+//								if (m != null) {
+//									m.setAccessible(false);
+//								}
+//							}
+//						}
+//					}
+//				});
+//			}
+//		});
+		
+		
+		this.frame.addFocusListener(new FocusListener() {
+			
 			@Override
-			public void windowActivated(java.awt.event.WindowEvent e) {
-				SwingChartComposite.this.getDisplay().asyncExec(new Runnable() {
-					@Override
-					public void run() {
-						if (Display.getCurrent().getFocusControl() == SwingChartComposite.this) {
-							Stack<Control> stack = new Stack<Control>();
-							Control starter = SwingChartComposite.this;
-							Shell shell = SwingChartComposite.this.getShell();
-							while (starter != null && !(starter instanceof Shell)) {
-								stack.push(starter.getParent());
-								starter = starter.getParent();
-							}
+			public void focusLost(FocusEvent e) {
+				// TODO Auto-generated method stub
+				System.out.println("SwingChartComposite.SwingChartComposite(...).new FocusListener() {...}.focusLost()");
+			}
+			
+			@Override
+			public void focusGained(FocusEvent e) {
+				// TODO Auto-generated method stub
+				System.out.println("SwingChartComposite.SwingChartComposite(...).new FocusListener() {...}.focusGained()");
+			}
+		});
 
-							Method m = null;
-							try {
-								// instead of calling the originally proposed
-								// workaround solution (below),
-								//
-								// Event event = new Event();
-								// event.display = Display.getCurrent();
-								// event.type = SWT.Activate;
-								// event.widget = stack.pop();
-								// event.widget.notifyListeners(SWT.Activate,
-								// event);
-								//
-								// which should but does NOT set the active
-								// widget/control on the shell, we had
-								// to call the setActiveControl method directly.
-								// Updating the active control on the shell is
-								// important so that the last active
-								// control, when selected again, get the proper
-								// activation events fired.
-
-								m = shell.getClass().getDeclaredMethod("setActiveControl", Control.class);// $NON-NLS-1$
-								m.setAccessible(true);
-								while (!stack.isEmpty()) {
-									m.invoke(shell, stack.pop());
-								}
-								
-								// force the Swing component focus
-								//setFocus();
-								
-							}
-							catch (Exception e) {
-								Log.severe("** Embedded part was not able to set active control on Shell. This will result in other workbench parts not getting activated."); //$NON-NLS-1$
-								Log.printStackTrace(e);
-							}
-							finally {
-								if (m != null) {
-									m.setAccessible(false);
-								}
-							}
-						}
-					}
-				});
+		
+		this.frame.addWindowFocusListener(new WindowFocusListener() {
+			
+			@Override
+			public void windowLostFocus(WindowEvent e) {
+				// TODO Auto-generated method stub
+				System.out.println("SwingChartComposite.SwingChartComposite(...).new WindowFocusListener() {...}.windowLostFocus()");
 			}
+			
+			@Override
+			public void windowGainedFocus(WindowEvent e) {
+				// TODO Auto-generated method stub
+				System.out.println("SwingChartComposite.SwingChartComposite(...).new WindowFocusListener() {...}.windowGainedFocus()");
+			}
 		});
 		
 		
+		
 	}
 
 	@Override
