Package com.squareup.ideaplugin.dagger

Source Code of com.squareup.ideaplugin.dagger.PickTypeAction

package com.squareup.ideaplugin.dagger;

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.psi.PsiClass;
import com.intellij.psi.PsiParameter;
import com.intellij.ui.awt.RelativePoint;
import java.util.Set;
import org.jetbrains.annotations.NotNull;

public class PickTypeAction {

  public void startPickTypes(RelativePoint relativePoint, PsiParameter[] psiParameters,
      final Callback callback) {
    if (psiParameters.length == 0) return;

    ListPopup listPopup = JBPopupFactory.getInstance()
        .createListPopup(new BaseListPopupStep<PsiParameter>("Select Type", psiParameters) {
          @NotNull @Override public String getTextFor(PsiParameter value) {
            StringBuilder builder = new StringBuilder();

            Set<String> annotations = PsiConsultantImpl.getQualifierAnnotations(value);
            for (String annotation : annotations) {
              String trimmed = annotation.substring(annotation.lastIndexOf(".") + 1);
              builder.append("@").append(trimmed).append(" ");
            }

            PsiClass notLazyOrProvider = PsiConsultantImpl.checkForLazyOrProvider(value);
            return builder.append(notLazyOrProvider.getName()).toString();
          }

          @Override public PopupStep onChosen(PsiParameter selectedValue, boolean finalChoice) {
            callback.onParameterChosen(selectedValue);
            return super.onChosen(selectedValue, finalChoice);
          }
        });

    listPopup.show(relativePoint);
  }

  public interface Callback {
    void onParameterChosen(PsiParameter clazz);
  }
}
TOP

Related Classes of com.squareup.ideaplugin.dagger.PickTypeAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.