我有两个不同的功能(用于创建按钮并添加selectionListner),负责创建按钮,点击按钮后,它应该打开一个弹出窗口。
TableViewer作为参数传递的函数之一无法正常工作。按钮正在启用,但是当我点击按钮时无法弹出窗口。
以下是代码段:
工作代码:
public static Button createSubstitutionButton(Composite parent, final Callflow callflow, final Text text, final boolean multiLineText) {
Button button = createButton(parent);
button.addSelectionListener(new SelectionListener() {
public void widgetSelected(SelectionEvent e) {
String initialValue = text.getText();
String tag = SubstitutionTagDialog.openDialog(initialValue, callflow, multiLineText);
if (!(initialValue.equals(tag))) {
text.setText(tag);
}
}
public void widgetDefaultSelected(SelectionEvent e) {
widgetSelected(e);
}
});
return button;
}
不工作的代码:
public static Button createSubstitutionButton(Composite parent, final Callflow callflow, final TableViewer tableViewer) {
Button button = createButton(parent);
button.addSelectionListener(new SelectionListener() {
public void widgetSelected(SelectionEvent e) {
int index = tableViewer.getTable().getSelectionIndex();
boolean multiLine = false;
String initialValue = new String();
Object itemData = tableViewer.getTable().getItem(index).getData();
if (itemData instanceof SettingModel) {
SettingModel setting = (SettingModel)itemData;
if (setting.getType() == Setting.TEXTFIELD) {
multiLine = true;
tableViewer.cancelEditing();
}
initialValue = ((SettingModel)itemData).getCurrentValue();
} else if (itemData instanceof DataModel) {
initialValue = ((DataModel)itemData).getValue();
}
String tag = SubstitutionTagDialog.openDialog(initialValue, callflow, multiLine);
if (!(initialValue.equals(tag))) {
if (itemData instanceof SettingModel) {
((SettingModel)itemData).setCurrentValue(tag);
} else if (itemData instanceof DataModel) {
((DataModel)itemData).setValue(tag);
tableViewer.refresh();
}
}
}
public void widgetDefaultSelected(SelectionEvent e) {
widgetSelected(e);
}
});
return button;
}
当我们将日食从3.2.2升级到3.7.2
时,就会出现这种情况相同的两个功能在eclipse 3.2.2中起作用
关于tableviewer或者tableviewer布局的任何更改,关于selectionListner的eclipse是否有任何变化。我们正在使用最新的3.7.0表格查看器。
我很感激快速帮助