public DeviceConfiguratorPanel()

in android/src/org/jetbrains/android/uipreview/DeviceConfiguratorPanel.java [119:256]


  public DeviceConfiguratorPanel() {
    super(new BorderLayout());

    createUIComponents();

    myChosenQualifiersConfig.reset();

    for (ResourceQualifier qualifier : myAvailableQualifiersConfig.getQualifiers()) {
      final String name = qualifier.getShortName();
      if (qualifier instanceof CountryCodeQualifier) {
        myEditors.put(name, new MyCountryCodeEditor());
      }
      else if (qualifier instanceof NetworkCodeQualifier) {
        myEditors.put(name, new MyNetworkCodeEditor());
      }
      else if (qualifier instanceof KeyboardStateQualifier) {
        myEditors.put(name, new MyKeyboardStateEditor());
      }
      else if (qualifier instanceof NavigationMethodQualifier) {
        myEditors.put(name, new MyNavigationMethodEditor());
      }
      else if (qualifier instanceof NavigationStateQualifier) {
        myEditors.put(name, new MyNavigationStateEditor());
      }
      else if (qualifier instanceof DensityQualifier) {
        myEditors.put(name, new MyDensityEditor());
      }
      else if (qualifier instanceof ScreenDimensionQualifier) {
        myEditors.put(name, new MyScreenDimensionEditor());
      }
      else if (qualifier instanceof ScreenOrientationQualifier) {
        myEditors.put(name, new MyScreenOrientationEditor());
      }
      else if (qualifier instanceof ScreenRatioQualifier) {
        myEditors.put(name, new MyScreenRatioEditor());
      }
      else if (qualifier instanceof ScreenSizeQualifier) {
        myEditors.put(name, new MyScreenSizeEditor());
      }
      else if (qualifier instanceof TextInputMethodQualifier) {
        myEditors.put(name, new MyTextInputMethodEditor());
      }
      else if (qualifier instanceof TouchScreenQualifier) {
        myEditors.put(name, new MyTouchScreenEditor());
      }
      else if (qualifier instanceof VersionQualifier) {
        myEditors.put(name, new MyVersionEditor());
      }
      else if (qualifier instanceof NightModeQualifier) {
        myEditors.put(name, new MyNightModeEditor());
      }
      else if (qualifier instanceof UiModeQualifier) {
        myEditors.put(name, new MyUiModeEditor());
      }
      else if (qualifier instanceof LocaleQualifier) {
        myEditors.put(name, new MyLocaleEditor());
      }
      else if (qualifier instanceof SmallestScreenWidthQualifier) {
        myEditors.put(name, new MySmallestScreenWidthEditor());
      }
      else if (qualifier instanceof ScreenWidthQualifier) {
        myEditors.put(name, new MyScreenWidthEditor());
      }
      else if (qualifier instanceof ScreenHeightQualifier) {
        myEditors.put(name, new MyScreenHeightEditor());
      }
      else if (qualifier instanceof LayoutDirectionQualifier) {
        myEditors.put(name, new MyLayoutDirectionEditor());
      }
      else if (qualifier instanceof ScreenRoundQualifier) {
        myEditors.put(name, new MyScreenRoundEditor());
      } else {
        LOG.info("Missing editor for qualifier " + qualifier);
      }
    }

    for (String name : myEditors.keySet()) {
      myQualifierOptionsPanel.add(myEditors.get(name).getComponent(), name);
    }

    myAvailableQualifiersList.setCellRenderer(SimpleListCellRenderer.create((label, value, index) -> {
      if (value == null) return;
      label.setText(value.getShortName());
      label.setIcon(getResourceIcon(value));
    }));

    myChosenQualifiersList.setCellRenderer(SimpleListCellRenderer.create((label, value, index) -> {
      if (value == null) return;
      ResourceQualifier qualifier = getActualQualifier(value);
      String shortDisplayValue = qualifier.getShortDisplayValue();
      label.setText(shortDisplayValue != null && !shortDisplayValue.isEmpty() ?
                    shortDisplayValue : qualifier.getShortName() + " (?)");
      label.setIcon(getResourceIcon(qualifier));
    }));

    myAddQualifierButton.addActionListener(e -> {
      final ResourceQualifier selectedQualifier = myAvailableQualifiersList.getSelectedValue();
      if (selectedQualifier == null) {
        return;
      }
      final int index = myAvailableQualifiersList.getSelectedIndex();

      myAvailableQualifiersConfig.removeQualifier(selectedQualifier);
      myChosenQualifiersConfig.addQualifier(selectedQualifier);

      updateLists();
      applyEditors();

      if (index >= 0) {
        myAvailableQualifiersList.setSelectedIndex(Math.min(index, myAvailableQualifiersList.getItemsCount() - 1));
      }
      myChosenQualifiersList.setSelectedValue(selectedQualifier, true);
    });

    myRemoveQualifierButton.addActionListener(e -> {
      final ResourceQualifier selectedQualifier = myChosenQualifiersList.getSelectedValue();
      if (selectedQualifier == null) {
        return;
      }
      final int index = myChosenQualifiersList.getSelectedIndex();

      myChosenQualifiersConfig.removeQualifier(selectedQualifier);
      myAvailableQualifiersConfig.addQualifier(selectedQualifier);
      updateLists();
      applyEditors();

      if (index >= 0) {
        myChosenQualifiersList.setSelectedIndex(Math.min(index, myChosenQualifiersList.getItemsCount() - 1));
      }
    });

    myAvailableQualifiersList.addListSelectionListener(e -> updateButtons());

    myChosenQualifiersList.addListSelectionListener(e -> {
      updateButtons();
      updateQualifierEditor();
    });
  }