В SWT общее правило таково, что события не распространяются. Основным исключением из этого является распространение траверсов, что довольно сложно описать.
Простой ответ на вашу проблему заключается в том, что вы должны добавить слушателя к всем вашим детям Composite
- рекурсивно !
например. как это
public void createPartControl(Composite parent) {
// Create view...
final MouseListener ma = new MouseAdapter() {
@Override
public void mouseDown(MouseEvent e) {
System.out.println("down in " + e.widget);
}
};
addMouseListener(parent, ma);
}
private void addMouseListener(Control c, MouseListener ma) {
c.addMouseListener(ma);
if (c instanceof Composite) {
for (final Control cc : ((Composite) c).getChildren()) {
addMouseListener(cc, ma);
}
}
}
Виджет, на который нажали, находится в e.widget
, как показано выше. Важной проблемой является не забывайте делать это снова, если вы добавите еще Controls
позже.