Revision 1832

tmp/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/SWTChartsComponentsProvider.java (revision 1832)
790 790
			@Override
791 791
			public void mouseExited(java.awt.event.MouseEvent e) {
792 792
				// TODO Auto-generated method stub
793
				Frame frame = (Frame) swingComponent.getFocusCycleRootAncestor();
793
				//Frame frame = (Frame) swingComponent.getFocusCycleRootAncestor();
794 794
				//frame.setAutoRequestFocus(false);
795 795
				//frame.setFocusable(false);
796 796
				//frame.setFocusableWindowState(false);
tmp/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/swt/SwingChartComposite.java (revision 1832)
19 19

  
20 20
import javax.swing.JApplet;
21 21
import javax.swing.JComponent;
22
import javax.swing.SwingUtilities;
22 23
import javax.swing.border.LineBorder;
23 24

  
24 25
import org.eclipse.swt.awt.SWT_AWT;
......
27 28
import org.txm.chartsengine.rcp.IChartComponent;
28 29
import org.txm.chartsengine.rcp.editors.ChartEditor;
29 30
import org.txm.chartsengine.rcp.events.EventCallBackHandler;
31
import org.txm.core.messages.TXMCoreMessages;
30 32
import org.txm.core.preferences.TBXPreferences;
31 33
import org.txm.rcp.preferences.RCPPreferences;
32 34
import org.txm.utils.logger.Log;
......
58 60
	//FIXME: tests
59 61
	//protected Panel rootPanel;
60 62
	//protected JRootPane rootPanel;
61
	//protected JPanel rootPanel;
63
//	protected JPanel rootPanel;
64
	
62 65
	protected JComponent rootPanel;
63 66
	
64 67
    
......
73 76
	public SwingChartComposite(ChartEditor<ChartResult> chartEditor, Composite parent, int style) {
74 77
		super(chartEditor, parent, style);
75 78
		
79
		// Disabling Swing focus manager
80
		//FocusManager.disableSwingFocusManager();
81
		
76 82
		this.frame = SWT_AWT.new_Frame(this);
77 83
	
78 84
		// Need to add an AWT/Swing Panel to fix mouse events and mouse cursors changes on AWT/Swing chart component panel (see: https://bugs.java.com/bugdatabase/view_bug.do?bug_id=4982522)
79
		//this.rootPanel = new JPanel(new BorderLayout());
80

  
85
//		this.rootPanel = new JPanel(new BorderLayout());
86
//		this.frame.add(this.rootPanel);
87
		
81 88
		// FIXME: tests with Applet, see: https://www.eclipse.org/articles/article.php?file=Article-Swing-SWT-Integration/index.html
82 89
		final JApplet applet = new JApplet(); 
83 90
		this.rootPanel = (JComponent) applet.getRootPane().getContentPane();
84
		
85 91
		this.frame.add(applet);
86 92
		
93
//		this.frame.setAutoRequestFocus(false);
94
//		this.frame.setFocusTraversalPolicyProvider(true);
95
//		this.frame.setFocusTraversalPolicy(new FocusTraversalPolicy() {
96
//			
97
//			@Override
98
//			public Component getLastComponent(Container aContainer) {
99
//				// TODO Auto-generated method stub
100
//				return null;
101
//			}
102
//			
103
//			@Override
104
//			public Component getFirstComponent(Container aContainer) {
105
//				// TODO Auto-generated method stub
106
//				return null;
107
//			}
108
//			
109
//			@Override
110
//			public Component getDefaultComponent(Container aContainer) {
111
//				// TODO Auto-generated method stub
112
//				return null;
113
//			}
114
//			
115
//			@Override
116
//			public Component getComponentBefore(Container aContainer, Component aComponent) {
117
//				// TODO Auto-generated method stub
118
//				return null;
119
//			}
120
//			
121
//			@Override
122
//			public Component getComponentAfter(Container aContainer, Component aComponent) {
123
//				// TODO Auto-generated method stub
124
//				return null;
125
//			}
126
//		});
127
		
128
		
129
		
87 130
		//this.frame.pack();
88 131

  
89 132
		//this.frame.setVisible(true);
......
240 283
				if(RCPPreferences.getInstance().getBoolean(TBXPreferences.EXPERT_USER))	{
241 284
					((JComponent) rootPanel).setBorder(new LineBorder(Color.red, 1));
242 285
				}
243
	
244 286
				
287
				// SWT thread
288
//				getDisplay().asyncExec(new Runnable() {
289
//					@Override
290
//					public void run() {
291
//
292
//						//SwingChartComposite.this.notifyListeners(SWT.MouseDown, SWTChartsComponentsProvider.swingEventToSWT(chartEditor.getComposite(), swingComponent, e, SWT.MouseDown));
293
//						
294
//						// FIXME: Debug
295
////						System.out.println("SWTChartsComponentProvider.initializeAWTDelegationListeners(...).new MouseListener() {...}.mousePressed(...).new Runnable() {...}.run()");
296
//						// Activate the editor part on AWT mouse pressed event
297
//						//SwingChartComposite.this.chartEditor.activate();
298
//						//chartEditor.getShell().setFocus();
299
////						chartEditor.setFocus();
300
//						//chartEditor.getParent().setFocus();
301
////						chartEditor.forceFocus();
302
//						SwingChartComposite.this.chartEditor.setFocus();
303
//						//notifyListeners(SWT.FocusIn, null); // Needed to force the composite listener to handle the focus event
304
//					}
305
//				});
306
//				
307
				
308
				
245 309
			}
246 310
		});
247 311
		
......
378 442
	}
379 443

  
380 444
	
381
//	
382
//	@Override
383
//	public boolean setFocus() {
384
//
385
//		if (this.isDisposed()) {
386
//			return false;
445
	
446
	@Override
447
	public boolean setFocus() {
448

  
449
		if (this.isDisposed()) {
450
			return false;
451
		}
452
		
453
		// Debug
454
		Log.finest("SwingChartComposite.setFocus(): trying to give focus to SWT composite and AWT component..."); //$NON-NLS-1$
455
		
456
		boolean focusState = super.setFocus();
457
		
458
		// Debug
459
		Log.finest(TXMCoreMessages.bind("SwingChartComposite.setFocus(): SWT composite focus given state = {0}.", this.isFocusControl())); //$NON-NLS-1$
460
		
461
		this.requestFocusInChartComponent();
462
		
463
		return focusState;
464
	}
465
	
466
	
467
	
468
	/**
469
	 * Requests the focus in chart component.
470
	 */
471
	public void requestFocusInChartComponent()	{
472
		
473
		
474
		if(chartComponent != null) {
475
		
476
//		try {
477
			SwingUtilities.invokeLater(new Runnable () {
478
				public void run () {
479
//				if(!((Component) chartComponent).isFocusOwner())	{
480
						
481
						//((Component) chartComponent).requestFocus();
482
						((JComponent) chartComponent).grabFocus();
483
						boolean focusState = ((Component) chartComponent).requestFocusInWindow();
484
						
485
						// Debug
486
						//Log.finest(TXMCoreMessages.bind("SwingChartComposite.requestFocusInChartComponent(): AWT component focus given state = {0}.", ((Component) chartComponent).isFocusOwner())); //$NON-NLS-1$
487
						Log.finest(TXMCoreMessages.bind("SwingChartComposite.requestFocusInChartComponent(): AWT component focus given state = {0}.", focusState)); //$NON-NLS-1$
488
						
489
//					// FIXME: For Swing focus debug tests
490
//					if(RCPPreferences.getInstance().getBoolean(TBXPreferences.EXPERT_USER))	{
491
//						if(((Component) chartComponent).isFocusOwner())	{
492
//							((JComponent) chartComponent).setBorder(new LineBorder(Color.red, 1));
493
//						}
494
//						else	{
495
//							((JComponent) chartComponent).setBorder(javax.swing.BorderFactory.createEmptyBorder());
496
//						}
497
//					}
498
						
499
						
500
//			}
501
				}
502
			});
503
	//	}
504
//		catch (InvocationTargetException e) {
505
//			// TODO Auto-generated catch block
506
//			e.printStackTrace();
387 507
//		}
388
//		
389
//		// Debug
390
//		Log.finest("SwingChartComposite.setFocus(): trying to give focus to SWT composite and AWT component..."); //$NON-NLS-1$
391
//		
392
//		boolean focusState = super.setFocus();
393
//		
394
//		// Debug
395
//		Log.finest(TXMCoreMessages.bind("SwingChartComposite.setFocus(): SWT composite focus given state = {0}.", this.isFocusControl())); //$NON-NLS-1$
396
//		
397
//		this.requestFocusInChartComponent();
398
//		
399
//		return focusState;
400
//	}
401
//	
402
//	
403
//	
404
//	/**
405
//	 * Requests the focus in chart component.
406
//	 */
407
//	public void requestFocusInChartComponent()	{
408
//		
409
//		
410
//		if(chartComponent != null) {
411
//		
412
////		try {
413
//			SwingUtilities.invokeLater(new Runnable () {
414
//				public void run () {
415
////				if(!((Component) chartComponent).isFocusOwner())	{
416
//						
417
//						//((Component) chartComponent).requestFocus();
418
//						((JComponent) chartComponent).grabFocus();
419
//						boolean focusState = ((Component) chartComponent).requestFocusInWindow();
420
//						
421
//						// Debug
422
//						//Log.finest(TXMCoreMessages.bind("SwingChartComposite.requestFocusInChartComponent(): AWT component focus given state = {0}.", ((Component) chartComponent).isFocusOwner())); //$NON-NLS-1$
423
//						Log.finest(TXMCoreMessages.bind("SwingChartComposite.requestFocusInChartComponent(): AWT component focus given state = {0}.", focusState)); //$NON-NLS-1$
424
//						
425
////					// FIXME: For Swing focus debug tests
426
////					if(RCPPreferences.getInstance().getBoolean(TBXPreferences.EXPERT_USER))	{
427
////						if(((Component) chartComponent).isFocusOwner())	{
428
////							((JComponent) chartComponent).setBorder(new LineBorder(Color.red, 1));
429
////						}
430
////						else	{
431
////							((JComponent) chartComponent).setBorder(javax.swing.BorderFactory.createEmptyBorder());
432
////						}
433
////					}
434
//						
435
//						
436
////			}
437
//				}
438
//			});
439
//	//	}
440
////		catch (InvocationTargetException e) {
441
////			// TODO Auto-generated catch block
442
////			e.printStackTrace();
443
////		}
444
////		catch (InterruptedException e) {
445
////			// TODO Auto-generated catch block
446
////			e.printStackTrace();
447
////		}
448
//		
508
//		catch (InterruptedException e) {
509
//			// TODO Auto-generated catch block
510
//			e.printStackTrace();
449 511
//		}
450
//	}
512
		
513
		}
514
	}
451 515

  
452 516
	
453 517
	
......
492 556
	
493 557
	@Override
494 558
	public void copyChartViewToClipboard() {
559
		
495 560
		int w = ((Component) this.chartComponent).getWidth();
496 561
		int h = ((Component) this.chartComponent).getHeight();
497 562
		final BufferedImage bufferedImg = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
498 563
		Graphics2D g = bufferedImg.createGraphics();
564
		
565
		
499 566
		((Component) this.chartComponent).paint(g);
500 567
		
501 568
		Transferable img = new Transferable() {

Also available in: Unified diff