Skip to content

Commit 8483c1b

Browse files
committed
Fix default value for webapp/artifact combo box and related issues
1 parent bd1642f commit 8483c1b

File tree

8 files changed

+35
-22
lines changed

8 files changed

+35
-22
lines changed

PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-lib/src/main/java/com/microsoft/azure/toolkit/intellij/common/AzureArtifactComboBox.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,14 @@ public void setArtifact(@Nullable final AzureArtifact azureArtifact) {
5656
this.setValue(new ItemReference<>(artifact -> artifactManager.equalsAzureArtifact(cachedArtifact, artifact)));
5757
}
5858

59+
@Override
60+
public AzureArtifact getValue() {
61+
if (value instanceof ItemReference && ((ItemReference<?>) value).is(cachedArtifact)) {
62+
return cachedArtifact;
63+
}
64+
return super.getValue();
65+
}
66+
5967
@Nonnull
6068
@Override
6169
@AzureOperation(

PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-lib/src/main/java/com/microsoft/azure/toolkit/intellij/common/AzureComboBox.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,9 @@ public abstract class AzureComboBox<T> extends ComboBox<T> implements AzureFormI
5353
private final TailingDebouncer refresher;
5454
private AzureComboBoxEditor loadingSpinner;
5555
private AzureComboBoxEditor inputEditor;
56-
private Object value;
5756
private boolean valueNotSet = true;
5857
private boolean isRefreshing = false;
58+
protected Object value;
5959
protected boolean enabled = true;
6060
@Getter
6161
@Setter

PluginsAndFeatures/azure-toolkit-for-intellij/src/main/java/com/microsoft/azure/toolkit/intellij/appservice/AppServiceInfoBasicPanel.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ public T getValue() {
9090
final Runtime platform = this.selectorRuntime.getValue();
9191
final AzureArtifact artifact = this.selectorApplication.getValue();
9292

93-
final T result = (T) (this.config == null ? initConfig() : this.config).toBuilder().build();
93+
final T result = (T) (this.config == null ? initConfig() : this.config);
9494
result.setName(name);
9595
result.setRuntime(platform);
9696

PluginsAndFeatures/azure-toolkit-for-intellij/src/main/java/com/microsoft/azure/toolkit/intellij/webapp/runner/webappconfig/slimui/AppServiceComboBox.java

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import com.microsoft.azure.toolkit.lib.webapp.WebAppService;
1919
import com.microsoft.azuretools.azurecommons.helpers.NotNull;
2020
import com.microsoft.azuretools.azurecommons.helpers.Nullable;
21+
import lombok.Setter;
2122
import org.apache.commons.lang3.StringUtils;
2223
import rx.Subscription;
2324

@@ -31,6 +32,7 @@ public abstract class AppServiceComboBox<T extends AppServiceConfig> extends Azu
3132
protected Project project;
3233
protected Subscription subscription;
3334

35+
@Setter
3436
protected T configModel;
3537

3638
public AppServiceComboBox(final Project project) {
@@ -39,19 +41,11 @@ public AppServiceComboBox(final Project project) {
3941
this.setRenderer(new AppComboBoxRender());
4042
}
4143

42-
@Override
43-
public void setValue(T value) {
44-
if (isDraftResource(value)) {
45-
configModel = value;
46-
}
47-
super.setValue(value);
48-
}
49-
5044
@NotNull
5145
@Override
5246
protected List<? extends T> loadItems() throws Exception {
5347
final List<T> items = loadAppServiceModels();
54-
if (configModel != null && StringUtils.isEmpty(configModel.getResourceId())) {
48+
if (isDraftResource(configModel)) {
5549
final boolean exist = items.stream().anyMatch(item -> AppServiceConfig.isSameApp(item, configModel));
5650
if (!exist) {
5751
items.add(configModel);
@@ -60,6 +54,14 @@ protected List<? extends T> loadItems() throws Exception {
6054
return items;
6155
}
6256

57+
@Override
58+
public T getValue() {
59+
if (value instanceof ItemReference && ((ItemReference<?>) value).is(configModel)) {
60+
return configModel;
61+
}
62+
return super.getValue();
63+
}
64+
6365
protected abstract List<T> loadAppServiceModels() throws Exception;
6466

6567
@Nullable
@@ -116,6 +118,6 @@ private String getAppServiceLabel(AppServiceConfig appServiceModel) {
116118
}
117119

118120
private static boolean isDraftResource(final AppServiceConfig config) {
119-
return StringUtils.isEmpty(config.getResourceId());
121+
return config != null && StringUtils.isEmpty(config.getResourceId());
120122
}
121123
}

PluginsAndFeatures/azure-toolkit-for-intellij/src/main/java/com/microsoft/azure/toolkit/intellij/webapp/runner/webappconfig/slimui/WebAppDeployConfigurationPanel.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ public WebAppDeployConfigurationPanel(@NotNull Project project) {
8989
this.project = project;
9090
$$$setupUI$$$();
9191
comboBoxWebApp.addItemListener(e -> loadDeploymentSlot(getSelectedWebApp()));
92+
comboBoxArtifact.addItemListener(e -> chkToRoot.setVisible(isAbleToDeployToRoot(comboBoxArtifact.getValue())));
9293

9394
final ButtonGroup slotButtonGroup = new ButtonGroup();
9495
slotButtonGroup.add(rbtNewSlot);
@@ -133,10 +134,6 @@ public void focusLost(FocusEvent focusEvent) {
133134
slotDecorator.setContentComponent(pnlSlot);
134135
}
135136

136-
public void toggleSlotVisibility(final boolean visible) {
137-
slotDecorator.setOn(visible);
138-
}
139-
140137
private void setComboBoxDefaultValue(JComboBox comboBox, Object value) {
141138
UIUtils.listComboBoxItems(comboBox).stream().filter(item -> item.equals(value)).findFirst().ifPresent(defaultItem -> comboBox.setSelectedItem(value));
142139
}
@@ -254,6 +251,7 @@ public void setValue(WebAppDeployRunConfigurationModel data) {
254251
// configuration
255252
chkToRoot.setSelected(data.isDeployToRoot());
256253
chkOpenBrowser.setSelected(data.isOpenBrowserAfterDeployment());
254+
slotDecorator.setOn(data.isSlotPanelVisible());
257255
}
258256

259257
@Override
@@ -263,9 +261,9 @@ public WebAppDeployRunConfigurationModel getValue() {
263261
AzureArtifactConfig.builder().artifactType(artifact.getType().name())
264262
.artifactIdentifier(AzureArtifactManager.getInstance(project).getArtifactIdentifier(artifact)).build();
265263
final DeploymentSlotConfig slotConfig = chkDeployToSlot.isSelected() ? rbtExistingSlot.isSelected() ?
266-
DeploymentSlotConfig.builder().newCreate(false).name(cbxSlotName.getSelectedItem().toString()).build() :
264+
DeploymentSlotConfig.builder().newCreate(false).name(Objects.toString(cbxSlotName.getSelectedItem(), null)).build() :
267265
DeploymentSlotConfig.builder().newCreate(true).name(txtNewSlotName.getText())
268-
.configurationSource(cbxSlotConfigurationSource.getSelectedItem().toString()).build() : null;
266+
.configurationSource(Objects.toString(cbxSlotConfigurationSource.getSelectedItem(), null)).build() : null;
269267
final WebAppConfig webAppConfig = comboBoxWebApp.getValue();
270268
if (webAppConfig != null) {
271269
webAppConfig.setDeploymentSlot(slotConfig);
@@ -275,6 +273,7 @@ public WebAppDeployRunConfigurationModel getValue() {
275273
.artifactConfig(artifactConfig)
276274
.openBrowserAfterDeployment(chkOpenBrowser.isSelected())
277275
.deployToRoot(chkToRoot.isSelected())
276+
.slotPanelVisible(slotDecorator.isExpanded())
278277
.build();
279278
}
280279

PluginsAndFeatures/azure-toolkit-for-intellij/src/main/java/com/microsoft/azure/toolkit/intellij/webapp/runner/webappconfig/slimui/WebAppSlimSettingPanel.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ public class WebAppSlimSettingPanel extends AzureSettingPanel<WebAppConfiguratio
4747
public WebAppSlimSettingPanel(@NotNull Project project, @NotNull WebAppConfiguration webAppConfiguration) {
4848
super(project, false);
4949
$$$setupUI$$$();
50-
pnlDeployment.toggleSlotVisibility(webAppConfiguration.isSlotPanelVisible());
5150
}
5251

5352
@NotNull

Utils/azure-toolkit-ide-libs/azure-toolkit-ide-appservice-lib/src/main/java/com/microsoft/azure/toolkit/ide/appservice/model/AppServiceConfig.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
@AllArgsConstructor
3636
@EqualsAndHashCode
3737
@SuperBuilder(toBuilder = true)
38-
public class AppServiceConfig {
38+
public abstract class AppServiceConfig {
3939
@Builder.Default
4040
private MonitorConfig monitorConfig = MonitorConfig.builder().build();
4141
private String name;
@@ -50,8 +50,6 @@ public class AppServiceConfig {
5050
private Map<String, String> appSettings = new HashMap<>();
5151
private DeploymentSlotConfig deploymentSlot;
5252

53-
protected Runtime runtime;
54-
5553
public Map<String, String> getTelemetryProperties() {
5654
final Map<String, String> result = new HashMap<>();
5755
result.put("subscriptionId", Optional.ofNullable(subscription).map(Subscription::getId).orElse(StringUtils.EMPTY));
@@ -79,6 +77,10 @@ public String getSubscriptionId() {
7977
return Optional.ofNullable(subscription).map(Subscription::getId).orElse(StringUtils.EMPTY);
8078
}
8179

80+
public abstract Runtime getRuntime();
81+
82+
public abstract void setRuntime(Runtime runtime);
83+
8284
public static boolean isSameApp(AppServiceConfig first, AppServiceConfig second) {
8385
if (Objects.isNull(first) || Objects.isNull(second)) {
8486
return first == second;

Utils/azure-toolkit-ide-libs/azure-toolkit-ide-appservice-lib/src/main/java/com/microsoft/azure/toolkit/ide/appservice/webapp/model/WebAppConfig.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
package com.microsoft.azure.toolkit.ide.appservice.webapp.model;
77

88
import com.microsoft.azure.toolkit.ide.appservice.model.AppServiceConfig;
9+
import com.microsoft.azure.toolkit.lib.appservice.entity.AppServicePlanEntity;
910
import com.microsoft.azure.toolkit.lib.appservice.model.PricingTier;
1011
import com.microsoft.azure.toolkit.lib.appservice.model.Runtime;
1112
import com.microsoft.azure.toolkit.lib.appservice.service.IWebApp;
@@ -42,9 +43,11 @@ public static WebAppConfig fromRemote(IWebApp webApp) {
4243
return WebAppConfig.builder()
4344
.name(webApp.name())
4445
.resourceId(webApp.id())
46+
.servicePlan(AppServicePlanEntity.builder().id(webApp.entity().getAppServicePlanId()).build())
4547
.subscription(Subscription.builder().id(webApp.subscriptionId()).build())
4648
.resourceGroup(ResourceGroup.builder().name(webApp.resourceGroup()).build())
4749
.runtime(webApp.getRuntime())
50+
.region(webApp.entity().getRegion())
4851
.build();
4952
}
5053
}

0 commit comments

Comments
 (0)