Skip to content

Commit

Permalink
Fix checkstyle errors
Browse files Browse the repository at this point in the history
  • Loading branch information
angjordn committed Sep 17, 2024
1 parent da78e72 commit f3485df
Show file tree
Hide file tree
Showing 7 changed files with 92 additions and 61 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,8 @@
import org.eclipse.jface.preference.PreferenceDialog;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.browser.BrowserFunction;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
Expand All @@ -21,26 +19,32 @@
import software.aws.toolkits.eclipse.amazonq.util.AuthUtils;
import software.aws.toolkits.eclipse.amazonq.util.PluginUtils;
import software.aws.toolkits.eclipse.amazonq.util.ThreadingUtils;
import software.aws.toolkits.eclipse.amazonq.views.actions.AmazonQCommonActions;

public class AmazonQChatWebview extends AmazonQView {

public static final String ID = "software.aws.toolkits.eclipse.amazonq.views.AmazonQChatWebview";

@Inject
private Shell shell;
private Browser browser;
private AmazonQCommonActions amazonQCommonActions;

private final ViewCommandParser commandParser;
private final ViewActionHandler actionHandler;

public AmazonQChatWebview() {
browser = getBrowser();
amazonQCommonActions = getAmazonQCommonActions();

this.commandParser = new LoginViewCommandParser();
this.actionHandler = new AmazonQChatViewActionHandler();
}

@Override
public final void createPartControl(final Composite parent) {
setupAmazonQView(parent, true);

AuthUtils.isLoggedIn().thenAcceptAsync(isLoggedIn -> {
handleAuthStatusChange(isLoggedIn);
}, ThreadingUtils::executeAsyncTask);
Expand Down Expand Up @@ -139,7 +143,7 @@ public final void selectionChanged(final IWorkbenchPart part, final ISelection s
}

@Override
protected void handleAuthStatusChange(final boolean isLoggedIn) {
protected final void handleAuthStatusChange(final boolean isLoggedIn) {
Display.getDefault().asyncExec(() -> {
amazonQCommonActions.updateActionVisibility(isLoggedIn, getViewSite());
if (!isLoggedIn) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,21 +22,20 @@
import software.aws.toolkits.eclipse.amazonq.views.actions.AmazonQCommonActions;

public abstract class AmazonQView extends ViewPart implements ISelectionListener {
private static final Set<String> amazonQViews = Set.of(

private static final Set<String> AMAZON_Q_VIEWS = Set.of(
ToolkitLoginWebview.ID,
AmazonQChatWebview.ID
);


protected Browser browser;
protected AmazonQCommonActions amazonQCommonActions;

private Browser browser;
private AmazonQCommonActions amazonQCommonActions;
private AuthStatusChangedListener authStatusChangedListener;

public static void showView(String viewId) {
if (!amazonQViews.contains(viewId)) {
PluginLogger.error("Failed to show view. You must add the view " + viewId + " to amazonQViews Set");

public static void showView(final String viewId) {
if (!AMAZON_Q_VIEWS
.contains(viewId)) {
PluginLogger.error("Failed to show view. You must add the view " + viewId + " to AMAZON_Q_VIEWS Set");
return;
}

Expand All @@ -53,7 +52,7 @@ public static void showView(String viewId) {
// Hide all other Amazon Q Views
IViewReference[] viewReferences = page.getViewReferences();
for (IViewReference viewRef : viewReferences) {
if (amazonQViews.contains(viewRef.getId()) && !viewRef.getId().equalsIgnoreCase(viewId)) {
if (AMAZON_Q_VIEWS.contains(viewRef.getId()) && !viewRef.getId().equalsIgnoreCase(viewId)) {
try {
page.hideView(viewRef);
} catch (Exception e) {
Expand All @@ -64,15 +63,23 @@ public static void showView(String viewId) {
}
}

protected abstract void handleAuthStatusChange(final boolean isLoggedIn);

protected void setupAmazonQView(final Composite parent, final boolean isLoggedIn) {
public final Browser getBrowser() {
return browser;
}

public final AmazonQCommonActions getAmazonQCommonActions() {
return amazonQCommonActions;
}

protected abstract void handleAuthStatusChange(boolean isLoggedIn);

protected final void setupAmazonQView(final Composite parent, final boolean isLoggedIn) {
setupBrowser(parent);
setupActions(isLoggedIn);
setupAuthStatusListeners();
setupSelectionListener();
}

private void setupBrowser(final Composite parent) {
browser = new Browser(parent, SWT.NATIVE);
Display display = Display.getCurrent();
Expand All @@ -81,31 +88,37 @@ private void setupBrowser(final Composite parent) {
browser.setBackground(black);
parent.setBackground(black);
}

private void setupActions(final boolean isLoggedIn) {
amazonQCommonActions = new AmazonQCommonActions(isLoggedIn, getViewSite());
}

private void setupAuthStatusListeners() {
authStatusChangedListener = this::handleAuthStatusChange;
AuthUtils.addAuthStatusChangeListener(amazonQCommonActions.signoutAction);
AuthUtils.addAuthStatusChangeListener(amazonQCommonActions.feedbackDialogContributionItem);
AuthUtils.addAuthStatusChangeListener(amazonQCommonActions.getSignoutAction());
AuthUtils.addAuthStatusChangeListener(amazonQCommonActions.getFeedbackDialogContributionAction());
}

private void setupSelectionListener() {
getSite().getPage().addSelectionListener(this);
}

@Override
public final void setFocus() {
browser.setFocus();
}


/**
* Disposes of the resources associated with this view.
*
* This method is called when the view is closed. It removes the authentication
* status change listener and the selection listener from the page.
*/
@Override
public void dispose() {
AuthUtils.removeAuthStatusChangeListener(authStatusChangedListener);
getSite().getPage().removeSelectionListener(this);
super.dispose();
}

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,48 +9,50 @@
import org.eclipse.jface.preference.PreferenceDialog;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.browser.BrowserFunction;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.dialogs.PreferencesUtil;

import jakarta.inject.Inject;
import software.aws.toolkits.eclipse.amazonq.util.AuthStatusChangedListener;
import software.aws.toolkits.eclipse.amazonq.util.AuthUtils;
import software.aws.toolkits.eclipse.amazonq.util.PluginUtils;
import software.aws.toolkits.eclipse.amazonq.util.ThreadingUtils;
import software.aws.toolkits.eclipse.amazonq.views.actions.AmazonQCommonActions;

public class ToolkitLoginWebview extends AmazonQView {
public final class ToolkitLoginWebview extends AmazonQView {

public static final String ID = "software.aws.toolkits.eclipse.amazonq.views.ToolkitLoginWebview";

@Inject
private Shell shell;
private Browser browser;
private AmazonQCommonActions amazonQCommonActions;

private final ViewCommandParser commandParser;
private final ViewActionHandler actionHandler;

public ToolkitLoginWebview() {
browser = getBrowser();
amazonQCommonActions = getAmazonQCommonActions();
this.commandParser = new LoginViewCommandParser();
this.actionHandler = new LoginViewActionHandler();
}

@Override
public final void createPartControl(final Composite parent) {
public void createPartControl(final Composite parent) {
setupAmazonQView(parent, true);

AuthUtils.isLoggedIn().thenAcceptAsync(isLoggedIn -> {
handleAuthStatusChange(isLoggedIn);
}, ThreadingUtils::executeAsyncTask);

BrowserFunction prefsFunction = new OpenPreferenceFunction(browser, "openEclipsePreferences", this::openPreferences);
browser.addDisposeListener(e -> prefsFunction.dispose());


new BrowserFunction(browser, ViewConstants.COMMAND_FUNCTION_NAME) {
@Override
Expand Down Expand Up @@ -124,7 +126,7 @@ private String getContent() {
}

@Override
public final void selectionChanged(final IWorkbenchPart part, final ISelection selection) {
public void selectionChanged(final IWorkbenchPart part, final ISelection selection) {
if (selection.isEmpty()) {
return;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,31 @@
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.IViewSite;

public class AmazonQCommonActions {
public ChangeThemeAction changeThemeAction;
public SignoutAction signoutAction;
public FeedbackDialogContributionItem feedbackDialogContributionItem;
public AmazonQCommonActions(final boolean isLoggedIn, IViewSite viewSite) {
public final class AmazonQCommonActions {

private ChangeThemeAction changeThemeAction;
private SignoutAction signoutAction;
private FeedbackDialogContributionItem feedbackDialogContributionItem;

public AmazonQCommonActions(final boolean isLoggedIn, final IViewSite viewSite) {
createActions(isLoggedIn, viewSite);
contributeToActionBars(viewSite);
updateActionVisibility(isLoggedIn, viewSite);
}

private void createActions(final boolean isLoggedIn, IViewSite viewSite) {

public ChangeThemeAction getChangeThemeAction() {
return changeThemeAction;
}

public SignoutAction getSignoutAction() {
return signoutAction;
}

public FeedbackDialogContributionItem getFeedbackDialogContributionAction() {
return feedbackDialogContributionItem;
}

private void createActions(final boolean isLoggedIn, final IViewSite viewSite) {
changeThemeAction = new ChangeThemeAction();
signoutAction = new SignoutAction();
feedbackDialogContributionItem = new FeedbackDialogContributionItem(viewSite);
Expand All @@ -45,5 +57,5 @@ public void updateActionVisibility(final boolean isLoggedIn, final IViewSite vie
signoutAction.updateVisibility(isLoggedIn);
feedbackDialogContributionItem.updateVisibility(isLoggedIn);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;

public class ChangeThemeAction extends Action {
public final class ChangeThemeAction extends Action {
private Browser browser;
private boolean darkMode = Display.isSystemDarkTheme();

public ChangeThemeAction() {
setText("Change Color");
setToolTipText("Change the color");
Expand All @@ -21,5 +21,5 @@ public void run() {
darkMode = !darkMode;
browser.execute("changeTheme(" + darkMode + ");");
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -11,38 +11,38 @@
import software.aws.toolkits.eclipse.amazonq.views.DialogContributionItem;
import software.aws.toolkits.eclipse.amazonq.views.FeedbackDialog;

public class FeedbackDialogContributionItem implements AuthStatusChangedListener {
public final class FeedbackDialogContributionItem implements AuthStatusChangedListener {
private static final String SHARE_FEEDBACK_MENU_ITEM_TEXT = "Share Feedback";

@Inject
private Shell shell;
private IViewSite viewSite;
DialogContributionItem feedbackDialogContributionItem;
public FeedbackDialogContributionItem(IViewSite viewSite) {

private DialogContributionItem feedbackDialogContributionItem;

public FeedbackDialogContributionItem(final IViewSite viewSite) {
this.viewSite = viewSite;
feedbackDialogContributionItem = new DialogContributionItem(
new FeedbackDialog(shell),
SHARE_FEEDBACK_MENU_ITEM_TEXT,
PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_LCL_LINKTO_HELP)
);
}

public void updateVisibility(final boolean isLoggedIn) {
feedbackDialogContributionItem.setVisible(isLoggedIn);
Display.getDefault().asyncExec(() -> {
viewSite.getActionBars().getMenuManager().markDirty();
viewSite.getActionBars().getMenuManager().update(true);
});
}

public DialogContributionItem getDialogContributionItem() {
return feedbackDialogContributionItem;
}

@Override
public void onAuthStatusChanged(boolean isLoggedIn) {
public void onAuthStatusChanged(final boolean isLoggedIn) {
updateVisibility(isLoggedIn);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import software.aws.toolkits.eclipse.amazonq.views.AmazonQView;
import software.aws.toolkits.eclipse.amazonq.views.ToolkitLoginWebview;

public class SignoutAction extends Action implements AuthStatusChangedListener {
public final class SignoutAction extends Action implements AuthStatusChangedListener {
public SignoutAction() {
setText("Sign out");
}
Expand All @@ -17,13 +17,13 @@ public void run() {
AuthUtils.invalidateToken();
AmazonQView.showView(ToolkitLoginWebview.ID);
}

public void updateVisibility(final boolean isLoggedIn) {
this.setEnabled(isLoggedIn);
}

@Override
public void onAuthStatusChanged(boolean isLoggedIn) {
public void onAuthStatusChanged(final boolean isLoggedIn) {
updateVisibility(isLoggedIn);
}
}
}

0 comments on commit f3485df

Please sign in to comment.