in PluginsAndFeatures/azure-toolkit-for-intellij/src/main/java/com/microsoft/azure/toolkit/intellij/vm/createarmvm/SelectImageStep.java [97:234]
public SelectImageStep(final VMWizardModel model, Project project) {
super("Select a Virtual Machine Image", null, null);
this.model = model;
this.project = project;
model.configStepList(createVmStepsList, 1);
try {
AzureManager azureManager = AuthMethodManager.getInstance().getAzureManager();
azure = azureManager.getAzure(model.getSubscription().getId());
} catch (Exception ex) {
DefaultLoader.getUIHelper().logError("An error occurred when trying to authenticate\n\n" + ex.getMessage(), ex);
}
regionComboBox.setSubscription(model.getSubscription());
regionComboBox.addItemListener(e -> {
model.setRegion((Region) regionComboBox.getSelectedItem());
if (e.getStateChange() == ItemEvent.SELECTED) {
regionChanged();
}
});
publisherComboBox.setRenderer(new ListCellRendererWrapper<Object>() {
@Override
public void customize(JList list, Object o, int i, boolean b, boolean b1) {
if (o instanceof VirtualMachinePublisher) {
setText(((VirtualMachinePublisher) o).name());
}
}
});
publisherComboBox.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
fillOffers();
}
}
});
offerComboBox.setRenderer(new ListCellRendererWrapper<Object>() {
@Override
public void customize(JList list, Object o, int i, boolean b, boolean b1) {
if (o instanceof VirtualMachineOffer) {
setText(((VirtualMachineOffer) o).name());
}
}
});
offerComboBox.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
fillSkus();
}
}
});
skuComboBox.setRenderer(new ListCellRendererWrapper<Object>() {
@Override
public void customize(JList list, Object o, int i, boolean b, boolean b1) {
if (o instanceof VirtualMachineSku) {
setText(((VirtualMachineSku) o).name());
}
}
});
skuComboBox.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
fillImages();
}
}
});
imageLabelList.setCellRenderer(new DefaultListCellRenderer() {
@Override
public Component getListCellRendererComponent(JList list, Object o, int i, boolean b, boolean b1) {
String cellValue = o.toString();
if (o instanceof VirtualMachineImage) {
VirtualMachineImage virtualMachineImage = (VirtualMachineImage) o;
cellValue = virtualMachineImage.version();
}
this.setToolTipText(cellValue);
return super.getListCellRendererComponent(list, cellValue, i, b, b1);
}
});
imageLabelList.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent listSelectionEvent) {
VirtualMachineImage virtualMachineImage = (VirtualMachineImage) imageLabelList.getSelectedValue();
model.setVirtualMachineImage(virtualMachineImage);
if (virtualMachineImage != null) {
model.getCurrentNavigationState().NEXT.setEnabled(true);
}
}
});
final ButtonGroup imageGroup = new ButtonGroup();
imageGroup.add(knownImageBtn);
imageGroup.add(customImageBtn);
knownImageComboBox.addItemListener(e -> {
if (e.getStateChange() == ItemEvent.SELECTED) {
model.setKnownMachineImage(knownImageComboBox.getSelectedItem());
}
});
List<Object> knownImages = new ArrayList<>();
knownImages.addAll(Arrays.asList(KnownWindowsVirtualMachineImage.values()));
knownImages.addAll(Arrays.asList(KnownLinuxVirtualMachineImage.values()));
knownImageComboBox.setModel(new DefaultComboBoxModel(knownImages.toArray()));
model.setKnownMachineImage(knownImageComboBox.getSelectedItem());
knownImageComboBox.setRenderer(new ListCellRendererWrapper<Object>() {
@Override
public void customize(JList list, Object o, int i, boolean b, boolean b1) {
if (o instanceof KnownWindowsVirtualMachineImage) {
setText(((KnownWindowsVirtualMachineImage) o).offer() + " - " + ((KnownWindowsVirtualMachineImage) o).sku());
} else if (o instanceof KnownLinuxVirtualMachineImage) {
setText(((KnownLinuxVirtualMachineImage) o).offer() + " - " + ((KnownLinuxVirtualMachineImage) o).sku());
}
}
});
final ItemListener updateListener = e -> {
if (e.getStateChange() == ItemEvent.SELECTED) {
enableControls(!knownImageBtn.isSelected());
}
};
knownImageBtn.addItemListener(updateListener);
customImageBtn.addItemListener(updateListener);
customImageBtn.addItemListener(e -> {
if (e.getStateChange() == ItemEvent.SELECTED) {
fillPublishers();
}
});
knownImageBtn.setSelected(true);
}