1 package org.antlr.works.plugin.container; 2 3 import org.antlr.xjlib.appkit.frame.XJFrame; 4 import org.antlr.xjlib.appkit.frame.XJFrameInterface; 5 import org.antlr.xjlib.appkit.menu.XJMainMenuBar; 6 import org.antlr.xjlib.appkit.menu.XJMenu; 7 import org.antlr.xjlib.appkit.menu.XJMenuItem; 8 import org.antlr.xjlib.appkit.undo.XJUndo; 9 import org.antlr.xjlib.appkit.undo.XJUndoDelegate; 10 import org.antlr.xjlib.appkit.undo.XJUndoEngine; 11 12 import javax.swing.*; 13 import javax.swing.text.DefaultEditorKit ; 14 import java.awt.*; 15 45 46 public class PCXJFrameInterface implements XJFrameInterface { 47 48 private PluginContainer container; 49 private XJUndoEngine undoEngine; 50 51 public PCXJFrameInterface(PluginContainer container) { 52 this.container = container; 53 undoEngine = new XJUndoEngine(); 54 } 55 56 public void registerUndo(XJUndoDelegate delegate, JTextPane textPane) { 57 undoEngine.registerUndo(new XJUndo(undoEngine, delegate), textPane); 58 } 59 60 public XJUndo getUndo(JTextPane textPane) { 61 return undoEngine.getUndo(textPane); 62 } 63 64 public XJUndo getCurrentUndo() { 65 return undoEngine.getCurrentUndo(); 66 } 67 68 public XJMainMenuBar getMainMenuBar() { 69 return container.getMainMenuBar(); 70 } 71 72 public Container getJavaContainer() { 73 return container.getContentPane(); 74 } 75 76 public JLayeredPane getLayeredPane() { 77 return container.getLayeredPane(); 78 } 79 80 public JRootPane getRootPane() { 81 return container.getRootPane(); 82 } 83 84 private void performUndo() { 85 XJUndo undo = getCurrentUndo(); 86 if(undo != null) { 87 undo.performUndo(); 88 } 89 } 90 91 private void performRedo() { 92 XJUndo undo = getCurrentUndo(); 93 if(undo != null) { 94 undo.performRedo(); 95 } 96 } 97 98 public void handleMenuEvent(XJMenu menu, XJMenuItem item) { 99 switch(item.getTag()) { 100 case XJMainMenuBar.MI_UNDO: 101 performUndo(); 102 break; 103 case XJMainMenuBar.MI_REDO: 104 performRedo(); 105 break; 106 case XJMainMenuBar.MI_CUT: 107 XJFrame.performActionOnFocusedJComponent(DefaultEditorKit.cutAction); 108 break; 109 case XJMainMenuBar.MI_COPY: 110 XJFrame.performActionOnFocusedJComponent(DefaultEditorKit.copyAction); 111 break; 112 case XJMainMenuBar.MI_PASTE: 113 XJFrame.performActionOnFocusedJComponent(DefaultEditorKit.pasteAction); 114 break; 115 case XJMainMenuBar.MI_SELECT_ALL: 116 XJFrame.performActionOnFocusedJComponent(DefaultEditorKit.selectAllAction); 117 break; 118 } 119 120 } 121 122 123 } 124 | Popular Tags |