/*
 * ̃\[XR[h blanco FrameworkɂĎĂ܂B
 * EclipsevOC [BlancoAntTask]̃hLgvoC_NX
 */
package blanco.plugin.anttask.editors;

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;

import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.text.IDocument;
import org.eclipse.ui.IFileEditorInput;
import org.eclipse.ui.editors.text.StorageDocumentProvider;

/**
 * EclipsevOC [BlancoAntTask]̃hLgvoC_NXB
 *
 * blancoAntTaskvOC̃\[XR[ĥ߂̒`łB<br>
 */
public class BlancoAntTaskDocumentProvider extends StorageDocumentProvider {
    /**
     * hLg̓ǂݍݏI[o[Ch܂B
     *
     * @param document hLgIuWFNg
     * @param contentStream Rec̃Xg[
     * @param encodingIgnored GR[fBOw肪Ăяon܂B̃p[^͖܂B
     * @throws CoreException
     */
    protected void setDocumentContent(final IDocument document, final InputStream contentStream, final String encodingIgnored) throws CoreException {
        // GR[fBO͖ċI UTF-8Ƃ܂B
        super.setDocumentContent(document, contentStream, "UTF-8");
    }

    /**
     * hLg̕ۑI[o[Ch܂B
     *
     * @param monitor Eclipse̐ij^
     * @param element Gg
     * @param document hLgIuWFNg
     * @param overwrite ㏑ǂ
     * @throws CoreException
     */
    protected void doSaveDocument(final IProgressMonitor monitor, final Object element, final IDocument document, final boolean overwrite) throws CoreException {
        if (element instanceof IFileEditorInput) {
            // ̏ꏊŕۑs܂B
            IFileEditorInput input = (IFileEditorInput) element;
            String editorText = getDocument(input).get();

            try {
                input.getFile().setContents(new ByteArrayInputStream(editorText.getBytes("UTF-8")), true, false, monitor);
            } catch (UnsupportedEncodingException e) {
                // ̃P[X݂͑܂B
                e.printStackTrace();
            }
        }
    }
}
