00001 00066 package com.arcle.rmt.superwaba.vc; 00067 00068 import waba.ui.ComboBox; 00069 import waba.ui.Button; 00070 import waba.ui.ListBox; 00071 import waba.ui.ControlEvent; 00072 import waba.ui.Event; 00073 import waba.ui.MenuBar; 00074 00075 import com.arcle.rmt.xplat.util.List; 00076 import com.arcle.rmt.superwaba.AboutDialog; 00077 import com.arcle.rmt.superwaba.ui.CategoryWindow; 00078 import com.arcle.rmt.superwaba.framework.View; 00079 import com.arcle.rmt.superwaba.framework.Model; 00080 import com.arcle.rmt.superwaba.model.Document; 00081 import com.arcle.rmt.superwaba.vc.DocumentWindowController; 00082 import com.arcle.rmt.superwaba.vc.ElementListController; 00083 00092 public abstract class AbstractDocumentWindow extends CategoryWindow 00093 implements View { 00094 public AbstractDocumentWindow(DocumentWindowController ctrl) { 00095 super("Document"); 00096 _controller = ctrl; 00097 } 00098 00099 //----------------------------------------------------------------------- 00100 // View implementation 00101 00102 00103 //----------------------------------------------------------------------- 00104 // Abstract Methods 00105 00111 protected abstract List createPanels(); 00112 00113 //----------------------------------------------------------------------- 00114 // Implemented Abstract Methods 00115 00116 protected String getPanelCaptionAt(int index) { 00117 return ((ElementList)getPanelAt(index)).getCaption(); 00118 } 00119 00120 public Button[] getCommandButtons() { 00121 return new Button[] { 00122 btnNew, 00123 btnClose, 00124 btnDelete 00125 }; 00126 } 00127 00128 //----------------------------------------------------------------------- 00129 // Overridden Methods 00130 00131 protected void initChildren() { 00132 super.initChildren(); 00133 btnNew = createButton("New"); 00134 btnClose = createButton("Close"); 00135 btnDelete = createButton("Delete"); 00136 00137 setMenuBar(createMenuBar()); 00138 } 00139 00140 00141 public void onEvent(Event event) { 00142 DocumentWindowController ctrl = getController(); 00143 switch(event.type) { 00144 case ControlEvent.PRESSED: 00145 if (event.target == btnNew) { 00146 doNewElement(); 00147 event.consumed = true; 00148 } else if (event.target == btnClose) { 00149 ctrl.cmdCloseWindow(); 00150 } else if (event.target == btnDelete) { 00151 ctrl.cmdDeleteDocument(); 00152 } 00153 case ControlEvent.WINDOW_CLOSED: 00154 if (event.target == menubar) { 00155 handleMenuEvent(((MenuBar) menubar).getSelectedMenuItem()); 00156 } 00157 00158 } 00159 00160 if (!event.consumed) { 00161 super.onEvent(event); 00162 } 00163 00164 } 00165 00166 protected void initCompleted() { 00167 getController().viewInitialized(this); 00168 setTitle(getDocument().getTitle()); 00169 } 00170 00174 protected void onPanelSwitched() { 00175 ElementList lst = (ElementList) getActivePanel(); 00176 lst.modelUpdated(); 00177 } 00178 00179 00180 //----------------------------------------------------------------------- 00181 // Factory methods 00182 00186 protected MenuBar createMenuBar() { 00187 String[][] menuItems = new String[2][]; 00188 00189 menuItems[0] = createRequirementMenuItems(); 00190 menuItems[1] = new String[] { 00191 "Help", 00192 "About..." 00193 }; 00194 return new MenuBar(menuItems); 00195 } 00196 00197 00201 protected abstract String[] createRequirementMenuItems(); 00202 00203 //----------------------------------------------------------------------- 00204 // Accessor methods 00205 00206 00207 00211 protected DocumentWindowController getController() { 00212 return _controller; 00213 } 00214 00215 //----------------------------------------------------------------------- 00216 // Own Protected Methods 00217 00221 protected void handleMenuEvent(int selectedItem) { 00222 if (0 <= selectedItem && selectedItem < 100) { 00223 // first pulldown menu was selected 00224 selectedItem--; 00225 setActivePanel(selectedItem); 00226 doNewElement(); 00227 } else if (100 <= selectedItem && selectedItem < 200) { 00228 // second pulldown menu was selected 00229 selectedItem -= 100; 00230 switch(selectedItem) { 00231 case 1: // about dialog box 00232 AboutDialog.show(); 00233 } 00234 } 00235 } 00236 00237 00241 protected void doNewElement() { 00242 ElementListController ctrl = ((ElementList)getActivePanel()) 00243 .getController(); 00244 ctrl.cmdNewElement(); 00245 } 00246 00247 00251 protected Document getDocument() { 00252 return getController().getDocument(); 00253 } 00254 00255 00259 private DocumentWindowController _controller; 00260 00261 00265 private Button btnNew; 00266 00270 private Button btnClose; 00271 00275 private Button btnDelete; 00276 }