1 3 27 28 30 package de.qfs.apps.qflog; 31 32 34 import java.awt.Event ; 35 import java.awt.event.ActionListener ; 36 import java.awt.event.ActionEvent ; 37 import java.awt.event.KeyEvent ; 38 import java.awt.event.MouseEvent ; 39 import java.awt.event.MouseAdapter ; 40 import java.awt.BorderLayout ; 41 import java.awt.Point ; 42 43 import javax.swing.ImageIcon ; 44 import javax.swing.JComponent ; 45 import javax.swing.JFrame ; 46 import javax.swing.JMenuBar ; 47 import javax.swing.JMenu ; 48 import javax.swing.JMenuItem ; 49 import javax.swing.JPanel ; 50 import javax.swing.JScrollPane ; 51 import javax.swing.JTable ; 52 import javax.swing.KeyStroke ; 53 import javax.swing.WindowConstants ; 54 import javax.swing.table.JTableHeader ; 55 56 import de.qfs.lib.config.Configurator; 57 import de.qfs.lib.config.ConfigWrapper; 58 import de.qfs.lib.gui.DefaultTableModelSorter; 59 import de.qfs.lib.gui.FocusFixer; 60 import de.qfs.lib.gui.SortedTableHelper; 61 import de.qfs.lib.log.Log; 62 import de.qfs.lib.log.Logger; 63 import de.qfs.lib.util.MapResourceBundle; 64 65 import de.qfs.apps.qflog.command.CommandFileExit; 66 import de.qfs.apps.qflog.command.CommandFileOpen; 67 import de.qfs.apps.qflog.command.CommandFileSaveAs; 68 import de.qfs.apps.qflog.command.CommandEditRemove; 69 import de.qfs.apps.qflog.command.CommandEditOptions; 70 import de.qfs.apps.qflog.command.CommandOpenLogView; 71 import de.qfs.apps.qflog.command.CommandHelpAbout; 72 73 75 81 public class MainFrame extends JFrame 82 { 83 85 88 private final static Logger logger = new Logger (MainFrame.class); 89 90 93 private Configurator cfg = new Configurator ("LogFrame"); 94 95 98 private JTable table; 99 100 102 104 107 public MainFrame () 108 { 109 if (logger.level >= Log.MTD) { 110 logger.log(Log.MTD, "MainFrame()", ""); 111 } 112 } 113 114 117 119 122 public void init () 123 { 124 if (logger.level >= Log.MTD) { 125 logger.log(Log.MTD, "init()", ""); 126 } 127 setTitle("qflog"); 128 ImageIcon icon = (ImageIcon ) 129 App.getResources().getIcon("logServer.icon", null); 130 if (icon != null) { 131 setIconImage(icon.getImage()); 132 } 133 134 initMenu(); 135 initTable(); 136 137 setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); 138 addWindowListener(new java.awt.event.WindowAdapter () { 139 public void windowClosing (java.awt.event.WindowEvent e) { 140 App.getCommandDistributor().assignCommand 141 (new CommandFileExit (e.getSource())); 142 } 143 }); 144 145 cfg.add(ConfigWrapper.makeWrapper(this, "MainFrame")); 146 FocusFixer.instance().addWindow(this); 147 } 148 149 152 155 protected ActionListener actionFileExit = new ActionListener () { 156 public void actionPerformed (ActionEvent e) { 157 App.getCommandDistributor().assignCommand 158 (new CommandFileExit (MainFrame.this)); 159 } 160 }; 161 162 165 protected ActionListener actionFileOpen = new ActionListener () { 166 public void actionPerformed (ActionEvent e) { 167 App.getCommandDistributor().assignCommand 168 (new CommandFileOpen (MainFrame.this, MainFrame.this)); 169 } 170 }; 171 172 179 182 protected ActionListener actionFileSaveAs = new ActionListener () { 183 public void actionPerformed (ActionEvent e) { 184 App.getCommandDistributor().assignCommand 185 (new CommandFileSaveAs (MainFrame.this, MainFrame.this, 186 table)); 187 } 188 }; 189 190 193 protected ActionListener actionEditRemove = new ActionListener () { 194 public void actionPerformed (ActionEvent e) { 195 App.getCommandDistributor().assignCommand 196 (new CommandEditRemove (MainFrame.this, MainFrame.this, 197 table)); 198 } 199 }; 200 201 204 protected ActionListener actionEditOptions = new ActionListener () { 205 public void actionPerformed (ActionEvent e) { 206 App.getCommandDistributor().assignCommand 207 (new CommandEditOptions (MainFrame.this, MainFrame.this)); 208 } 209 }; 210 211 214 protected ActionListener actionOpenLogView = new ActionListener () { 215 public void actionPerformed (ActionEvent e) { 216 App.getCommandDistributor().assignCommand 217 (new CommandOpenLogView (MainFrame.this, table)); 218 } 219 }; 220 221 224 protected ActionListener actionHelpAbout = new ActionListener () { 225 public void actionPerformed (ActionEvent e) { 226 App.getCommandDistributor().assignCommand 227 (new CommandHelpAbout (MainFrame.this, MainFrame.this)); 228 } 229 }; 230 231 234 236 239 protected void initMenu () 240 { 241 if (logger.level >= Log.MTD) { 242 logger.log(Log.MTD, "initMenu()", ""); 243 } 244 JMenuBar mb = new JMenuBar (); 245 setJMenuBar(mb); 246 247 JMenu mFile = makeMenu("file"); 249 mb.add(mFile); 250 251 JMenuItem mi = makeMenuItem ("fileOpen", actionFileOpen); 252 mFile.add(mi); 253 254 mi = makeMenuItem ("fileSaveAs", actionFileSaveAs); 255 mFile.add(mi); 256 257 mi = makeMenuItem ("fileExit", actionFileExit); 258 mFile.add(mi); 259 260 JMenu mEdit = makeMenu("edit"); 262 mb.add(mEdit); 263 264 mi = makeMenuItem ("editShow", actionOpenLogView); 265 mEdit.add(mi); 266 mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0)); 267 268 mi = makeMenuItem ("editRemove", actionEditRemove); 269 mEdit.add(mi); 270 mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0)); 271 272 mi = makeMenuItem ("editOptions", actionEditOptions); 273 mEdit.add(mi); 274 275 JMenu mHelp = makeMenu("help"); 277 mb.add(mHelp); 278 279 mi = makeMenuItem ("helpAbout", actionHelpAbout); 280 mHelp.add(mi); 281 282 } 283 284 287 294 protected JMenu makeMenu (String resource) 295 { 296 if (logger.level >= Log.MTD) { 297 logger.log(Log.MTD, "makeMenu(String)", 298 logger.level < Log.MTDDETAIL ? "" : 299 "resource: " + resource); 300 } 301 MapResourceBundle rb = App.instance().getResources(); 302 303 JMenu menu = new JMenu (rb.getString("menu." + resource + ".name", 304 "MISSING: " + resource)); 305 String mnemo = rb.getString("menu." + resource + ".mnemonic", null); 306 if (mnemo != null) { 307 menu.setMnemonic(mnemo.charAt(0)); 308 } 309 return menu; 310 } 311 312 315 323 protected JMenuItem makeMenuItem (String resource, ActionListener action) 324 { 325 if (logger.level >= Log.MTD) { 326 logger.log(Log.MTD, "makeMenuItem(String,ActionListener)", 327 logger.level < Log.MTDDETAIL ? "" : 328 "resource: " + resource + ", " + 329 "action: " + action); 330 } 331 MapResourceBundle rb = App.instance().getResources(); 332 333 JMenuItem mi = new JMenuItem 334 (rb.getString("action." + resource + ".name", 335 "MISSING NAME: " + resource)); 336 String mnemo = rb.getString("action." + resource + ".mnemonic", null); 337 if (mnemo != null) { 338 mi.setMnemonic(mnemo.charAt(0)); 339 } 340 mi.setActionCommand 341 (rb.getString("action." + resource + ".command", 342 "MISSING COMMAND: " + resource)); 343 mi.addActionListener(action); 344 345 return mi; 346 347 } 348 349 351 354 357 private void initTable() 358 { 359 if (logger.level >= Log.MTD) { 360 logger.log(Log.MTD, "initTable()", ""); 361 } 362 363 getContentPane().setLayout(new BorderLayout ()); 364 365 table = new ViewTable (Model.instance()); 366 367 JTableHeader header = new JTableHeader (table.getColumnModel()) { 368 public boolean isFocusTraversable() 369 { 370 return false; 371 } 372 }; 373 header.setRequestFocusEnabled(false); 374 table.setTableHeader(header); 375 376 SortedTableHelper helper = new SortedTableHelper (table); 377 helper.prepareTable(); 378 helper.saveSelection(true); 379 cfg.add(ConfigWrapper.makeWrapper(table, "Table")); 380 DefaultTableModelSorter sorter = 381 (DefaultTableModelSorter) helper.getTableModelSorter(); 382 sorter.setConfigurableName("sorter"); 383 cfg.add(sorter); 384 385 JPanel bg = new JPanel (); 386 bg.setLayout(new BorderLayout ()); 387 bg.setBackground(table.getBackground()); 388 bg.add(new JScrollPane (table), BorderLayout.CENTER); 389 getContentPane().add(bg, BorderLayout.CENTER); 390 391 table.registerKeyboardAction 392 (actionOpenLogView, "open", 393 KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), 394 JComponent.WHEN_IN_FOCUSED_WINDOW); 395 396 table.addMouseListener(new MouseAdapter () { 397 public void mousePressed(MouseEvent e) { 398 if (e.getClickCount() > 1) { 399 int row = table.rowAtPoint(new Point (e.getX(), e.getY())); 400 if (row >= 0) { 401 App.getCommandDistributor().assignCommand 402 (new CommandOpenLogView (e.getSource(), table, 403 row)); 404 } 405 } 406 } 407 }); 408 } 409 410 412 414 416 421 public final JTable getTable() 422 { 423 return table; 424 } 425 426 429 434 public final Configurator getConfigurator() 435 { 436 if (logger.level >= Log.MTD) { 437 logger.log(Log.MTD, "getConfigurator()", ""); 438 } 439 return cfg; 440 } 441 442 444 } 445 | Popular Tags |