|
What this is
Other links
The source code
/*
* Sun Public License Notice
*
* The contents of this file are subject to the Sun Public License
* Version 1.0 (the "License"). You may not use this file except in
* compliance with the License. A copy of the License is available at
* http://www.sun.com/
*
* The Original Code is NetBeans. The Initial Developer of the Original
* Code is Sun Microsystems, Inc. Portions Copyright 1997-2003 Sun
* Microsystems, Inc. All Rights Reserved.
*/
package org.netbeans.modules.form;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.beans.BeanInfo;
import org.openide.nodes.*;
import org.openide.util.HelpCtx;
import org.openide.util.Utilities;
import org.openide.util.actions.SystemAction;
import org.netbeans.modules.form.palette.*;
import org.netbeans.modules.form.actions.TestAction;
import org.netbeans.modules.form.actions.InstallBeanAction;
/**
* ToolBar in the FormDesigner - by default it holds buttons for selection and
* connection mode and for testing the form. May contain other buttons for
* some form editor actions.
*
* @author Tomas Pavek
*/
class FormToolBar extends JToolBar {
private FormDesigner formDesigner;
private JToggleButton selectionButton;
private JToggleButton connectionButton;
private JToggleButton paletteButton;
private JLabel addLabel;
private PaletteMenuView paletteMenuView;
private Listener listener;
// ctor
public FormToolBar(FormDesigner designer) {
formDesigner = designer;
// the toolbar should have roll-over buttons and no handle for dragging
setFloatable(false);
setRollover(true);
setBorder(new EmptyBorder(0, 0, 0, 0));
listener = new Listener();
// selection button
selectionButton = new JToggleButton(
new ImageIcon(getClass().getResource(
"/org/netbeans/modules/form/resources/selection_mode.png")), // NOI18N
false);
selectionButton.addActionListener(listener);
selectionButton.addMouseListener(listener);
selectionButton.setToolTipText(
FormUtils.getBundleString("CTL_SelectionButtonHint")); // NOI18N
HelpCtx.setHelpIDString(selectionButton, "gui.components.palette"); // NOI18N
selectionButton.setSelected(true);
initButton(selectionButton);
// connection button
connectionButton = new JToggleButton(
new ImageIcon(getClass().getResource(
"/org/netbeans/modules/form/resources/connection_mode.png")), // NOI18N
false);
connectionButton.addActionListener(listener);
connectionButton.addMouseListener(listener);
connectionButton.setToolTipText(
FormUtils.getBundleString("CTL_ConnectionButtonHint")); // NOI18N
HelpCtx.setHelpIDString(connectionButton, "gui.connecting.intro"); // NOI18N
initButton(connectionButton);
// palette button
paletteButton = new JToggleButton(
new ImageIcon(getClass().getResource(
"/org/netbeans/modules/form/resources/beansButton.gif")), // NOI18N
false);
paletteButton.addActionListener(listener);
paletteButton.addMouseListener(listener);
paletteButton.setToolTipText(
FormUtils.getBundleString("CTL_BeansButtonHint")); // NOI18N
HelpCtx.setHelpIDString(paletteButton, "gui.components.adding"); // NOI18N
// Issue 46673
ScrollPopupMenu.doNotCancelPopupHack(paletteButton);
initButton(paletteButton);
// status label
addLabel = new JLabel();
// popup menu
addMouseListener(listener);
// a11y
connectionButton.getAccessibleContext().setAccessibleName(connectionButton.getToolTipText());
selectionButton.getAccessibleContext().setAccessibleName(selectionButton.getToolTipText());
paletteButton.getAccessibleContext().setAccessibleName(paletteButton.getToolTipText());
connectionButton.getAccessibleContext().setAccessibleDescription(FormUtils.getBundleString("ACSD_ConnectionMode")); // NOI18N
selectionButton.getAccessibleContext().setAccessibleDescription(FormUtils.getBundleString("ACSD_SelectionMode")); // NOI18N
paletteButton.getAccessibleContext().setAccessibleDescription(FormUtils.getBundleString("ACSD_AddMode")); // NOI18N
// adding the components to the toolbar
JToolBar.Separator separator1 = new JToolBar.Separator();
separator1.setOrientation(JSeparator.VERTICAL);
// JToolBar.Separator separator2 = new JToolBar.Separator();
// separator2.setOrientation(JSeparator.VERTICAL);
// JToolBar.Separator separator3 = new JToolBar.Separator();
// separator3.setOrientation(JSeparator.VERTICAL);
TestAction testAction = (TestAction) SystemAction.get(TestAction.class);
JButton testButton = (JButton) testAction.getToolbarPresenter();
testButton.addMouseListener(listener);
initButton(testButton);
InstallBeanAction paletteManagerAction = (InstallBeanAction)
SystemAction.get(InstallBeanAction.class);
// Issue 46562
JButton pmButton = add(paletteManagerAction);
pmButton.addMouseListener(listener);
String pmToolTip = paletteManagerAction.getName();
pmToolTip = org.openide.awt.Actions.cutAmpersand(pmToolTip);
pmButton.setToolTipText(pmToolTip);
initButton(pmButton);
Icon icon = (Icon)paletteManagerAction.getValue("hidden_icon"); // NOI18N
if (icon == null) {
Image i = Utilities.loadImage("org/netbeans/modules/form/resources/palette_manager.png", true); // NOI18N
icon = new ImageIcon(i);
paletteManagerAction.putValue("hidden_icon", icon); // NOI18N
}
pmButton.setIcon(icon);
add(Box.createHorizontalStrut(4));
add(separator1);
add(Box.createHorizontalStrut(6));
add(selectionButton);
add(connectionButton);
add(paletteButton);
add(Box.createHorizontalStrut(6));
// add(separator2);
// add(Box.createHorizontalStrut(4));
add(pmButton);
add(Box.createHorizontalStrut(6));
// add(separator3);
// add(Box.createHorizontalStrut(4));
add(testButton);
add(Box.createHorizontalGlue());
add(addLabel);
if (!FormLoaderSettings.getInstance().isPaletteInToolBar()) {
addLabel.setVisible(false);
paletteButton.setVisible(false);
}
}
// --------
private void initButton(AbstractButton button) {
if (!("Windows".equals(UIManager.getLookAndFeel().getID()) // NOI18N
&& (button instanceof JToggleButton))) {
button.setBorderPainted(false);
}
button.setOpaque(false);
button.setFocusPainted(false);
}
void updateDesignerMode(int mode) {
selectionButton.setSelected(mode == FormDesigner.MODE_SELECT);
connectionButton.setSelected(mode == FormDesigner.MODE_CONNECT);
paletteButton.setSelected(mode == FormDesigner.MODE_ADD);
if (addLabel.isVisible()) {
PaletteItem item = CPManager.getDefault().getSelectedItem();
if (item != null && mode == FormDesigner.MODE_ADD) {
addLabel.setIcon(
new ImageIcon(item.getNode().getIcon(BeanInfo.ICON_COLOR_16x16)));
addLabel.setText(item.getNode().getDisplayName());
}
else {
addLabel.setText(""); // NOI18N
addLabel.setIcon(null);
}
}
}
void showPaletteButton(boolean visible) {
addLabel.setVisible(visible);
paletteButton.setVisible(visible);
}
private void showPaletteViewMenu() {
if (paletteMenuView == null) {
paletteMenuView = new PaletteMenuView(listener);
paletteMenuView.getPopupMenu().addPopupMenuListener(listener);
}
Point p = paletteButton.getLocation();
p.y += paletteButton.getHeight() + 2;
paletteMenuView.getPopupMenu().show(this, p.x, p.y);
}
private void showVisibilityPopupMenu(Point p) {
JPopupMenu menu = new JPopupMenu();
final JMenuItem item = new JCheckBoxMenuItem(
FormUtils.getBundleString("CTL_PaletteButton_MenuItem")); // NOI18N
item.setSelected(FormLoaderSettings.getInstance().isPaletteInToolBar());
item.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
FormLoaderSettings.getInstance().setPaletteInToolBar(
item.isSelected());
}
});
menu.add(item);
menu.show(this, p.x, p.y);
}
public String getUIClassID() {
// For GTK and Aqua look and feels, we provide a custom toolbar UI
if (UIManager.get("Nb.Toolbar.ui") != null) { // NOI18N
return "Nb.Toolbar.ui"; // NOI18N
} else {
return super.getUIClassID();
}
}
// -------
private class Listener extends MouseAdapter
implements ActionListener, NodeAcceptor,
PopupMenuListener
{
// Determines whether palette popup menu should be shown (see issue 46673)
private boolean showMenu;
/** Action to switch to selection, connection or add mode. */
public void actionPerformed(ActionEvent ev) {
if (ev.getSource() == selectionButton)
formDesigner.toggleSelectionMode();
else if (ev.getSource() == connectionButton)
formDesigner.toggleConnectionMode();
else if (ev.getSource() == paletteButton) {
if (showMenu) {
formDesigner.toggleAddMode();
showPaletteViewMenu();
} else {
MenuSelectionManager.defaultManager().clearSelectedPath();
formDesigner.toggleSelectionMode();
}
}
}
/** Acceptor for nodes in PaletteMenuView */
public boolean acceptNodes(Node[] nodes) {
if (nodes.length == 0)
return false;
PaletteItem item = (PaletteItem) nodes[0].getCookie(PaletteItem.class);
CPManager.getDefault().setSelectedItem(item);
return true;
}
/** Handles closing of PaletteMenuView popup */
public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
if (CPManager.getDefault().getSelectedItem() == null)
formDesigner.toggleSelectionMode();
}
public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
}
public void popupMenuCanceled(PopupMenuEvent e) {
}
public void mousePressed(MouseEvent e) {
if (e.getSource() == paletteButton) {
showMenu = !paletteButton.isSelected();
}
}
/** Reacts on right mouse button up - showing toolbar's popup menu. */
public void mouseReleased(MouseEvent e) {
if (SwingUtilities.isRightMouseButton(e)
&& formDesigner.getDesignerMode() == FormDesigner.MODE_SELECT)
showVisibilityPopupMenu(e.getPoint());
}
}
}
|
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.