/* * ALMA - Atacama Large Millimiter Array * (c) European Southern Observatory, 2002 * Copyright by ESO (in the framework of the ALMA collaboration) * and Cosylab 2002, All rights reserved * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA */ package alma.acs.logging.dialogs.main; import java.awt.Toolkit; import java.awt.event.ActionListener; import javax.swing.ButtonGroup; import javax.swing.ImageIcon; import javax.swing.JCheckBoxMenuItem; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JRadioButtonMenuItem; import javax.swing.JSeparator; import javax.swing.KeyStroke; import javax.swing.event.MenuListener; import com.cosylab.logging.engine.audience.Audience.AudienceInfo; import com.cosylab.logging.engine.log.LogTypeHelper; /** * The menu bar of the main GUI * * @author acaproni * */ public class LogMenuBar extends JMenuBar { // Connect or disconnect text depending on the status of the connection // The text is changed by checking the connection before displaying the menu private JMenuItem connectMenuItem = null; private JMenuItem loadMenuItem = null; // Load File private JMenuItem loadURLMenuItem = null; // Load from URL private JMenuItem loadDBMenuItem = null; // Load from database private JMenuItem saveFileMenuItem = null; // Save File As private JMenuItem clearLogsMI = null; // Clear All private JMenuItem exitMenuItem = null; // Exit Not visible per default private JSeparator exitSeparator = new JSeparator(); //Not visible per default private boolean exitHided; // true if the exit menu is not visible /** * The menu item to show the statistics dialog */ private JMenuItem statisticsMenuItem = null; /** * The menu item to show the error log window */ private JMenuItem viewErrorLogMI; /** * The menu item to show the error browser */ private JMenuItem viewErrorBrowserMI; /** * The menu item to show the filters control panel */ private JMenuItem filtersMenuItem; private JMenuItem fieldsMenuItem = null; // Fields... private JMenuItem searchMenuItem; // Search... private JMenuItem searchNextMenuItem; // Search Next private JMenu fileMenu; // File private JMenu viewMenu; // View private JMenu searchMenu; // Search private JMenu zoomMenu; // Zoom private JMenu expertMenu; // Expert private JMenuItem suspendMI; private JMenuItem prefsMI; /** * The menu item to show/hide the toolbar */ private JCheckBoxMenuItem viewToolbarMI; /** * The menu item to show/hide the toolbar */ private JCheckBoxMenuItem autoReconnectMI; /** * The menu item to show/hide the Detailed log info panel */ private JCheckBoxMenuItem viewDetailedInfoMI; /** * The menu item to show/hide the Detailed log info panel */ private JCheckBoxMenuItem viewStatusAreaMI; /** * The menu to select the operator mode */ private JRadioButtonMenuItem operatorMode; /** * The menu to select the engineering mode */ private JRadioButtonMenuItem engineeringMode; /** * The menu to select the SciLog mode */ private JRadioButtonMenuItem sciLogMode; /** * The menu to add filters to the engine */ private JMenuItem engineFiltersMI; /** * The menu item to select the format of the date column in the table of logs * If it is true, the date appear as hh:mm:ss otherwise it's shown with a complete * longest format * shortDateViewMI defaults to true */ private JCheckBoxMenuItem shortDateViewMI; /** * The menu item to select to show only the icon in the renderer of the type * of log i.e. the description is hidden */ private JCheckBoxMenuItem logTypeDescritptionViewMI; /** * The preferences for zooming */ private JMenuItem zoomPrefsMI; /** * The menu for performing the zoom of an interval * selected by the user */ private JMenuItem manualZoomMI; /** * Constructor */ public LogMenuBar() { super(); setName("LoggingClientMenuBar"); setupMenuBar(); hideExitMenu(true); // Hide the exit menu } /** * Builds the menu bar */ private void setupMenuBar() { // Add the File menu fileMenu = new javax.swing.JMenu(); fileMenu.setName("FileMenu"); fileMenu.setText("File"); fileMenu.add(getConnectMenuItem()); fileMenu.add(getAutoReconnectMenuItem()); fileMenu.addSeparator(); fileMenu.add(getLoadMenuItem()); fileMenu.add(getLoadURLMenuItem()); fileMenu.add(getLoadDBMenuItem()); fileMenu.add(getSaveFileMenuItem()); fileMenu.add(getClearLogsMenuItem()); //fileMenu.addSeparator(); fileMenu.add(exitSeparator); fileMenu.add(getExitMenuItem()); add(fileMenu); // Add the View Menu viewMenu = new javax.swing.JMenu(); viewMenu.setName("ViewMenu"); viewMenu.setText("View"); viewMenu.add(getViewToolbarMenuItem()); viewMenu.add(getViewDetailedInfoMenuItem()); viewMenu.add(getViewStatusAreaMenuItem()); viewMenu.addSeparator(); viewMenu.add(getFieldsMenuItem()); viewMenu.add(getShortDateViewMenuItem()); viewMenu.add(getLogTypeDescriptionViewMenuItem()); viewMenu.addSeparator(); viewMenu.add(getFiltersMenuItem()); viewMenu.add(getViewErrorBrowserMenuItem()); viewMenu.addSeparator(); viewMenu.add(getStatisticsMenuItem()); viewMenu.add(getViewErrorLogMenuItem()); add(viewMenu); // Add the Search Menu add(getSearchMenu()); // Add the zoom menu add(getZoomMenu()); // Add the expert menu expertMenu = new JMenu(); expertMenu.setName("ExpertMenu"); expertMenu.setText("Expert"); JMenu modeMenu =new JMenu("Mode"); expertMenu.add(modeMenu); modeMenu.add(getOperatorMode()); modeMenu.add(getEngineeringMode()); modeMenu.add(getSciLogMode()); ButtonGroup group = new ButtonGroup(); group.add(getOperatorMode()); group.add(getEngineeringMode()); group.add(getSciLogMode()); expertMenu.addSeparator(); expertMenu.add(getSuspendMenuItem()); expertMenu.add(getPrefsMenuItem()); expertMenu.add(getEngineFiltersMenuItem()); add(expertMenu); } /** * Build the search menu * @return */ public JMenu getSearchMenu() { if (searchMenu==null) { searchMenu = new JMenu(); searchMenu.setName("SearchMenu"); searchMenu.setText("Search"); searchMenu.add(getSearchMenuItem()); searchMenu.add(getSearchNextMenuItem()); } return searchMenu; } /** * Build the zoom menu. * @return */ public JMenu getZoomMenu() { if (zoomMenu==null) { zoomMenu = new JMenu("Drill down"); zoomPrefsMI = new JMenuItem("Preferences..."); zoomMenu.add(zoomPrefsMI); manualZoomMI= new JMenuItem("Drill down..."); zoomMenu.add(manualZoomMI); } return zoomMenu; } /** * Returns the NewMenuItem property value. * @return javax.swing.JMenuItem */ public JMenuItem getConnectMenuItem() { if (connectMenuItem == null) { ImageIcon icon =new ImageIcon(LogTypeHelper.class.getResource("/link.png")); connectMenuItem = new JMenuItem("Connect",icon); connectMenuItem.setName("connectMenuItem"); connectMenuItem.setText("Connect"); } return connectMenuItem; } /** * Returns the LoadDB menu item * * @return The LoadDB menu item */ public JMenuItem getLoadDBMenuItem() { if (loadDBMenuItem == null) { ImageIcon icon =new ImageIcon(LogTypeHelper.class.getResource("/database.png")); loadDBMenuItem = new JMenuItem("Load from database",icon); loadDBMenuItem.setName("LoadDBMenuItem"); } return loadDBMenuItem; } /** * Return the LoadURL menu item * * @return The LoadURL menu item */ public JMenuItem getLoadURLMenuItem() { if (loadURLMenuItem == null) { ImageIcon icon =new ImageIcon(LogTypeHelper.class.getResource("/loadURL.png")); loadURLMenuItem = new JMenuItem("Load from URL",icon); loadURLMenuItem.setName("LoadURLMenuItem"); } return loadURLMenuItem; } /** * Returns the Fields menu item. * @return javax.swing.JMenuItem */ public JMenuItem getFieldsMenuItem() { if (fieldsMenuItem == null) { fieldsMenuItem = new JMenuItem(); fieldsMenuItem.setName("FieldsMenuItem"); fieldsMenuItem.setText("Fields..."); } return fieldsMenuItem; } /** * Return the editFiltersMenuItem * @return */ public JMenuItem getFiltersMenuItem() { if (filtersMenuItem==null) { ImageIcon filterIcon = new ImageIcon(LogTypeHelper.class.getResource("/filters.png")); filtersMenuItem=new JMenuItem("Filters...",filterIcon); filtersMenuItem.setName("EditFiltersMenuItem"); } return filtersMenuItem; } /** * Returns the LoadMenuItem property value. * @return javax.swing.JMenuItem */ public JMenuItem getLoadMenuItem() { if (loadMenuItem == null) { ImageIcon icon =new ImageIcon(LogTypeHelper.class.getResource("/load.png")); loadMenuItem = new JMenuItem("Load from File",icon); loadMenuItem.setName("LoadMenuItem"); } return loadMenuItem; } /** * Returns the ExitMenuItem property value. * @return javax.swing.JMenuItem */ public JMenuItem getExitMenuItem() { if (exitMenuItem == null) { ImageIcon icon =new ImageIcon(LogTypeHelper.class.getResource("/exit.png")); exitMenuItem = new JMenuItem("Exit",icon); exitMenuItem.setName("ExitMenuItem"); } return exitMenuItem; } /** * Returns the SaveFileMenuItem property value. * @return javax.swing.JMenuItem */ public JMenuItem getSaveFileMenuItem() { if (saveFileMenuItem == null) { ImageIcon icon =new ImageIcon(LogTypeHelper.class.getResource("/disk.png")); saveFileMenuItem = new JMenuItem("Save File As",icon); saveFileMenuItem.setName("SaveFileMenuItem"); } return saveFileMenuItem; } /** * Returns the ClearAllMenuItem property value. * @return javax.swing.JMenuItem */ public JMenuItem getClearLogsMenuItem() { if (clearLogsMI == null) { ImageIcon icon =new ImageIcon(LogTypeHelper.class.getResource("/delete.png")); clearLogsMI = new JMenuItem("Clear logs",icon); clearLogsMI.setName("ClearAllMenuItem"); } return clearLogsMI; } public JMenuItem getSearchMenuItem() { if (searchMenuItem==null) { ImageIcon searchIcon =new ImageIcon(LogTypeHelper.class.getResource("/search.png")); searchMenuItem = new JMenuItem("Search...",searchIcon); searchMenuItem.setAccelerator(KeyStroke.getKeyStroke('S',Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); searchMenu.add(searchMenuItem); searchMenu.setName("SearchMenuItem"); } return searchMenuItem; } public JMenuItem getSearchNextMenuItem() { if (searchNextMenuItem==null) { searchNextMenuItem = new JMenuItem("Search Next"); searchNextMenuItem.setAccelerator(KeyStroke.getKeyStroke('N',Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); searchNextMenuItem.setEnabled(false); searchNextMenuItem.setName("SearchNextMenuItem"); } return searchNextMenuItem; } /** * Set the event handler for the menus * * @param listener The MenuListener */ public void setEventHandler(ActionListener actionListener, MenuListener menuListener) { fileMenu.addMenuListener(menuListener); viewMenu.addMenuListener(menuListener); searchMenu.addMenuListener(menuListener); connectMenuItem.addActionListener(actionListener); // Connect/Disconnect autoReconnectMI.addActionListener(actionListener); viewToolbarMI.addActionListener(actionListener); viewDetailedInfoMI.addActionListener(actionListener); shortDateViewMI.addActionListener(actionListener); logTypeDescritptionViewMI.addActionListener(actionListener); viewStatusAreaMI.addActionListener(actionListener); statisticsMenuItem.addActionListener(actionListener); viewErrorLogMI.addActionListener(actionListener); viewErrorBrowserMI.addActionListener(actionListener); searchMenuItem.addActionListener(actionListener); searchNextMenuItem.addActionListener(actionListener); suspendMI.addActionListener(actionListener); prefsMI.addActionListener(actionListener); loadMenuItem.addActionListener(actionListener); // Load File loadURLMenuItem.addActionListener(actionListener); // Load URL loadDBMenuItem.addActionListener(actionListener); // Load from database saveFileMenuItem.addActionListener(actionListener); // Save File As clearLogsMI.addActionListener(actionListener); // ClearAll exitMenuItem.addActionListener(actionListener); // Exit fieldsMenuItem.addActionListener(actionListener); // Fields filtersMenuItem.addActionListener(actionListener); // Filters operatorMode.addActionListener(actionListener); // Operator mode engineeringMode.addActionListener(actionListener); // Engineering mode sciLogMode.addActionListener(actionListener); // SciLog mode engineFiltersMI.addActionListener(actionListener); // Engine filters zoomPrefsMI.addActionListener(actionListener); // zoom preferences manualZoomMI.addActionListener(actionListener); // manual zoom } /** * Getter * * @return The menu item */ public JCheckBoxMenuItem getViewToolbarMenuItem() { if (viewToolbarMI==null) { viewToolbarMI = new JCheckBoxMenuItem("Toolbar",true); } return viewToolbarMI; } /** * Getter * * @return The menu item */ public JCheckBoxMenuItem getViewDetailedInfoMenuItem() { if (viewDetailedInfoMI==null) { viewDetailedInfoMI = new JCheckBoxMenuItem("Detailed log info",true); } return viewDetailedInfoMI; } /** * Getter * * @return The menu item */ public JCheckBoxMenuItem getViewStatusAreaMenuItem() { if (viewStatusAreaMI==null) { viewStatusAreaMI = new JCheckBoxMenuItem("Status area",false); } return viewStatusAreaMI; } /** * Getter * * @return The menu item */ public JCheckBoxMenuItem getShortDateViewMenuItem() { if (shortDateViewMI==null) { shortDateViewMI = new JCheckBoxMenuItem("Short date format",true); } return shortDateViewMI; } /** * Getter * * @return The menu item */ public JCheckBoxMenuItem getLogTypeDescriptionViewMenuItem() { if (logTypeDescritptionViewMI==null) { logTypeDescritptionViewMI = new JCheckBoxMenuItem("Show log type description",true); } return logTypeDescritptionViewMI; } /** * Getter * * @return The menu item */ public JCheckBoxMenuItem getAutoReconnectMenuItem() { if (autoReconnectMI==null) { ImageIcon icon =new ImageIcon(LogTypeHelper.class.getResource("/autoreconnect.png")); autoReconnectMI = new JCheckBoxMenuItem("Auto reconnect",icon,false); } return autoReconnectMI; } /** * Getter * * @return The menu item */ public JMenuItem getSuspendMenuItem() { if (suspendMI==null) { suspendMI = new JCheckBoxMenuItem("Suspend",false); } return suspendMI; } /** * Getter * * @return The menu item */ public JMenuItem getPrefsMenuItem() { if (prefsMI==null) { prefsMI = new JMenuItem("Preferences"); } return prefsMI; } /** * Getter * * @return The menu item */ public JMenuItem getStatisticsMenuItem() { if (statisticsMenuItem==null) { ImageIcon statIcon =new ImageIcon(LogTypeHelper.class.getResource("/statistics.png")); statisticsMenuItem = new JMenuItem("Statistics",statIcon); } return statisticsMenuItem; } /** * Getter * * @return The menu item */ public JMenuItem getViewErrorLogMenuItem() { if (viewErrorLogMI==null) { ImageIcon errorLogIcon =new ImageIcon(LogTypeHelper.class.getResource("/errorLogIcon.png")); viewErrorLogMI = new JMenuItem("jlog error log",errorLogIcon); } return viewErrorLogMI; } /** * Getter * * @return The menu item */ public JMenuItem getViewErrorBrowserMenuItem() { if (viewErrorBrowserMI==null) { ImageIcon browserIcon =new ImageIcon(LogTypeHelper.class.getResource("/errorBrowserIcon.png")); viewErrorBrowserMI = new JMenuItem("Error browser",browserIcon); } return viewErrorBrowserMI; } /** * Enable/Disable all the controls in the GUI that could trigger * the invalidation of the logs * * @param enabled If true the controls are enabled */ @Override public void setEnabled(boolean enabled) { viewMenu.setEnabled(enabled); searchMenu.setEnabled(enabled); expertMenu.setEnabled(enabled); fileMenu.setEnabled(enabled); zoomMenu.setEnabled(enabled); super.setEnabled(enabled); } /** * Hide the Exit menu item * * @param hide If true the menu is set to invisible */ public void hideExitMenu(boolean hide) { if (hide && !exitHided) { exitHided=true; fileMenu.remove(exitMenuItem); fileMenu.remove(exitSeparator); } else if (!hide && exitHided){ exitHided=false; fileMenu.add(exitSeparator); fileMenu.add(exitMenuItem); } } /** * @return the operatorMode */ public JRadioButtonMenuItem getOperatorMode() { if (operatorMode==null) { operatorMode= new JRadioButtonMenuItem(AudienceInfo.OPERATOR.name); } return operatorMode; } /** * @return the standardMode */ public JRadioButtonMenuItem getEngineeringMode() { if (engineeringMode==null) { engineeringMode=new JRadioButtonMenuItem(AudienceInfo.ENGINEER.name); } return engineeringMode; } /** * @return the SciLog mode */ public JRadioButtonMenuItem getSciLogMode() { if (sciLogMode==null) { sciLogMode=new JRadioButtonMenuItem(AudienceInfo.SCILOG.name); } return sciLogMode; } /** * @return the engineFiltersMI */ public JMenuItem getEngineFiltersMenuItem() { if (engineFiltersMI==null) { engineFiltersMI = new JMenuItem("Engine filters..."); } return engineFiltersMI; } /** * * @return The manual zoom menu item */ public JMenuItem getManualZoomMI() { return manualZoomMI; } /** * @return The zoom preferences menu item */ public JMenuItem getZoomPrefsMI() { return zoomPrefsMI; } }