package com.squareup.ideaplugin.otto; import com.intellij.openapi.ui.popup.JBPopupFactory; import com.intellij.openapi.ui.popup.ListPopup; import com.intellij.openapi.ui.popup.PopupStep; import com.intellij.openapi.ui.popup.util.BaseListPopupStep; import com.intellij.ui.awt.RelativePoint; import org.jetbrains.annotations.NotNull; public class PickAction { public enum Type { PRODUCER("@Produce"), EVENT_POST("Post events"); private String name; private Type(String name) { this.name = name; } @Override public String toString() { return name; } } public static void startPicker(Type[] displayedTypes, RelativePoint relativePoint, final Callback callback) { ListPopup listPopup = JBPopupFactory.getInstance() .createListPopup(new BaseListPopupStep<Type>("Select Type", displayedTypes) { @NotNull @Override public String getTextFor(Type value) { return value.toString(); } @Override public PopupStep onChosen(Type selectedValue, boolean finalChoice) { callback.onTypeChose(selectedValue); return super.onChosen(selectedValue, finalChoice); } }); listPopup.show(relativePoint); } public interface Callback { void onTypeChose(Type clazz); } }