menuLookDemo/jython/MenuLookDemo.py

  1: #! /usr/bin/env python
  2: # coding: utf-8
  3: ## ----------------------------------------
  4: ##
  5: ## (C) Copyright 2000-2010, 小粒ちゃん《監修》小泉ひよ子とタマゴ倶楽部
  6: ##
  7: ## ----------------------------------------
  8: #...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
  9: """
 10: >>> tips()
 11: 
 12: >>> ## ----------------------------------------
 13: >>> None
 14: version: #1.0.23
 15: """
 16: ## ---------------------------------------- demo: jython
 17: """
 18: _jython=/Users/sketch/book/java_useBetter_1/_jython
 19: 
 20: cd /Users/sketch/book/java_useBetter_1/swing/JMenuBar/menuLookDemo/jython/
 21: 
 22: JYTHONPATH=$_jython jython -i MenuLookDemo.py
 23: 
 24: ============================================================
 25: Version: 2.5.0 (Release_2_5_0:6476, Jun 16 2009, 13:33:26) 
 26: Module : MenuLookDemo.py
 27: Date   : Thu Sep 23 12:33:17 2010
 28: ============================================================
 29: """
 30: ## ----------------------------------------
 31: ##package components;
 32: 
 33: from java.awt import BorderLayout
 34: from java.awt.event import ActionEvent
 35: from java.awt.event import KeyEvent
 36: from java.lang import System
 37: from javax.swing import ButtonGroup
 38: from javax.swing import ImageIcon
 39: from javax.swing import JCheckBoxMenuItem
 40: from javax.swing import JFrame
 41: from javax.swing import JMenu
 42: from javax.swing import JMenuBar
 43: from javax.swing import JMenuItem
 44: from javax.swing import JPanel
 45: from javax.swing import JRadioButtonMenuItem
 46: from javax.swing import JScrollPane
 47: from javax.swing import JTextArea
 48: from javax.swing import KeyStroke
 49: from os.path import exists
 50: 
 51: ## ----------------------------------------
 52: """
 53:  * This class exists solely to show you what menus look like.
 54:  * It has no menu-related event handling.
 55: """
 56: class MenuLookDemo:
 57:     def __init__(self, master):
 58:         
 59:         def createMenuBar():
 60:             
 61:             #/Create the menu bar.
 62:             menuBar = JMenuBar()
 63:             
 64:             #/Build the first menu.
 65:             menu = JMenu(
 66:                 "A Menu",
 67:                 KeyEvent.VK_A,
 68:                 )
 69:             menu.accessibleContext.accessibleDescription = (
 70:                 "The only menu in this program that has menu items")
 71:             menuBar.add(menu)
 72:             
 73:             #/a group of JMenuItems
 74:             menuItem = JMenuItem(
 75:                 "A text-only menu item",
 76:                 KeyEvent.VK_T,
 77:                 accelerator = KeyStroke.getKeyStroke(
 78:                     KeyEvent.VK_1, ActionEvent.ALT_MASK)
 79:                 )
 80:             menuItem.accessibleContext.accessibleDescription = (
 81:                 "This doesn't really do anything")
 82:             menu.add(menuItem)
 83:             
 84:             icon = MenuLookDemo.createImageIcon("_images/middle.gif")
 85:             menuItem = JMenuItem(
 86:                 "Both text and icon",
 87:                 KeyEvent.VK_B,
 88:                 icon = icon,
 89:                 )
 90:             menu.add(menuItem)
 91:             
 92:             menuItem = JMenuItem(
 93:                 "",
 94:                 KeyEvent.VK_D,
 95:                 icon = icon,
 96:                 )
 97:             menu.add(menuItem)
 98:             
 99:             #/a group of radio button menu items
100:             menu.addSeparator()
101:             group = ButtonGroup()
102:             
103:             rbMenuItem = JRadioButtonMenuItem(
104:                 "A radio button menu item",
105:                 KeyEvent.VK_R,
106:                 selected = True,
107:                 )
108:             group.add(rbMenuItem)
109:             menu.add(rbMenuItem)
110:             
111:             rbMenuItem = JRadioButtonMenuItem(
112:                 "Another one",
113:                 KeyEvent.VK_O,
114:                 )
115:             group.add(rbMenuItem)
116:             menu.add(rbMenuItem)
117:             
118:             #/a group of check box menu items
119:             menu.addSeparator()
120:             cbMenuItem = JCheckBoxMenuItem(
121:                 "A check box menu item",
122:                 KeyEvent.VK_C,
123:                 )
124:             menu.add(cbMenuItem)
125:             
126:             cbMenuItem = JCheckBoxMenuItem(
127:                 "Another one",
128:                 KeyEvent.VK_H,
129:                 )
130:             menu.add(cbMenuItem)
131:             
132:             #/a submenu
133:             menu.addSeparator()
134:             submenu = JMenu(
135:                 "A submenu",
136:                 KeyEvent.VK_S,
137:                 )
138:             
139:             menuItem = JMenuItem(
140:                 "An item in the submenu",
141:                 accelerator = KeyStroke.getKeyStroke(
142:                     KeyEvent.VK_2, ActionEvent.ALT_MASK),
143:                 )
144:             submenu.add(menuItem)
145:             
146:             menuItem = JMenuItem("Another item")
147:             submenu.add(menuItem)
148:             menu.add(submenu)
149:             
150:             #/Build second menu in the menu bar.
151:             menu = JMenu(
152:                 "Another Menu",
153:                 KeyEvent.VK_N,
154:                 )
155:             menu.accessibleContext.accessibleDescription = (
156:                 "This menu does nothing")
157:             menuBar.add(menu)
158:             
159:             return menuBar
160:     
161:         def createContentPane():
162:             #/Create the content-pane-to-be.
163:             contentPane = JPanel(
164:                 BorderLayout(),
165:                 opaque = True,
166:                 )
167: 
168:             #/Create a scrolled text area.
169:             output = JTextArea(
170:                 5, 30,
171:                 editable = False,
172:                 )
173:             scrollPane = JScrollPane(output)
174: 
175:             #//Add the text area to the content pane.
176:             contentPane.add(scrollPane, BorderLayout.CENTER)
177: 
178:             return contentPane
179:     
180:         master.JMenuBar = createMenuBar()
181:         master.contentPane = createContentPane()
182: 
183:     ## ----------------------------------------
184:     @staticmethod
185:     def createImageIcon(path):
186:         #** Returns an ImageIcon, or null if the path was invalid. */
187:         ## java.net.URL imgURL = MenuLookDemo.class.getResource(path);
188:         imgURL = path if exists(path) else None
189:         if imgURL != None:
190:             return ImageIcon(imgURL)
191:         else:
192:             System.err.println("Couldn't find file: %s"%path)
193:             return None
194:         
195:     ## ----------------------------------------
196:     """
197:      * Create the GUI and show it.  For thread safety,
198:      * this method should be invoked from the
199:      * event-dispatching thread.
200:     """
201:     @staticmethod
202:     def createAndShowGUI():
203:         #/Create and set up the window.
204:         frame = JFrame(
205:             title = "MenuLookDemo",
206:             size = (450,260),
207:             locationRelativeTo = None,
208:             defaultCloseOperation = JFrame.EXIT_ON_CLOSE,
209:             )
210: 
211:         #/Create and set up the content pane.
212:         MenuLookDemo(frame)
213: 
214:         #/Display the window.
215:         frame.visible = True
216:         
217: ## ----------------------------------------
218: from __init__ import *
219: tips = MenuLookDemo.createAndShowGUI
220: 
221: if __name__=='__main__':
222:     inform()
223:     testmod()
224: 
225: ## ========================================