Skip to content

Commit

Permalink
Merge branch 'paras/fetchCustomizations' into paras/triggerCustomizat…
Browse files Browse the repository at this point in the history
…ionNotificationsOnIDE
  • Loading branch information
pras0131 authored Oct 4, 2024
2 parents c71f115 + 4d793b7 commit 6b587c6
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 37 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,13 @@

package software.aws.toolkits.eclipse.amazonq.views;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;

import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
Expand All @@ -28,6 +31,7 @@
import software.amazon.awssdk.utils.StringUtils;
import software.aws.toolkits.eclipse.amazonq.configuration.PluginStore;
import software.aws.toolkits.eclipse.amazonq.customization.CustomizationUtil;
import software.aws.toolkits.eclipse.amazonq.exception.AmazonQPluginException;
import software.aws.toolkits.eclipse.amazonq.util.Constants;
import software.aws.toolkits.eclipse.amazonq.util.PluginLogger;
import software.aws.toolkits.eclipse.amazonq.util.ThreadingUtils;
Expand Down Expand Up @@ -85,7 +89,7 @@ public CustomizationDialog(final Shell parentShell) {
super(parentShell);
}

public void setCustomisationResponse(final List<Customization> customizationsResponse) {
public void setCustomizationResponse(final List<Customization> customizationsResponse) {
this.customizationsResponse = customizationsResponse;
}

Expand Down Expand Up @@ -170,22 +174,19 @@ private static void addFormattedOption(final Combo combo, final String name, fin
combo.add(formattedText);
}

private void createDropdownForCustomizations(final Composite parent) {
Composite contentComposite = new Composite(parent, SWT.NONE);
GridLayout layout = new GridLayout(2, false);
layout.marginLeft = 18;
contentComposite.setLayout(layout);
GridData layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false);
layoutData.horizontalSpan = 2;
contentComposite.setLayoutData(layoutData);
combo = new Combo(contentComposite, SWT.READ_ONLY);
combo.setLayout(new GridLayout());
GridData comboGridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
comboGridData.horizontalAlignment = GridData.FILL;
comboGridData.grabExcessHorizontalSpace = true;
comboGridData.horizontalSpan = 2;
combo.setLayoutData(comboGridData);
List<Customization> customizations = this.customizationsResponse;
private List<Customization> getCustomizations() {
List<Customization> customizations = new ArrayList<>();
try {
customizations = CustomizationUtil.listCustomizations().get();
} catch (InterruptedException | ExecutionException e) {
PluginLogger.error("Error occurred in getCustomizations", e);
throw new AmazonQPluginException(e);
}
return customizations;
}

private void updateComboOnUIThread(final List<Customization> customizations) {
combo.removeAll();
int defaultSelectedDropdownIndex = -1;
for (int index = 0; index < customizations.size(); index++) {
addFormattedOption(combo, customizations.get(index).getName(), customizations.get(index).getDescription());
Expand All @@ -199,6 +200,8 @@ private void createDropdownForCustomizations(final Composite parent) {
combo.select(defaultSelectedDropdownIndex);
if (this.responseSelection.equals(ResponseSelection.AMAZON_Q_FOUNDATION_DEFAULT)) {
combo.setEnabled(false);
} else {
combo.setEnabled(true);
}
combo.addSelectionListener(new SelectionAdapter() {
@Override
Expand All @@ -212,6 +215,30 @@ public void widgetSelected(final SelectionEvent e) {
});
}

private void createDropdownForCustomizations(final Composite parent) {
Composite contentComposite = new Composite(parent, SWT.NONE);
GridLayout layout = new GridLayout(2, false);
layout.marginLeft = 18;
contentComposite.setLayout(layout);
GridData layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false);
layoutData.horizontalSpan = 2;
contentComposite.setLayoutData(layoutData);
combo = new Combo(contentComposite, SWT.READ_ONLY);
combo.setLayout(new GridLayout());
GridData comboGridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
comboGridData.horizontalAlignment = GridData.FILL;
comboGridData.grabExcessHorizontalSpace = true;
comboGridData.horizontalSpan = 2;
combo.setLayoutData(comboGridData);

combo.setItems(new String[]{"Loading..."});
combo.select(0);
combo.setEnabled(false);

CompletableFuture.supplyAsync(() -> getCustomizations())
.thenAcceptAsync(customizations -> updateComboOnUIThread(customizations), Display.getDefault()::asyncExec);
}

@Override
protected Control createDialogArea(final Composite parent) {
container = (Composite) super.createDialogArea(parent);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,7 @@

package software.aws.toolkits.eclipse.amazonq.views.actions;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.ExecutionException;

import org.eclipse.jface.action.ContributionItem;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
Expand All @@ -19,14 +15,10 @@
import org.eclipse.ui.IViewSite;
import jakarta.inject.Inject;
import software.aws.toolkits.eclipse.amazonq.configuration.PluginStore;
import software.aws.toolkits.eclipse.amazonq.customization.CustomizationUtil;
import software.aws.toolkits.eclipse.amazonq.exception.AmazonQPluginException;
import software.aws.toolkits.eclipse.amazonq.util.AuthStatusChangedListener;
import software.aws.toolkits.eclipse.amazonq.util.Constants;
import software.aws.toolkits.eclipse.amazonq.util.PluginLogger;
import software.aws.toolkits.eclipse.amazonq.views.CustomizationDialog;
import software.aws.toolkits.eclipse.amazonq.views.CustomizationDialog.ResponseSelection;
import software.aws.toolkits.eclipse.amazonq.views.model.Customization;

public final class CustomizationDialogContributionItem extends ContributionItem implements AuthStatusChangedListener {
private static final String CUSTOMIZATION_MENU_ITEM_TEXT = "Select Customization";
Expand All @@ -53,17 +45,6 @@ public void onAuthStatusChanged(final boolean isLoggedIn) {
updateVisibility(isLoggedIn);
}

private List<Customization> getCustomizations() {
List<Customization> customizations = new ArrayList<>();
try {
customizations = CustomizationUtil.listCustomizations().get();
} catch (InterruptedException | ExecutionException e) {
PluginLogger.error("Error occurred in getCustomizations", e);
throw new AmazonQPluginException(e);
}
return customizations;
}

@Override
public void fill(final Menu menu, final int index) {
MenuItem menuItem = new MenuItem(menu, SWT.NONE, index);
Expand All @@ -72,7 +53,6 @@ public void fill(final Menu menu, final int index) {
@Override
public void widgetSelected(final SelectionEvent e) {
CustomizationDialog dialog = new CustomizationDialog(shell);
dialog.setCustomisationResponse(getCustomizations());
Customization storedCustomization = PluginStore.getObject(Constants.CUSTOMIZATION_STORAGE_INTERNAL_KEY, Customization.class);
if (Objects.isNull(storedCustomization)) {
dialog.setResponseSelection(ResponseSelection.AMAZON_Q_FOUNDATION_DEFAULT);
Expand Down

0 comments on commit 6b587c6

Please sign in to comment.