Skip to content

Commit

Permalink
implemented 'add helm repo' (redhat-developer#673)
Browse files Browse the repository at this point in the history
Signed-off-by: Andre Dietisheim <[email protected]>
  • Loading branch information
adietish committed Apr 18, 2024
1 parent 9b79403 commit 7d570bf
Show file tree
Hide file tree
Showing 15 changed files with 292 additions and 80 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@
******************************************************************************/
package org.jboss.tools.intellij.openshift.test.ui.annotations;

import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.junit.jupiter.api.Tag;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;

import org.junit.jupiter.api.Tag;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
* @author Ondrej Dockal
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@
import com.intellij.remoterobot.fixtures.FixtureName;
import com.intellij.remoterobot.fixtures.JTextFieldFixture;
import org.jetbrains.annotations.NotNull;

import java.time.Duration;

import static com.intellij.remoterobot.search.locators.Locators.byXpath;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@
import com.intellij.remoterobot.fixtures.FixtureName;
import com.intellij.remoterobot.fixtures.JTreeFixture;
import org.jetbrains.annotations.NotNull;

import java.time.Duration;

import static com.intellij.remoterobot.search.locators.Locators.byXpath;
import static com.intellij.remoterobot.utils.RepeatUtilsKt.waitFor;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,12 @@
import com.intellij.remoterobot.data.RemoteComponent;
import com.intellij.remoterobot.fixtures.ComponentFixture;
import com.intellij.remoterobot.fixtures.ContainerFixture;
import org.jetbrains.annotations.NotNull;
import com.intellij.remoterobot.fixtures.DefaultXpath;
import com.intellij.remoterobot.fixtures.FixtureName;
import org.jetbrains.annotations.NotNull;

import java.time.Duration;

import static com.intellij.remoterobot.search.locators.Locators.byXpath;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,11 @@

import com.intellij.remoterobot.RemoteRobot;
import com.intellij.remoterobot.data.RemoteComponent;
import com.intellij.remoterobot.fixtures.*;
import com.intellij.remoterobot.fixtures.ComponentFixture;
import com.intellij.remoterobot.fixtures.ContainerFixture;
import com.intellij.remoterobot.fixtures.DefaultXpath;
import com.intellij.remoterobot.fixtures.FixtureName;
import com.intellij.remoterobot.fixtures.JTreeFixture;
import com.intellij.remoterobot.search.locators.Locator;
import com.intellij.remoterobot.utils.Keyboard;
import com.intellij.remoterobot.utils.WaitForConditionTimeoutException;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
/*******************************************************************************
* Copyright (c) 2023 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is made available under the terms of the
* Eclipse Public License v2.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v20.html
*
* Contributors:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.intellij.openshift;

import com.intellij.openapi.actionSystem.ActionManager;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.CommonShortcuts;
import com.intellij.openapi.project.DumbAwareAction;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.DialogWrapper;
import com.intellij.openapi.wm.impl.IdeGlassPaneEx;
import com.intellij.ui.PopupBorder;
import com.intellij.ui.WindowMoveListener;
import com.intellij.ui.WindowResizeListener;
import com.intellij.util.Consumer;
import com.intellij.util.ui.JBUI;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import javax.swing.*;
import java.awt.*;
import java.util.stream.Stream;

abstract public class UndecoratedDialog extends DialogWrapper {

public UndecoratedDialog(@Nullable Project project,
@Nullable Component parentComponent,
boolean canBeParent,
@NotNull IdeModalityType ideModalityType,
boolean createSouth) {
super(project, parentComponent, canBeParent, ideModalityType, createSouth);
init();
}

@Override
protected void init() {
super.init();
setUndecorated(true);
Window dialogWindow = getPeer().getWindow();
setBorders();
}

protected void closeImmediately() {
if (isVisible()) {
doCancelAction();
}
}

protected void registerEscapeShortcut(Consumer<AnActionEvent> onEscape) {
AnAction escape = ActionManager.getInstance().getAction("EditorEscape");
DumbAwareAction.create(onEscape::accept)
.registerCustomShortcutSet(
escape == null ? CommonShortcuts.ESCAPE : escape.getShortcutSet(),
getRootPane(),
getDisposable());
}

protected void setGlassPaneResizable() {
WindowResizeListener resizeListener = new WindowResizeListener(getRootPane(), JBUI.insets(10), null);
IdeGlassPaneEx glassPane = (IdeGlassPaneEx) getRootPane().getGlassPane();
glassPane.addMousePreprocessor(resizeListener, getDisposable());
glassPane.addMouseMotionPreprocessor(resizeListener, getDisposable());
}

private void setBorders() {
getRootPane().setBorder(PopupBorder.Factory.create(true, true));
getRootPane().setWindowDecorationStyle(JRootPane.NONE);
}

protected void setMovableUsing(JComponent... movableComponents) {
WindowMoveListener windowMoveListener = new WindowMoveListener(getRootPane());
Stream.of(movableComponents).forEach(
component -> component.addMouseListener(windowMoveListener));
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
/*******************************************************************************
* Copyright (c) 2023 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is made available under the terms of the
* Eclipse Public License v2.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v20.html
*
* Contributors:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.intellij.openshift.actions.helm;

import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.project.Project;
import org.jboss.tools.intellij.openshift.actions.HelmAction;
import org.jboss.tools.intellij.openshift.actions.NodeUtils;
import org.jboss.tools.intellij.openshift.telemetry.TelemetryService;
import org.jboss.tools.intellij.openshift.tree.application.ApplicationsRootNode;
import org.jboss.tools.intellij.openshift.tree.application.HelmRepositoriesNode;
import org.jboss.tools.intellij.openshift.ui.helm.AddHelmRepoDialog;
import org.jboss.tools.intellij.openshift.utils.helm.Helm;
import org.jetbrains.annotations.NotNull;

public class AddHelmRepoAction extends HelmAction {

@Override
public void actionPerformedOnSelectedObject(AnActionEvent anActionEvent, Object selected, @NotNull Helm helm) {
Project project = getEventProject(anActionEvent);
ApplicationsRootNode rootNode = NodeUtils.getRoot(selected);
if (rootNode == null) {
return;
}
AddHelmRepoDialog dialog = new AddHelmRepoDialog(rootNode, helm, project);
sendTelemetryResults(TelemetryService.TelemetryResult.SUCCESS);
dialog.show();
}

@Override
public String getTelemetryActionName() {
return "helm-add repo";
}

@Override
public boolean isVisible(Object selected) {
return selected instanceof HelmRepositoriesNode;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.project.Project;
import org.jboss.tools.intellij.openshift.actions.HelmAction;
import org.jboss.tools.intellij.openshift.actions.NodeUtils;
import org.jboss.tools.intellij.openshift.telemetry.TelemetryService;
import org.jboss.tools.intellij.openshift.tree.application.ApplicationsRootNode;
import org.jboss.tools.intellij.openshift.tree.application.NamespaceNode;
import org.jboss.tools.intellij.openshift.tree.application.ParentableNode;
import org.jboss.tools.intellij.openshift.ui.helm.ChartsDialog;
import org.jboss.tools.intellij.openshift.utils.helm.Helm;
import org.jboss.tools.intellij.openshift.utils.odo.Odo;
Expand All @@ -27,11 +27,10 @@ public class OpenHelmChartsAction extends HelmAction {
@Override
public void actionPerformedOnSelectedObject(AnActionEvent anActionEvent, Object selected, @NotNull Helm helm) {
Project project = getEventProject(anActionEvent);
ParentableNode<?> parentableNode = ((ParentableNode<?>) selected);
if (parentableNode == null) {
ApplicationsRootNode rootNode = NodeUtils.getRoot(selected);
if (rootNode == null) {
return;
}
ApplicationsRootNode rootNode = parentableNode.getRoot();
Odo odo = rootNode.getOdo().getNow(null);
if (odo == null) {
return;
Expand Down
41 changes: 10 additions & 31 deletions src/main/java/org/jboss/tools/intellij/openshift/ui/SwingUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,33 +10,15 @@
******************************************************************************/
package org.jboss.tools.intellij.openshift.ui;

import com.intellij.openapi.Disposable;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.wm.impl.IdeGlassPaneEx;
import com.intellij.ui.JBColor;
import com.intellij.ui.SizedIcon;
import com.intellij.ui.WindowMoveListener;
import com.intellij.ui.WindowResizeListener;
import com.intellij.ui.components.JBScrollPane;
import com.intellij.ui.scale.JBUIScale;
import com.intellij.ui.table.JBTable;
import com.intellij.util.containers.JBIterable;
import com.intellij.util.ui.JBFont;
import com.intellij.util.ui.JBUI;
import com.intellij.util.ui.UIUtil;
import org.jetbrains.annotations.NotNull;

import javax.swing.AbstractButton;
import javax.swing.DefaultCellEditor;
import javax.swing.Icon;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JRootPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableCellEditor;
import javax.swing.text.JTextComponent;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
Expand All @@ -47,6 +29,16 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Stream;
import javax.swing.AbstractButton;
import javax.swing.DefaultCellEditor;
import javax.swing.Icon;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableCellEditor;
import javax.swing.text.JTextComponent;
import org.jetbrains.annotations.NotNull;

public class SwingUtils {

Expand Down Expand Up @@ -136,19 +128,6 @@ private static JBIterable<Component> focusableComponents(@NotNull Component comp
.filter(c -> c instanceof JComboBox || c instanceof AbstractButton || c instanceof JTextComponent);
}

public static void setGlassPaneResizable(JRootPane rootPane, Disposable disposable) {
WindowResizeListener resizeListener = new WindowResizeListener(rootPane, JBUI.insets(10), null);
IdeGlassPaneEx glassPane = (IdeGlassPaneEx) rootPane.getGlassPane();
glassPane.addMousePreprocessor(resizeListener, disposable);
glassPane.addMouseMotionPreprocessor(resizeListener, disposable);
}

public static void setMovable(JRootPane rootPane, JComponent... movableComponents) {
WindowMoveListener windowMoveListener = new WindowMoveListener(rootPane);
Stream.of(movableComponents).forEach(
component -> component.addMouseListener(windowMoveListener));
}

public static Point locationOrMouseLocation(Point location) {
if (location == null) {
location = MouseInfo.getPointerInfo().getLocation();
Expand Down
Loading

0 comments on commit 7d570bf

Please sign in to comment.