/*******************************************************************************
* 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.replace;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.Path;
import org.eclipse.swt.widgets.FileDialog;
import de.loskutov.anyedit.AnyEditToolsPlugin;
import de.loskutov.anyedit.actions.compare.CompareWithExternalAction;
import de.loskutov.anyedit.util.EclipseUtils;
/**
* @author Andrey
*
*/
public class ReplaceWithExternalAction extends ReplaceWithAction {
public ReplaceWithExternalAction() {
super();
}
@Override
protected InputStream createInputStream() {
FileDialog dialog = new FileDialog(AnyEditToolsPlugin.getShell());
CompareWithExternalAction.preSelectPath(dialog);
String result = dialog.open();
if(result == null) {
return null;
}
CompareWithExternalAction.rememberPath(result);
IFile file = EclipseUtils.getIFile(new Path(result));
if (file == null) {
try {
return new FileInputStream(new File(result));
} catch (FileNotFoundException e) {
AnyEditToolsPlugin.logError("File not found: " + result, e);
return null;
}
}
if(file.getLocation() == null) {
try {
return new FileInputStream(file.getFullPath().toFile());
} catch (FileNotFoundException e) {
AnyEditToolsPlugin.logError("File not found: " + file, e);
return null;
}
}
try {
return file.getContents();
} catch (CoreException e) {
AnyEditToolsPlugin.logError("Can't get file content: " + file, e);
return null;
}
}
}