blob: 5384fc17414969d0763e65a943bff53e53d4c241 [file] [log] [blame]
/*=============================================================================#
# Copyright (c) 2009, 2020 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.tex.r.model;
import java.util.List;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.statet.jcommons.lang.NonNullByDefault;
import org.eclipse.statet.jcommons.lang.Nullable;
import org.eclipse.statet.docmlet.tex.core.ast.Embedded;
import org.eclipse.statet.docmlet.tex.core.model.LtxSourceUnitModelInfo;
import org.eclipse.statet.docmlet.tex.core.model.TexModel;
import org.eclipse.statet.docmlet.tex.core.model.build.EmbeddingReconcileItem;
import org.eclipse.statet.docmlet.tex.core.model.build.LtxSourceUnitModelContainer;
import org.eclipse.statet.docmlet.tex.core.model.build.LtxSourceUnitModelContainerEmbeddedExtension;
import org.eclipse.statet.internal.redocs.tex.r.RedocsTexRPlugin;
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.tex.r.core.model.LtxRweaveSourceUnit;
import org.eclipse.statet.redocs.tex.r.core.model.TexRweaveModel;
@NonNullByDefault
public class LtxRweaveSuModelContainer
extends LtxSourceUnitModelContainer<LtxRweaveSourceUnit>
implements LtxSourceUnitModelContainerEmbeddedExtension {
public LtxRweaveSuModelContainer(final LtxRweaveSourceUnit su) {
super(su);
}
@Override
public boolean isContainerFor(final String modelTypeId) {
return (modelTypeId == TexModel.LTX_TYPE_ID || modelTypeId == TexRweaveModel.LTX_R_MODEL_TYPE_ID);
}
@Override
public String getNowebType() {
return RModel.R_TYPE_ID;
}
@Override
public void reconcileEmbeddedAst(final SourceContent content, final List<Embedded> list,
final int level, final IProgressMonitor monitor) {
LtxRChunkReconciler.getInstance()
.reconcileAst(this, content, list, monitor);
}
@Override
public void reconcileEmbeddedModel(final SourceContent content, final LtxSourceUnitModelInfo texModel,
final List<EmbeddingReconcileItem> list,
final int level, final IProgressMonitor monitor) {
LtxRChunkReconciler.getInstance()
.reconcileModel(this, content, texModel, list, level, monitor);
}
@Override
public void reportEmbeddedProblems(final SourceContent content, final LtxSourceUnitModelInfo texModel,
final ProblemRequestor problemRequestor,
final int level, final IProgressMonitor monitor) {
LtxRChunkReconciler.getInstance()
.reportEmbeddedProblems(this, content, texModel, problemRequestor, level, monitor);
}
@Override
public @Nullable ProblemRequestor createProblemRequestor() {
if (getMode() == Ltk.EDITOR_CONTEXT) {
return RedocsTexRPlugin.getInstance().getDocRDocumentProvider()
.createProblemRequestor(getSourceUnit());
}
return null;
}
}