public SelectImageStep()

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