package ru.naumen.gintonic.context.quickfix.moving;
import static ru.naumen.gintonic.utils.CollectionUtils.getFirst;
import java.util.List;
import org.eclipse.jdt.ui.text.java.IJavaCompletionProposal;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.contentassist.IContextInformation;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import ru.naumen.gintonic.command.BindingNavigationCycle;
import ru.naumen.gintonic.guice.statements.BindingDefinition;
import ru.naumen.gintonic.plugin.icons.Icons;
import ru.naumen.gintonic.project.source.references.SourceCodeReference;
import ru.naumen.gintonic.utils.ListUtils;
import ru.naumen.gintonic.widgets.Widgets;
public class ProposalGoToBindings implements IJavaCompletionProposal {
private List<BindingDefinition> bindingDefinitions;
public ProposalGoToBindings(List<BindingDefinition> bindingDefinitions) {
this.bindingDefinitions = bindingDefinitions;
}
@Override
public Point getSelection(IDocument document) {
return null;
}
@Override
public Image getImage() {
return Icons.ginTonicDefaultIconSmall;
}
@Override
public String getDisplayString() {
return "Go to bindings";
}
@Override
public String getAdditionalProposalInfo() {
return null;
}
@Override
public IContextInformation getContextInformation() {
return null;
}
@Override
public void apply(IDocument document) {
BindingDefinition bindingDefinition = null;
if(bindingDefinitions.size() > 1) {
bindingDefinition = Widgets.showUserSelectWithSelected(bindingDefinitions, getFirst(bindingDefinitions));
if(bindingDefinition == null) {
return;
}
}
if(bindingDefinitions.size() > 0) {
bindingDefinition = getFirst(bindingDefinitions);
}
BindingNavigationCycle navigationCycle = new BindingNavigationCycle(SourceCodeReference.createCurrent(),
ListUtils.newArrayList(bindingDefinition));
navigationCycle.jumpToNext();
}
@Override
public int getRelevance() {
return 0;
}
}