Save This Page
Home » openjdk-7 » net.sourceforge » neurosdbm » [javadoc | source]
    1   //
    2   //  Neuros Database Manipulator
    3   //  Copyright (C) 2003  Neuros Database Manipulator
    4   //
    5   //  This program is free software; you can redistribute it and/or modify
    6   //  it under the terms of the GNU General Public License as published by
    7   //  the Free Software Foundation; either version 2 of the License, or
    8   //  (at your option) any later version.
    9   //
   10   //  This program is distributed in the hope that it will be useful,
   11   //  but WITHOUT ANY WARRANTY; without even the implied warranty of
   12   //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   13   //  GNU General Public License for more details.
   14   //
   15   //  You should have received a copy of the GNU General Public License
   16   //  along with this program; if not, write to the Free Software
   17   //  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
   18   //
   19   //  For information about Neuros Database Manipulator and its authors,
   20   //  please contact the Neuros Database Manipulator Web Site at
   21   //  http://neurosdbm.sourceforge.net
   22   //
   23   //
   24   
   25   package net.sourceforge.neurosdbm;
   26   
   27   
   28   import java.awt.event.ActionEvent;
   29   import java.awt.event.ActionListener;
   30   
   31   import javax.swing.JCheckBoxMenuItem;
   32   import javax.swing.JMenu;
   33   import javax.swing.JMenuBar;
   34   import javax.swing.JMenuItem;
   35   import javax.swing.JOptionPane;
   36   import javax.swing.JPopupMenu;
   37   
   38   import net.sourceforge.neurosdbm.actions.About;
   39   import net.sourceforge.neurosdbm.actions.AddTrack;
   40   import net.sourceforge.neurosdbm.actions.AddTracksToPlaylist;
   41   import net.sourceforge.neurosdbm.actions.BackupDatabase;
   42   import net.sourceforge.neurosdbm.actions.ChangeDevice;
   43   import net.sourceforge.neurosdbm.actions.CreateEmptyDatabase;
   44   import net.sourceforge.neurosdbm.actions.DatabaseInfo;
   45   import net.sourceforge.neurosdbm.actions.DeleteTrack;
   46   import net.sourceforge.neurosdbm.actions.Exit;
   47   import net.sourceforge.neurosdbm.actions.License;
   48   import net.sourceforge.neurosdbm.actions.PlayTracks;
   49   import net.sourceforge.neurosdbm.actions.RebuildDatabase;
   50   import net.sourceforge.neurosdbm.actions.RefreshDatabase;
   51   import net.sourceforge.neurosdbm.actions.RestoreDatabase;
   52   import net.sourceforge.neurosdbm.actions.SortDatabase;
   53   import net.sourceforge.neurosdbm.actions.Synchronize;
   54   import net.sourceforge.neurosdbm.actions.UsersGuide;
   55   import net.sourceforge.neurosdbm.db.Database;
   56   import net.sourceforge.neurosdbm.db.DatabaseInternalCorruptionException;
   57   
   58   public class MainMenuBar extends JMenuBar {
   59   
   60     private MainFrame parent;
   61     private Database database;
   62     
   63     private JMenu fileMenu;
   64     private Synchronize synchronizeAction;
   65     private ChangeDevice changeDeviceAction;
   66     private Exit exitAction;
   67   
   68     private JMenu databaseMenu;
   69     private BackupDatabase backupAction;
   70     private RestoreDatabase restoreAction;
   71     private CreateEmptyDatabase createAction;
   72     private RefreshDatabase refreshAction;
   73     private RebuildDatabase rebuildAction;
   74     private SortDatabase sortAction;
   75     private DatabaseInfo infoAction;
   76     
   77     private JMenu trackMenu;
   78     private AddTrack addTrackAction;
   79     private DeleteTrack deleteTrackAction;
   80     private AddTracksToPlaylist addTracksToPlaylistAction;
   81     private PlayTracks playTracksAction;
   82     
   83     private JMenu optionsMenu;
   84     private JCheckBoxMenuItem autoSortMenuItem;
   85     private JCheckBoxMenuItem autoBackupMenuItem;
   86     private JMenuItem neurosMusicPathMenuItem;
   87     private JCheckBoxMenuItem deleteFileMenuItem;
   88     private JCheckBoxMenuItem allowDuplicatesMenuItem;
   89     private JCheckBoxMenuItem convertExtendedASCIIMenuItem;
   90     private JMenuItem columnChooserMenuItem;
   91     private JCheckBoxMenuItem highlightTracksMenuItem;
   92     
   93     private JMenu debugMenu;
   94     private JMenuItem addTrack1MenuItem;
   95     private JMenuItem addTrack2MenuItem;
   96     private JMenuItem addMoreTracksMenuItem;
   97     private JMenuItem addRandomTrackMenuItem;
   98     private JMenuItem writeDatabaseMenuItem;
   99     private JMenuItem printDatabaseMenuItem;
  100     
  101     private JMenu helpMenu;
  102     private UsersGuide usersGuideAction;
  103     private About aboutAction;
  104     private License gplLicenseAction;
  105     
  106     MainMenuBar(MainFrame parent, Database database) {
  107       this.parent = parent;
  108       this.database = database;
  109       
  110       fileMenu = new JMenu();
  111       fileMenu.setText("File");
  112   
  113       synchronizeAction = new Synchronize(parent, database);
  114       fileMenu.add(synchronizeAction);
  115       ActionLock.register(synchronizeAction);
  116       
  117       changeDeviceAction = new ChangeDevice(parent, database);
  118       fileMenu.add(changeDeviceAction);
  119       ActionLock.register(changeDeviceAction);
  120       
  121       exitAction = new Exit(parent);
  122       fileMenu.add(exitAction);
  123       ActionLock.register(exitAction);
  124       
  125       this.add(fileMenu);
  126       
  127       
  128       databaseMenu = new JMenu();
  129       databaseMenu.setText("Database");
  130   
  131       backupAction = new BackupDatabase(parent, database);
  132       databaseMenu.add(backupAction);
  133       ActionLock.register(backupAction);
  134       
  135       restoreAction = new RestoreDatabase(parent, database);
  136       databaseMenu.add(restoreAction);
  137       ActionLock.register(restoreAction);
  138       
  139       createAction = new CreateEmptyDatabase(parent, database);
  140       databaseMenu.add(createAction);
  141       ActionLock.register(createAction);
  142       
  143       refreshAction = new RefreshDatabase(parent, database);
  144       databaseMenu.add(refreshAction);
  145       ActionLock.register(refreshAction);
  146      
  147       rebuildAction = new RebuildDatabase(parent, database);
  148       databaseMenu.add(rebuildAction);
  149       ActionLock.register(rebuildAction);
  150       
  151       sortAction = new SortDatabase(parent, database);
  152       databaseMenu.add(sortAction);
  153       ActionLock.register(sortAction);
  154      
  155       infoAction = new DatabaseInfo(parent, database);
  156       databaseMenu.add(infoAction);
  157       ActionLock.register(infoAction);
  158      
  159       this.add(databaseMenu);
  160   
  161       
  162       trackMenu = new JMenu();
  163       trackMenu.setText("Track");
  164       
  165       addTrackAction = new AddTrack(parent, database);
  166       trackMenu.add(addTrackAction);
  167       ActionLock.register(addTrackAction);
  168       
  169       deleteTrackAction = new DeleteTrack(parent, database);
  170       trackMenu.add(deleteTrackAction);
  171       ActionLock.register(deleteTrackAction);
  172       
  173       addTracksToPlaylistAction = new AddTracksToPlaylist(parent, database);
  174       trackMenu.add(addTracksToPlaylistAction);
  175       ActionLock.register(addTracksToPlaylistAction);
  176       
  177       playTracksAction = new PlayTracks(parent);
  178       trackMenu.add(playTracksAction);
  179       ActionLock.register(playTracksAction);
  180       
  181       this.add(trackMenu);
  182       TrackPopupMenu.setMenu(trackMenu);
  183   
  184       
  185       optionsMenu = new JMenu();
  186       optionsMenu.setText("Options");
  187       
  188       autoSortMenuItem = new JCheckBoxMenuItem();
  189       autoSortMenuItem.setText("Auto Sort");
  190       autoSortMenuItem.setState(true);
  191       autoSortMenuItem.addActionListener(new OptionsAutoSort());
  192       optionsMenu.add(autoSortMenuItem);
  193       ActionLock.register(autoSortMenuItem);
  194       
  195       autoBackupMenuItem = new JCheckBoxMenuItem();
  196       autoBackupMenuItem.setText("Auto Backup");
  197       autoBackupMenuItem.setState(NeurosProperties.isAutoBackup());
  198       autoBackupMenuItem.addActionListener(new OptionsAutoBackup());
  199       optionsMenu.add(autoBackupMenuItem);
  200       ActionLock.register(autoBackupMenuItem);
  201       
  202       neurosMusicPathMenuItem = new JMenuItem();
  203       neurosMusicPathMenuItem.setText("Neuros Music Path");
  204       neurosMusicPathMenuItem.addActionListener(new OptionsNeurosMusicPath());
  205       optionsMenu.add(neurosMusicPathMenuItem);
  206       ActionLock.register(neurosMusicPathMenuItem);
  207      
  208       deleteFileMenuItem = new JCheckBoxMenuItem();
  209       deleteFileMenuItem.setText("Delete File");
  210       deleteFileMenuItem.setState(NeurosProperties.isDeleteFile());
  211       deleteFileMenuItem.addActionListener(new OptionsDeleteFile());
  212       optionsMenu.add(deleteFileMenuItem);
  213       ActionLock.register(deleteFileMenuItem);
  214       
  215       allowDuplicatesMenuItem = new JCheckBoxMenuItem();
  216       allowDuplicatesMenuItem.setText("Allow Duplicates");
  217       allowDuplicatesMenuItem.setState(NeurosProperties.allowDuplicates());
  218       allowDuplicatesMenuItem.addActionListener(new OptionsAllowDuplicates());
  219       optionsMenu.add(allowDuplicatesMenuItem);
  220       ActionLock.register(allowDuplicatesMenuItem);
  221      
  222       convertExtendedASCIIMenuItem = new JCheckBoxMenuItem();
  223       convertExtendedASCIIMenuItem.setText("Convert Extended ASCII");
  224       convertExtendedASCIIMenuItem.setState(NeurosProperties.isConvertExtendedASCII());
  225       convertExtendedASCIIMenuItem.addActionListener(new OptionsConvertExtendedASCII());
  226       optionsMenu.add(convertExtendedASCIIMenuItem);
  227       ActionLock.register(convertExtendedASCIIMenuItem);
  228       
  229       columnChooserMenuItem = new JMenuItem();
  230       columnChooserMenuItem.setText("Column Chooser");
  231       columnChooserMenuItem.addActionListener(new OptionsColumnChooser());
  232       optionsMenu.add(columnChooserMenuItem);
  233       ActionLock.register(columnChooserMenuItem);
  234       
  235       highlightTracksMenuItem = new JCheckBoxMenuItem();
  236       highlightTracksMenuItem.setText("HIghlight Queued/Removed tracks");
  237       highlightTracksMenuItem.setState(NeurosProperties.isHighlightTracks());
  238       highlightTracksMenuItem.addActionListener(new OptionsHiglightTracks());
  239       optionsMenu.add(highlightTracksMenuItem);
  240       ActionLock.register(highlightTracksMenuItem);
  241       
  242       this.add(optionsMenu);
  243   
  244   
  245       debugMenu = new JMenu();
  246       debugMenu.setText("Debug");
  247       
  248       addTrack1MenuItem = new JMenuItem();
  249       addTrack1MenuItem.setText("Add track 1");
  250       addTrack1MenuItem.addActionListener(new DebugAddTrack1());
  251       debugMenu.add(addTrack1MenuItem);
  252       ActionLock.register(addTrack1MenuItem);
  253   
  254       addTrack2MenuItem = new JMenuItem();
  255       addTrack2MenuItem.setText("Add track 2");
  256       addTrack2MenuItem.addActionListener(new DebugAddTrack2());
  257       debugMenu.add(addTrack2MenuItem);
  258       ActionLock.register(addTrack2MenuItem);
  259   
  260       addMoreTracksMenuItem = new JMenuItem();
  261       addMoreTracksMenuItem.setText("Add more tracks");
  262       addMoreTracksMenuItem.addActionListener(new DebugAddMoreTracks());
  263       debugMenu.add(addMoreTracksMenuItem);
  264       ActionLock.register(addMoreTracksMenuItem);
  265   
  266       addRandomTrackMenuItem = new JMenuItem();
  267       addRandomTrackMenuItem.setText("Add random track");
  268       addRandomTrackMenuItem.addActionListener(new DebugAddRandomTrack());
  269       debugMenu.add(addRandomTrackMenuItem);
  270       ActionLock.register(addRandomTrackMenuItem);
  271   
  272       writeDatabaseMenuItem = new JMenuItem();
  273       writeDatabaseMenuItem.setText("Write Database");
  274       writeDatabaseMenuItem.addActionListener(new DebugWriteDatabase());
  275       debugMenu.add(writeDatabaseMenuItem);
  276       ActionLock.register(writeDatabaseMenuItem);
  277   
  278       printDatabaseMenuItem = new JMenuItem();
  279       printDatabaseMenuItem.setText("Print Database");
  280       printDatabaseMenuItem.addActionListener(new DebugPrintDatabase());
  281       debugMenu.add(printDatabaseMenuItem);
  282       ActionLock.register(printDatabaseMenuItem);
  283   
  284       if (NeurosProperties.isDebug()) {
  285         this.add(debugMenu);
  286       }
  287       
  288       
  289       helpMenu = new JMenu();
  290       helpMenu.setText("Help");
  291       
  292       usersGuideAction = new UsersGuide(parent);
  293       helpMenu.add(usersGuideAction);
  294       
  295       aboutAction = new About(parent);
  296       helpMenu.add(aboutAction);
  297       
  298       gplLicenseAction = new License(parent);
  299       helpMenu.add(gplLicenseAction);
  300   
  301       this.add(helpMenu);
  302     }
  303   
  304   
  305     abstract private class MenuHandler implements ActionListener {
  306       public void actionPerformed(ActionEvent evt) {
  307         try {
  308           action();
  309         } catch (Exception exp) {
  310           Logging.fatal("Exception occured");
  311           Logging.fatal(exp);
  312   
  313           System.err.println("An exception occured.  Please check the log file.");
  314           String message = "An exception occured.  Please check the log file.\n";
  315           message += "Exception: " + exp + "\n";
  316           if (exp.getMessage() != null)
  317             message += "Message: " + exp.getMessage();
  318           JOptionPane.showMessageDialog(parent, message,
  319                                         "Neuros Database Manipulator",
  320                                         JOptionPane.ERROR_MESSAGE);
  321         }
  322       }
  323       
  324       abstract void action();
  325     }
  326   
  327   
  328     private class DebugAddTrack1 extends MenuHandler {
  329       void action() {
  330         try {
  331           database.testTrackAdd1();
  332         } catch (DatabaseInternalCorruptionException exp) {
  333           System.out.println("Exception: " + exp);
  334         }
  335         parent.dataChanged();
  336       }
  337     }
  338   
  339     private class DebugAddTrack2 extends MenuHandler {
  340       void action() {
  341         try {
  342           database.testTrackAdd2();
  343         } catch (DatabaseInternalCorruptionException exp) {
  344           System.out.println("Exception: " + exp);
  345         }
  346         parent.dataChanged();
  347       }
  348     }
  349   
  350     private class DebugAddMoreTracks extends MenuHandler {
  351       void action() {
  352         try {
  353           for (int cnt=0; cnt<15; cnt++)
  354             database.testTrackAdd1();
  355           for (int cnt=0; cnt<15; cnt++)
  356             database.testTrackAdd2();
  357         } catch (DatabaseInternalCorruptionException exp) {
  358           System.out.println("Exception: " + exp);
  359         }
  360         parent.dataChanged();
  361       }
  362     }
  363   
  364     
  365     private class DebugAddRandomTrack extends MenuHandler {
  366       void action() {
  367         try {
  368           database.testTrackAddRandom();
  369         } catch (DatabaseInternalCorruptionException exp) {
  370           System.out.println("Exception: " + exp);
  371         }
  372         parent.dataChanged();
  373       }
  374     }
  375   
  376     
  377     private class DebugWriteDatabase extends MenuHandler {
  378       void action() {
  379         try {
  380           database.write();
  381         } catch (Exception exp) {
  382           exp.printStackTrace();
  383         }
  384       }
  385     }
  386     
  387     private class DebugPrintDatabase extends MenuHandler {
  388       void action() {
  389         Logging.warning(database.toString());
  390       }
  391     }
  392   
  393     
  394     private class OptionsAutoSort extends MenuHandler {
  395       void action() {
  396         JOptionPane.showMessageDialog(parent,
  397                                       "Auto Sort enabled for now...",
  398                                       "Not Implemented",
  399                                       JOptionPane.INFORMATION_MESSAGE);
  400         autoSortMenuItem.setState(true);
  401       }
  402     }
  403     
  404   
  405     private class OptionsAutoBackup extends MenuHandler {
  406       void action() {
  407         if (NeurosProperties.isAutoBackup()) {
  408           autoBackupMenuItem.setState(false);
  409           NeurosProperties.setAutoBackup(false);
  410           NeurosProperties.save();
  411         } else {
  412           autoBackupMenuItem.setState(true);
  413           NeurosProperties.setAutoBackup(true);
  414           NeurosProperties.save();
  415         }
  416       }
  417     }
  418     
  419   
  420     private class OptionsNeurosMusicPath extends MenuHandler {
  421       void action() {
  422         MusicPathDialog musicPathDialog =
  423           new MusicPathDialog(parent, "Enter Neuros Music Path");
  424         musicPathDialog.setVisible(true);
  425       }
  426     }
  427   
  428   
  429     private class OptionsDeleteFile extends MenuHandler {
  430       void action() {
  431         if (NeurosProperties.isDeleteFile()) {
  432           deleteFileMenuItem.setState(false);
  433           NeurosProperties.setDeleteFile(false);
  434         } else {
  435           deleteFileMenuItem.setState(true);
  436           NeurosProperties.setDeleteFile(true);
  437         }
  438       }
  439     }
  440     
  441   
  442     private class OptionsAllowDuplicates extends MenuHandler {
  443       void action() {
  444         if (NeurosProperties.allowDuplicates()) {
  445           allowDuplicatesMenuItem.setState(false);
  446           NeurosProperties.setAllowDuplicates(false);
  447         } else {
  448           allowDuplicatesMenuItem.setState(true);
  449           NeurosProperties.setAllowDuplicates(true);
  450         }
  451       }
  452     }
  453     
  454   
  455     private class OptionsConvertExtendedASCII extends MenuHandler {
  456       void action() {
  457         if (NeurosProperties.isConvertExtendedASCII()) {
  458           convertExtendedASCIIMenuItem.setState(false);
  459           NeurosProperties.setConvertExtendedASCII(false);
  460         } else {
  461           convertExtendedASCIIMenuItem.setState(true);
  462           NeurosProperties.setConvertExtendedASCII(true);
  463         }
  464       }
  465     }
  466     
  467   
  468     private class OptionsColumnChooser extends MenuHandler {
  469       void action() {
  470         ColumnChooser cc = new ColumnChooser(parent);
  471         cc.show();
  472         parent.dataChanged();
  473       }
  474     }
  475     
  476     private class OptionsHiglightTracks extends MenuHandler {
  477     	void action() {
  478   	  if (NeurosProperties.isHighlightTracks()) {
  479   	    highlightTracksMenuItem.setState(false);
  480   	    NeurosProperties.setHighlightTracks(false);
  481   	  } 
  482   	  else {
  483   	    highlightTracksMenuItem.setState(true);
  484   	    NeurosProperties.setHighlightTracks(true);
  485   	  }
  486   	  parent.repaint();
  487     	}
  488     }
  489     
  490     public JPopupMenu getTrackPopupMenu() {
  491     	return trackMenu.getPopupMenu();
  492     }
  493     
  494     public JPopupMenu getDatabasePopupMenu() {
  495     	return databaseMenu.getPopupMenu();
  496     }
  497   }
  498   

Save This Page
Home » openjdk-7 » net.sourceforge » neurosdbm » [javadoc | source]