1 31 32 package org.antlr.xjlib.appkit.frame; 33 34 import org.antlr.xjlib.appkit.app.XJApplication; 35 import org.antlr.xjlib.appkit.document.XJData; 36 import org.antlr.xjlib.appkit.document.XJDocument; 37 import org.antlr.xjlib.appkit.menu.XJMainMenuBar; 38 import org.antlr.xjlib.appkit.menu.XJMenu; 39 import org.antlr.xjlib.appkit.menu.XJMenuItem; 40 41 import javax.swing.*; 42 43 public class XJWindow extends XJFrame { 44 45 protected XJDocument document = null; 46 47 public XJWindow() { 48 XJApplication.shared().addWindow(this); 49 50 setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); 51 } 52 53 public boolean isAuxiliaryWindow() { 54 return false; 55 } 56 57 public boolean shouldAppearsInWindowMenu() { 58 return true; 59 } 60 61 public void setDocument(XJDocument document) { 62 this.document = document; 63 } 64 65 public XJDocument getDocument() { 66 return document; 67 } 68 69 public XJData getDocumentData() { 70 if(document != null) 71 return document.getDocumentData(); 72 else 73 return null; 74 } 75 76 public void close() { 77 XJApplication.shared().removeWindow(this); 78 super.close(); 79 } 80 81 public void performClose() { 82 if(document == null) 83 close(); 84 else 85 document.performClose(); 86 } 87 88 public void menuItemState(XJMenuItem item) { 89 super.menuItemState(item); 90 91 if(document == null) { 92 if(item.getTag() == XJMainMenuBar.MI_CLOSE) 93 item.setEnabled(true); 94 else 95 item.setEnabled(false); 96 } 97 98 switch(item.getTag()) { 99 case XJMainMenuBar.MI_SAVE: 100 item.setEnabled(document != null && document.isDirty()); 101 break; 102 } 103 } 104 105 public void handleMenuEvent(XJMenu menu, XJMenuItem item) { 106 super.handleMenuEvent(menu, item); 107 108 if(item.getTag() == XJMainMenuBar.MI_CLOSE) { 109 triggerClose(); 110 } 111 } 112 113 public void windowActivated() { 114 XJMainMenuBar.refreshAllMenuBars(); 115 116 if(getDocument() == null) 117 return; 118 119 if(getDocument().isModifiedOnDisk()) { 120 windowDocumentPathDidChange(); 121 getDocument().synchronizeLastModifiedDate(); 122 } 123 } 124 125 public void windowClosing() { 126 performClose(); 127 } 128 129 public void windowDocumentPathDidChange() { 130 } 133 134 } 135 | Popular Tags |