日食 - 自定义启动配置 - 应用/还原按钮
我正在做我的自定义启动配置类型。我实现了启动配置选项卡并面对奇怪的问题。当我做到以下几点时日食 - 自定义启动配置 - 应用/还原按钮
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!
}
});
我该如何解决这个问题?
我不知道单从这些信息您的问题,但只是几件事情要检查:
- 你有没有证实
setDirty(true)
被称为(例如,使用的println或断点?) - 有你把手表放在
org.eclipse.debug.ui.AbstractLaunchConfigurationTab.fDirty
看看它是否改回来了? - 你重写
isDirty
? - 从表中移除一个项目使得启动配置以某种方式变得无效,即不能
Apply
时无效值都在推出配置。例如,为了可保存,canSave
必须返回true
作为启动配置一部分的所有选项卡。
这是代替(S),用于设置应用按钮的启用状态(的一个):
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);
}
- 考虑如果一个鼠标听众是你想要的。请注意,您正在响应MouseDown,如果某个用户选中了该控件并按Enter/Space键,则可能无法达到您所期望的效果。更典型的做法是按钮为
addSelectionListener
。 (难道甚至是响应事件,在这个不寻常的时间导致的吗?)
是的,看看update()方法,使用setDirty(真)肯定被称为 2.好主意,我会检查它在几个小时内,在这里报告,感谢 3.无 4.我不这么认为。你能否澄清什么可能是无效的启动配置? –
已更新4以获取更多信息。 BTW至于1我可以看到update()调用setDirty(),但我不能告诉的是,如果您确实确保当您向下执行鼠标时,实际上正在调用该方法,并且没有其他事情出错了(隐藏在引用中的异常,例如)。对不起,如果我对于1是非常基本的,如果你已经证实了这一点,没有冒犯,我只想要最好的答案。 –
添加了第5个选项,尽管我建议您不管:-) –
可能澄清事情的另一个问题。如果您执行“添加”(启用“应用”),然后执行“删除”,是否禁用“应用”按钮? –
作为旁注:用SelectionAdapter替换MouseListener。 – pimpf0r
添加和删除后,应用按钮保持启用状态。是的,我会取代它,谢谢 –