package jetbrains.mps.ide.editor.warningPanel;
import com.intellij.openapi.project.Project;
import jetbrains.mps.ide.project.ProjectHelper;
import jetbrains.mps.smodel.SModelOperations;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.mps.openapi.model.SModel;
import org.jetbrains.mps.openapi.model.SModelReference;
import org.jetbrains.mps.openapi.model.SNode;
import org.jetbrains.mps.openapi.module.SRepository;
/**
* User: shatalin
* Date: 6/19/13
*/
public class UnresolvedModelImportsProvider implements EditorWarningsProvider {
@Nullable
@Override
public WarningPanel getWarningPanel(@NotNull SNode node, @NotNull Project project) {
jetbrains.mps.project.Project mpsProject = ProjectHelper.toMPSProject(project);
if (mpsProject != null && hasUnresolvedImportedModels(mpsProject.getRepository(), node.getModel())) {
return new WarningPanel(this, "Warning: the model has unresolved model imports. Automatic reference resolving was switched off.");
}
return null;
}
private boolean hasUnresolvedImportedModels(SRepository repository, SModel model) {
if (model == null) {
return false;
}
for (SModelReference importedModel : SModelOperations.getImportedModelUIDs(model)) {
if (importedModel.resolve(repository) == null) {
return true;
}
}
return false;
}
}