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();
}
};
}
}