Java Eclipse-自定义启动配置-应用/恢复按钮
我正在自定义启动配置类型。我实现了LaunchConfiguration选项卡,并遇到了一个奇怪的问题。当我做以下事情时Java Eclipse-自定义启动配置-应用/恢复按钮,java,eclipse,eclipse-plugin,swt,Java,Eclipse,Eclipse Plugin,Swt,我正在自定义启动配置类型。我实现了LaunchConfiguration选项卡,并遇到了一个奇怪的问题。当我做以下事情时 private void update() { setDirty(true); updateLaunchConfigurationDialog(); } 在我的LaunchConfiguration选项卡类的一个地方,它工作正常,应用按钮变为启用状态。但是当我在另一个地方做的时候,它就不起作用了。我在上发现了类似的东西,但它并没有帮助我解决这个问题 请参阅下
private void update() {
setDirty(true);
updateLaunchConfigurationDialog();
}
在我的LaunchConfiguration选项卡类的一个地方,它工作正常,应用按钮变为启用状态。但是当我在另一个地方做的时候,它就不起作用了。我在上发现了类似的东西,但它并没有帮助我解决这个问题
请参阅下面的代码片段
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!
}
});
我如何解决这个问题?我不知道你的问题仅仅是从这些信息,但有几件事需要检查:
setDirty(true)
(例如,使用println或断点?)org.eclipse.debug.ui.AbstractLaunchConfigurationTab.fDirty
上放了一块手表,看看它是否会变回来李>
canSave
必须返回true
李>
这是设置应用按钮启用状态的位置之一:
org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.updateButtons()
addSelectionListener
。(甚至可能是在这个不寻常的时刻对事件的反应导致了问题?)1.是的,看看update()方法,setDirty(true)当然被调用为2。好主意,我会在几个小时后检查并在这里报告,谢谢。四号。我不这么认为。你能澄清一下在启动配置中什么是无效的吗?用更多信息更新了4。顺便说一句,对于1,我可以看到update()调用setDirty(),但我不能确定的是,当您按下鼠标时,是否确实在调用该方法,并且没有其他错误(例如,refresh中隐藏的异常)。很抱歉,如果我对1非常基本,没有冒犯的意思,如果您已经验证了这一点,我只想要最好的答案。添加了第五个选项,尽管我建议您无论如何进行更改:-)我覆盖了所有选项卡的canSave(),现在它只返回true。在调用
updateLanchConfigurationDialog()之前和之后,我还检查了isDirty()
和canSave()
代码>。它总是真的。此外,我还使用SelectionListener
在removeButton
上重新设置了MouseListener
,并覆盖了widgetSelected()
方法。我检查了当用户单击remove按钮时是否调用了update()
方法。但不幸的是,它没有解决这个问题,在cliclingremoveButton
之后,“应用”和“还原”按钮仍然被禁用。还有其他选择吗?我想我已经被这个问题弄疯了:(当你点击删除按钮时,你有没有在org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.updateButtons上设置断点?断点命中了吗?如果没有,试着从更新()中单步执行)如果你解决了问题,请贴出答案并接受:-)另一个可能澄清问题的问题。如果您执行“添加”(启用应用),然后执行“删除”,是否会禁用应用按钮?作为旁注:用SelectionAdapter替换MouseListener。添加和删除后,应用按钮将保持启用状态。是的,我会换的,谢谢
/**
* updates the button states
*/
private void updateButtons() {
boolean dirty = isDirty() && canSave();
fApplyButton.setEnabled(dirty);
fRevertButton.setEnabled(dirty);
}