/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.plugin.ij.completion.handlers;
import com.intellij.codeInsight.completion.CompletionParameters;
import com.intellij.codeInsight.completion.CompletionResultSet;
import com.intellij.codeInsight.completion.PrefixMatcher;
import com.intellij.openapi.project.Project;
import gw.plugin.ij.completion.model.BeanInfoModel;
import gw.plugin.ij.completion.model.BeanTree;
import gw.plugin.ij.completion.proposals.GosuCompletionProposal;
import gw.plugin.ij.completion.proposals.PathCompletionProposal;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.List;
public abstract class AbstractPathCompletionHandler extends AbstractCompletionHandler {
private final Project _project;
private final PrefixMatcher _matcher;
public AbstractPathCompletionHandler(Project p, CompletionParameters params, PrefixMatcher matcher, CompletionResultSet result) {
super(params, result);
_project = p;
_matcher = matcher;
}
protected void makeProposals(@NotNull BeanInfoModel model) {
BeanTree root = model.getRoot();
for (int i = 0; i < root.getChildCount(); i++) {
BeanTree child = root.getChildAt(i);
if (_matcher == null || _matcher.prefixMatches(child.getBeanNode().getName())) {
addCompletion(makeProposal(child));
}
}
}
protected GosuCompletionProposal makeProposal(BeanTree child) {
return new PathCompletionProposal(_project, child);
}
@Nullable
@Override
public String getStatusMessage() {
return null;
}
public Project getProject() {
return _project;
}
}