public void init()

in dmServer/src/main/java/com/intellij/dmserver/facet/DMModuleCompositeFacetSettingsPanel.java [68:196]


  public void init(@Nullable Project project,
                   @Nullable Module configuredModule,
                   @NotNull ModulesProvider modulesProvider,
                   @NotNull Disposable parentDisposable) {
    myConfiguredModule = configuredModule;
    if (myInitialized) {
      throw new RuntimeException("Should be called once");
    }
    myInitialized = true;

    myProject = project;
    myNestedUnitProvider = new NestedUnitProvider(configuredModule, modulesProvider);

    ButtonGroup radioGroup = new ButtonGroup();
    radioGroup.add(myPlanRadio);
    radioGroup.add(myPlatformArchiveRadio);

    Behavior[] behaviors = new Behavior[]{new PlanBehavior(), new ParBehavior()};
    myType2Behavior = new HashMap<>();
    for (final Behavior behavior : behaviors) {
      myType2Behavior.put(behavior.getType(), behavior);
      behavior.getRadioButton().addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
          setBehavior(behavior.getType());
        }
      });
    }

    myScopedCheckBox.addActionListener(new ActionListener() {

      @Override
      public void actionPerformed(ActionEvent e) {
        updateAvailableNestedModules();
      }
    });

    myNestedBundlesListModel = new DefaultListModel<>();
    myNestedBundlesList.setModel(myNestedBundlesListModel);
    myNestedBundlesList.setCellRenderer(SimpleListCellRenderer.create((label, value, index) -> {
      Module module = value.getModule();
      label.setText(myBehavior.getNestedUnitIdentityText(value));
      label.setIcon(getModuleIcon(module));
    }));
    myNestedBundlesList.addListSelectionListener(new ListSelectionListener() {

      @Override
      public void valueChanged(ListSelectionEvent e) {
        updateEnablement();
      }
    });

    setBehavior(DMCompositeType.PLAN);

    myAddBundleButton.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
        List<Module> toAdd = chooseNestedModules();
        List<NestedUnitIdentity> identitiesToAdd = new ArrayList<>();
        for (Module module : toAdd) {
          NestedUnitIdentity unitIdentity = new NestedUnitIdentity(module);
          myNestedBundlesListModel.addElement(unitIdentity);
          identitiesToAdd.add(unitIdentity);
        }
        int[] addedIndices = new int[toAdd.size()];
        int nextPosition = 0;
        for (NestedUnitIdentity identity : identitiesToAdd) {
          addedIndices[nextPosition++] = myNestedBundlesListModel.indexOf(identity);
        }
        myNestedBundlesList.setSelectedIndices(addedIndices);
        nestedBundlesSetChanged();
      }
    });

    myRemoveBundleButton.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
        for (Object next : myNestedBundlesList.getSelectedValuesList()) {
          myNestedBundlesListModel.removeElement(next);
        }
        myNestedBundlesList.setSelectedIndices(new int[0]);
        nestedBundlesSetChanged();
      }
    });

    myVersionsButton.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
        onVersions();
      }
    });

    myMoveUpButton.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
        onMoveUp();
      }
    });

    myMoveDownButton.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
        onMoveDown();
      }
    });

    IconUtils.setupWarningLabel(myWarningLabel);

    if (project != null) {
      new DMNestedBundlesUpdater(project, parentDisposable) {

        @Override
        protected Collection<NestedUnitIdentity> getNestedBundles() {
          return getNestedModuleIdentities();
        }

        @Override
        protected void setNestedBundles(Collection<NestedUnitIdentity> nestedBundles) {
          setNestedModuleIdentities(nestedBundles);
        }

        @Override
        protected void dmFacetAddedOrRemoved(DMFacetBase facet) {
          updateAvailableNestedModules();
        }
      };
    }
  }