在Eclipse RCP中,要根据编辑器中的"脏"属性禁用保存工具栏按钮,可以通过以下步骤实现:
public class DirtyListener implements IPropertyChangeListener {
@Override
public void propertyChange(PropertyChangeEvent event) {
if (event.getProperty().equals(IEditorPart.PROP_DIRTY)) {
// 更新工具栏按钮状态
}
}
}
init
方法中添加监听器。@Override
public void init(IEditorSite site, IEditorInput input) throws PartInitException {
setSite(site);
setInput(input);
// 添加监听器
editorPart.addPropertyChangeListener(new DirtyListener());
}
DirtyListener
中更新工具栏按钮状态。public class DirtyListener implements IPropertyChangeListener {
private ToolItem saveToolItem;
public DirtyListener(ToolItem saveToolItem) {
this.saveToolItem = saveToolItem;
}
@Override
public void propertyChange(PropertyChangeEvent event) {
if (event.getProperty().equals(IEditorPart.PROP_DIRTY)) {
boolean isDirty = (boolean) event.getNewValue();
// 更新工具栏按钮状态
saveToolItem.setEnabled(!isDirty);
}
}
}
createPartControl
方法中获取工具栏按钮并添加监听器。@Override
public void createPartControl(Composite parent) {
// 创建工具栏
ToolBar toolbar = new ToolBar(parent, SWT.FLAT);
// 创建保存按钮
ToolItem saveToolItem = new ToolItem(toolbar, SWT.PUSH);
saveToolItem.setText("Save");
saveToolItem.setImage(ImageDescriptor.createFromURL(getClass().getResource("/icons/save.png")).createImage());
saveToolItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
// 保存编辑器内容
}
});
// 添加监听器
editorPart.addPropertyChangeListener(new DirtyListener(saveToolItem));
}
通过以上步骤,可以实现在Eclipse RCP中根据编辑器中的"脏"属性禁用保存工具栏按钮的功能。
领取专属 10元无门槛券
手把手带您无忧上云