package com.horstmann.violet.eclipseplugin.file;
import java.io.IOException;
import org.eclipse.core.runtime.IProgressMonitor;
import com.horstmann.violet.framework.file.IFile;
import com.horstmann.violet.framework.file.chooser.IFileChooserService;
import com.horstmann.violet.framework.file.naming.ExtensionFilter;
import com.horstmann.violet.framework.file.persistence.IFileReader;
import com.horstmann.violet.framework.file.persistence.IFileWriter;
import com.horstmann.violet.framework.injection.bean.ManiocFramework.ManagedBean;
@ManagedBean(registeredManually=true)
public class EclipseFileChooserService implements IFileChooserService
{
private org.eclipse.core.resources.IFile eclipseFile;
private EclipseFileSaver eclipseFileSaver;
private IFileReader eclipseFileOpener;
private EclipseFileSaver getFileSaver()
{
if (this.eclipseFileSaver == null)
{
if (this.eclipseFile == null) throw new RuntimeException("Eclipse file must be set before EclipseFileSaver creation");
this.eclipseFileSaver = new EclipseFileSaver(this.eclipseFile);
}
return this.eclipseFileSaver;
}
public void setEclipseFile(org.eclipse.core.resources.IFile eclipseFile)
{
this.eclipseFile = eclipseFile;
}
public void changeProgressMonitor(IProgressMonitor progressMonitor)
{
getFileSaver().setProgressMonitor(progressMonitor);
}
@Override
public boolean isWebStart()
{
return false;
}
@Override
public IFileReader chooseAndGetFileReader() throws IOException
{
if (this.eclipseFileOpener == null)
{
if (this.eclipseFile == null) throw new RuntimeException("Eclipse file must be set before EclipseFileOpener creation");
this.eclipseFileOpener = new EclipseFileOpener(this.eclipseFile);
}
return this.eclipseFileOpener;
}
@Override
public IFileReader getFileReader(IFile arg0) throws IOException
{
if (this.eclipseFileOpener == null)
{
if (this.eclipseFile == null) throw new RuntimeException("Eclipse file must be set before EclipseFileOpener creation");
this.eclipseFileOpener = new EclipseFileOpener(this.eclipseFile);
}
return this.eclipseFileOpener;
}
@Override
public IFileWriter chooseAndGetFileWriter(ExtensionFilter... arg0) throws IOException
{
return this.getFileSaver();
}
@Override
public IFileWriter getFileWriter(IFile arg0) throws IOException
{
return this.getFileSaver();
}
}