/** * This file is licensed under the University of Illinois/NCSA Open Source License. See LICENSE.TXT for details. */ package edu.illinois.codingtracker.operations.conflicteditors; import java.lang.reflect.InvocationTargetException; import org.eclipse.compare.CompareConfiguration; import org.eclipse.compare.CompareEditorInput; import org.eclipse.compare.internal.BufferedResourceNode; import org.eclipse.compare.structuremergeviewer.DiffNode; import org.eclipse.compare.structuremergeviewer.Differencer; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; /** * * @author Stas Negara * */ @SuppressWarnings("restriction") public class DocumentCompareEditorInput extends CompareEditorInput { private BufferedResourceNode leftNode; private BufferedResourceNode rightNode; public DocumentCompareEditorInput(IResource resource, String initialContent) { super(new CompareConfiguration()); setupNodes(resource, initialContent); setTitle(resource.getName()); setDirty(true); } @Override public void saveChanges(IProgressMonitor monitor) throws CoreException { flushViewers(monitor); leftNode.commit(monitor); setDirty(false); } @Override protected Object prepareInput(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { return new DiffNode(Differencer.CHANGE, null, leftNode, rightNode); } private void setupNodes(IResource resource, String initialContent) { leftNode= new BufferedResourceNode(resource); leftNode.setContent(initialContent.getBytes()); rightNode= new BufferedResourceNode(resource); rightNode.setContent(new byte[0]); } }