code: package gr.uom.java.jdeodorant.refactoring.views;
  
  import java.io.ByteArrayInputStream;
  import java.io.InputStream;
  import java.lang.reflect.InvocationTargetException;
  
  import org.eclipse.compare.CompareConfiguration;
  import org.eclipse.compare.CompareEditorInput;
  import org.eclipse.compare.IStreamContentAccessor;
  import org.eclipse.compare.ITypedElement;
  import org.eclipse.compare.structuremergeviewer.Differencer;
  import org.eclipse.core.runtime.CoreException;
  import org.eclipse.core.runtime.IProgressMonitor;
  import org.eclipse.core.runtime.NullProgressMonitor;
  import org.eclipse.swt.graphics.Image;
  
  public class StringCompareEditorInput extends CompareEditorInput {
  	private String input1;
  	private String input2;
  	
  	public StringCompareEditorInput(CompareConfiguration configuration, String input1, String input2) {
  		super(configuration);
  		this.input1 = input1;
  		this.input2 = input2;
  	}
  
  	@Override
  	protected Object prepareInput(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
  		Differencer d = new Differencer();
  		Object diff = d.findDifferences(false, new NullProgressMonitor(), null, null, new Input(input1), new Input(input2));
  		return diff; 
  	}
  	
  	private class Input implements ITypedElement, IStreamContentAccessor {
  		String fContent;
  		public Input(String s) {
  			fContent = s;
  		}
  
  		public String getName() {
  			return "name";
  		}
  
  		public Image getImage() {
  			return null;
  		}
  
  		public String getType() {
  			return "txt";
  		}
  
  		public InputStream getContents() throws CoreException {
  			return new ByteArrayInputStream(fContent.getBytes());
  		}
  	}
  }
  