Archive
Toolbar buttons with label
As default, any action in a NetBeans toolbar is displayed with an icon only. If you want to show also a label for a desired action you have to implement a Presenter.TOOLBAR. If you don’t want do this for each action, register a custom org.openide.awt.Actions.ButtonActionConnector like this:
/**
* @see org.openide.awt.Actions#connect(AbstractButton, Action)
*/
@ServiceProvider(service = ButtonActionConnector.class, position = 100)
public class MyButtonActionConnector implements ButtonActionConnector {
@Override
public boolean connect(AbstractButton button, Action action) {
String text = (String)action.getValue("menuText"); // NOI18N
if (text != null) {
button.setAction(action);
button.setText(Actions.cutAmpersand(text));
String desc = (String)action.getValue(Action.SHORT_DESCRIPTION);
if (desc != null) {
button.setToolTipText(desc);
} else {
button.setToolTipText((String)action.getValue(Action.NAME));
}
return true;
}
return false;
}
@Override
public boolean connect(JMenuItem item, Action action, boolean popup) {
return false; // use default implementation
}
}
If the property menuText is set, the the button is configured with icon and text. The basic use of the menuText Property is (copied from @ActionRegistration‘s javadoc):
Provides the JMenuItem text if one wants to use other than the name of the action returned by ActionRegistration.displayName().
With the custom ButtonActionConnector this property is “extended” to show a toolbar button text if supplied.
Provide a value for the @ActionRegistration’s menuText Attribute for the desired action(s):
@ActionRegistration(displayName = "#CTL_PwdChangeAction",
menuText = "#CTL_PwdChangeAction",
iconBase = "resources/key.png")
@ActionReference(path = "Toolbars/User")
@Messages("CTL_PwdChangeAction=Change Password…")
public final class PwdChangeAction implements ActionListener {
...
}

