avatar

368

Add a top-level Tab menu so people don't have to figure out that they can right-click on the tab titles to do tab-specific operations.

by mrs, 09 Mar, 2008 11:48 PM
365 368  
1111 import java.awt.*;
1212 import java.awt.event.*;
1313 import javax.swing.*;
14 import javax.swing.event.PopupMenuListener;
15 import javax.swing.event.PopupMenuEvent;
1416 import java.util.HashMap;
1517 
1618 /**
------
2527   protected JMenu _editMenu;
2628   protected JMenu _serverMenu;
2729   protected JMenu mWindowMenu;
30   protected JMenu mTabMenu;
2831   protected JMenu _auctionMenu;
2932   protected JMenu _helpMenu;
3033   protected ActionListener _actionDirector;
------
290293     _editMenu.setMnemonic('E');
291294     _serverMenu = new JMenu("Servers");
292295     _serverMenu.setMnemonic('S');
296     _auctionMenu = new JMenu("Auction");
297     _auctionMenu.setMnemonic('A');
298     mTabMenu = new JMenu("Tab");
299     mTabMenu.setMnemonic('T');
293300     mWindowMenu = new JMenu("Windows");
294301     mWindowMenu.setMnemonic('W');
295     _auctionMenu = new JMenu("Auction");
296     _auctionMenu.setMnemonic('A');
297302     _helpMenu = new JMenu("Help");
298303     _helpMenu.setMnemonic('H');
299304 
300305     establishFileMenu(_fileMenu);
301306     establishEditMenu(_editMenu);
302307     establishServerMenu(_serverMenu);
308     establishAuctionMenu(_auctionMenu);
309     establishTabMenu(mTabMenu);
303310     establishWindowMenu(mWindowMenu);
304     establishAuctionMenu(_auctionMenu);
305311     establishHelpMenu(_helpMenu);
306312 
307313     add(_fileMenu);
308314     add(_editMenu);
309315     add(_serverMenu);
316     add(_auctionMenu);
317     add(mTabMenu);
310318     add(mWindowMenu);
311     add(_auctionMenu);
312319     add(_helpMenu);
313320   }
321 
322   private void establishTabMenu(JMenu tabMenu) {
323     final JTabPopupMenu pop = new JTabPopupMenu(AuctionsUIModel.getTabManager().getTabs(), tabMenu.getPopupMenu());
324 
325     tabMenu.getPopupMenu().addPopupMenuListener(new PopupMenuListener() {
326       public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
327         pop.preparePopup(AuctionsUIModel.getTabManager().getTabs().getSelectedIndex());
328       }
329 
330       public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { }
331       public void popupMenuCanceled(PopupMenuEvent e) { }
332     });
333   }
314334 }
358 368  
2424   private JTabbedPane _myTabs = null;
2525   private JMenu customize = null;
2626   private JMenuItem _print = null;
27   private JMenuItem _export = null;
2827   private JMenu _deleteSubmenu = null;
2928   private Map<String, JCheckBoxMenuItem> menuItemMap = new TreeMap<String, JCheckBoxMenuItem>();
30   private JMenuItem _properties = null;
3129 
3230   /**
3331    * @brief Make a small menu for tabs.
3432    *
35    * @return The pop-up menu to be displayed on 'context menu' at any of the tabs.
33    * @param myPopup - The pop-up menu to be displayed on 'context menu' at any of the tabs.
34    *
3635    * @noinspection StringContatenationInLoop
3736    */
38   private JPopupMenu makeTabMenu() {
39     JPopupMenu myPopup = new JPopupMenu();
40 
37   public void makeTabMenu(JPopupMenu myPopup) {
4138     customize = new JMenu("Custom Columns");
4239 
4340     customize.getPopupMenu().addPopupMenuListener(new PopupMenuListener() {
------
5451     myPopup.add(customize).addActionListener(this);
5552     //myPopup.add(makeMenuItem("+/- Comment")).addActionListener(this);
5653     myPopup.add(_print = makeMenuItem("Print")).addActionListener(this);
57     myPopup.add(_export = makeMenuItem("Export")).addActionListener(this);
58     myPopup.add(_properties = makeMenuItem("Properties")).addActionListener(this);
59 
60     return myPopup;
54     myPopup.add(makeMenuItem("Export")).addActionListener(this);
55     myPopup.add(makeMenuItem("Properties")).addActionListener(this);
6156   }
6257 
6358   /**
------
7267   protected void beforePopup(JPopupMenu inPopup, MouseEvent e) {
7368     super.beforePopup(inPopup, e);
7469     int curIndex = _myTabs.indexAtLocation(e.getX(), e.getY());
70     preparePopup(curIndex);
71   }
72 
73   public void preparePopup(int curIndex) {
7574     if (curIndex == -1) {
7675       customize.setEnabled(false);
7776       _deleteSubmenu.setEnabled(false);
------
249248   }
250249 
251250   /**
251    * @param inTabs - The tab display to act as a context menu for.
252252    * @brief Construct a menu & listener to be used as a context menu
253253    * on the tabbed display.
254    */
255   public JTabPopupMenu(JTabbedPane inTabs) {
256     _myTabs = inTabs;
257     localPopup = new JPopupMenu();
258     makeTabMenu(localPopup);
259   }
260 
261   /**
262    * @brief Construct a menu & listener to be used as a context menu
263    * on the tabbed display.
254264    *
255265    * @param inTabs - The tab display to act as a context menu for.
266    * @param popup - The popup to add the behavior to.
256267    */
257   public JTabPopupMenu(JTabbedPane inTabs) {
268   public JTabPopupMenu(JTabbedPane inTabs, JPopupMenu popup) {
258269     _myTabs = inTabs;
259     localPopup = makeTabMenu();
270     localPopup = popup;
271     makeTabMenu(localPopup);
260272   }
261273 }