/*
* Copyright 2015 Nokia Solutions and Networks
* Licensed under the Apache License, Version 2.0,
* see license.txt file for details.
*/
package org.robotframework.ide.eclipse.main.plugin.tableeditor.source;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IDocumentPartitioner;
import org.eclipse.jface.text.rules.FastPartitioner;
import org.eclipse.ui.IFileEditorInput;
import org.eclipse.ui.editors.text.FileDocumentProvider;
import org.robotframework.ide.eclipse.main.plugin.model.RobotSuiteFile;
import com.google.common.base.Supplier;
class SuiteSourceDocumentProvider extends FileDocumentProvider {
private final Supplier<RobotSuiteFile> supplier;
SuiteSourceDocumentProvider(final Supplier<RobotSuiteFile> supplier) {
this.supplier = supplier;
}
@Override
protected IDocument createEmptyDocument() {
return new RobotDocument(supplier);
}
@Override
protected IDocument createDocument(final Object element) throws CoreException {
final IDocument document = super.createDocument(element);
if (document != null) {
final IDocumentPartitioner partitioner = new FastPartitioner(
new SuiteSourcePartitionScanner(supplier.get().isTsvFile()),
SuiteSourcePartitionScanner.LEGAL_CONTENT_TYPES);
partitioner.connect(document);
document.setDocumentPartitioner(partitioner);
}
return document;
}
@Override
public boolean isDeleted(final Object element) {
if (element instanceof IFileEditorInput) {
final IFileEditorInput input = (IFileEditorInput) element;
return !input.getFile().exists();
}
return super.isDeleted(element);
}
}