Révision 2049
tmp/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/swt/SwingChartComposite.java (revision 2049) | ||
---|---|---|
117 | 117 |
this.rootPanel.setBackground(Color.WHITE); |
118 | 118 |
this.rootPanel.setBorder(new LineBorder(Color.WHITE, 1)); |
119 | 119 |
|
120 |
// FIXME: SJ: temporary workaround to Linux focus bugs |
|
121 |
// part #1: release the focus at mouse exited on the rootPanel, needed for empty charts, eg. Progression |
|
122 |
// it breaks all the key events in charts (zoom, pan, selection, etc.) but |
|
123 |
// stops the conflict between AWT and SWT events that freezes the SWT Spinner, TextFields, etc. |
|
124 |
// (Progression query, Specificities chart banality, etc.) |
|
125 |
// see: http://forge.cbp.ens-lyon.fr/redmine/issues/2548 |
|
126 |
if (OSDetector.isFamilyUnix()) { |
|
127 |
this.rootPanel.addMouseListener(new MouseListener() { |
|
128 |
|
|
129 |
@Override |
|
130 |
public void mouseReleased(MouseEvent e) { |
|
131 |
// TODO Auto-generated method stub |
|
132 |
|
|
133 |
} |
|
134 |
|
|
135 |
@Override |
|
136 |
public void mousePressed(MouseEvent e) { |
|
137 |
// TODO Auto-generated method stub |
|
138 |
|
|
139 |
} |
|
140 |
|
|
141 |
@Override |
|
142 |
public void mouseExited(MouseEvent e) { |
|
143 |
// FIXME: SJ: temporary workaround to Linux focus bugs |
|
144 |
// it breaks all the key events in charts (zoom, pan, selection, etc.) but |
|
145 |
// stops the conflict between AWT and SWT events that freezes the SWT Spinner, |
|
146 |
// TextFields, etc. |
|
147 |
// (Progression query, Specificities chart banality, etc.) |
|
148 |
// see: http://forge.cbp.ens-lyon.fr/redmine/issues/2548 |
|
149 |
if (frame.isFocusOwner() || rootPanel.isFocusOwner()) { |
|
150 |
frame.setVisible(false); |
|
151 |
// Log.finest("SwingChartComposite.initEventsListeners().new MouseListener() |
|
152 |
// {...}.mouseExited()"); |
|
153 |
frame.setVisible(true); |
|
154 |
|
|
155 |
Display.getDefault().asyncExec(new Runnable() { |
|
156 |
|
|
157 |
@Override |
|
158 |
public void run() { |
|
159 |
SwingChartComposite.this.chartEditor.getShell().forceActive(); |
|
160 |
} |
|
161 |
}); |
|
162 |
|
|
163 |
} |
|
164 |
} |
|
165 |
|
|
166 |
@Override |
|
167 |
public void mouseEntered(MouseEvent e) { |
|
168 |
// TODO Auto-generated method stub |
|
169 |
|
|
170 |
} |
|
171 |
|
|
172 |
@Override |
|
173 |
public void mouseClicked(MouseEvent e) { |
|
174 |
// TODO Auto-generated method stub |
|
175 |
|
|
176 |
} |
|
177 |
}); |
|
178 |
} |
|
120 | 179 |
|
121 | 180 |
// 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. |
122 | 181 |
// After some tests, doesn't seem to work on Linux and Mac |
... | ... | |
589 | 648 |
public void mouseExited(java.awt.event.MouseEvent e) { |
590 | 649 |
|
591 | 650 |
// FIXME: SJ: temporary workaround to Linux focus bugs |
651 |
// part #2: release the focus at mouse exited on the AWT/SWing chart component |
|
592 | 652 |
// it breaks all the key events in charts (zoom, pan, selection, etc.) but |
593 | 653 |
// stops the conflict between AWT and SWT events that freezes the SWT Spinner, TextFields, etc. |
594 | 654 |
// (Progression query, Specificities chart banality, etc.) |
... | ... | |
617 | 677 |
// KeyboardFocusManager.getCurrentKeyboardFocusManager().clearFocusOwner(); |
618 | 678 |
// KeyboardFocusManager.getCurrentKeyboardFocusManager().clearGlobalFocusOwner(); |
619 | 679 |
|
680 |
//setVisible(false); |
|
620 | 681 |
frame.setVisible(false); |
621 | 682 |
Log.finest("SwingChartComposite.initEventsListeners().new MouseListener() {...}.mouseExited()"); |
622 | 683 |
frame.setVisible(true); |
684 |
//setVisible(true); |
|
623 | 685 |
|
624 | 686 |
Display.getDefault().asyncExec(new Runnable() { |
625 | 687 |
|
626 | 688 |
@Override |
627 | 689 |
public void run() { |
690 |
// setVisible(false); |
|
691 |
// setVisible(true); |
|
628 | 692 |
// TODO Auto-generated method stub |
629 | 693 |
// shell.setMinimized(true); |
630 | 694 |
// shell.setMinimized(false); |
631 | 695 |
// shell.setActive(); |
632 |
getChartComponent().getChartEditor().getShell().forceActive(); |
|
696 |
//getChartComponent().getChartEditor().getShell().forceActive(); |
|
697 |
SwingChartComposite.this.chartEditor.getShell().forceActive(); |
|
633 | 698 |
} |
634 | 699 |
}); |
635 | 700 |
|
... | ... | |
1004 | 1069 |
* @param eventType |
1005 | 1070 |
* @return |
1006 | 1071 |
*/ |
1007 |
// TODO : this method is incomplete |
|
1072 |
// TODO : SJ: this method is incomplete
|
|
1008 | 1073 |
public static org.eclipse.swt.widgets.Event swingEventToSWT(Composite swtComposite, JComponent swingComponent, AWTEvent e, int eventType) { |
1009 | 1074 |
|
1010 | 1075 |
Event event = new Event(); |
Formats disponibles : Unified diff