package jetbrains.mps.ide.make;
/*Generated by MPS */
import jetbrains.mps.make.script.IOption;
import jetbrains.mps.make.script.IQuery;
import jetbrains.mps.project.Project;
import java.util.List;
import jetbrains.mps.internal.collections.runtime.Sequence;
import jetbrains.mps.internal.collections.runtime.ListSequence;
import jetbrains.mps.internal.collections.runtime.ISelector;
import jetbrains.mps.baseLanguage.closures.runtime.Wrappers;
import jetbrains.mps.ide.ThreadUtils;
import com.intellij.openapi.ui.Messages;
import jetbrains.mps.ide.project.ProjectHelper;
public class UIQueryRelayStrategy {
public UIQueryRelayStrategy() {
}
public <T extends IOption> T relayQuery(final IQuery<T> query, final Project mpsProject) {
List<T> optList = Sequence.fromIterable(query.options()).toListSequence();
final String[] options = ListSequence.fromList(optList).select(new ISelector<T, String>() {
public String select(T o) {
return o.getText();
}
}).toGenericArray(String.class);
final int defopt = ListSequence.fromList(optList).indexOf(query.defaultOption());
final Wrappers._int res = new Wrappers._int(-1);
ThreadUtils.runInUIThreadAndWait(new Runnable() {
public void run() {
res.value = Messages.showDialog(ProjectHelper.toIdeaProject(mpsProject), query.getText(), query.getTitle(), options, defopt, Messages.getQuestionIcon());
}
});
if (res.value < 0) {
return query.voidOption();
}
return ListSequence.fromList(optList).getElement(res.value);
}
public interface DialogListener {
void beforeDialogShown();
}
}