blob: 94718054225202e5d027ff245ed477267d962aaf [file] [log] [blame]
/*=============================================================================#
# Copyright (c) 2009, 2019 Stephan Wahlbrink and others.
#
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License 2.0 which is available at
# https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
# which is available at https://www.apache.org/licenses/LICENSE-2.0.
#
# SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
#
# Contributors:
# Stephan Wahlbrink <sw@wahlbrink.eu> - initial API and implementation
#=============================================================================*/
package org.eclipse.statet.internal.redocs.wikitext.r.core.model;
import java.util.List;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.statet.docmlet.wikitext.core.ast.Embedded;
import org.eclipse.statet.docmlet.wikitext.core.ast.WikitextAstInfo;
import org.eclipse.statet.docmlet.wikitext.core.markup.IMarkupLanguage;
import org.eclipse.statet.docmlet.wikitext.core.model.EmbeddingReconcileItem;
import org.eclipse.statet.docmlet.wikitext.core.model.IWikidocModelInfo;
import org.eclipse.statet.docmlet.wikitext.core.model.IWikidocSuModelContainerEmbeddedExtension;
import org.eclipse.statet.docmlet.wikitext.core.model.WikidocSuModelContainer;
import org.eclipse.statet.docmlet.wikitext.core.model.WikitextModel;
import org.eclipse.statet.internal.redocs.wikitext.r.RedocsWikitextRPlugin;
import org.eclipse.statet.ltk.core.LTK;
import org.eclipse.statet.ltk.core.SourceContent;
import org.eclipse.statet.ltk.issues.core.ProblemRequestor;
import org.eclipse.statet.r.core.model.RModel;
import org.eclipse.statet.redocs.wikitext.r.core.model.IWikidocRweaveSourceUnit;
import org.eclipse.statet.redocs.wikitext.r.core.model.WikitextRweaveModel;
import org.eclipse.statet.redocs.wikitext.r.core.source.IRweaveMarkupLanguage;
public class WikidocRweaveSuModelContainer extends WikidocSuModelContainer<IWikidocRweaveSourceUnit>
implements IWikidocSuModelContainerEmbeddedExtension {
public WikidocRweaveSuModelContainer(final IWikidocRweaveSourceUnit su) {
super(su);
}
@Override
public boolean isContainerFor(final String modelTypeId) {
return (modelTypeId == WikitextModel.WIKIDOC_TYPE_ID || modelTypeId == WikitextRweaveModel.WIKIDOC_R_MODEL_TYPE_ID);
}
public String getNowebType() {
return RModel.R_TYPE_ID;
}
@Override
public void reconcileEmbeddedAst(final SourceContent content, final List<Embedded> list,
final IMarkupLanguage markupLanguage, final int level,
final IProgressMonitor monitor) {
if (markupLanguage instanceof IRweaveMarkupLanguage) {
WikidocRChunkReconciler.getInstance((IRweaveMarkupLanguage) markupLanguage)
.reconcileAst(this, content, list, monitor);
}
}
@Override
public void reconcileEmbeddedModel(final SourceContent content, final IWikidocModelInfo wikitextModel,
final List<EmbeddingReconcileItem> list,
final int level, final IProgressMonitor monitor) {
final WikitextAstInfo astInfo= wikitextModel.getAst();
final IMarkupLanguage markupLanguage= astInfo.getMarkupLanguage();
if (markupLanguage instanceof IRweaveMarkupLanguage) {
WikidocRChunkReconciler.getInstance((IRweaveMarkupLanguage) markupLanguage)
.reconcileModel(this, content, wikitextModel, list, level, monitor);
}
}
@Override
public void reportEmbeddedProblems(final SourceContent content, final IWikidocModelInfo wikitextModel,
final ProblemRequestor problemRequestor, final int level,
final IProgressMonitor monitor) {
final WikitextAstInfo astInfo= wikitextModel.getAst();
final IMarkupLanguage markupLanguage= astInfo.getMarkupLanguage();
if (markupLanguage instanceof IRweaveMarkupLanguage) {
WikidocRChunkReconciler.getInstance((IRweaveMarkupLanguage) markupLanguage)
.reportEmbeddedProblems(this, content, wikitextModel, problemRequestor, level, monitor);
}
}
@Override
public ProblemRequestor createProblemRequestor() {
if (getMode() == LTK.EDITOR_CONTEXT) {
return RedocsWikitextRPlugin.getInstance().getDocRDocumentProvider().createProblemRequestor(
getSourceUnit() );
}
return null;
}
}