我正在制作自定义启动配置类型。我实现了启动配置选项卡,并遇到了一个奇怪的问题。当我做以下
private void update() {
setDirty(true);
updateLaunchConfigurationDialog();
}
在我的启动配置选项卡类的一个位置,它工作正常,并启用应用按钮。但是,当我在另一个地方这样做时,它不起作用。我在https://www.eclipse.org/forums/index.php/t/164755/找到了类似的东西,但它并没有帮助我解决这个问题。
请参阅下面的代码片段。
addButton.addMouseListener(new MouseListenerAdapter() {
@Override
public void mouseDown(MouseEvent e) {
moveSelectionToTableViewer(tree.getViewer().getTree().getSelection());
table.refresh();
update(); // Apply button is enabled
}
private void moveSelectionToTableViewer(TreeItem[] selection) {
// ...
}
});
removeButton.addMouseListener(new MouseListenerAdapter() {
@Override
public void mouseDown(MouseEvent e) {
int[] selectionIndices = table.getTable().getSelectionIndices();
table.getTable().remove(selectionIndices);
tree.getViewer().refresh();
update(); // Apply button is NOT enabled!
}
});
我该如何解决这个问题?
答案 0 :(得分:2)
我不仅仅从这些信息中知道你的问题,而只是要检查一些事情:
setDirty(true)
(例如使用println或断点?)org.eclipse.debug.ui.AbstractLaunchConfigurationTab.fDirty
上以查看它是否会变回? isDirty
?Apply
。例如,要保存,canSave
必须为启动配置中的所有选项卡返回true
。 这是设置“应用”按钮的启用状态的(其中一个)位置:
org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.updateButtons()
/**
* updates the button states
*/
private void updateButtons() {
boolean dirty = isDirty() && canSave();
fApplyButton.setEnabled(dirty);
fRevertButton.setEnabled(dirty);
}
addSelectionListener
。 (甚至可能是在这个不寻常的时间响应事件导致问题?)