Revision 1702

tmp/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/handlers/ResetChartView.java (revision 1702)
18 18
	public Object execute(ExecutionEvent event) throws ExecutionException {
19 19
		ChartEditor chartEditor = SWTChartsComponentsProvider.getActiveChartEditor(event);
20 20
		
21
		//ChartEditor chartEditor = null;
22
		
23 21
		try {
24
			//chartEditor = (ChartEditor)SWTEditorsUtils.getActiveEditor(event);
25
			
26 22
			chartEditor.resetView();
27 23
			chartEditor.forceFocus();
28 24
		}
tmp/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/SWTChartsComponentsProvider.java (revision 1702)
1 1
package org.txm.chartsengine.rcp;
2 2

  
3 3

  
4
import java.awt.AWTEvent;
4 5
import java.awt.Color;
5 6
import java.awt.event.FocusEvent;
6 7
import java.awt.event.FocusListener;
......
40 41
import org.eclipse.ui.IWorkbenchWindow;
41 42
import org.eclipse.ui.PartInitException;
42 43
import org.eclipse.ui.PlatformUI;
43
import org.eclipse.ui.part.MultiPageEditorPart;
44 44
import org.txm.chartsengine.core.ChartsEngine;
45 45
import org.txm.chartsengine.core.preferences.ChartsEnginePreferences;
46 46
import org.txm.chartsengine.core.results.ChartResult;
......
712 712
							//chartEditor.getComposite().notifyListeners(SWT.Show, SWTChartsComponentsProvider.swingEventToSWT(chartEditor.getComposite(), swingComponent, e, SWT.Show));
713 713
							
714 714
						}
715
						chartEditor.getComposite().notifyListeners(SWT.MouseUp, SWTChartsComponentsProvider.swingEventToSWT(chartEditor.getComposite(), swingComponent, e, SWT.MouseUp));
715
						//chartEditor.getComposite().notifyListeners(SWT.MouseUp, SWTChartsComponentsProvider.swingEventToSWT(chartEditor.getComposite(), swingComponent, e, SWT.MouseUp));
716 716
						//chartEditor.activate();
717 717
					}
718 718
				});
......
726 726
					@Override
727 727
					public void run() {
728 728

  
729
						chartEditor.getComposite().notifyListeners(SWT.MouseDown, SWTChartsComponentsProvider.swingEventToSWT(chartEditor.getComposite(), swingComponent, e, SWT.MouseDown));
729
						//chartEditor.getComposite().notifyListeners(SWT.MouseDown, SWTChartsComponentsProvider.swingEventToSWT(chartEditor.getComposite(), swingComponent, e, SWT.MouseDown));
730 730
						
731 731
						// FIXME: Debug
732 732
//						System.out.println("SWTChartsComponentProvider.initializeAWTDelegationListeners(...).new MouseListener() {...}.mousePressed(...).new Runnable() {...}.run()");
733 733
						// Activate the editor part on AWT mouse pressed event
734
					//	chartEditor.activate();
734
						//chartEditor.activate();
735
						//chartEditor.getShell().setFocus();
736
						chartEditor.setFocus();
737
						//chartEditor.getParent().setFocus();
735 738
//						chartEditor.forceFocus();
736 739
					}
737 740
				});
......
819 822
			}
820 823
		});
821 824

  
825
		// Swing component focus delegation to the SWT chart composite
822 826
		swingComponent.addFocusListener(new FocusListener() {
823 827
			
824 828
			@Override
825
			public void focusLost(FocusEvent e) {
829
			public void focusLost(final FocusEvent e) {
826 830
				
827 831
				// FIXME: For Swing focus debug tests
828 832
				if(RCPPreferences.getInstance().getBoolean(TBXPreferences.EXPERT_USER))	{
......
833 837
					
834 838
					@Override
835 839
					public void run() {
840
						
841
						//chartEditor.getComposite().notifyListeners(SWT.FocusOut, SWTChartsComponentsProvider.swingEventToSWT(chartEditor.getComposite(), swingComponent, e, SWT.FocusOut));
842
						
836 843
						chartEditor.deactivateContext();						
837 844
					}
838 845
				});
839 846
			}
840 847
			
841 848
			@Override
842
			public void focusGained(FocusEvent e) {
849
			public void focusGained(final FocusEvent e) {
843 850
				
844 851
				// FIXME: For Swing focus debug tests
845 852
				if(RCPPreferences.getInstance().getBoolean(TBXPreferences.EXPERT_USER))	{
......
850 857
					
851 858
					@Override
852 859
					public void run() {
853
						chartEditor.activateContext();						
860
						
861
						//chartEditor.getComposite().notifyListeners(SWT.FocusIn, SWTChartsComponentsProvider.swingEventToSWT(chartEditor.getComposite(), swingComponent, e, SWT.FocusIn));
862

  
863
						//PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().activate(this);
864
						
865
//						chartEditor.activate();
866
						//chartEditor.getComposite().setFocus();
867
						//chartEditor.forceFocus();
868

  
869
						chartEditor.activateContext();
870
						
854 871
					}
855 872
				});
856 873
			}
......
990 1007
	 * @return
991 1008
	 */
992 1009
	// TODO : this method is incomplete
993
	public static org.eclipse.swt.widgets.Event swingEventToSWT(Composite swtComposite, JComponent swingComponent, MouseEvent e, int eventType)	{
1010
	public static org.eclipse.swt.widgets.Event swingEventToSWT(Composite swtComposite, JComponent swingComponent, AWTEvent e, int eventType)	{
994 1011

  
995 1012
		Event event = new Event();
996
		event.button = e.getButton();
997 1013
		if(!swtComposite.isDisposed())	{
998 1014
			event.display = swtComposite.getDisplay();
999 1015
		}
1000 1016
		event.widget = swtComposite;
1001 1017
		event.type = eventType;
1002 1018

  
1003
		try {
1004
			// Store the Swing tool tip source text in the SWT event to give it to the SWT composite listener in ChartComposite
1005
			// NOTE: this method call sometimes throws a java.lang.IndexOutOfBoundsException
1006
			event.text = swingComponent.getToolTipText(e);
1019
		if(e instanceof MouseEvent)	{
1020
			MouseEvent me = (MouseEvent) e;
1021
			event.button = me.getButton();
1022
			try {
1023
				// Store the Swing tool tip source text in the SWT event to give it to the SWT composite listener in ChartComposite
1024
				// NOTE: this method call sometimes throws a java.lang.IndexOutOfBoundsException
1025
				event.text = swingComponent.getToolTipText(me);
1026
			}
1027
			catch(Exception e1) {
1028
				//e1.printStackTrace();
1029
			}
1030
			event.x = me.getX();
1031
			event.y = me.getY();
1007 1032
		}
1008
		catch(Exception e1) {
1009
			//e1.printStackTrace();
1010
		}
1011
		event.x = e.getX();
1012
		event.y = e.getY();
1013 1033
		return event;
1014 1034
	}
1015 1035

  
tmp/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/editors/ChartEditor.java (revision 1702)
328 328

  
329 329
		
330 330
//		if(this.parentMultiPagesEditor == null)	{
331
//			this.forceFocus();			
331
//			//this.forceFocus();
332
//			this.activate();
332 333
//		}
333 334
	}
334 335

  
......
439 440
	 */
440 441
	//FIXME: this method doesn't work for Multi pages editor, eg. can not activating CAFactorialMapEditor stored in the CAEditor
441 442
	public void activate()	{
443
		
442 444
		// Activate the parent multi pages editor instead of this editor if it exists
443 445
		if(this.parentMultiPagesEditor != null)	{
444 446
			PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().activate(this.parentMultiPagesEditor);
445 447
		}
446
		else	{
448
		else {
447 449
			// TODO: for focus and activation debug
448
//			System.out.println("ChartEditor.activate(): current active editor = " + PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart());
449 450
//			System.out.println("ChartEditor.activate(): activating: " + this);
450
//			PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().bringToTop(this);
451
			PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().activate(this);
451
			//PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().bringToTop(this);
452
			
453
			//this.parent.setFocus();
452 454

  
455
//			if(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart() != this) {			
456
				//this.chartComposite.setFocus();
457
	//		}
458

  
459
			//PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().activate(this);
460
			
461
			
462
			//getEditorSite().getPage().activate(this);
463
//			if(!this.chartComposite.hasFocus())	{
464
//				this.chartComposite.setFocus();
465
//			}
466

  
453 467
//			System.out.println("ChartEditor.activate(): new active editor = " + PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart());
454 468
		}
469
//		else	{
470
//			PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().bringToTop(this);
471
//		}
455 472
	}
456 473

  
457 474
	/**
458 475
	 * Forces the Composite to get the focus.
459 476
	 */
460
	public void forceFocus()	{
477
	public void forceFocus() {
461 478
		// FIXME: debug
462 479
		//System.err.println("ChartEditor.forceFocus()");
463 480

  
464 481
		//this.chartComposite.setFocus();
465
		this.chartComposite.notifyListeners(SWT.FocusIn, null); // Needed to force the composite listener to handle the focus event
482
		//this.chartComposite.notifyListeners(SWT.FocusIn, null); // Needed to force the composite listener to handle the focus event
466 483
	}
467 484

  
468 485

  
469 486
	@Override
470 487
	public void setFocus() {
471 488

  
489
		super.setFocus();
472 490
		// Debug
473 491
		Log.finest("ChartEditor.setFocus(): giving focus to chart composite..."); //$NON-NLS-1$
474 492

  
493
		this.parent.setFocus();
494
//		this.getEditorSite().getPage().activate(this);
495

  
496
		
475 497
		this.chartComposite.setFocus();
498
		//this.chartComposite.requestFocusInChartComponent();
476 499

  
500
		
477 501
	}
478 502

  
479 503
	
tmp/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/swt/SwingChartComposite.java (revision 1702)
180 180
	public void requestFocusInChartComponent()	{
181 181
		EventQueue.invokeLater(new Runnable () {
182 182
			public void run () {
183
				if(chartComponent != null)	{
183
				if(chartComponent != null && !((Component) chartComponent).isFocusOwner())	{
184 184
					
185
					boolean focusState = ((Component) chartComponent).requestFocusInWindow();
185
					//boolean focusState = ((Component) chartComponent).requestFocusInWindow();
186 186
					((JComponent) chartComponent).grabFocus();
187 187
					
188 188
					// Debug

Also available in: Unified diff