Я создаю Eclipse (3.6.2) CDT (7.0.2) плагин, который использует мою собственную страницу мастера (расширение MBSCustomPage).На этой странице мастера показана таблица, заполненная некоторыми элементами TableItems, которые можно проверить или снять, нажав на них (как обычно). Проблема в том, что я всегда получаю два события, когда флажок TableItem отмечен (или не отмечен)! .В первом полученном событии у меня есть (SelectedEvent) e.detail == SWT.CHECK, даже если TableItem был проверен первым, а во втором событии (SelectedEvent) e.detail == 0 !.Поэтому у меня нет возможности узнать, действительно ли проверен TableItem или нет.Это мой код (немного):
final Table table = new Table( composite, SWT.BORDER | SWT.SINGLE | SWT.FULL_SELECTION | SWT.CHECK );
table.setHeaderVisible(true);
table.setLinesVisible(false);
(...)
table.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
CheckThatOnlyOneItemCanBeCheckedAtTime(e.item);
//If someone check on me, save the item data value in a "container"
if( e.detail == SWT.CHECK ) {
MBSCustomPageManager.addPageProperty(PAGE_ID, "SDK_Path", ((ISdk)((TableItem)e.item).getData()).getPath() );
} else { //Otherwise, unset the saved value
MBSCustomPageManager.addPageProperty(PAGE_ID, "SDK_Path", "" );
}
}
});
Почему widgetSelected () вызывается два раза, когда я нажимаю на флажок TableItem?Я проверил, что события запускаются, даже если внутри метода widgetSelected () нет кода.Я не нашел ничего в поиске или поиске в базе данных Eclipse Bugzilla ... действительно странно для меня, но я не опытный программист плагинов Eclipse (даже Java):)
Спасибо!