private List getThemes()

in designer/src/com/android/tools/idea/actions/ThemeSelectionPanel.java [235:356]


  private List<String> getThemes(@Nullable ThemeCategory category) {
    if (category == null) {
      return Collections.emptyList();
    }

    List<String> themes = myThemeMap.get(category);
    if (themes != null) {
      return themes;
    }

    themes = new ArrayList<>(50);

    switch (category) {
      case RECENT:
        if (ourRecent != null) {
          themes.addAll(ourRecent);
        }
        break;
      case HOLO:
        for (String theme : myFrameworkThemes) {
          if (theme.startsWith(HOLO_PREFIX) && !theme.startsWith(HOLO_LIGHT_PREFIX)) {
            themes.add(theme);
          }
        }
        break;
      case HOLO_LIGHT:
        for (String theme : myFrameworkThemes) {
          if (theme.startsWith(HOLO_LIGHT_PREFIX)) {
            themes.add(theme);
          }
        }
        break;
      case MATERIAL:
        for (String theme : myFrameworkThemes) {
          if (theme.startsWith(MATERIAL_PREFIX) && !theme.startsWith(MATERIAL_LIGHT_PREFIX)) {
            themes.add(theme);
          }
        }
        break;
      case MATERIAL_LIGHT:
        for (String theme : myFrameworkThemes) {
          if (theme.startsWith(MATERIAL_LIGHT_PREFIX)) {
            themes.add(theme);
          }
        }
        break;
      case PROJECT:
        themes.addAll(myProjectThemes);
        break;
      case CLASSIC:
        for (String theme : myFrameworkThemes) {
          if (!theme.startsWith(HOLO_PREFIX) && !theme.startsWith(DEVICE_PREFIX)) {
            themes.add(theme);
          }
        }
        break;
      case CLASSIC_LIGHT:
        for (String theme : myFrameworkThemes) {
          if (theme.startsWith(LIGHT_PREFIX)) {
            themes.add(theme);
          }
        }
        break;
      case LIGHT:
        for (String theme : myFrameworkThemes) {
          if (theme.startsWith(HOLO_LIGHT_PREFIX) || theme.startsWith(LIGHT_PREFIX) || theme.startsWith(DEVICE_LIGHT_PREFIX)
              || theme.startsWith(MATERIAL_LIGHT_PREFIX)) {
            themes.add(theme);
          }
        }
        for (String theme : myLibraryThemes) {
          if (theme.startsWith(HOLO_LIGHT_PREFIX) || theme.startsWith(LIGHT_PREFIX) || theme.startsWith(DEVICE_LIGHT_PREFIX)
              || theme.startsWith(MATERIAL_LIGHT_PREFIX)) {
            themes.add(theme);
          }
        }
        break;
      case DEVICE:
        for (String theme : myFrameworkThemes) {
          if (theme.startsWith(DEVICE_PREFIX)) {
            themes.add(theme);
          }
        }
        break;
      case DIALOGS:
        for (String theme : myProjectThemes) {
          if (theme.endsWith(DIALOG_SUFFIX) || theme.contains(DIALOG_PART)) {
            themes.add(theme);
          }
        }
        for (String theme : myFrameworkThemes) {
          if (theme.endsWith(DIALOG_SUFFIX) || theme.contains(DIALOG_PART)) {
            themes.add(theme);
          }
        }
        for (String theme : myLibraryThemes) {
          if (theme.endsWith(DIALOG_SUFFIX) || theme.contains(DIALOG_PART)) {
            themes.add(theme);
          }
        }
        break;
      case MANIFEST: {
        collectThemesFromManifest(myConfiguration.getConfigModule())
          .sorted()
          .map(ResolutionUtils::getQualifiedNameFromResourceUrl)
          .forEach(themes::add);
        break;
      }
      case ALL:
        themes.addAll(myProjectThemes);
        themes.addAll(myFrameworkThemes);
        themes.addAll(myLibraryThemes);
        break;
      case ROOT:
      default:
        assert false : category;
        break;
    }

    myThemeMap.put(category, themes);
    return themes;
  }