[CodeWithMe] Fix GTW-888. Add action to open Remote Development dialog from a project menu

- Refactor TabbedWelcomeScreen class to provide an ability to specify factories to display with some extra customization
- Add an action to open Remote Development screen from a project menu
- Add signal indicating the connection flow is finished in a Gateway panel

(cherry picked from commit 0c55bf16f0b39a415aa72cb7aec8f87f490481f9)

IJ-CR-20574

GitOrigin-RevId: a68a820e356a773880b4dde516d9e2086375b90b
This commit is contained in:
Sergey Dubov
2022-02-09 10:51:50 +00:00
committed by intellij-monorepo-bot
parent 929c6955df
commit 2224111cfc
@@ -28,6 +28,7 @@ import javax.accessibility.AccessibleContext;
import javax.swing.*;
import javax.swing.tree.*;
import java.awt.*;
import java.util.List;
import java.util.Objects;
import static java.util.Objects.requireNonNullElse;
@@ -39,11 +40,14 @@ public final class TabbedWelcomeScreen extends AbstractWelcomeScreen {
private JPanel leftPanel = new NonOpaquePanel();
TabbedWelcomeScreen() {
this(WelcomeTabFactory.WELCOME_TAB_FACTORY_EP.getExtensionList(), true, true);
}
public TabbedWelcomeScreen(List<WelcomeTabFactory> welcomeTabFactories, boolean addLogo, boolean addQuickAccessPanel) {
setBackground(WelcomeScreenUIManager.getMainTabListBackground());
CardLayoutPanel<WelcomeScreenTab, WelcomeScreenTab, JPanel> mainPanel = createCardPanel();
for (WelcomeTabFactory tabFactory : WelcomeTabFactory.WELCOME_TAB_FACTORY_EP.getExtensionList()) {
for (WelcomeTabFactory tabFactory : welcomeTabFactories) {
if (tabFactory.isApplicable()) {
WelcomeScreenTab tab = tabFactory.createWelcomeTab(this);
addTab(root, tab);
@@ -68,16 +72,21 @@ public final class TabbedWelcomeScreen extends AbstractWelcomeScreen {
});
tree.getAccessibleContext().setAccessibleName(UIBundle.message("welcome.screen.welcome.screen.categories.accessible.name"));
JComponent logoComponent = WelcomeScreenComponentFactory.createSmallLogo();
logoComponent.setFocusable(false);
logoComponent.setBorder(JBUI.Borders.emptyLeft(16));
if (addLogo) {
JComponent logoComponent = WelcomeScreenComponentFactory.createSmallLogo();
logoComponent.setFocusable(false);
logoComponent.setBorder(JBUI.Borders.emptyLeft(16));
leftPanel.add(logoComponent, BorderLayout.NORTH);
}
leftPanel.add(logoComponent, BorderLayout.NORTH);
leftPanel.add(tree, BorderLayout.CENTER);
JComponent quickAccessPanel = createQuickAccessPanel(this);
quickAccessPanel.setBorder(JBUI.Borders.empty(5, 10));
leftPanel.add(quickAccessPanel, BorderLayout.SOUTH);
if (addQuickAccessPanel) {
JComponent quickAccessPanel = createQuickAccessPanel(this);
quickAccessPanel.setBorder(JBUI.Borders.empty(5, 10));
leftPanel.add(quickAccessPanel, BorderLayout.SOUTH);
}
leftPanel.setPreferredSize(new Dimension(JBUI.scale(215), leftPanel.getPreferredSize().height));
JComponent centralPanel = mainPanel;