public synchronized void updateForm()

in PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-springcloud/src/main/java/com/microsoft/azure/toolkit/intellij/springcloud/component/SpringCloudAppConfigPanel.java [144:203]


    public synchronized void updateForm(@Nonnull SpringCloudApp app) {
        AzureTaskManager.getInstance().runInBackground(AzureString.format("load properties of app(%s)", app.getName()), () -> {
            final String testUrl = app.getTestUrl();
            final SpringCloudPersistentDisk disk = app.getPersistentDisk();
            final String url = app.getApplicationUrl();
            AzureTaskManager.getInstance().runLater(() -> {
                if (testUrl != null) {
                    this.txtTestEndpoint.setHyperlinkText(testUrl.length() > 60 ? testUrl.substring(0, 60) + "..." : testUrl);
                    this.txtTestEndpoint.setHyperlinkTarget(testUrl.endsWith("/") ? testUrl.substring(0, testUrl.length() - 1) : testUrl);
                    this.txtTestEndpoint.setVisible(true);
                    this.lblTestEndpoint.setVisible(true);
                } else {
                    this.txtTestEndpoint.setVisible(false);
                    this.lblTestEndpoint.setVisible(false);
                    this.txtTestEndpoint.setHyperlinkTarget(null);
                }
                this.txtStorage.setText(Objects.nonNull(disk) ? disk.toString() : "---");
                this.txtEndpoint.setHyperlinkTarget(url);
                this.txtEndpoint.setEnabled(Objects.nonNull(url));
                if (Objects.nonNull(url)) {
                    this.txtEndpoint.setHyperlinkText(url.length() > 60 ? url.substring(0, 60) + "..." : url);
                } else {
                    this.txtEndpoint.setIcon(null);
                    this.txtEndpoint.setText("---");
                }
            }, AzureTask.Modality.ANY);
        });
        final SpringCloudCluster service = app.getParent();
        final boolean enterprise = service.isEnterpriseTier();
        final boolean consumption = service.isConsumptionTier();
        final boolean standard = service.isStandardTier();
        final boolean basic = !enterprise && !consumption && !standard;
        this.useJava8.setVisible(!enterprise);
        this.useJava11.setVisible(!enterprise);
        this.useJava17.setVisible(!enterprise);
        this.lblRuntime.setVisible(!enterprise);
        this.lblDisk.setVisible(!enterprise && !consumption);
        this.pnlDisk.setVisible(!enterprise && !consumption);
        this.lblInstance.setText("Instances:");
        final Double cpu = this.numCpu.getItem();
        final Double mem = this.numMemory.getItem();
        final Double[] cpus = basic ? new Double[]{0.5, 1.0} : consumption ? new Double[]{0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0} : new Double[]{0.5, 1.0, 2.0, 3.0, 4.0};
        final Double[] mems = basic ? new Double[]{0.5, 1.0, 2.0} : consumption ? new Double[]{0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0} : new Double[]{0.5, 1.0, 2.0, 3.0, 4.0, 5., 6.0, 7.0, 8.0};
        final DefaultComboBoxModel<Double> numCpuModel = new DefaultComboBoxModel<>(cpus);
        final DefaultComboBoxModel<Double> numMemoryModel = new DefaultComboBoxModel<>(mems);
        numCpuModel.setSelectedItem(Objects.isNull(cpu) ? Double.valueOf(1.0) : (cpu > cpus[cpus.length - 1]) ? null : cpu);
        numMemoryModel.setSelectedItem(Objects.isNull(mem) ? Double.valueOf(2.0) : mem > mems[mems.length - 1] ? null : mem);
        if (consumption) {
            this.numMemory.addActionListener(e -> Optional.ofNullable((Double) numMemoryModel.getSelectedItem()).ifPresent(m -> numCpuModel.setSelectedItem(m / 2)));
            this.numCpu.addActionListener(e -> Optional.ofNullable((Double) numCpuModel.getSelectedItem()).ifPresent(c -> numMemoryModel.setSelectedItem(c * 2)));
            this.lblInstance.setText("Max replicas:");
        }
        this.numCpu.setModel(numCpuModel);
        this.numMemory.setModel(numMemoryModel);
        this.numInstance.setMaximum(basic ? 25 : consumption ? 30 : 500);
        this.numInstance.setMajorTickSpacing(basic || consumption ? 5 : 50);
        this.numInstance.setMinorTickSpacing(basic || consumption ? 1 : 10);
        this.numInstance.setMinimum(0);
        this.numInstance.updateLabels();
    }