1 package rero.bridges.menu; 2 3 import java.awt.*; 4 import java.awt.event.*; 5 6 import javax.swing.*; 7 import javax.swing.event.*; 8 9 import sleep.runtime.*; 10 import sleep.engine.*; 11 12 import rero.script.ScriptCore; 13 14 import java.util.*; 15 16 public class ScriptedMenu extends JMenu implements MenuListener, MenuBridgeParent 17 { 18 protected LinkedList code; 19 20 public ScriptedMenu(ScriptInstance _owner, String _label, Block _code) 21 { 22 if (_label.indexOf('&') > -1) 23 { 24 setText( _label.substring(0, _label.indexOf('&')) + _label.substring(_label.indexOf('&') + 1, _label.length()) ); 25 setMnemonic(_label.charAt(_label.indexOf('&') + 1)); 26 } 27 else 28 { 29 setText(_label); 30 } 31 32 code = new LinkedList(); 33 installCode(_owner, _code); 34 35 addMenuListener(this); 36 } 37 38 public JPopupMenu getScriptedPopupMenu() 39 { 40 return new ScriptedPopupMenu(code); 41 } 42 43 public void installCode(ScriptInstance _owner, Block _code) 44 { 45 code.add(new CodeSnippet(_owner, _code)); 46 } 47 48 public boolean isValidCode() 49 { 50 Iterator i = code.iterator(); 51 while (i.hasNext()) 52 { 53 CodeSnippet temp = (CodeSnippet)i.next(); 54 if (!temp.getOwner().isLoaded()) 55 { 56 i.remove(); 57 } 58 } 59 60 return code.size() > 0; 61 } 62 63 public void menuSelected(MenuEvent e) 64 { 65 MenuBridge.SetParent(this); 66 67 Iterator i = code.iterator(); 68 while (i.hasNext()) 69 { 70 CodeSnippet temp = (CodeSnippet)i.next(); 71 if (temp.getOwner().isLoaded()) 72 { 73 ScriptCore.runCode(temp.getOwner(), temp.getBlock(), ScriptedPopupMenu.getMenuData()); 74 } 75 } 76 77 MenuBridge.FinishParent(); 78 } 79 80 public void menuDeselected(MenuEvent e) 81 { 82 removeAll(); 83 } 84 85 public void menuCanceled(MenuEvent e) 86 { 87 removeAll(); 88 } 89 } 90 | Popular Tags |