2

我正在尝试使用 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 比较编辑器,如屏幕截图所示(比较编辑器输出),但无法在比较编辑器中编辑(不允许添加或删除任何字符)左侧文件或右侧文件。如屏幕截图所示,“从左到右复制更改”和“从右到左复制更改”按钮也被禁用。

如何在此编辑器中启用编辑?

4

0 回答 0