/*******************************************************************************
* Copyright (c) 2009 Andrey Loskutov.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
* Contributor: Andrey Loskutov - initial API and implementation
*******************************************************************************/
package de.loskutov.anyedit.actions.compare;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.text.IDocument;
import de.loskutov.anyedit.compare.ClipboardStreamContent;
import de.loskutov.anyedit.compare.StreamContent;
import de.loskutov.anyedit.util.EclipseUtils;
import de.loskutov.anyedit.util.TextUtil;
/**
* @author Andrey
*/
public class CompareWithClipboardAction extends CompareWithAction {
public CompareWithClipboardAction() {
super();
}
// public void selectionChanged(IAction action, ISelection selection) {
// super.selectionChanged(action, selection);
// XXX action.isEnabled() check causes StackOverflow on Eclipse 3.3
// if (action.isEnabled()) {
/* XXX bug in SWT: if running eclipse in debugger, debugger stops to respond on Windows
* as soon as the first eclipse tries to access the clipboard
at org.eclipse.swt.internal.ole.win32.COM.VtblCall(Native Method)
at org.eclipse.swt.internal.ole.win32.IDataObject.GetData(IDataObject.java:25)
at org.eclipse.swt.dnd.TextTransfer.nativeToJava(TextTransfer.java:121)
at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:332)
at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:253)
at de.loskutov.anyedit.util.EclipseUtils.getClipboardContent(EclipseUtils.java:517)
at de.loskutov.anyedit.actions.compare.CompareWithClipboardAction.selectionChanged(CompareWithClipboardAction.java:35)
at org.eclipse.ui.internal.PluginAction.refreshEnablement(PluginAction.java:206)
at org.eclipse.ui.internal.PluginAction.selectionChanged(PluginAction.java:277)
*/
// String clipboardContent = EclipseUtils.getClipboardContent();
// if (clipboardContent == null || clipboardContent.length() == 0) {
// action.setEnabled(false);
// }
// }
// }
@Override
protected StreamContent createRightContent(StreamContent left) throws CoreException {
String type = left.getType();
String content = EclipseUtils.getClipboardContent();
String newLine = null;
IFile file = selectedContent != null ? selectedContent.getIFile() : null;
IDocument document = editor.getDocument();
if (document != null){
newLine = EclipseUtils.getNewLineFromDocument(document);
} else if (file != null) {
newLine = EclipseUtils.getNewLineFromFile(file);
}
if (content == null || content.length() == 0) {
return null;
}
return new ClipboardStreamContent(type, newLine, TextUtil.SYSTEM_CHARSET);
}
}