package se.cambio.cds.gdl.editor.view.menubar; import se.cambio.cds.gdl.editor.controller.EditorManager; import se.cambio.cds.gdl.editor.controller.interfaces.EditorController; import se.cambio.cds.gdl.editor.util.GDLEditorLanguageManager; import javax.swing.*; import java.util.Collection; import java.util.HashMap; import java.util.Map; /** * @author iago.corbal * */ public class MainMenuBar extends JMenuBar { /** * Comentario para <code>serialVersionUID</code> */ private static final long serialVersionUID = 1L; private JMenu fileMenu; private Action loadGuideAction; private Action saveGuideAction; private Action saveGuideAsAction; private Action saveGuideAsObjectAction; private Action exitEditorAction; private Action createNewGuideAction; private JMenu languageMenu; private JMenu configurationMenu; private Action addLanguageToGuideAction; private Action configRepositoriesAction; private Action currentDateAndTimeAction; private Action importArchetypeAction; private Action importTemplateAction; private JMenu exportMenu; private JMenu importMenu; private JMenu helpMenu; private Action exportToHTMLAction; private Action viewSamplesAction; private Action aboutGDLEditorAction; private Action releaseNotesAction; private Action viewUserManualAction; private Map<String, JRadioButtonMenuItem> _languageRadioButtonMenuItems = null; public MainMenuBar(){ initialize(); } /** * This method initializes this */ private void initialize() { this.add(getFileMenu()); this.add(getLanguageMenu()); this.add(getConfigurationMenu()); this.add(getHelpMenu()); } public JMenu getFileMenu() { if (fileMenu == null) { fileMenu = new JMenu(); fileMenu.setText(GDLEditorLanguageManager.getMessage("File")); fileMenu.add(getCreateNewGuideAction()); fileMenu.add(getLoadGuideAction()); fileMenu.add(getSaveGuideAction()); fileMenu.add(getSaveGuideAsAction()); fileMenu.add(getImportMenu()); fileMenu.add(getExportMenu()); fileMenu.add(getExitEditorAction()); } return fileMenu; } public JMenu getImportMenu(){ if (importMenu ==null){ importMenu = new JMenu(GDLEditorLanguageManager.getMessage("Import")); importMenu.add(getImportArchetypeAction()); importMenu.add(getImportTemplateAction()); } return importMenu; } public JMenu getExportMenu(){ if (exportMenu ==null){ exportMenu = new JMenu(GDLEditorLanguageManager.getMessage("Export")); exportMenu.add(getSaveGuideAsObjectAction()); exportMenu.add(getExportToHTMLAction()); } return exportMenu; } public Action getCreateNewGuideAction(){ if (createNewGuideAction ==null){ createNewGuideAction = new NewGuideAction(); } return createNewGuideAction; } public Action getLoadGuideAction(){ if (loadGuideAction ==null){ loadGuideAction = new LoadGuideAction(); } return loadGuideAction; } public Action getSaveGuideAction(){ if (saveGuideAction ==null){ saveGuideAction = new SaveGuideAction(); } return saveGuideAction; } public Action getSaveGuideAsAction(){ if (saveGuideAsAction ==null){ saveGuideAsAction = new SaveGuideAsAction(); } return saveGuideAsAction; } public Action getSaveGuideAsObjectAction(){ if (saveGuideAsObjectAction ==null){ saveGuideAsObjectAction = new SaveGuideAsObjectAction(); } return saveGuideAsObjectAction; } public Action getExitEditorAction(){ if (exitEditorAction ==null){ exitEditorAction = new ExitEditorAction(); } return exitEditorAction; } public Action getImportArchetypeAction(){ if (importArchetypeAction ==null){ importArchetypeAction = new ImportArchetypeAction(); } return importArchetypeAction; } public Action getImportTemplateAction(){ if (importTemplateAction ==null){ importTemplateAction = new ImportTemplateAction(); } return importTemplateAction; } public Action getExportToHTMLAction(){ if (exportToHTMLAction ==null){ exportToHTMLAction = new ExportToHTMLAction(); } return exportToHTMLAction; } public JMenu getLanguageMenu() { if (languageMenu == null) { languageMenu = new JMenu(); languageMenu.setText(GDLEditorLanguageManager.getMessage("Language")); } return languageMenu; } public void refreshLanguageMenu(){ getLanguageMenu().removeAll(); ButtonGroup itemGroup = new ButtonGroup(); EditorController controller = EditorManager.getActiveEditorController(); String currentLang= controller.getCurrentLanguageCode(); Collection<String> supportedLanguageCodes = controller.getSupportedLanguageCodes(); for (String languageCode : supportedLanguageCodes) { JRadioButtonMenuItem rbMenuItem = new JRadioButtonMenuItem(new ChangeGuideLanguageAction(languageCode)); getLanguageRadioButtonMenuItemsMap().put(currentLang, rbMenuItem); itemGroup.add(rbMenuItem); getLanguageMenu().add(rbMenuItem); if (languageCode.equals(currentLang)){ rbMenuItem.setSelected(true); } } getLanguageMenu().add(getAddLanguageToGuideAction()); } private Map<String, JRadioButtonMenuItem> getLanguageRadioButtonMenuItemsMap(){ if (_languageRadioButtonMenuItems==null){ _languageRadioButtonMenuItems = new HashMap<String, JRadioButtonMenuItem>(); } return _languageRadioButtonMenuItems; } public JRadioButtonMenuItem getLanguageRadioButtonMenuItem(String lang){ return getLanguageRadioButtonMenuItemsMap().get(lang); } public Action getAddLanguageToGuideAction(){ if (addLanguageToGuideAction ==null){ addLanguageToGuideAction = new AddLanguageToGuideAction(); } return addLanguageToGuideAction; } public JMenu getConfigurationMenu() { if (configurationMenu == null) { configurationMenu = new JMenu(); configurationMenu.setText(GDLEditorLanguageManager.getMessage("Configuration")); configurationMenu.add(getConfigurationRepositoriesAction()); configurationMenu.add(getCurrentDateAndTimeAction()); configurationMenu.add(new ConfigLanguageAction()); } return configurationMenu; } public Action getConfigurationRepositoriesAction(){ if (configRepositoriesAction ==null){ configRepositoriesAction = new ConfigRepositoriesAction(); } return configRepositoriesAction; } public Action getCurrentDateAndTimeAction(){ if (currentDateAndTimeAction ==null){ currentDateAndTimeAction = new CurrentDateAndTimeAction(); } return currentDateAndTimeAction; } public JMenu getHelpMenu() { if (helpMenu == null) { helpMenu = new JMenu(); helpMenu.setText(GDLEditorLanguageManager.getMessage("Help")); helpMenu.add(getViewUserManualAction()); helpMenu.add(getViewSamplesAction()); helpMenu.add(getReleaseNotesAction()); helpMenu.addSeparator(); helpMenu.add(getAboutGDLEditorAction()); } return helpMenu; } public Action getViewUserManualAction(){ if (viewUserManualAction ==null){ viewUserManualAction = new ViewUserManualAction(); } return viewUserManualAction; } public Action getViewSamplesAction(){ if (viewSamplesAction ==null){ viewSamplesAction = new ViewSamplesAction(); } return viewSamplesAction; } public Action getReleaseNotesAction(){ if (releaseNotesAction ==null){ releaseNotesAction = new ViewReleaseNotesMenuAction(); } return releaseNotesAction; } public Action getAboutGDLEditorAction(){ if (aboutGDLEditorAction ==null){ aboutGDLEditorAction = new AboutGDLEditorMenuAction(); } return aboutGDLEditorAction; } } /* * ***** BEGIN LICENSE BLOCK ***** * Version: MPL 2.0/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License Version * 2.0 (the 'License'); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an 'AS IS' basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * * The Initial Developers of the Original Code are Iago Corbal and Rong Chen. * Portions created by the Initial Developer are Copyright (C) 2012-2013 * the Initial Developer. All Rights Reserved. * * Contributor(s): * * Software distributed under the License is distributed on an 'AS IS' basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * ***** END LICENSE BLOCK ***** */