Main Page | Packages | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

MainMenuBar.java

Go to the documentation of this file.
00001 /*
00002  * MainMenuBar.java
00003  *
00004  * Copyright (C) 2005 Project SQUID, http://www.cs.helsinki.fi/group/squid/
00005  *
00006  * This file is part of Ikayaki.
00007  *
00008  * Ikayaki is free software; you can redistribute it and/or modify
00009  * it under the terms of the GNU General Public License as published by
00010  * the Free Software Foundation; either version 2 of the License, or
00011  * (at your option) any later version.
00012  *
00013  * Ikayaki is distributed in the hope that it will be useful,
00014  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00015  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
00016  * GNU General Public License for more details.
00017  *
00018  * You should have received a copy of the GNU General Public License
00019  * along with Ikayaki; if not, write to the Free Software
00020  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
00021  */
00022 
00023 package ikayaki.gui;
00024 
00025 import ikayaki.Settings;
00026 
00027 import javax.swing.*;
00028 import javax.swing.event.MenuEvent;
00029 import javax.swing.event.MenuListener;
00030 import java.awt.event.ActionEvent;
00031 import java.awt.event.ActionListener;
00032 import java.awt.event.KeyEvent;
00033 import java.io.File;
00034 
00040 public class MainMenuBar extends JMenuBar {
00041 
00042     private MainViewPanel main;
00043 
00044     private JMenu fileMenu;
00045     private Action newProject;
00046     private Action openProject;
00047     private JMenu openRecentProjectMenu;
00048     private JMenu exportProjectMenu;
00049     private Action exportProjectToDAT;
00050     private Action exportProjectToDTD;
00051     private Action exportProjectToSRM;
00052     private Action print;
00053     private Action printPreview;
00054     private Action exit;
00055 
00056     private JMenu measurementMenu;
00057     private Action autoStep;
00058     private Action singleStep;
00059     private Action pause;
00060     private Action abort;
00061 
00062     private JMenu toolsMenu;
00063     private Action programSettings;
00064     private Action deviceSettings;
00065 
00066     private JMenu helpMenu;
00067     private Action help;
00068     private Action about;
00069 
00073     public MainMenuBar(MainViewPanel main) {
00074         this.main = main;
00075         initialize();
00076 
00077         fileMenu = new JMenu("File");
00078         fileMenu.setMnemonic(KeyEvent.VK_F);
00079         fileMenu.add(newProject);
00080         fileMenu.add(openProject);
00081         {
00082             openRecentProjectMenu = new JMenu("Open Recent");
00083             openRecentProjectMenu.setMnemonic(KeyEvent.VK_R);
00084         }
00085         fileMenu.add(openRecentProjectMenu);
00086         fileMenu.add(new JSeparator());
00087         {
00088             exportProjectMenu = new JMenu("Export");
00089             exportProjectMenu.setMnemonic(KeyEvent.VK_E);
00090             exportProjectMenu.add(exportProjectToDAT);
00091             exportProjectMenu.add(exportProjectToDTD);
00092             //exportProjectMenu.add(exportProjectToSRM);    // TODO: support for SRM files is missing
00093         }
00094         fileMenu.add(exportProjectMenu);
00095         fileMenu.add(new JSeparator());
00096         fileMenu.add(print);
00097         fileMenu.add(printPreview);
00098         fileMenu.add(new JSeparator());
00099         fileMenu.add(exit);
00100         add(fileMenu);
00101 
00102         measurementMenu = new JMenu("Measurement");
00103         measurementMenu.setMnemonic(KeyEvent.VK_M);
00104         measurementMenu.add(autoStep);
00105         measurementMenu.add(singleStep);
00106         measurementMenu.add(pause);
00107         measurementMenu.add(abort);
00108         add(measurementMenu);
00109 
00110         toolsMenu = new JMenu("Tools");
00111         toolsMenu.setMnemonic(KeyEvent.VK_T);
00112         toolsMenu.add(programSettings);
00113         toolsMenu.add(deviceSettings);
00114         add(toolsMenu);
00115 
00116         helpMenu = new JMenu("Help");
00117         helpMenu.setMnemonic(KeyEvent.VK_H);
00118         helpMenu.add(help);
00119         helpMenu.add(about);
00120         add(helpMenu);
00121 
00122         // rebuilding of the file menu
00123         fileMenu.addMenuListener(new MenuListener() {
00124             public void menuSelected(MenuEvent e) {
00125 
00126                 // enable/disable export menu
00127                 exportProjectMenu.setEnabled(exportProjectToDAT.isEnabled()
00128                         || exportProjectToDTD.isEnabled()
00129                         || exportProjectToSRM.isEnabled());
00130 
00131                 // rebuild project history
00132                 openRecentProjectMenu.removeAll();
00133                 File[] files = Settings.getProjectHistory();
00134                 if (files.length == 0) {
00135                     openRecentProjectMenu.setEnabled(false);
00136                 } else {
00137                     openRecentProjectMenu.setEnabled(true);
00138 
00139                     for (int i = 0; i < files.length; i++) {
00140                         final File file = files[i];
00141                         JMenuItem item;
00142                         if (i < 10) {
00143                             int j = (i + 1) % 10;
00144                             item = new JMenuItem(j + ":   " + file.getAbsolutePath());
00145                             item.setMnemonic(KeyEvent.VK_0 + j);
00146                         } else {
00147                             item = new JMenuItem(file.getAbsolutePath());
00148                         }
00149 
00150                         item.addActionListener(new ActionListener() {
00151                             public void actionPerformed(ActionEvent e) {
00152                                 MainMenuBar.this.main.loadProject(file);
00153                             }
00154                         });
00155                         openRecentProjectMenu.add(item);
00156                     }
00157                 }
00158             }
00159 
00160             public void menuDeselected(MenuEvent e) {
00161                 // DO NOTHING
00162             }
00163 
00164             public void menuCanceled(MenuEvent e) {
00165                 // DO NOTHING
00166             }
00167         });
00168     }
00169 
00173     private void initialize() {
00174 
00175         /* File Menu */
00176         newProject = main.getNewProjectAction();
00177         openProject = main.getOpenProjectAction();
00178         exportProjectToDAT = main.getExportProjectToDATAction();
00179         exportProjectToDTD = main.getExportProjectToTDTAction();
00180         exportProjectToSRM = main.getExportProjectToSRMAction();
00181         print = main.getPrintAction();
00182         printPreview = main.getPrintPreviewAction();
00183         exit = main.getExitAction();
00184 
00185         /* Measurement Menu */
00186         autoStep = main.getMeasurementControlsPanel().getAutoStepAction();
00187         singleStep = main.getMeasurementControlsPanel().getSingleStepAction();
00188         pause = main.getMeasurementControlsPanel().getPauseAction();
00189         abort = main.getMeasurementControlsPanel().getAbortAction();
00190 
00191         /* Tools Menu */
00192         programSettings = main.getProgramSettingsAction();
00193         deviceSettings = main.getDeviceSettingsAction();
00194 
00195         /* Help Menu */
00196         help = main.getHelpAction();
00197         about = main.getAboutAction();
00198     }
00199 }

Generated on Fri May 6 16:00:31 2005 for Squid by  doxygen 1.4.1