ComponentWithBrowseButton - add API to hide browse button or browse icon

GitOrigin-RevId: 69fbf2bcd78998c69691206cb8c584f7025a2275
This commit is contained in:
Eugene Petrenko
2021-03-22 13:54:45 +00:00
committed by intellij-monorepo-bot
parent bcbc4d56c4
commit 30f9843ef3
@@ -44,6 +44,7 @@ import static com.intellij.openapi.actionSystem.PlatformDataKeys.UI_DISPOSABLE;
public class ComponentWithBrowseButton<Comp extends JComponent> extends JPanel implements Disposable {
private final Comp myComponent;
private final FixedSizeButton myBrowseButton;
private final ExtendableTextComponent.Extension myInlineButtonExtension;
private boolean myButtonEnabled = true;
@ApiStatus.Internal
@@ -59,7 +60,7 @@ public class ComponentWithBrowseButton<Comp extends JComponent> extends JPanel i
setFocusable(false);
boolean inlineBrowseButton = myComponent instanceof ExtendableTextComponent && isUseInlineBrowserButton();
if (inlineBrowseButton) {
((ExtendableTextComponent)myComponent).addExtension(ExtendableTextComponent.Extension.create(
((ExtendableTextComponent)myComponent).addExtension(myInlineButtonExtension = ExtendableTextComponent.Extension.create(
getDefaultIcon(), getHoveredIcon(), getIconTooltip(), this::notifyActionListeners));
new DumbAwareAction() {
@Override
@@ -67,6 +68,8 @@ public class ComponentWithBrowseButton<Comp extends JComponent> extends JPanel i
notifyActionListeners();
}
}.registerCustomShortcutSet(new CustomShortcutSet(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, InputEvent.SHIFT_DOWN_MASK)), myComponent);
} else {
myInlineButtonExtension = null;
}
add(myComponent, BorderLayout.CENTER);
@@ -149,6 +152,17 @@ public class ComponentWithBrowseButton<Comp extends JComponent> extends JPanel i
setEnabled(isEnabled());
}
public void setButtonVisible(boolean buttonVisible) {
myBrowseButton.setVisible(buttonVisible);
if (myInlineButtonExtension != null && myComponent instanceof ExtendableTextComponent) {
if (buttonVisible) {
((ExtendableTextComponent)myComponent).addExtension(myInlineButtonExtension);
} else {
((ExtendableTextComponent)myComponent).removeExtension(myInlineButtonExtension);
}
}
}
public void setButtonIcon(@NotNull Icon icon) {
myBrowseButton.setIcon(icon);
myBrowseButton.setDisabledIcon(IconLoader.getDisabledIcon(icon));
@@ -209,6 +223,13 @@ public class ComponentWithBrowseButton<Comp extends JComponent> extends JPanel i
}
}
/**
* @deprecated The implementation may attach the button via the
* {@link ExtendableTextComponent#addExtension(ExtendableTextComponent.Extension)}
* so that the returned button may not be visible to the users. Instead,
* please use the class APIs without using the implementation details.
*/
@Deprecated
public FixedSizeButton getButton() {
return myBrowseButton;
}