/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache 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.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package ro.nextreports.designer;
import java.util.List;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import ro.nextreports.designer.action.BackToParentAction;
import ro.nextreports.designer.action.ExitAction;
import ro.nextreports.designer.action.OpenFromServerAction;
import ro.nextreports.designer.action.OpenLayoutPerspectiveAction;
import ro.nextreports.designer.action.PublishAction;
import ro.nextreports.designer.action.SaveAction;
import ro.nextreports.designer.action.SaveAsAction;
import ro.nextreports.designer.action.chart.ImportChartAction;
import ro.nextreports.designer.action.chart.NewChartAction;
import ro.nextreports.designer.action.chart.NewChartFromQueryAction;
import ro.nextreports.designer.action.chart.OpenChartAction;
import ro.nextreports.designer.action.datasource.AddDataSourceAction;
import ro.nextreports.designer.action.datasource.ExportDataSourceAction;
import ro.nextreports.designer.action.datasource.ImportDataSourceAction;
import ro.nextreports.designer.action.favorites.FavoriteEntry;
import ro.nextreports.designer.action.favorites.FavoritesUtil;
import ro.nextreports.designer.action.favorites.ManageFavoritesAction;
import ro.nextreports.designer.action.favorites.OpenFavoriteAction;
import ro.nextreports.designer.action.help.AboutAction;
import ro.nextreports.designer.action.help.CheckForUpdateAction;
import ro.nextreports.designer.action.help.HelpManualAction;
import ro.nextreports.designer.action.help.HelpMovieAction;
import ro.nextreports.designer.action.help.HelpStartupAction;
import ro.nextreports.designer.action.help.SurveyAction;
import ro.nextreports.designer.action.query.ImportQueryAction;
import ro.nextreports.designer.action.query.NewQueryAction;
import ro.nextreports.designer.action.query.OpenQueryAction;
import ro.nextreports.designer.action.query.OpenQueryPerspectiveAction;
import ro.nextreports.designer.action.report.ImportReportAction;
import ro.nextreports.designer.action.report.NewReportAction;
import ro.nextreports.designer.action.report.NewReportFromQueryAction;
import ro.nextreports.designer.action.report.OpenReportAction;
import ro.nextreports.designer.action.report.ViewReportSqlAction;
import ro.nextreports.designer.action.report.WizardAction;
import ro.nextreports.designer.action.tools.BackupAction;
import ro.nextreports.designer.action.tools.ImportAction;
import ro.nextreports.designer.action.tools.Language;
import ro.nextreports.designer.action.tools.LanguageAction;
import ro.nextreports.designer.action.tools.RestoreAction;
import ro.nextreports.designer.action.tools.RestoreDockingAction;
import ro.nextreports.designer.action.tools.SettingsAction;
import ro.nextreports.designer.datasource.DefaultDataSourceManager;
import ro.nextreports.designer.i18n.action.ManageI18NAction;
import ro.nextreports.designer.template.report.action.ApplyTemplateAction;
import ro.nextreports.designer.template.report.action.CreateTemplateAction;
import ro.nextreports.designer.template.report.action.ExtractTemplateAction;
import ro.nextreports.designer.template.report.action.ModifyTemplateAction;
import ro.nextreports.designer.util.I18NSupport;
import ro.nextreports.designer.util.ShortcutsUtil;
import ro.nextreports.engine.exporter.ResultExporter;
import com.jgoodies.looks.HeaderStyle;
import com.jgoodies.looks.Options;
import com.thoughtworks.xstream.XStream;
/**
* @author Decebal Suiu
*/
public class MainMenuBar extends JMenuBar {
private static final long serialVersionUID = 1L;
private AddDataSourceAction addDataSourceAction = new AddDataSourceAction(false);
private ExportDataSourceAction exportDataSourceAction = new ExportDataSourceAction(false);
private ImportDataSourceAction importDataSourceAction = new ImportDataSourceAction(false);
private WizardAction wizardAction = new WizardAction(Globals.getMainFrame().getQueryBuilderPanel().getTree());
private NewQueryAction newQueryAction = new NewQueryAction(false);
private OpenQueryAction openQueryAction = new OpenQueryAction(false);
private NewReportAction newReportAction = new NewReportAction(false);
private NewReportFromQueryAction newReportFromQueryAction = new NewReportFromQueryAction(null, null, false, ResultExporter.DEFAULT_TYPE);
private OpenReportAction openReportAction = new OpenReportAction(false);
private OpenFromServerAction openFromServerAction = new OpenFromServerAction();
private PublishAction publishAction = new PublishAction();
private ExitAction exitAction = new ExitAction();
private BackupAction backupAction = new BackupAction();
private RestoreAction restoreAction = new RestoreAction();
private ImportAction importAction = new ImportAction();
private SettingsAction settingsAction = new SettingsAction();
private ViewReportSqlAction viewReportSqlAction = new ViewReportSqlAction();
private ImportReportAction importReportAction = new ImportReportAction(false);
private ImportQueryAction importQueryAction = new ImportQueryAction(false);
private ApplyTemplateAction applyTemplateAction = new ApplyTemplateAction(true);
private ExtractTemplateAction extractTemplateAction = new ExtractTemplateAction();
private OpenLayoutPerspectiveAction openLayoutPersAction = new OpenLayoutPerspectiveAction();
private ManageI18NAction manageI18nAction = new ManageI18NAction();
private NewChartAction newChartAction = new NewChartAction(false);
private OpenChartAction openChartAction = new OpenChartAction(false);
private NewChartFromQueryAction newChartFromQueryAction = new NewChartFromQueryAction(null, false);
private ImportChartAction importChartAction = new ImportChartAction(false);
private SaveAction saveAction = new SaveAction();
private SaveAsAction saveAsAction = new SaveAsAction();
private BackToParentAction backAction = new BackToParentAction();
private JMenu menuFavorites = new JMenu(I18NSupport.getString("menu_favorites"));
public MainMenuBar() {
putClientProperty(Options.HEADER_STYLE_KEY, HeaderStyle.BOTH);
add(createFileMenu());
add(createViewsMenu());
add(createToolsMenu());
add(createHelpMenu());
actionUpdate(Globals.getConnection() != null);
Globals.setMainMenuBar(this);
}
public void newChartActionUpdate() {
publishAction.setEnabled(true);
}
public void newReportActionUpdate() {
applyTemplateAction.setEnabled(true);
extractTemplateAction.setEnabled(true);
publishAction.setEnabled(true);
}
public void newQueryActionUpdate() {
applyTemplateAction.setEnabled(false);
extractTemplateAction.setEnabled(false);
publishAction.setEnabled(false);
}
public void actionUpdate(boolean connected) {
openQueryAction.setEnabled(connected);
importQueryAction.setEnabled(connected);
newReportAction.setEnabled(connected);
newReportFromQueryAction.setEnabled(connected);
openReportAction.setEnabled(connected);
importReportAction.setEnabled(connected);
openFromServerAction.setEnabled(connected);
newChartAction.setEnabled(connected);
openChartAction.setEnabled(connected);
newChartFromQueryAction.setEnabled(connected);
importChartAction.setEnabled(connected);
saveAction.setEnabled(connected);
saveAsAction.setEnabled(connected);
}
public void enableLayoutPerspective(boolean enable) {
openLayoutPersAction.setEnabled(enable);
manageI18nAction.setEnabled(enable);
}
private JMenu createFileMenu() {
JMenu mnu = new JMenu(I18NSupport.getString("menu.file"));
mnu.setMnemonic(ShortcutsUtil.getMnemonic("menu.file.mnemonic", new Integer('F')));
JMenu mnu1 = new JMenu(I18NSupport.getString("menu_new"));
mnu1.add(addDataSourceAction);
mnu1.add(newQueryAction);
mnu1.add(newReportAction);
mnu1.add(newReportFromQueryAction);
mnu1.add(newChartAction);
mnu1.add(newChartFromQueryAction);
mnu.add(mnu1);
JMenu mnu2 = new JMenu(I18NSupport.getString("menu_open"));
mnu2.add(openQueryAction);
mnu2.add(openReportAction);
mnu2.add(openChartAction);
mnu2.addSeparator();
backAction.setEnabled(false);
mnu2.add(backAction);
mnu.add(mnu2);
JMenu mnu3 = new JMenu(I18NSupport.getString("menu_import"));
if (!DefaultDataSourceManager.memoryDataSources()) {
mnu3.add(importDataSourceAction);
}
mnu3.add(importQueryAction);
mnu3.add(importReportAction);
mnu3.add(importChartAction);
mnu.add(mnu3);
JMenu mnu4 = new JMenu(I18NSupport.getString("menu_export"));
if (!DefaultDataSourceManager.memoryDataSources()) {
mnu4.add(exportDataSourceAction);
mnu.add(mnu4);
}
mnu.addSeparator();
menuFavorites = new JMenu(I18NSupport.getString("menu_favorites"));
recreateMenuFavorites();
mnu.add(menuFavorites);
mnu.addSeparator();
mnu.add(saveAction);
mnu.add(saveAsAction);
mnu.addSeparator();
mnu.add(exitAction);
newQueryActionUpdate();
return mnu;
}
public void recreateMenuFavorites() {
menuFavorites.removeAll();
XStream xstream = FavoritesUtil.createXStream();
List<FavoriteEntry> favorites = FavoritesUtil.loadFavorites(xstream);
for (FavoriteEntry fav : favorites) {
menuFavorites.add(new OpenFavoriteAction(fav));
}
menuFavorites.addSeparator();
menuFavorites.add(new ManageFavoritesAction());
}
private JMenu createViewsMenu() {
JMenu perspectiveMenu = new JMenu(I18NSupport.getString("menu.perpective"));
perspectiveMenu.setMnemonic(ShortcutsUtil.getMnemonic("menu.perspective.mnemonic", new Integer('P')));
JMenuItem item = new JMenuItem(new OpenQueryPerspectiveAction());
perspectiveMenu.add(item);
item = new JMenuItem(openLayoutPersAction);
enableLayoutPerspective(false);
perspectiveMenu.add(item);
return perspectiveMenu;
}
private JMenu createHelpMenu() {
JMenu mnu = new JMenu(I18NSupport.getString("menu.help"));
mnu.setMnemonic(ShortcutsUtil.getMnemonic("menu.help.mnemonic", new Integer('H')));
mnu.add(new CheckForUpdateAction());
mnu.addSeparator();
mnu.add(new HelpMovieAction());
mnu.add(new HelpManualAction());
mnu.add(new HelpStartupAction());
mnu.addSeparator();
mnu.add(new SurveyAction());
mnu.add(new AboutAction());
return mnu;
}
private JMenu createToolsMenu() {
JMenu mnu = new JMenu(I18NSupport.getString("menu.tools"));
mnu.setMnemonic(ShortcutsUtil.getMnemonic("menu.tools.mnemonic", new Integer('T')));
mnu.add(wizardAction);
mnu.add(publishAction);
mnu.add(openFromServerAction);
mnu.add(viewReportSqlAction);
mnu.addSeparator();
JMenu mnu2 = new JMenu(I18NSupport.getString("menu_templates"));
mnu2.add(new CreateTemplateAction());
mnu2.add(new ModifyTemplateAction());
mnu2.add(applyTemplateAction);
mnu2.add(extractTemplateAction);
mnu.add(mnu2);
mnu.addSeparator();
mnu.add(backupAction);
mnu.add(restoreAction);
mnu.add(importAction);
mnu.add(settingsAction);
mnu.addSeparator();
mnu.add(new RestoreDockingAction());
mnu.addSeparator();
mnu.add(manageI18nAction);
mnu.add(createLanguageMenu());
return mnu;
}
private JMenu createLanguageMenu() {
JMenu mnu = new JMenu(I18NSupport.getString("language"));
mnu.setMnemonic(ShortcutsUtil.getMnemonic("menu.language.mnemonic", new Integer('L')));
for (Language lang : LanguageAction.getLanguages()) {
mnu.add(new LanguageAction(lang.getLanguage()));
}
return mnu;
}
public void enableBackAction(boolean enable) {
backAction.setEnabled(enable);
}
}