1 package org.antlr.works.components.project.file; 2 3 import org.antlr.xjlib.appkit.document.XJDataPlainText; 4 import org.antlr.xjlib.appkit.document.XJDocument; 5 import org.antlr.xjlib.appkit.frame.XJFrameInterface; 6 import org.antlr.xjlib.appkit.menu.*; 7 import org.antlr.works.components.ComponentContainer; 8 import org.antlr.works.components.ComponentDocument; 9 import org.antlr.works.components.ComponentEditor; 10 import org.antlr.works.components.project.CContainerProject; 11 import org.antlr.works.project.ProjectFileItem; 12 13 import java.util.HashMap ; 14 import java.util.Map ; 15 45 46 public abstract class CContainerProjectFile implements ComponentContainer, XJMenuBarCustomizer, XJMenuBarDelegate { 47 48 public CContainerProject project; 49 public ProjectFileItem item; 50 51 public ComponentEditor editor; 52 public ComponentDocument document; 53 54 public XJMainMenuBar mainMenuBar; 55 56 public CContainerProjectFile(CContainerProject project, ProjectFileItem item) { 57 this.project = project; 58 this.item = item; 59 60 document = createDocument(); 61 document.setJavaContainer(project.getJavaContainer()); 62 document.setDocumentData(new XJDataPlainText()); 63 document.setComponentContainer(this); 64 65 editor = createEditor(); 66 editor.create(); 67 editor.assemble(); 68 editor.componentDidAwake(); 69 70 item.setComponentContainer(this); 71 72 awake(); 73 } 74 75 public void awake() { 76 77 } 78 79 public abstract ComponentDocument createDocument(); 80 public abstract ComponentEditor createEditor(); 81 82 public void createMainMenuBar() { 83 if(mainMenuBar == null) { 84 mainMenuBar = XJMainMenuBar.createInstance(); 85 mainMenuBar.setCustomizer(this); 86 mainMenuBar.setDelegate(this); 87 mainMenuBar.createMenuBar(); 88 } 89 } 90 91 public XJMainMenuBar getMainMenuBar() { 92 if(mainMenuBar == null) 93 createMainMenuBar(); 94 return mainMenuBar; 95 } 96 97 public ComponentEditor getEditor() { 98 return editor; 99 } 100 101 public XJDocument getDocument() { 102 return document; 103 } 104 105 public XJFrameInterface getXJFrame() { 106 return project.getXJFrame(); 107 } 108 109 public void loadText(String text) { 110 editor.loadText(text); 111 } 112 113 public String getText() { 114 return editor.getText(); 115 } 116 117 public void close() { 118 editor.close(); 119 document.performClose(true); 120 121 if(getMainMenuBar() == getMainMenuBar()) { 122 project.setDefaultMainMenuBar(); 125 } 126 XJMainMenuBar.removeInstance(getMainMenuBar()); 127 } 128 129 public boolean willSaveDocument() { 130 return editor.componentDocumentWillSave(); 131 } 132 133 public void setDirty() { 134 getDocument().setDirty(true); 135 project.fileDidBecomeDirty(this, item); 136 } 137 138 public static final String KEY_EDITOR_DATA = "KEY_EDITOR_DATA"; 139 140 public void setPersistentData(Map data) { 141 if(data == null) 142 return; 143 144 getEditor().setPersistentData((Map )data.get(KEY_EDITOR_DATA)); 145 } 146 147 public Map getPersistentData() { 148 Map <String , Map <String , Object >> data = new HashMap <String , Map <String , Object >>(); 149 data.put(KEY_EDITOR_DATA, getEditor().getPersistentData()); 150 return data; 151 } 152 153 159 160 public void customizeFileMenu(XJMenu menu) { 161 project.customizeFileMenu(menu); 162 editor.customizeFileMenu(menu); 163 } 164 165 public void customizeEditMenu(XJMenu menu) { 166 project.customizeEditMenu(menu); 167 editor.customizeEditMenu(menu); 168 } 169 170 public void customizeWindowMenu(XJMenu menu) { 171 project.customizeWindowMenu(menu); 172 editor.customizeWindowMenu(menu); 173 } 174 175 public void customizeHelpMenu(XJMenu menu) { 176 project.customizeHelpMenu(menu); 177 editor.customizeHelpMenu(menu); 178 } 179 180 public void customizeMenuBar(XJMainMenuBar menubar) { 181 project.customizeMenuBar(menubar); 182 editor.customizeMenuBar(menubar); 183 } 184 185 public void menuItemState(XJMenuItem item) { 186 project.menuItemState(item); 187 editor.menuItemState(item); 188 } 189 190 public void handleMenuEvent(XJMenu menu, XJMenuItem item) { 191 project.handleMenuEvent(menu, item); 192 } 193 194 public void handleMenuSelected(XJMenu menu) { 195 project.handleMenuSelected(menu); 196 } 197 198 } 199 | Popular Tags |