我正在尝试使用 Eclipse 比较编辑器(org.eclipse.compare)来比较两个文件。比较编辑器打开并显示差异。但是在比较编辑器中未启用任何编辑或合并。首先,我正在准备输入和调用CompareUI.openCompareEditor(input)
。
public class CompareItem implements IStreamContentAccessor, ITypedElement, IModificationDate {
private File content;
private long modifiedDate;
private String fileName;
public CompareItem(File left, long lastModified, String name) {
content = left;
modifiedDate = lastModified;
fileName = name;
}
@Override
public long getModificationDate() {
return modifiedDate;
}
@Override
public String getName() {
return fileName;
}
@Override
public String getType() {
return "JAVA";
}
@Override
public InputStream getContents() {
try {
return new FileInputStream(content);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return null;
}
@Override
public Image getImage() {
return null;
}
}
public class CompareInput extends CompareEditorInput {
public CompareInput() {
super(new CompareConfiguration());
}
protected Object prepareInput(IProgressMonitor pm) {
File file1 = new File("D:\\hello.txt");
File file2 = new File("D:\\hello2.txt");
CompareItem ancestor =
new CompareItem(file1, file1.lastModified(), file1.getName());
CompareItem left =
new CompareItem(file1, file1.lastModified(), file1.getName());
CompareItem right =
new CompareItem(file2, file2.lastModified(), file2.getName());
return new DiffNode(Differencer.CHANGE, ancestor, left, right);
}
}
public class SampleHandler extends AbstractHandler {
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
CompareInput input = new CompareInput();
CompareConfiguration compareConfiguration = input.getCompareConfiguration();
compareConfiguration.setLeftEditable(true);
compareConfiguration.setRightEditable(true);
CompareUI.openCompareEditor(input);
return null;
}
}
这将打开 Eclipse 比较编辑器,如屏幕截图所示(比较编辑器输出),但无法在比较编辑器中编辑(不允许添加或删除任何字符)左侧文件或右侧文件。如屏幕截图所示,“从左到右复制更改”和“从右到左复制更改”按钮也被禁用。
如何在此编辑器中启用编辑?