mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
ComponentWithBrowseButton - add API to hide browse button or browse icon
GitOrigin-RevId: 69fbf2bcd78998c69691206cb8c584f7025a2275
This commit is contained in:
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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user