mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
More dead code in plugins UI
GitOrigin-RevId: 835842a6bbfb5918f463db067445dd6cce1f1b8f
This commit is contained in:
committed by
intellij-monorepo-bot
parent
31e1b50371
commit
a8ca05fd05
@@ -2,7 +2,7 @@
|
||||
package com.intellij.ide.plugins;
|
||||
|
||||
import com.intellij.icons.AllIcons;
|
||||
import com.intellij.ide.plugins.newui.CellPluginComponent;
|
||||
import com.intellij.ide.plugins.newui.ListPluginComponent;
|
||||
import com.intellij.ui.components.labels.LinkLabel;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -19,7 +19,7 @@ public class LinkPanel {
|
||||
|
||||
public LinkPanel(@NotNull JPanel parent, boolean icon, @Nullable Object labelConstraints, @Nullable Object linkConstraints) {
|
||||
myLinkLabel = createLink(icon);
|
||||
myTextLabel.setForeground(CellPluginComponent.GRAY_COLOR);
|
||||
myTextLabel.setForeground(ListPluginComponent.GRAY_COLOR);
|
||||
parent.add(myTextLabel, labelConstraints);
|
||||
parent.add(myLinkLabel, linkConstraints);
|
||||
}
|
||||
|
||||
@@ -829,7 +829,7 @@ public class PluginManagerConfigurable
|
||||
public void linkSelected(LinkLabel aSource, Object aLinkData) {
|
||||
myUpdateAll.setEnabled(false);
|
||||
|
||||
for (CellPluginComponent plugin : downloaded.ui.plugins) {
|
||||
for (ListPluginComponent plugin : downloaded.ui.plugins) {
|
||||
((ListPluginComponent)plugin).updatePlugin();
|
||||
}
|
||||
}
|
||||
@@ -1096,7 +1096,7 @@ public class PluginManagerConfigurable
|
||||
|
||||
private static void clearUpdates(@NotNull PluginsGroupComponent panel) {
|
||||
for (UIPluginGroup group : panel.getGroups()) {
|
||||
for (CellPluginComponent plugin : group.plugins) {
|
||||
for (ListPluginComponent plugin : group.plugins) {
|
||||
((ListPluginComponent)plugin).setUpdateDescriptor(null);
|
||||
}
|
||||
}
|
||||
@@ -1106,7 +1106,7 @@ public class PluginManagerConfigurable
|
||||
for (PluginDownloader downloader : updates) {
|
||||
IdeaPluginDescriptor descriptor = downloader.getDescriptor();
|
||||
for (UIPluginGroup group : panel.getGroups()) {
|
||||
CellPluginComponent component = group.findComponent(descriptor);
|
||||
ListPluginComponent component = group.findComponent(descriptor);
|
||||
if (component != null) {
|
||||
((ListPluginComponent)component).setUpdateDescriptor(descriptor);
|
||||
break;
|
||||
@@ -1120,7 +1120,7 @@ public class PluginManagerConfigurable
|
||||
@Override
|
||||
public void performCopy(@NotNull DataContext dataContext) {
|
||||
StringBuilder result = new StringBuilder();
|
||||
for (CellPluginComponent pluginComponent : component.getSelection()) {
|
||||
for (ListPluginComponent pluginComponent : component.getSelection()) {
|
||||
result.append(pluginComponent.myPlugin.getName()).append(" (").append(pluginComponent.myPlugin.getVersion()).append(")\n");
|
||||
}
|
||||
CopyPasteManager.getInstance().setContents(new TextTransferable(result.substring(0, result.length() - 1)));
|
||||
@@ -1619,11 +1619,11 @@ public class PluginManagerConfigurable
|
||||
return;
|
||||
}
|
||||
|
||||
List<CellPluginComponent> components = new ArrayList<>();
|
||||
List<ListPluginComponent> components = new ArrayList<>();
|
||||
|
||||
for (IdeaPluginDescriptor descriptor : descriptors) {
|
||||
for (UIPluginGroup group : myInstalledPanel.getGroups()) {
|
||||
CellPluginComponent component = group.findComponent(descriptor);
|
||||
ListPluginComponent component = group.findComponent(descriptor);
|
||||
if (component != null) {
|
||||
components.add(component);
|
||||
break;
|
||||
@@ -1675,7 +1675,7 @@ public class PluginManagerConfigurable
|
||||
|
||||
if (select) {
|
||||
for (UIPluginGroup group : myInstalledPanel.getGroups()) {
|
||||
CellPluginComponent component = group.findComponent(callbackData.getPluginDescriptor());
|
||||
ListPluginComponent component = group.findComponent(callbackData.getPluginDescriptor());
|
||||
if (component != null) {
|
||||
myInstalledPanel.setSelection(component);
|
||||
break;
|
||||
|
||||
@@ -314,7 +314,7 @@ public class BaselinePanel extends NonOpaquePanel {
|
||||
remove(component);
|
||||
}
|
||||
|
||||
public void setProgressComponent(@Nullable CellPluginComponent pluginComponent, @NotNull JComponent progressComponent) {
|
||||
public void setProgressComponent(@Nullable ListPluginComponent pluginComponent, @NotNull JComponent progressComponent) {
|
||||
assert myProgressComponent == null;
|
||||
myProgressComponent = progressComponent;
|
||||
add(progressComponent, null);
|
||||
|
||||
@@ -1,230 +0,0 @@
|
||||
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.ide.plugins.newui;
|
||||
|
||||
import com.intellij.icons.AllIcons;
|
||||
import com.intellij.ide.plugins.IdeaPluginDescriptor;
|
||||
import com.intellij.ide.plugins.PluginManagerConfigurable;
|
||||
import com.intellij.openapi.actionSystem.DefaultActionGroup;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.wm.IdeFocusManager;
|
||||
import com.intellij.ui.Gray;
|
||||
import com.intellij.ui.JBColor;
|
||||
import com.intellij.ui.RelativeFont;
|
||||
import com.intellij.ui.components.labels.LinkLabel;
|
||||
import com.intellij.ui.components.labels.LinkListener;
|
||||
import com.intellij.ui.scale.JBUIScale;
|
||||
import com.intellij.util.ui.JBDimension;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import com.intellij.xml.util.XmlStringUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.text.View;
|
||||
import java.awt.*;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.awt.event.MouseListener;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Alexander Lobas
|
||||
*/
|
||||
public abstract class CellPluginComponent extends JPanel {
|
||||
public static final Color GRAY_COLOR = JBColor.namedColor("Label.infoForeground", new JBColor(Gray._120, Gray._135));
|
||||
private static final Color HOVER_COLOR = JBColor.namedColor("Plugins.lightSelectionBackground", new JBColor(0xF5F9FF, 0x36393B));
|
||||
|
||||
public static boolean HANDLE_FOCUS_ON_SELECTION = true;
|
||||
|
||||
public final IdeaPluginDescriptor myPlugin;
|
||||
|
||||
protected LinkLabel myIconLabel;
|
||||
protected LinkLabel myName;
|
||||
protected JEditorPane myDescription;
|
||||
protected MouseListener myHoverNameListener;
|
||||
|
||||
protected EventHandler.SelectionType mySelection = EventHandler.SelectionType.NONE;
|
||||
|
||||
protected CellPluginComponent(@NotNull IdeaPluginDescriptor plugin) {
|
||||
myPlugin = plugin;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public IdeaPluginDescriptor getPluginDescriptor() {
|
||||
return myPlugin;
|
||||
}
|
||||
|
||||
protected void addIconComponent(@NotNull JPanel parent, @Nullable Object constraints) {
|
||||
myIconLabel = new LinkLabel(null, AllIcons.Plugins.PluginLogo_40);
|
||||
myIconLabel.setVerticalAlignment(SwingConstants.TOP);
|
||||
myIconLabel.setOpaque(false);
|
||||
parent.add(myIconLabel, constraints);
|
||||
}
|
||||
|
||||
protected void addNameComponent(@NotNull JPanel parent) {
|
||||
myName = new LinkComponent() {
|
||||
@Override
|
||||
public String getToolTipText() {
|
||||
return getPreferredSize().width > getWidth() ? super.getToolTipText() : null;
|
||||
}
|
||||
};
|
||||
myName.setText(myPlugin.getName());
|
||||
myName.setToolTipText(myPlugin.getName());
|
||||
parent.add(RelativeFont.BOLD.install(myName));
|
||||
}
|
||||
|
||||
protected void updateIcon(boolean errors, boolean disabled) {
|
||||
myIconLabel.setIcon(PluginLogo.getIcon(myPlugin, false, PluginManagerConfigurable.isJBPlugin(myPlugin), errors, disabled));
|
||||
}
|
||||
|
||||
protected void addDescriptionComponent(@NotNull JPanel parent, @Nullable String description, @NotNull LineFunction function) {
|
||||
if (StringUtil.isEmptyOrSpaces(description)) {
|
||||
return;
|
||||
}
|
||||
|
||||
myDescription = new JEditorPane() {
|
||||
@Override
|
||||
public Dimension getPreferredSize() {
|
||||
if (getWidth() == 0 || getHeight() == 0) {
|
||||
setSize(new JBDimension(180, 20));
|
||||
}
|
||||
Integer property = (Integer)getClientProperty("parent.width");
|
||||
int width = property == null ? JBUIScale.scale(180) : property;
|
||||
View view = getUI().getRootView(this);
|
||||
view.setSize(width, Integer.MAX_VALUE);
|
||||
return new Dimension(width, function.getHeight(this));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void paintComponent(Graphics g) {
|
||||
super.paintComponent(g);
|
||||
function.paintComponent(this, g);
|
||||
}
|
||||
};
|
||||
|
||||
PluginManagerConfigurable.setTinyFont(myDescription);
|
||||
myDescription.setEditable(false);
|
||||
myDescription.setFocusable(false);
|
||||
myDescription.setOpaque(false);
|
||||
myDescription.setBorder(null);
|
||||
myDescription.setCaret(EmptyCaret.INSTANCE);
|
||||
|
||||
myDescription.setEditorKit(new UIUtil.JBWordWrapHtmlEditorKit());
|
||||
myDescription.setText(XmlStringUtil.wrapInHtml(description));
|
||||
|
||||
parent.add(myDescription);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public EventHandler.SelectionType getSelection() {
|
||||
return mySelection;
|
||||
}
|
||||
|
||||
public void setSelection(@NotNull EventHandler.SelectionType type) {
|
||||
setSelection(type, type == EventHandler.SelectionType.SELECTION);
|
||||
}
|
||||
|
||||
public void setSelection(@NotNull EventHandler.SelectionType type, boolean scrollAndFocus) {
|
||||
mySelection = type;
|
||||
|
||||
if (scrollAndFocus) {
|
||||
scrollToVisible();
|
||||
if (getParent() != null && type == EventHandler.SelectionType.SELECTION && HANDLE_FOCUS_ON_SELECTION) {
|
||||
IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> IdeFocusManager.getGlobalInstance().requestFocus(this, true));
|
||||
}
|
||||
}
|
||||
|
||||
updateColors(type);
|
||||
repaint();
|
||||
}
|
||||
|
||||
public void scrollToVisible() {
|
||||
JComponent parent = (JComponent)getParent();
|
||||
if (parent == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
Rectangle bounds = getBounds();
|
||||
if (!parent.getVisibleRect().contains(bounds)) {
|
||||
parent.scrollRectToVisible(bounds);
|
||||
}
|
||||
}
|
||||
|
||||
protected void updateColors(@NotNull EventHandler.SelectionType type) {
|
||||
updateColors(GRAY_COLOR, type == EventHandler.SelectionType.NONE ? PluginManagerConfigurable.MAIN_BG_COLOR : HOVER_COLOR);
|
||||
}
|
||||
|
||||
protected void updateColors(@NotNull Color grayedFg, @NotNull Color background) {
|
||||
setBackground(background);
|
||||
|
||||
if (myDescription != null) {
|
||||
myDescription.setForeground(grayedFg);
|
||||
}
|
||||
}
|
||||
|
||||
protected void fullRepaint() {
|
||||
Container parent = getParent();
|
||||
parent.doLayout();
|
||||
parent.revalidate();
|
||||
parent.repaint();
|
||||
}
|
||||
|
||||
public void setListeners(@NotNull LinkListener<? super IdeaPluginDescriptor> listener,
|
||||
@NotNull LinkListener<String> searchListener,
|
||||
@NotNull EventHandler eventHandler) {
|
||||
//noinspection unchecked
|
||||
myIconLabel.setListener(listener, myPlugin);
|
||||
//noinspection unchecked
|
||||
myName.setListener(listener, myPlugin);
|
||||
|
||||
myHoverNameListener = new MouseAdapter() {
|
||||
@Override
|
||||
public void mouseEntered(MouseEvent event) {
|
||||
myName.entered(event);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseExited(MouseEvent event) {
|
||||
myName.exited(event);
|
||||
}
|
||||
};
|
||||
myIconLabel.addMouseListener(myHoverNameListener);
|
||||
|
||||
eventHandler.addAll(this);
|
||||
}
|
||||
|
||||
public void createPopupMenu(@NotNull DefaultActionGroup group, @NotNull List<? extends CellPluginComponent> selection) {
|
||||
}
|
||||
|
||||
public void handleKeyAction(int keyCode, @NotNull List<? extends CellPluginComponent> selection) {
|
||||
}
|
||||
|
||||
public abstract void showProgress();
|
||||
|
||||
public abstract void hideProgress(boolean success, boolean restartRequired);
|
||||
|
||||
public void clearProgress() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
public void close() {
|
||||
}
|
||||
|
||||
public abstract boolean isMarketplace();
|
||||
|
||||
public void updateEnabledState() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
public void updateAfterUninstall(boolean needRestartForUninstall) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
public void updateErrors() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
public void enableRestart() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
}
|
||||
@@ -23,16 +23,16 @@ public abstract class EventHandler {
|
||||
public void connect(@NotNull PluginsGroupComponent container) {
|
||||
}
|
||||
|
||||
public void addCell(@NotNull CellPluginComponent component, int index) {
|
||||
public void addCell(@NotNull ListPluginComponent component, int index) {
|
||||
}
|
||||
|
||||
public void addCell(@NotNull CellPluginComponent component, @Nullable CellPluginComponent anchor) {
|
||||
public void addCell(@NotNull ListPluginComponent component, @Nullable ListPluginComponent anchor) {
|
||||
}
|
||||
|
||||
public void removeCell(@NotNull CellPluginComponent component) {
|
||||
public void removeCell(@NotNull ListPluginComponent component) {
|
||||
}
|
||||
|
||||
public int getCellIndex(@NotNull CellPluginComponent component) {
|
||||
public int getCellIndex(@NotNull ListPluginComponent component) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -46,25 +46,25 @@ public abstract class EventHandler {
|
||||
}
|
||||
}
|
||||
|
||||
public void updateHover(@NotNull CellPluginComponent component) {
|
||||
public void updateHover(@NotNull ListPluginComponent component) {
|
||||
}
|
||||
|
||||
public void initialSelection(boolean scrollAndFocus) {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public List<CellPluginComponent> getSelection() {
|
||||
public List<ListPluginComponent> getSelection() {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
public void setSelection(@NotNull CellPluginComponent component) {
|
||||
public void setSelection(@NotNull ListPluginComponent component) {
|
||||
setSelection(component, true);
|
||||
}
|
||||
|
||||
public void setSelection(@NotNull CellPluginComponent component, boolean scrollAndFocus) {
|
||||
public void setSelection(@NotNull ListPluginComponent component, boolean scrollAndFocus) {
|
||||
}
|
||||
|
||||
public void setSelection(@NotNull List<? extends CellPluginComponent> components) {
|
||||
public void setSelection(@NotNull List<? extends ListPluginComponent> components) {
|
||||
}
|
||||
|
||||
public void updateSelection() {
|
||||
@@ -103,9 +103,9 @@ public abstract class EventHandler {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
protected static CellPluginComponent get(@NotNull ComponentEvent event) {
|
||||
protected static ListPluginComponent get(@NotNull ComponentEvent event) {
|
||||
//noinspection ConstantConditions
|
||||
return ComponentUtil.getParentOfType((Class<? extends CellPluginComponent>)CellPluginComponent.class, event.getComponent());
|
||||
return ComponentUtil.getParentOfType((Class<? extends ListPluginComponent>)ListPluginComponent.class, event.getComponent());
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
||||
-270
@@ -1,270 +0,0 @@
|
||||
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.ide.plugins.newui;
|
||||
|
||||
import com.intellij.icons.AllIcons;
|
||||
import com.intellij.ide.plugins.*;
|
||||
import com.intellij.openapi.wm.ex.ProgressIndicatorEx;
|
||||
import com.intellij.ui.components.labels.LinkListener;
|
||||
import com.intellij.ui.components.panels.NonOpaquePanel;
|
||||
import com.intellij.ui.scale.JBUIScale;
|
||||
import com.intellij.util.ui.AbstractLayoutManager;
|
||||
import com.intellij.util.ui.JBInsets;
|
||||
import com.intellij.util.ui.JBUI;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.border.Border;
|
||||
import java.awt.*;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Alexander Lobas
|
||||
*/
|
||||
public class GridCellPluginComponent extends CellPluginComponent {
|
||||
private final MyPluginModel myPluginModel;
|
||||
private JLabel myLastUpdated;
|
||||
private JLabel myDownloads;
|
||||
private JLabel myRating;
|
||||
private final JButton myInstallButton = new InstallButton(false);
|
||||
private JComponent myLastComponent;
|
||||
private List<TagComponent> myTagComponents;
|
||||
private ProgressIndicatorEx myIndicator;
|
||||
|
||||
public GridCellPluginComponent(@NotNull MyPluginModel pluginsModel,
|
||||
@NotNull IdeaPluginDescriptor plugin,
|
||||
@NotNull TagBuilder tagBuilder) {
|
||||
super(plugin);
|
||||
myPluginModel = pluginsModel;
|
||||
pluginsModel.addComponent(this);
|
||||
|
||||
JPanel container = new NonOpaquePanel(new BorderLayout(JBUIScale.scale(10), 0));
|
||||
add(container);
|
||||
addIconComponent(container, BorderLayout.WEST);
|
||||
|
||||
JPanel centerPanel = new NonOpaquePanel(new VerticalLayout(PluginManagerConfigurable.offset5(), JBUIScale.scale(181)));
|
||||
container.add(centerPanel);
|
||||
|
||||
addNameComponent(centerPanel);
|
||||
addTags(centerPanel, tagBuilder);
|
||||
addDescriptionComponent(centerPanel, PluginSiteUtils.preparePluginDescription(myPlugin.getDescription(), false), new LineFunction(3, true));
|
||||
|
||||
createMetricsPanel(centerPanel);
|
||||
|
||||
addInstallButton();
|
||||
|
||||
setOpaque(true);
|
||||
setBorder(JBUI.Borders.empty(10));
|
||||
|
||||
setLayout(new AbstractLayoutManager() {
|
||||
@Override
|
||||
public Dimension preferredLayoutSize(Container parent) {
|
||||
Dimension size = container.getPreferredSize();
|
||||
size.height += PluginManagerConfigurable.offset5();
|
||||
size.height += myLastComponent.getPreferredSize().height;
|
||||
JBInsets.addTo(size, parent.getInsets());
|
||||
return size;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void layoutContainer(Container parent) {
|
||||
Insets insets = parent.getInsets();
|
||||
Dimension size = container.getPreferredSize();
|
||||
Rectangle bounds = new Rectangle(insets.left, insets.top, size.width, size.height);
|
||||
container.setBounds(bounds);
|
||||
container.doLayout();
|
||||
|
||||
Point location = centerPanel.getLocation();
|
||||
Dimension buttonSize = myLastComponent.getPreferredSize();
|
||||
Border border = myLastComponent.getBorder();
|
||||
int borderOffset = border == null ? 0 : border.getBorderInsets(myLastComponent).left;
|
||||
myLastComponent
|
||||
.setBounds(bounds.x + location.x - borderOffset, bounds.y + PluginManagerConfigurable.offset5() + bounds.height,
|
||||
Math.min(buttonSize.width, size.width),
|
||||
buttonSize.height);
|
||||
}
|
||||
});
|
||||
|
||||
updateIcon(false, false);
|
||||
updateColors(EventHandler.SelectionType.NONE);
|
||||
}
|
||||
|
||||
private void createMetricsPanel(@NotNull JPanel centerPanel) {
|
||||
if (!(myPlugin instanceof PluginNode)) {
|
||||
return;
|
||||
}
|
||||
|
||||
String downloads = PluginManagerConfigurable.getDownloads(myPlugin);
|
||||
String date = PluginManagerConfigurable.getLastUpdatedDate(myPlugin);
|
||||
String rating = PluginManagerConfigurable.getRating(myPlugin);
|
||||
|
||||
if (downloads != null || date != null || rating != null) {
|
||||
JPanel panel = new NonOpaquePanel(new HorizontalLayout(JBUIScale.scale(7)));
|
||||
centerPanel.add(panel);
|
||||
|
||||
if (date != null) {
|
||||
myLastUpdated = createRatingLabel(panel, date, AllIcons.Plugins.Updated);
|
||||
}
|
||||
if (downloads != null) {
|
||||
myDownloads = createRatingLabel(panel, downloads, AllIcons.Plugins.Downloads);
|
||||
}
|
||||
if (rating != null) {
|
||||
myRating = createRatingLabel(panel, rating, AllIcons.Plugins.Rating);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
static JLabel createRatingLabel(@NotNull JPanel panel, @NotNull String text, @Nullable Icon icon) {
|
||||
return createRatingLabel(panel, null, text, icon, null, true);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
static JLabel createRatingLabel(@NotNull JPanel panel,
|
||||
@Nullable Object constraints,
|
||||
@NotNull String text,
|
||||
@Nullable Icon icon,
|
||||
@Nullable Color color,
|
||||
boolean tiny) {
|
||||
JLabel label = new JLabel(text, icon, SwingConstants.CENTER);
|
||||
label.setOpaque(false);
|
||||
label.setIconTextGap(2);
|
||||
if (color != null) {
|
||||
label.setForeground(color);
|
||||
}
|
||||
panel.add(tiny ? PluginManagerConfigurable.setTinyFont(label) : label, constraints);
|
||||
return label;
|
||||
}
|
||||
|
||||
private void addInstallButton() {
|
||||
if (InstalledPluginsState.getInstance().wasInstalled(myPlugin.getPluginId())) {
|
||||
add(myLastComponent = new RestartButton(myPluginModel));
|
||||
return;
|
||||
}
|
||||
|
||||
myInstallButton.addActionListener(e -> myPluginModel.installOrUpdatePlugin(myPlugin, null));
|
||||
myInstallButton.setEnabled(PluginManagerCore.getPlugin(myPlugin.getPluginId()) == null);
|
||||
add(myLastComponent = myInstallButton);
|
||||
|
||||
if (MyPluginModel.isInstallingOrUpdate(myPlugin)) {
|
||||
showProgress(false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showProgress() {
|
||||
showProgress(true);
|
||||
}
|
||||
|
||||
private void showProgress(boolean repaint) {
|
||||
TwoLineProgressIndicator indicator = new TwoLineProgressIndicator();
|
||||
indicator.setCancelRunnable(() -> myPluginModel.finishInstall(myPlugin, false, false, true));
|
||||
myIndicator = indicator;
|
||||
|
||||
myInstallButton.setVisible(false);
|
||||
add(myLastComponent = indicator.getComponent());
|
||||
doLayout();
|
||||
|
||||
MyPluginModel.addProgress(myPlugin, indicator);
|
||||
|
||||
if (repaint) {
|
||||
fullRepaint();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void hideProgress(boolean success, boolean restartRequired) {
|
||||
myIndicator = null;
|
||||
JComponent lastComponent = myLastComponent;
|
||||
if (success) {
|
||||
add(myLastComponent = new RestartButton(myPluginModel));
|
||||
}
|
||||
else {
|
||||
myLastComponent = myInstallButton;
|
||||
myInstallButton.setVisible(true);
|
||||
}
|
||||
remove(lastComponent);
|
||||
doLayout();
|
||||
fullRepaint();
|
||||
}
|
||||
|
||||
private void addTags(@NotNull JPanel parent, @NotNull TagBuilder tagBuilder) {
|
||||
List<String> tags = PluginManagerConfigurable.getTags(myPlugin);
|
||||
if (tags.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
NonOpaquePanel panel = new NonOpaquePanel(new HorizontalLayout(JBUIScale.scale(6)));
|
||||
parent.add(panel);
|
||||
|
||||
myTagComponents = new ArrayList<>();
|
||||
|
||||
for (String tag : tags) {
|
||||
TagComponent component = tagBuilder.createTagComponent(tag);
|
||||
panel.add(component);
|
||||
myTagComponents.add(component);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setListeners(@NotNull LinkListener<? super IdeaPluginDescriptor> listener,
|
||||
@NotNull LinkListener<String> searchListener,
|
||||
@NotNull EventHandler eventHandler) {
|
||||
super.setListeners(listener, searchListener, eventHandler);
|
||||
|
||||
if (myDescription != null) {
|
||||
UIUtil.setCursor(myDescription, Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
|
||||
|
||||
myDescription.addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent event) {
|
||||
if (SwingUtilities.isLeftMouseButton(event)) {
|
||||
listener.linkSelected(myName, myPlugin);
|
||||
}
|
||||
}
|
||||
});
|
||||
myDescription.addMouseListener(myHoverNameListener);
|
||||
}
|
||||
|
||||
if (myTagComponents != null) {
|
||||
for (TagComponent component : myTagComponents) {
|
||||
//noinspection unchecked
|
||||
component.setListener(searchListener, SearchQueryParser.getTagQuery(component.getText()));
|
||||
}
|
||||
myTagComponents = null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateColors(@NotNull Color grayedFg, @NotNull Color background) {
|
||||
super.updateColors(grayedFg, background);
|
||||
|
||||
if (myLastUpdated != null) {
|
||||
myLastUpdated.setForeground(grayedFg);
|
||||
}
|
||||
if (myDownloads != null) {
|
||||
myDownloads.setForeground(grayedFg);
|
||||
}
|
||||
if (myRating != null) {
|
||||
myRating.setForeground(grayedFg);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
if (myIndicator != null) {
|
||||
MyPluginModel.removeProgress(myPlugin, myIndicator);
|
||||
myIndicator = null;
|
||||
}
|
||||
myPluginModel.removeComponent(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMarketplace() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
+124
-57
@@ -10,6 +10,8 @@ import com.intellij.openapi.project.DumbAwareAction;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.util.Ref;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.wm.IdeFocusManager;
|
||||
import com.intellij.ui.Gray;
|
||||
import com.intellij.ui.JBColor;
|
||||
import com.intellij.ui.LicensingFacade;
|
||||
import com.intellij.ui.RelativeFont;
|
||||
@@ -32,11 +34,15 @@ import java.util.ListIterator;
|
||||
/**
|
||||
* @author Alexander Lobas
|
||||
*/
|
||||
public class ListPluginComponent extends CellPluginComponent {
|
||||
public class ListPluginComponent extends JPanel {
|
||||
public static final Color DisabledColor = JBColor.namedColor("Plugins.disabledForeground", new JBColor(0xB1B1B1, 0x696969));
|
||||
public static final Color GRAY_COLOR = JBColor.namedColor("Label.infoForeground", new JBColor(Gray._120, Gray._135));
|
||||
private static final Color HOVER_COLOR = JBColor.namedColor("Plugins.lightSelectionBackground", new JBColor(0xF5F9FF, 0x36393B));
|
||||
|
||||
private final MyPluginModel myPluginModel;
|
||||
private final LinkListener<Object> mySearchListener;
|
||||
private final boolean myMarketplace;
|
||||
public final IdeaPluginDescriptor myPlugin;
|
||||
private boolean myUninstalled;
|
||||
private boolean myUninstalledWithoutRestart;
|
||||
public IdeaPluginDescriptor myUpdateDescriptor;
|
||||
@@ -44,9 +50,9 @@ public class ListPluginComponent extends CellPluginComponent {
|
||||
private final JLabel myNameComponent = new JLabel();
|
||||
private final JLabel myIconComponent = new JLabel(AllIcons.Plugins.PluginLogo_40);
|
||||
private final BaselineLayout myLayout = new BaselineLayout();
|
||||
private JButton myRestartButton;
|
||||
private InstallButton myInstallButton;
|
||||
private JButton myUpdateButton;
|
||||
protected JButton myRestartButton;
|
||||
protected InstallButton myInstallButton;
|
||||
protected JButton myUpdateButton;
|
||||
private JCheckBox myEnableDisableButton;
|
||||
private JLabel myRating;
|
||||
private JLabel myDownloads;
|
||||
@@ -57,12 +63,15 @@ public class ListPluginComponent extends CellPluginComponent {
|
||||
private JComponent myErrorComponent;
|
||||
private OneLineProgressIndicator myIndicator;
|
||||
private EventHandler myEventHandler;
|
||||
protected EventHandler.SelectionType mySelection = EventHandler.SelectionType.NONE;
|
||||
|
||||
public static boolean HANDLE_FOCUS_ON_SELECTION = true;
|
||||
|
||||
public ListPluginComponent(@NotNull MyPluginModel pluginModel,
|
||||
@NotNull IdeaPluginDescriptor plugin,
|
||||
@NotNull LinkListener<Object> searchListener,
|
||||
boolean marketplace) {
|
||||
super(plugin);
|
||||
myPlugin = plugin;
|
||||
myPluginModel = pluginModel;
|
||||
mySearchListener = searchListener;
|
||||
myMarketplace = marketplace;
|
||||
@@ -96,6 +105,40 @@ public class ListPluginComponent extends CellPluginComponent {
|
||||
updateColors(EventHandler.SelectionType.NONE);
|
||||
}
|
||||
|
||||
public EventHandler.SelectionType getSelection() {
|
||||
return mySelection;
|
||||
}
|
||||
|
||||
public void setSelection(@NotNull EventHandler.SelectionType type) {
|
||||
setSelection(type, type == EventHandler.SelectionType.SELECTION);
|
||||
}
|
||||
|
||||
public void setSelection(@NotNull EventHandler.SelectionType type, boolean scrollAndFocus) {
|
||||
mySelection = type;
|
||||
|
||||
if (scrollAndFocus) {
|
||||
scrollToVisible();
|
||||
if (getParent() != null && type == EventHandler.SelectionType.SELECTION && HANDLE_FOCUS_ON_SELECTION) {
|
||||
IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> IdeFocusManager.getGlobalInstance().requestFocus(this, true));
|
||||
}
|
||||
}
|
||||
|
||||
updateColors(type);
|
||||
repaint();
|
||||
}
|
||||
|
||||
public void scrollToVisible() {
|
||||
JComponent parent = (JComponent)getParent();
|
||||
if (parent == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
Rectangle bounds = getBounds();
|
||||
if (!parent.getVisibleRect().contains(bounds)) {
|
||||
parent.scrollRectToVisible(bounds);
|
||||
}
|
||||
}
|
||||
|
||||
private void createButtons() {
|
||||
if (myMarketplace) {
|
||||
if (InstalledPluginsState.getInstance().wasInstalled(myPlugin.getPluginId())) {
|
||||
@@ -164,24 +207,24 @@ public class ListPluginComponent extends CellPluginComponent {
|
||||
if (myMarketplace) {
|
||||
String downloads = PluginManagerConfigurable.getDownloads(myPlugin);
|
||||
if (downloads != null) {
|
||||
myDownloads = GridCellPluginComponent.createRatingLabel(panel, downloads, AllIcons.Plugins.Downloads);
|
||||
myDownloads = createRatingLabel(panel, downloads, AllIcons.Plugins.Downloads);
|
||||
}
|
||||
|
||||
String rating = PluginManagerConfigurable.getRating(myPlugin);
|
||||
if (rating != null) {
|
||||
myRating = GridCellPluginComponent.createRatingLabel(panel, rating, AllIcons.Plugins.Rating);
|
||||
myRating = createRatingLabel(panel, rating, AllIcons.Plugins.Rating);
|
||||
}
|
||||
}
|
||||
else {
|
||||
String version = !myPlugin.isBundled() || myPlugin.allowBundledUpdate() ? myPlugin.getVersion() : "bundled";
|
||||
if (!StringUtil.isEmptyOrSpaces(version)) {
|
||||
myVersion = GridCellPluginComponent.createRatingLabel(panel, version, null);
|
||||
myVersion = createRatingLabel(panel, version, null);
|
||||
}
|
||||
}
|
||||
|
||||
String vendor = myPlugin.isBundled() ? null : StringUtil.trim(myPlugin.getVendor());
|
||||
if (!StringUtil.isEmptyOrSpaces(vendor)) {
|
||||
myVendor = GridCellPluginComponent.createRatingLabel(panel, TextHorizontalLayout.FIX_LABEL, vendor, null, null, true);
|
||||
myVendor = createRatingLabel(panel, TextHorizontalLayout.FIX_LABEL, vendor, null, null, true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -284,7 +327,6 @@ public class ListPluginComponent extends CellPluginComponent {
|
||||
doLayout();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setListeners(@NotNull LinkListener<? super IdeaPluginDescriptor> listener,
|
||||
@NotNull LinkListener<String> searchListener,
|
||||
@NotNull EventHandler eventHandler) {
|
||||
@@ -292,7 +334,10 @@ public class ListPluginComponent extends CellPluginComponent {
|
||||
eventHandler.addAll(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateColors(@NotNull EventHandler.SelectionType type) {
|
||||
updateColors(GRAY_COLOR, type == EventHandler.SelectionType.NONE ? PluginManagerConfigurable.MAIN_BG_COLOR : HOVER_COLOR);
|
||||
}
|
||||
|
||||
protected void updateColors(@NotNull Color grayedFg, @NotNull Color background) {
|
||||
setBackground(background);
|
||||
|
||||
@@ -330,7 +375,6 @@ public class ListPluginComponent extends CellPluginComponent {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateErrors() {
|
||||
boolean errors = myPluginModel.hasErrors(myPlugin);
|
||||
updateIcon(errors, myUninstalled || !myPluginModel.isEnabled(myPlugin));
|
||||
@@ -367,12 +411,10 @@ public class ListPluginComponent extends CellPluginComponent {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateIcon(boolean errors, boolean disabled) {
|
||||
myIconComponent.setIcon(PluginLogo.getIcon(myPlugin, false, PluginManagerConfigurable.isJBPlugin(myPlugin), errors, disabled));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showProgress() {
|
||||
showProgress(true);
|
||||
}
|
||||
@@ -389,7 +431,6 @@ public class ListPluginComponent extends CellPluginComponent {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void hideProgress(boolean success, boolean restartRequired) {
|
||||
myIndicator = null;
|
||||
myLayout.removeProgressComponent();
|
||||
@@ -406,12 +447,10 @@ public class ListPluginComponent extends CellPluginComponent {
|
||||
fullRepaint();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearProgress() {
|
||||
myIndicator = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enableRestart() {
|
||||
if (myInstallButton != null) {
|
||||
myLayout.removeButtonComponent(myInstallButton);
|
||||
@@ -430,7 +469,6 @@ public class ListPluginComponent extends CellPluginComponent {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateEnabledState() {
|
||||
if (!myUninstalled && myEnableDisableButton != null) {
|
||||
myEnableDisableButton.setSelected(isEnabledState());
|
||||
@@ -439,7 +477,6 @@ public class ListPluginComponent extends CellPluginComponent {
|
||||
setSelection(mySelection, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateAfterUninstall(boolean needRestartForUninstall) {
|
||||
myUninstalled = true;
|
||||
myUninstalledWithoutRestart = !needRestartForUninstall;
|
||||
@@ -455,16 +492,14 @@ public class ListPluginComponent extends CellPluginComponent {
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isEnabledState() {
|
||||
protected boolean isEnabledState() {
|
||||
return myPluginModel.isEnabled(myPlugin);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMarketplace() {
|
||||
return myMarketplace;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
if (myIndicator != null) {
|
||||
MyPluginModel.removeProgress(myPlugin, myIndicator);
|
||||
@@ -473,23 +508,22 @@ public class ListPluginComponent extends CellPluginComponent {
|
||||
myPluginModel.removeComponent(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createPopupMenu(@NotNull DefaultActionGroup group, @NotNull List<? extends CellPluginComponent> selection) {
|
||||
for (CellPluginComponent component : selection) {
|
||||
public void createPopupMenu(@NotNull DefaultActionGroup group, @NotNull List<? extends ListPluginComponent> selection) {
|
||||
for (ListPluginComponent component : selection) {
|
||||
if (MyPluginModel.isInstallingOrUpdate(component.myPlugin)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
boolean restart = true;
|
||||
for (CellPluginComponent component : selection) {
|
||||
if (((ListPluginComponent)component).myRestartButton == null) {
|
||||
for (ListPluginComponent component : selection) {
|
||||
if (component.myRestartButton == null) {
|
||||
restart = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (restart) {
|
||||
group.add(new ButtonAnAction(((ListPluginComponent)selection.get(0)).myRestartButton));
|
||||
group.add(new ButtonAnAction(selection.get(0).myRestartButton));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -499,7 +533,7 @@ public class ListPluginComponent extends CellPluginComponent {
|
||||
JButton[] installButtons = new JButton[size];
|
||||
|
||||
for (int i = 0; i < size; i++) {
|
||||
JButton button = ((ListPluginComponent)selection.get(i)).myInstallButton;
|
||||
JButton button = selection.get(i).myInstallButton;
|
||||
if (button == null || !button.isVisible() || !button.isEnabled()) {
|
||||
return;
|
||||
}
|
||||
@@ -511,7 +545,7 @@ public class ListPluginComponent extends CellPluginComponent {
|
||||
}
|
||||
|
||||
boolean showUpdateAndState = true;
|
||||
for (CellPluginComponent component : selection) {
|
||||
for (ListPluginComponent component : selection) {
|
||||
if (myPluginModel.hasErrors(component.myPlugin)) {
|
||||
showUpdateAndState = false;
|
||||
break;
|
||||
@@ -522,7 +556,7 @@ public class ListPluginComponent extends CellPluginComponent {
|
||||
JButton[] updateButtons = new JButton[size];
|
||||
|
||||
for (int i = 0; i < size; i++) {
|
||||
JButton button = ((ListPluginComponent)selection.get(i)).myUpdateButton;
|
||||
JButton button = selection.get(i).myUpdateButton;
|
||||
if (button == null || !button.isVisible()) {
|
||||
updateButtons = null;
|
||||
break;
|
||||
@@ -546,8 +580,8 @@ public class ListPluginComponent extends CellPluginComponent {
|
||||
});
|
||||
}
|
||||
|
||||
for (CellPluginComponent component : selection) {
|
||||
if (((ListPluginComponent)component).myUninstalled || component.myPlugin.isBundled()) {
|
||||
for (ListPluginComponent component : selection) {
|
||||
if (component.myUninstalled || component.myPlugin.isBundled()) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -562,24 +596,23 @@ public class ListPluginComponent extends CellPluginComponent {
|
||||
if (!MyPluginModel.showUninstallDialog(selection)) {
|
||||
return;
|
||||
}
|
||||
for (CellPluginComponent component : selection) {
|
||||
for (ListPluginComponent component : selection) {
|
||||
myPluginModel.doUninstall(component, component.myPlugin, null);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleKeyAction(int keyCode, @NotNull List<? extends CellPluginComponent> selection) {
|
||||
for (CellPluginComponent component : selection) {
|
||||
public void handleKeyAction(int keyCode, @NotNull List<? extends ListPluginComponent> selection) {
|
||||
for (ListPluginComponent component : selection) {
|
||||
if (MyPluginModel.isInstallingOrUpdate(component.myPlugin)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
boolean restart = true;
|
||||
for (CellPluginComponent component : selection) {
|
||||
if (((ListPluginComponent)component).myRestartButton == null) {
|
||||
for (ListPluginComponent component : selection) {
|
||||
if (component.myRestartButton == null) {
|
||||
restart = false;
|
||||
break;
|
||||
}
|
||||
@@ -588,25 +621,25 @@ public class ListPluginComponent extends CellPluginComponent {
|
||||
if (myMarketplace) {
|
||||
if (keyCode == KeyEvent.VK_ENTER) {
|
||||
if (restart) {
|
||||
((ListPluginComponent)selection.get(0)).myRestartButton.doClick();
|
||||
selection.get(0).myRestartButton.doClick();
|
||||
}
|
||||
|
||||
for (CellPluginComponent component : selection) {
|
||||
JButton button = ((ListPluginComponent)component).myInstallButton;
|
||||
for (ListPluginComponent component : selection) {
|
||||
JButton button = component.myInstallButton;
|
||||
if (button == null || !button.isVisible() || !button.isEnabled()) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
for (CellPluginComponent component : selection) {
|
||||
((ListPluginComponent)component).myInstallButton.doClick();
|
||||
for (ListPluginComponent component : selection) {
|
||||
component.myInstallButton.doClick();
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
boolean update = true;
|
||||
for (CellPluginComponent component : selection) {
|
||||
JButton button = ((ListPluginComponent)component).myUpdateButton;
|
||||
for (ListPluginComponent component : selection) {
|
||||
JButton button = component.myUpdateButton;
|
||||
if (button == null || !button.isVisible()) {
|
||||
update = false;
|
||||
break;
|
||||
@@ -615,17 +648,17 @@ public class ListPluginComponent extends CellPluginComponent {
|
||||
|
||||
if (keyCode == KeyEvent.VK_ENTER) {
|
||||
if (restart) {
|
||||
((ListPluginComponent)selection.get(0)).myRestartButton.doClick();
|
||||
selection.get(0).myRestartButton.doClick();
|
||||
}
|
||||
else if (update) {
|
||||
for (CellPluginComponent component : selection) {
|
||||
((ListPluginComponent)component).myUpdateButton.doClick();
|
||||
for (ListPluginComponent component : selection) {
|
||||
component.myUpdateButton.doClick();
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (!restart && !update) {
|
||||
if (keyCode == KeyEvent.VK_SPACE) {
|
||||
for (CellPluginComponent component : selection) {
|
||||
for (ListPluginComponent component : selection) {
|
||||
if (myPluginModel.hasErrors(component.myPlugin)) {
|
||||
return;
|
||||
}
|
||||
@@ -640,28 +673,40 @@ public class ListPluginComponent extends CellPluginComponent {
|
||||
}
|
||||
}
|
||||
else if (keyCode == EventHandler.DELETE_CODE) {
|
||||
for (CellPluginComponent component : selection) {
|
||||
if (((ListPluginComponent)component).myUninstalled || component.myPlugin.isBundled()) {
|
||||
for (ListPluginComponent component : selection) {
|
||||
if (component.myUninstalled || component.myPlugin.isBundled()) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (!MyPluginModel.showUninstallDialog(selection)) {
|
||||
return;
|
||||
}
|
||||
for (CellPluginComponent component : selection) {
|
||||
for (ListPluginComponent component : selection) {
|
||||
myPluginModel.doUninstall(this, component.myPlugin, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void fullRepaint() {
|
||||
Container parent = getParent();
|
||||
parent.doLayout();
|
||||
parent.revalidate();
|
||||
parent.repaint();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static Pair<Boolean, IdeaPluginDescriptor[]> getSelectionNewState(@NotNull List<? extends CellPluginComponent> selection) {
|
||||
boolean state = ((ListPluginComponent)selection.get(0)).isEnabledState();
|
||||
public IdeaPluginDescriptor getPluginDescriptor() {
|
||||
return myPlugin;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static Pair<Boolean, IdeaPluginDescriptor[]> getSelectionNewState(@NotNull List<? extends ListPluginComponent> selection) {
|
||||
boolean state = selection.get(0).isEnabledState();
|
||||
boolean setTrue = false;
|
||||
|
||||
for (ListIterator<? extends CellPluginComponent> I = selection.listIterator(1); I.hasNext(); ) {
|
||||
if (state != ((ListPluginComponent)I.next()).isEnabledState()) {
|
||||
for (ListIterator<? extends ListPluginComponent> I = selection.listIterator(1); I.hasNext(); ) {
|
||||
if (state != I.next().isEnabledState()) {
|
||||
setTrue = true;
|
||||
break;
|
||||
}
|
||||
@@ -676,6 +721,28 @@ public class ListPluginComponent extends CellPluginComponent {
|
||||
return Pair.create(setTrue || !state, plugins);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
static JLabel createRatingLabel(@NotNull JPanel panel, @NotNull String text, @Nullable Icon icon) {
|
||||
return createRatingLabel(panel, null, text, icon, null, true);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
static JLabel createRatingLabel(@NotNull JPanel panel,
|
||||
@Nullable Object constraints,
|
||||
@NotNull String text,
|
||||
@Nullable Icon icon,
|
||||
@Nullable Color color,
|
||||
boolean tiny) {
|
||||
JLabel label = new JLabel(text, icon, SwingConstants.CENTER);
|
||||
label.setOpaque(false);
|
||||
label.setIconTextGap(2);
|
||||
if (color != null) {
|
||||
label.setForeground(color);
|
||||
}
|
||||
panel.add(tiny ? PluginManagerConfigurable.setTinyFont(label) : label, constraints);
|
||||
return label;
|
||||
}
|
||||
|
||||
public static class ButtonAnAction extends DumbAwareAction {
|
||||
private final JButton[] myButtons;
|
||||
|
||||
|
||||
+29
-29
@@ -20,9 +20,9 @@ import java.util.function.Consumer;
|
||||
public class MultiSelectionEventHandler extends EventHandler {
|
||||
private PluginsGroupComponent myContainer;
|
||||
private PagePluginLayout myLayout;
|
||||
private List<CellPluginComponent> myComponents;
|
||||
private List<ListPluginComponent> myComponents;
|
||||
|
||||
private CellPluginComponent myHoverComponent;
|
||||
private ListPluginComponent myHoverComponent;
|
||||
|
||||
private int mySelectionIndex;
|
||||
private int mySelectionLength;
|
||||
@@ -45,7 +45,7 @@ public class MultiSelectionEventHandler extends EventHandler {
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent event) {
|
||||
if (SwingUtilities.isLeftMouseButton(event)) {
|
||||
CellPluginComponent component = get(event);
|
||||
ListPluginComponent component = get(event);
|
||||
int index = getIndex(component);
|
||||
|
||||
if (event.isShiftDown()) {
|
||||
@@ -69,7 +69,7 @@ public class MultiSelectionEventHandler extends EventHandler {
|
||||
}
|
||||
}
|
||||
else if (SwingUtilities.isRightMouseButton(event)) {
|
||||
CellPluginComponent component = get(event);
|
||||
ListPluginComponent component = get(event);
|
||||
|
||||
if (myAllSelected || myMixSelection) {
|
||||
int size = getSelection().size();
|
||||
@@ -110,7 +110,7 @@ public class MultiSelectionEventHandler extends EventHandler {
|
||||
@Override
|
||||
public void mouseMoved(MouseEvent event) {
|
||||
if (myHoverComponent == null) {
|
||||
CellPluginComponent component = get(event);
|
||||
ListPluginComponent component = get(event);
|
||||
if (component.getSelection() == SelectionType.NONE) {
|
||||
myHoverComponent = component;
|
||||
component.setSelection(SelectionType.HOVER);
|
||||
@@ -172,7 +172,7 @@ public class MultiSelectionEventHandler extends EventHandler {
|
||||
}
|
||||
else if (code == KeyEvent.VK_SPACE || code == KeyEvent.VK_ENTER || code == DELETE_CODE) {
|
||||
assert mySelectionLength != 0;
|
||||
CellPluginComponent component = myComponents.get(mySelectionIndex);
|
||||
ListPluginComponent component = myComponents.get(mySelectionIndex);
|
||||
if (component.getSelection() != SelectionType.SELECTION) {
|
||||
component.setSelection(SelectionType.SELECTION);
|
||||
}
|
||||
@@ -185,7 +185,7 @@ public class MultiSelectionEventHandler extends EventHandler {
|
||||
@Override
|
||||
public void focusGained(FocusEvent event) {
|
||||
if (mySelectionIndex >= 0 && mySelectionLength == 1 && !myMixSelection) {
|
||||
CellPluginComponent component = get(event);
|
||||
ListPluginComponent component = get(event);
|
||||
int index = getIndex(component);
|
||||
if (mySelectionIndex != index) {
|
||||
clearSelectionWithout(index);
|
||||
@@ -204,13 +204,13 @@ public class MultiSelectionEventHandler extends EventHandler {
|
||||
|
||||
try {
|
||||
//noinspection AssignmentToStaticFieldFromInstanceMethod
|
||||
CellPluginComponent.HANDLE_FOCUS_ON_SELECTION = false;
|
||||
ListPluginComponent.HANDLE_FOCUS_ON_SELECTION = false;
|
||||
|
||||
myKeyListener.keyPressed(event);
|
||||
}
|
||||
finally {
|
||||
//noinspection AssignmentToStaticFieldFromInstanceMethod
|
||||
CellPluginComponent.HANDLE_FOCUS_ON_SELECTION = true;
|
||||
ListPluginComponent.HANDLE_FOCUS_ON_SELECTION = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -221,7 +221,7 @@ public class MultiSelectionEventHandler extends EventHandler {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addCell(@NotNull CellPluginComponent component, int index) {
|
||||
public void addCell(@NotNull ListPluginComponent component, int index) {
|
||||
if (index == -1) {
|
||||
myComponents.add(component);
|
||||
}
|
||||
@@ -231,7 +231,7 @@ public class MultiSelectionEventHandler extends EventHandler {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addCell(@NotNull CellPluginComponent component, @Nullable CellPluginComponent anchor) {
|
||||
public void addCell(@NotNull ListPluginComponent component, @Nullable ListPluginComponent anchor) {
|
||||
if (anchor == null) {
|
||||
myComponents.add(component);
|
||||
}
|
||||
@@ -241,12 +241,12 @@ public class MultiSelectionEventHandler extends EventHandler {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeCell(@NotNull CellPluginComponent component) {
|
||||
public void removeCell(@NotNull ListPluginComponent component) {
|
||||
myComponents.remove(component);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCellIndex(@NotNull CellPluginComponent component) {
|
||||
public int getCellIndex(@NotNull ListPluginComponent component) {
|
||||
return myComponents.indexOf(component);
|
||||
}
|
||||
|
||||
@@ -270,10 +270,10 @@ public class MultiSelectionEventHandler extends EventHandler {
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public List<CellPluginComponent> getSelection() {
|
||||
List<CellPluginComponent> selection = new ArrayList<>();
|
||||
public List<ListPluginComponent> getSelection() {
|
||||
List<ListPluginComponent> selection = new ArrayList<>();
|
||||
|
||||
for (CellPluginComponent component : myComponents) {
|
||||
for (ListPluginComponent component : myComponents) {
|
||||
if (component.getSelection() == SelectionType.SELECTION) {
|
||||
selection.add(component);
|
||||
}
|
||||
@@ -332,7 +332,7 @@ public class MultiSelectionEventHandler extends EventHandler {
|
||||
myMixSelection = false;
|
||||
myHoverComponent = null;
|
||||
|
||||
for (CellPluginComponent component : myComponents) {
|
||||
for (ListPluginComponent component : myComponents) {
|
||||
if (component.getSelection() != SelectionType.SELECTION) {
|
||||
component.setSelection(SelectionType.SELECTION, false);
|
||||
}
|
||||
@@ -423,7 +423,7 @@ public class MultiSelectionEventHandler extends EventHandler {
|
||||
}
|
||||
}
|
||||
|
||||
private int getIndex(@NotNull CellPluginComponent component) {
|
||||
private int getIndex(@NotNull ListPluginComponent component) {
|
||||
int index = myComponents.indexOf(component);
|
||||
assert index >= 0 : component;
|
||||
return index;
|
||||
@@ -434,7 +434,7 @@ public class MultiSelectionEventHandler extends EventHandler {
|
||||
return;
|
||||
}
|
||||
if (myMixSelection && mySelectionIndex != -1) {
|
||||
CellPluginComponent component = myComponents.get(mySelectionIndex);
|
||||
ListPluginComponent component = myComponents.get(mySelectionIndex);
|
||||
if (component.getSelection() != SelectionType.SELECTION) {
|
||||
component.setSelection(SelectionType.SELECTION);
|
||||
}
|
||||
@@ -455,13 +455,13 @@ public class MultiSelectionEventHandler extends EventHandler {
|
||||
}
|
||||
|
||||
for (int i = 0; i < first; i++) {
|
||||
CellPluginComponent component = myComponents.get(i);
|
||||
ListPluginComponent component = myComponents.get(i);
|
||||
if (component.getSelection() == SelectionType.SELECTION) {
|
||||
component.setSelection(SelectionType.NONE);
|
||||
}
|
||||
}
|
||||
for (int i = last, size = myComponents.size(); i < size; i++) {
|
||||
CellPluginComponent component = myComponents.get(i);
|
||||
ListPluginComponent component = myComponents.get(i);
|
||||
if (component.getSelection() == SelectionType.SELECTION) {
|
||||
component.setSelection(SelectionType.NONE);
|
||||
}
|
||||
@@ -473,7 +473,7 @@ public class MultiSelectionEventHandler extends EventHandler {
|
||||
myMixSelection = false;
|
||||
for (int i = 0, size = myComponents.size(); i < size; i++) {
|
||||
if (i != withoutIndex) {
|
||||
CellPluginComponent component = myComponents.get(i);
|
||||
ListPluginComponent component = myComponents.get(i);
|
||||
if (component.getSelection() == SelectionType.SELECTION) {
|
||||
component.setSelection(SelectionType.NONE);
|
||||
}
|
||||
@@ -481,7 +481,7 @@ public class MultiSelectionEventHandler extends EventHandler {
|
||||
}
|
||||
}
|
||||
|
||||
private void ensureMoveSingleSelection(CellPluginComponent component) {
|
||||
private void ensureMoveSingleSelection(ListPluginComponent component) {
|
||||
int index = getIndex(component);
|
||||
if (mySelectionLength == 0 || mySelectionIndex != index) {
|
||||
clearSelectionWithout(index);
|
||||
@@ -490,13 +490,13 @@ public class MultiSelectionEventHandler extends EventHandler {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSelection(@NotNull CellPluginComponent component, boolean scrollAndFocus) {
|
||||
public void setSelection(@NotNull ListPluginComponent component, boolean scrollAndFocus) {
|
||||
clearSelectionWithout(-1);
|
||||
singleSelection(component, getIndex(component), scrollAndFocus);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSelection(@NotNull List<? extends CellPluginComponent> components) {
|
||||
public void setSelection(@NotNull List<? extends ListPluginComponent> components) {
|
||||
clearSelectionWithout(-1);
|
||||
mySelectionIndex = -1;
|
||||
mySelectionLength = components.size();
|
||||
@@ -507,7 +507,7 @@ public class MultiSelectionEventHandler extends EventHandler {
|
||||
|
||||
mySelectionIndex = getIndex(components.get(0));
|
||||
|
||||
for (CellPluginComponent component : components) {
|
||||
for (ListPluginComponent component : components) {
|
||||
mySelectionIndex = Math.min(mySelectionIndex, getIndex(component));
|
||||
if (component.getSelection() != SelectionType.SELECTION) {
|
||||
component.setSelection(SelectionType.SELECTION, true);
|
||||
@@ -521,11 +521,11 @@ public class MultiSelectionEventHandler extends EventHandler {
|
||||
singleSelection(myComponents.get(index), index);
|
||||
}
|
||||
|
||||
private void singleSelection(@NotNull CellPluginComponent component, int index) {
|
||||
private void singleSelection(@NotNull ListPluginComponent component, int index) {
|
||||
singleSelection(component, index, true);
|
||||
}
|
||||
|
||||
private void singleSelection(@NotNull CellPluginComponent component, int index, boolean scrollAndFocus) {
|
||||
private void singleSelection(@NotNull ListPluginComponent component, int index, boolean scrollAndFocus) {
|
||||
mySelectionIndex = index;
|
||||
mySelectionLength = 1;
|
||||
if (myHoverComponent == component) {
|
||||
@@ -546,7 +546,7 @@ public class MultiSelectionEventHandler extends EventHandler {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateHover(@NotNull CellPluginComponent component) {
|
||||
public void updateHover(@NotNull ListPluginComponent component) {
|
||||
ApplicationManager.getApplication().invokeLater(() -> {
|
||||
myHoverComponent = component;
|
||||
if (component.getSelection() == SelectionType.NONE) {
|
||||
|
||||
@@ -34,9 +34,9 @@ import java.util.stream.Collectors;
|
||||
* @author Alexander Lobas
|
||||
*/
|
||||
public class MyPluginModel extends InstalledPluginsTableModel implements PluginManagerMain.PluginEnabler {
|
||||
private final List<CellPluginComponent> myListComponents = new ArrayList<>();
|
||||
private final Map<IdeaPluginDescriptor, List<CellPluginComponent>> myListMap = new HashMap<>();
|
||||
private final Map<IdeaPluginDescriptor, List<CellPluginComponent>> myGridMap = new HashMap<>();
|
||||
private final List<ListPluginComponent> myInstalledPluginComponents = new ArrayList<>();
|
||||
private final Map<IdeaPluginDescriptor, List<ListPluginComponent>> myInstalledPluginComponentMap = new HashMap<>();
|
||||
private final Map<IdeaPluginDescriptor, List<ListPluginComponent>> myMarketplacePluginComponentMap = new HashMap<>();
|
||||
private final List<PluginsGroup> myEnabledGroups = new ArrayList<>();
|
||||
private PluginsGroupComponent myInstalledPanel;
|
||||
private PluginsGroup myDownloaded;
|
||||
@@ -219,40 +219,39 @@ public class MyPluginModel extends InstalledPluginsTableModel implements PluginM
|
||||
}
|
||||
}
|
||||
|
||||
public void addComponent(@NotNull CellPluginComponent component) {
|
||||
public void addComponent(@NotNull ListPluginComponent component) {
|
||||
if (!component.isMarketplace()) {
|
||||
if (myInstallingPlugins.contains(component.myPlugin)) {
|
||||
return;
|
||||
}
|
||||
myListComponents.add(component);
|
||||
|
||||
List<CellPluginComponent> components = myListMap.computeIfAbsent(component.myPlugin, __ -> new ArrayList<>());
|
||||
List<ListPluginComponent> components = myInstalledPluginComponentMap.computeIfAbsent(component.myPlugin, __ -> new ArrayList<>());
|
||||
components.add(component);
|
||||
}
|
||||
else {
|
||||
List<CellPluginComponent> components = myGridMap.computeIfAbsent(component.myPlugin, __ -> new ArrayList<>());
|
||||
List<ListPluginComponent> components = myMarketplacePluginComponentMap.computeIfAbsent(component.myPlugin, __ -> new ArrayList<>());
|
||||
components.add(component);
|
||||
}
|
||||
}
|
||||
|
||||
public void removeComponent(@NotNull CellPluginComponent component) {
|
||||
public void removeComponent(@NotNull ListPluginComponent component) {
|
||||
if (!component.isMarketplace()) {
|
||||
myListComponents.remove(component);
|
||||
myInstalledPluginComponents.remove(component);
|
||||
|
||||
List<CellPluginComponent> components = myListMap.get(component.myPlugin);
|
||||
List<ListPluginComponent> components = myInstalledPluginComponentMap.get(component.myPlugin);
|
||||
if (components != null) {
|
||||
components.remove(component);
|
||||
if (components.isEmpty()) {
|
||||
myListMap.remove(component.myPlugin);
|
||||
myInstalledPluginComponentMap.remove(component.myPlugin);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
List<CellPluginComponent> components = myGridMap.get(component.myPlugin);
|
||||
List<ListPluginComponent> components = myMarketplacePluginComponentMap.get(component.myPlugin);
|
||||
if (components != null) {
|
||||
components.remove(component);
|
||||
if (components.isEmpty()) {
|
||||
myGridMap.remove(component.myPlugin);
|
||||
myMarketplacePluginComponentMap.remove(component.myPlugin);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -376,15 +375,15 @@ public class MyPluginModel extends InstalledPluginsTableModel implements PluginM
|
||||
myInstalledPanel.doLayout();
|
||||
}
|
||||
|
||||
List<CellPluginComponent> gridComponents = myGridMap.get(descriptor);
|
||||
List<ListPluginComponent> gridComponents = myMarketplacePluginComponentMap.get(descriptor);
|
||||
if (gridComponents != null) {
|
||||
for (CellPluginComponent gridComponent : gridComponents) {
|
||||
for (ListPluginComponent gridComponent : gridComponents) {
|
||||
gridComponent.showProgress();
|
||||
}
|
||||
}
|
||||
List<CellPluginComponent> listComponents = myListMap.get(descriptor);
|
||||
List<ListPluginComponent> listComponents = myInstalledPluginComponentMap.get(descriptor);
|
||||
if (listComponents != null) {
|
||||
for (CellPluginComponent listComponent : listComponents) {
|
||||
for (ListPluginComponent listComponent : listComponents) {
|
||||
listComponent.showProgress();
|
||||
}
|
||||
}
|
||||
@@ -404,15 +403,15 @@ public class MyPluginModel extends InstalledPluginsTableModel implements PluginM
|
||||
myTopController.showProgress(false);
|
||||
}
|
||||
|
||||
List<CellPluginComponent> gridComponents = myGridMap.get(descriptor);
|
||||
List<ListPluginComponent> gridComponents = myMarketplacePluginComponentMap.get(descriptor);
|
||||
if (gridComponents != null) {
|
||||
for (CellPluginComponent gridComponent : gridComponents) {
|
||||
for (ListPluginComponent gridComponent : gridComponents) {
|
||||
gridComponent.hideProgress(success, restartRequired);
|
||||
}
|
||||
}
|
||||
List<CellPluginComponent> listComponents = myListMap.get(descriptor);
|
||||
List<ListPluginComponent> listComponents = myInstalledPluginComponentMap.get(descriptor);
|
||||
if (listComponents != null) {
|
||||
for (CellPluginComponent listComponent : listComponents) {
|
||||
for (ListPluginComponent listComponent : listComponents) {
|
||||
listComponent.hideProgress(success, restartRequired);
|
||||
}
|
||||
}
|
||||
@@ -448,7 +447,7 @@ public class MyPluginModel extends InstalledPluginsTableModel implements PluginM
|
||||
}
|
||||
else if (success) {
|
||||
if (myDownloaded != null && myDownloaded.ui != null && restartRequired) {
|
||||
CellPluginComponent component = myDownloaded.ui.findComponent(descriptor);
|
||||
ListPluginComponent component = myDownloaded.ui.findComponent(descriptor);
|
||||
if (component != null) {
|
||||
component.enableRestart();
|
||||
}
|
||||
@@ -472,12 +471,12 @@ public class MyPluginModel extends InstalledPluginsTableModel implements PluginM
|
||||
|
||||
private void clearInstallingProgress(@NotNull IdeaPluginDescriptor descriptor) {
|
||||
if (myInstallingPlugins.isEmpty()) {
|
||||
for (CellPluginComponent listComponent : myInstalling.ui.plugins) {
|
||||
for (ListPluginComponent listComponent : myInstalling.ui.plugins) {
|
||||
listComponent.clearProgress();
|
||||
}
|
||||
}
|
||||
else {
|
||||
for (CellPluginComponent listComponent : myInstalling.ui.plugins) {
|
||||
for (ListPluginComponent listComponent : myInstalling.ui.plugins) {
|
||||
if (listComponent.myPlugin == descriptor) {
|
||||
listComponent.clearProgress();
|
||||
return;
|
||||
@@ -534,9 +533,9 @@ public class MyPluginModel extends InstalledPluginsTableModel implements PluginM
|
||||
|
||||
String id = descriptor.getPluginId().getIdString();
|
||||
|
||||
for (Entry<IdeaPluginDescriptor, List<CellPluginComponent>> entry : myGridMap.entrySet()) {
|
||||
for (Entry<IdeaPluginDescriptor, List<ListPluginComponent>> entry : myMarketplacePluginComponentMap.entrySet()) {
|
||||
if (id.equals(entry.getKey().getPluginId().getIdString())) {
|
||||
for (CellPluginComponent component : entry.getValue()) {
|
||||
for (ListPluginComponent component : entry.getValue()) {
|
||||
component.hideProgress(true, true);
|
||||
}
|
||||
break;
|
||||
@@ -573,7 +572,7 @@ public class MyPluginModel extends InstalledPluginsTableModel implements PluginM
|
||||
addEnabledGroup(myDownloaded);
|
||||
}
|
||||
else {
|
||||
CellPluginComponent component = myDownloaded.ui.findComponent(descriptor);
|
||||
ListPluginComponent component = myDownloaded.ui.findComponent(descriptor);
|
||||
if (component != null) {
|
||||
myInstalledPanel.setSelection(component);
|
||||
component.enableRestart();
|
||||
@@ -728,7 +727,7 @@ public class MyPluginModel extends InstalledPluginsTableModel implements PluginM
|
||||
}
|
||||
|
||||
private void updateAfterEnableDisable() {
|
||||
for (CellPluginComponent component : myListComponents) {
|
||||
for (ListPluginComponent component : myInstalledPluginComponents) {
|
||||
component.updateEnabledState();
|
||||
}
|
||||
for (PluginDetailsPageComponent detailPanel : myDetailPanels) {
|
||||
@@ -739,7 +738,7 @@ public class MyPluginModel extends InstalledPluginsTableModel implements PluginM
|
||||
}
|
||||
}
|
||||
|
||||
static boolean showUninstallDialog(@NotNull List<? extends CellPluginComponent> selection) {
|
||||
static boolean showUninstallDialog(@NotNull List<? extends ListPluginComponent> selection) {
|
||||
int size = selection.size();
|
||||
return showUninstallDialog(size == 1 ? selection.get(0).myPlugin.getName() : null, size);
|
||||
}
|
||||
@@ -783,14 +782,14 @@ public class MyPluginModel extends InstalledPluginsTableModel implements PluginM
|
||||
update.run();
|
||||
}
|
||||
|
||||
List<CellPluginComponent> listComponents = myListMap.get(descriptor);
|
||||
List<ListPluginComponent> listComponents = myInstalledPluginComponentMap.get(descriptor);
|
||||
if (listComponents != null) {
|
||||
for (CellPluginComponent listComponent : listComponents) {
|
||||
for (ListPluginComponent listComponent : listComponents) {
|
||||
listComponent.updateAfterUninstall(needRestartForUninstall);
|
||||
}
|
||||
}
|
||||
|
||||
for (CellPluginComponent component : myListComponents) {
|
||||
for (ListPluginComponent component : myInstalledPluginComponents) {
|
||||
component.updateErrors();
|
||||
}
|
||||
|
||||
|
||||
+5
-5
@@ -215,7 +215,7 @@ public class PluginDetailsPageComponent extends MultiPanel {
|
||||
PluginManagerConfigurable.setTinyFont(myVersion);
|
||||
myVersion.setBorder(null);
|
||||
myVersion.setOpaque(false);
|
||||
myVersion.setForeground(CellPluginComponent.GRAY_COLOR);
|
||||
myVersion.setForeground(ListPluginComponent.GRAY_COLOR);
|
||||
myVersion.addFocusListener(new FocusAdapter() {
|
||||
@Override
|
||||
public void focusLost(FocusEvent e) {
|
||||
@@ -234,10 +234,10 @@ public class PluginDetailsPageComponent extends MultiPanel {
|
||||
centerPanel.add(panel1);
|
||||
if (myMarketplace) {
|
||||
myDownloads =
|
||||
GridCellPluginComponent.createRatingLabel(panel1, null, "", AllIcons.Plugins.Downloads, CellPluginComponent.GRAY_COLOR, false);
|
||||
ListPluginComponent.createRatingLabel(panel1, null, "", AllIcons.Plugins.Downloads, ListPluginComponent.GRAY_COLOR, false);
|
||||
|
||||
myRating =
|
||||
GridCellPluginComponent.createRatingLabel(panel1, null, "", AllIcons.Plugins.Rating, CellPluginComponent.GRAY_COLOR, false);
|
||||
ListPluginComponent.createRatingLabel(panel1, null, "", AllIcons.Plugins.Rating, ListPluginComponent.GRAY_COLOR, false);
|
||||
}
|
||||
myVendor = new LinkPanel(panel1, false, null, TextHorizontalLayout.FIX_LABEL);
|
||||
|
||||
@@ -266,7 +266,7 @@ public class PluginDetailsPageComponent extends MultiPanel {
|
||||
panel2.add(myTagPanel = new TagPanel(mySearchListener));
|
||||
panel2.add(myVersion);
|
||||
myDate =
|
||||
GridCellPluginComponent.createRatingLabel(panel2, TextHorizontalLayout.FIX_LABEL, "", null, CellPluginComponent.GRAY_COLOR, true);
|
||||
ListPluginComponent.createRatingLabel(panel2, TextHorizontalLayout.FIX_LABEL, "", null, ListPluginComponent.GRAY_COLOR, true);
|
||||
centerPanel.add(panel2);
|
||||
}
|
||||
|
||||
@@ -310,7 +310,7 @@ public class PluginDetailsPageComponent extends MultiPanel {
|
||||
}
|
||||
}
|
||||
|
||||
public void showPlugin(@Nullable CellPluginComponent component, boolean multiSelection) {
|
||||
public void showPlugin(@Nullable ListPluginComponent component, boolean multiSelection) {
|
||||
if (myIndicator != null) {
|
||||
MyPluginModel.removeProgress(myPlugin, myIndicator);
|
||||
hideProgress(false, false);
|
||||
|
||||
@@ -64,7 +64,7 @@ public class PluginListLayout extends AbstractLayoutManager implements PagePlugi
|
||||
component.setBounds(0, y, width, height);
|
||||
y += height;
|
||||
|
||||
for (CellPluginComponent plugin : group.plugins) {
|
||||
for (ListPluginComponent plugin : group.plugins) {
|
||||
int lineHeight = plugin.getPreferredSize().height;
|
||||
plugin.setBounds(0, y, width, lineHeight);
|
||||
y += lineHeight;
|
||||
|
||||
+13
-13
@@ -30,14 +30,14 @@ public class PluginsGroupComponent extends JBPanelWithEmptyText {
|
||||
private final EventHandler myEventHandler;
|
||||
private final LinkListener<IdeaPluginDescriptor> myListener;
|
||||
private final LinkListener<String> mySearchListener;
|
||||
private final Function<? super IdeaPluginDescriptor, ? extends CellPluginComponent> myFunction;
|
||||
private final Function<? super IdeaPluginDescriptor, ? extends ListPluginComponent> myFunction;
|
||||
private final List<UIPluginGroup> myGroups = new ArrayList<>();
|
||||
|
||||
public PluginsGroupComponent(@NotNull LayoutManager layout,
|
||||
@NotNull EventHandler eventHandler,
|
||||
@NotNull LinkListener<IdeaPluginDescriptor> listener,
|
||||
@NotNull LinkListener<String> searchListener,
|
||||
@NotNull Function<? super IdeaPluginDescriptor, ? extends CellPluginComponent> function) {
|
||||
@NotNull Function<? super IdeaPluginDescriptor, ? extends ListPluginComponent> function) {
|
||||
super(layout);
|
||||
myEventHandler = eventHandler;
|
||||
myListener = listener;
|
||||
@@ -60,15 +60,15 @@ public class PluginsGroupComponent extends JBPanelWithEmptyText {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public List<CellPluginComponent> getSelection() {
|
||||
public List<ListPluginComponent> getSelection() {
|
||||
return myEventHandler.getSelection();
|
||||
}
|
||||
|
||||
public void setSelection(@NotNull CellPluginComponent component) {
|
||||
public void setSelection(@NotNull ListPluginComponent component) {
|
||||
myEventHandler.setSelection(component);
|
||||
}
|
||||
|
||||
public void setSelection(@NotNull List<? extends CellPluginComponent> components) {
|
||||
public void setSelection(@NotNull List<? extends ListPluginComponent> components) {
|
||||
myEventHandler.setSelection(components);
|
||||
}
|
||||
|
||||
@@ -92,7 +92,7 @@ public class PluginsGroupComponent extends JBPanelWithEmptyText {
|
||||
if ((scrollBar.getValue() + scrollBar.getVisibleAmount()) >= scrollBar.getMaximum()) {
|
||||
int fromIndex = group.ui.plugins.size();
|
||||
int toIndex = Math.min(fromIndex + gapSize, group.descriptors.size());
|
||||
CellPluginComponent lastComponent = group.ui.plugins.get(fromIndex - 1);
|
||||
ListPluginComponent lastComponent = group.ui.plugins.get(fromIndex - 1);
|
||||
int uiIndex = getComponentIndex(lastComponent);
|
||||
int eventIndex = myEventHandler.getCellIndex(lastComponent);
|
||||
PluginLogo.startBatchMode();
|
||||
@@ -187,7 +187,7 @@ public class PluginsGroupComponent extends JBPanelWithEmptyText {
|
||||
|
||||
private int getEventIndexForGroup(int groupIndex) {
|
||||
for (int i = groupIndex; i >= 0; i--) {
|
||||
List<CellPluginComponent> plugins = myGroups.get(i).plugins;
|
||||
List<ListPluginComponent> plugins = myGroups.get(i).plugins;
|
||||
if (!plugins.isEmpty()) {
|
||||
return myEventHandler.getCellIndex(plugins.get(0));
|
||||
}
|
||||
@@ -197,7 +197,7 @@ public class PluginsGroupComponent extends JBPanelWithEmptyText {
|
||||
|
||||
private void addToGroup(@NotNull PluginsGroup group, @NotNull List<? extends IdeaPluginDescriptor> descriptors, int index, int eventIndex) {
|
||||
for (IdeaPluginDescriptor descriptor : descriptors) {
|
||||
CellPluginComponent pluginComponent = myFunction.fun(descriptor);
|
||||
ListPluginComponent pluginComponent = myFunction.fun(descriptor);
|
||||
group.ui.plugins.add(pluginComponent);
|
||||
add(pluginComponent, index);
|
||||
myEventHandler.addCell(pluginComponent, eventIndex);
|
||||
@@ -213,7 +213,7 @@ public class PluginsGroupComponent extends JBPanelWithEmptyText {
|
||||
|
||||
public void addToGroup(@NotNull PluginsGroup group, @NotNull IdeaPluginDescriptor descriptor) {
|
||||
int index = group.addWithIndex(descriptor);
|
||||
CellPluginComponent anchor = null;
|
||||
ListPluginComponent anchor = null;
|
||||
int uiIndex = -1;
|
||||
|
||||
if (index == group.ui.plugins.size()) {
|
||||
@@ -229,7 +229,7 @@ public class PluginsGroupComponent extends JBPanelWithEmptyText {
|
||||
uiIndex = getComponentIndex(anchor);
|
||||
}
|
||||
|
||||
CellPluginComponent pluginComponent = myFunction.fun(descriptor);
|
||||
ListPluginComponent pluginComponent = myFunction.fun(descriptor);
|
||||
group.ui.plugins.add(index, pluginComponent);
|
||||
add(pluginComponent, uiIndex);
|
||||
myEventHandler.addCell(pluginComponent, anchor);
|
||||
@@ -240,7 +240,7 @@ public class PluginsGroupComponent extends JBPanelWithEmptyText {
|
||||
myGroups.remove(group.ui);
|
||||
remove(group.ui.panel);
|
||||
|
||||
for (CellPluginComponent plugin : group.ui.plugins) {
|
||||
for (ListPluginComponent plugin : group.ui.plugins) {
|
||||
plugin.close();
|
||||
remove(plugin);
|
||||
myEventHandler.removeCell(plugin);
|
||||
@@ -253,7 +253,7 @@ public class PluginsGroupComponent extends JBPanelWithEmptyText {
|
||||
public void removeFromGroup(@NotNull PluginsGroup group, @NotNull IdeaPluginDescriptor descriptor) {
|
||||
int index = ContainerUtil.indexOf(group.ui.plugins, component -> component.myPlugin == descriptor);
|
||||
assert index != -1;
|
||||
CellPluginComponent component = group.ui.plugins.remove(index);
|
||||
ListPluginComponent component = group.ui.plugins.remove(index);
|
||||
component.close();
|
||||
remove(component);
|
||||
myEventHandler.removeCell(component);
|
||||
@@ -275,7 +275,7 @@ public class PluginsGroupComponent extends JBPanelWithEmptyText {
|
||||
|
||||
public void clear() {
|
||||
for (UIPluginGroup group : myGroups) {
|
||||
for (CellPluginComponent plugin : group.plugins) {
|
||||
for (ListPluginComponent plugin : group.plugins) {
|
||||
plugin.close();
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -22,7 +22,7 @@ public class PluginsGroupComponentWithProgress extends PluginsGroupComponent {
|
||||
@NotNull EventHandler eventHandler,
|
||||
@NotNull LinkListener<IdeaPluginDescriptor> listener,
|
||||
@NotNull LinkListener<String> searchListener,
|
||||
@NotNull Function<? super IdeaPluginDescriptor, ? extends CellPluginComponent> function) {
|
||||
@NotNull Function<? super IdeaPluginDescriptor, ? extends ListPluginComponent> function) {
|
||||
super(layout, eventHandler, listener, searchListener, function);
|
||||
myIcon.setOpaque(false);
|
||||
myIcon.setPaintPassiveIcon(false);
|
||||
|
||||
@@ -45,7 +45,7 @@ public class PluginsListLayout extends AbstractLayoutManager implements PagePlug
|
||||
component.setBounds(0, y, width, height);
|
||||
y += height;
|
||||
|
||||
for (CellPluginComponent plugin : group.plugins) {
|
||||
for (ListPluginComponent plugin : group.plugins) {
|
||||
plugin.setBounds(0, y, width, myLineHeight);
|
||||
y += myLineHeight;
|
||||
}
|
||||
@@ -63,15 +63,7 @@ public class PluginsListLayout extends AbstractLayoutManager implements PagePlug
|
||||
myLineHeight = 0;
|
||||
|
||||
for (UIPluginGroup group : groups) {
|
||||
for (CellPluginComponent plugin : group.plugins) {
|
||||
JEditorPane description = plugin.myDescription;
|
||||
if (description != null) {
|
||||
plugin.doLayout();
|
||||
int parentWidth = width - SwingUtilities.convertPoint(description.getParent(), description.getLocation(), plugin).x;
|
||||
if (parentWidth > 0) {
|
||||
description.putClientProperty("parent.width", new Integer(parentWidth));
|
||||
}
|
||||
}
|
||||
for (ListPluginComponent plugin : group.plugins) {
|
||||
|
||||
plugin.doLayout();
|
||||
myLineHeight = Math.max(myLineHeight, plugin.getPreferredSize().height);
|
||||
|
||||
@@ -68,7 +68,7 @@ public abstract class PluginsTab {
|
||||
return;
|
||||
}
|
||||
|
||||
List<CellPluginComponent> selection = panel.getSelection();
|
||||
List<ListPluginComponent> selection = panel.getSelection();
|
||||
int size = selection.size();
|
||||
myDetailsPage.showPlugin(size == 1 ? selection.get(0) : null, size > 1);
|
||||
};
|
||||
@@ -221,7 +221,7 @@ public abstract class PluginsTab {
|
||||
String text = "Type / to see options";
|
||||
|
||||
StatusText emptyText = mySearchTextField.getTextEditor().getEmptyText();
|
||||
emptyText.appendText(text, new SimpleTextAttributes(SimpleTextAttributes.STYLE_PLAIN, CellPluginComponent.GRAY_COLOR));
|
||||
emptyText.appendText(text, new SimpleTextAttributes(SimpleTextAttributes.STYLE_PLAIN, ListPluginComponent.GRAY_COLOR));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.ide.plugins.newui;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.FocusAdapter;
|
||||
import java.awt.event.FocusEvent;
|
||||
import java.awt.event.FocusListener;
|
||||
|
||||
/**
|
||||
* @author Alexander Lobas
|
||||
*/
|
||||
public class ScrollEventHandler extends EventHandler {
|
||||
private final FocusListener myFocusListener = new FocusAdapter() {
|
||||
@Override
|
||||
public void focusGained(FocusEvent e) {
|
||||
get(e).scrollToVisible();
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public void add(@NotNull Component component) {
|
||||
component.addFocusListener(myFocusListener);
|
||||
}
|
||||
}
|
||||
@@ -14,12 +14,12 @@ import java.util.List;
|
||||
*/
|
||||
public class UIPluginGroup {
|
||||
public Component panel;
|
||||
public List<CellPluginComponent> plugins = new ArrayList<>();
|
||||
public List<ListPluginComponent> plugins = new ArrayList<>();
|
||||
|
||||
@Nullable
|
||||
public CellPluginComponent findComponent(@NotNull IdeaPluginDescriptor descriptor) {
|
||||
public ListPluginComponent findComponent(@NotNull IdeaPluginDescriptor descriptor) {
|
||||
String pluginId = descriptor.getPluginId().getIdString();
|
||||
for (CellPluginComponent component : plugins) {
|
||||
for (ListPluginComponent component : plugins) {
|
||||
if (pluginId.equals(component.myPlugin.getPluginId().getIdString())) {
|
||||
return component;
|
||||
}
|
||||
|
||||
+4
-5
@@ -2,8 +2,7 @@
|
||||
package com.intellij.testGuiFramework.fixtures
|
||||
|
||||
import com.intellij.ide.plugins.IdeaPluginDescriptor
|
||||
import com.intellij.ide.plugins.newui.CellPluginComponent
|
||||
import com.intellij.ide.plugins.newui.TabHeaderComponent
|
||||
import com.intellij.ide.plugins.newui.ListPluginComponent
|
||||
import com.intellij.openapi.fileChooser.actions.RefreshFileChooserAction
|
||||
import com.intellij.openapi.options.ex.ConfigurableCardPanel
|
||||
import com.intellij.testGuiFramework.framework.GuiTestUtil.findAndClickButtonWhenEnabled
|
||||
@@ -73,7 +72,7 @@ class PluginDialogFixture(robot: Robot, pluginDialog: JDialog) : JDialogFixture(
|
||||
fun cancel() = findAndClickCancelButton(this)
|
||||
|
||||
private fun findPluginsAppearedOnTheScreen(): List<IdeaPluginDescriptor> =
|
||||
waitUntilFoundList(findPluginCardsPanel(), CellPluginComponent::class.java,
|
||||
waitUntilFoundList(findPluginCardsPanel(), ListPluginComponent::class.java,
|
||||
Timeouts.defaultTimeout) { it.isShowing }.map { it.pluginDescriptor }
|
||||
|
||||
private fun findCheckBox(pluginName: String) =
|
||||
@@ -82,8 +81,8 @@ class PluginDialogFixture(robot: Robot, pluginDialog: JDialog) : JDialogFixture(
|
||||
private fun findPluginCardsPanel(): ConfigurableCardPanel =
|
||||
waitUntilFound(target(), ConfigurableCardPanel::class.java, Timeouts.defaultTimeout) { true }
|
||||
|
||||
private fun findCellPluginComponent(pluginName: String): CellPluginComponent =
|
||||
waitUntilFound(findPluginCardsPanel(), CellPluginComponent::class.java,
|
||||
private fun findCellPluginComponent(pluginName: String): ListPluginComponent =
|
||||
waitUntilFound(findPluginCardsPanel(), ListPluginComponent::class.java,
|
||||
Timeouts.defaultTimeout) { it.isShowing && it.pluginDescriptor.name == pluginName }
|
||||
|
||||
private fun findPluginDetailsLink(pluginName: String): JLabel =
|
||||
|
||||
Reference in New Issue
Block a user