# HG changeset patch # Parent 36d9fb69458c63a2b56190598f75ee170e15a287 diff --git a/openide.awt/src/org/openide/awt/Actions.java b/openide.awt/src/org/openide/awt/Actions.java --- a/openide.awt/src/org/openide/awt/Actions.java +++ b/openide.awt/src/org/openide/awt/Actions.java @@ -220,14 +220,20 @@ /** Connects buttons to action. If the action supplies value for "iconBase" * key from getValue(String) with a path to icons the methods setIcon, - * setPressedIcon, setDisabledIcon and setRolloverIcon will be called on the + * setPressedIcon, setDisabledIcon, setRolloverIcon + * setSelectedIcon, setRolloverSelectedIcon and SetDisabledSelectedIcon + * will be called on the * button with loaded icons using the iconBase. E.g. if the value for "iconBase" - * will be "com/mycompany/myIcon.gif" following images will be tried "com/mycompany/myIcon.gif" - * for setIcon, "com/mycompany/myIcon_pressed.gif" for setPressedIcon, - * "com/mycompany/myIcon_disabled.gif" for setDisabledIcon and - * "com/mycompany/myIcon_rollover.gif" for setRolloverIcon. SystemAction has - * special support for iconBase - please check {@link SystemAction#iconResource} - * for more details. + * will be "com/mycompany/myIcon.gif" following images will be tried + * "com/mycompany/myIcon.gif" for setIcon, + * "com/mycompany/myIcon_pressed.gif" for setPressedIcon, + * "com/mycompany/myIcon_disabled.gif" for setDisabledIcon, + * "com/mycompany/myIcon_rollover.gif" for setRolloverIcon, + * "com/mycompany/myIcon_selected.gif" for setSelectedIcon, + * "com/mycompany/myIcon_rolloverSelected.gif" for setRolloverSelectedIcon and + * "com/mycompany/myIcon_disabledSelected.gif" for setDisabledSelectedIcon. + * SystemAction has special support for iconBase - please check + * {@link SystemAction#iconResource} for more details. * You can supply an alternative implementation * for this method by implementing method * {@link ButtonActionConnector#connect(AbstractButton, Action)} and @@ -1025,6 +1031,21 @@ } else if (imgIcon != null) { button.setDisabledIcon(ImageUtilities.createDisabledIcon(imgIcon)); } + + ImageIcon sImgIcon = ImageUtilities.loadImageIcon(insertBeforeSuffix(b, "_selected"), true); // NOI18N + if (sImgIcon != null) { + button.setSelectedIcon(sImgIcon); + } + + sImgIcon = ImageUtilities.loadImageIcon(insertBeforeSuffix(b, "_rolloverSelected"), true); // NOI18N + if (sImgIcon != null) { + button.setRolloverSelectedIcon(sImgIcon); + } + + sImgIcon = ImageUtilities.loadImageIcon(insertBeforeSuffix(b, "_disabledSelected"), true); // NOI18N + if (sImgIcon != null) { + button.setDisabledSelectedIcon(sImgIcon); + } } } diff --git a/openide.awt/src/org/openide/awt/AlwaysEnabledAction.java b/openide.awt/src/org/openide/awt/AlwaysEnabledAction.java --- a/openide.awt/src/org/openide/awt/AlwaysEnabledAction.java +++ b/openide.awt/src/org/openide/awt/AlwaysEnabledAction.java @@ -19,6 +19,7 @@ import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.Icon; +import javax.swing.JButton; import javax.swing.JCheckBoxMenuItem; import javax.swing.JMenuItem; import org.openide.util.ContextAwareAction; @@ -27,6 +28,7 @@ import org.openide.util.LookupEvent; import org.openide.util.LookupListener; import org.openide.util.NbPreferences; +import org.openide.util.WeakSet; import org.openide.util.actions.Presenter; import org.openide.util.actions.ActionInvoker; @@ -256,7 +258,7 @@ } static final class CheckBox extends AlwaysEnabledAction - implements Presenter.Menu, Presenter.Popup, PreferenceChangeListener, LookupListener + implements Presenter.Menu, Presenter.Popup, Presenter.Toolbar, PreferenceChangeListener, LookupListener { private static final long serialVersionUID = 1L; @@ -271,6 +273,8 @@ private JCheckBoxMenuItem popupItem; + private WeakSet toolbarItems; + private Preferences preferencesNode; private Lookup.Result preferencesNodeResult; @@ -311,6 +315,16 @@ return popupItem; } + public JButton getToolbarPresenter() { + if(toolbarItems == null) { + toolbarItems = new WeakSet(4); + } + JButton b = new JButton(); + toolbarItems.add(b); + Actions.connect(b, this); + return b; + } + public void preferenceChange(PreferenceChangeEvent pce) { updateItemsSelected(); } @@ -351,6 +365,11 @@ if (popupItem != null) { popupItem.setSelected(selected); } + if (toolbarItems != null) { + for(JButton b : toolbarItems) { + b.setSelected(selected); + } + } } private synchronized Preferences prefs() {