001: /*
002: * Copyright 2006-2007 Pentaho Corporation. All rights reserved.
003: * This software was developed by Pentaho Corporation and is provided under the terms
004: * of the Mozilla Public License, Version 1.1, or any later version. You may not use
005: * this file except in compliance with the license. If you need a copy of the license,
006: * please go to http://www.mozilla.org/MPL/MPL-1.1.txt.
007: *
008: * Software distributed under the Mozilla Public License is distributed on an "AS IS"
009: * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. Please refer to
010: * the license for the specific language governing your rights and limitations.
011: *
012: * Additional Contributor(s): Martin Schmid gridvision engineering GmbH
013: */
014: package org.pentaho.reportdesigner.crm.report.commands;
015:
016: import org.jetbrains.annotations.NotNull;
017: import org.pentaho.reportdesigner.crm.report.ReportDesignerWindows;
018: import org.pentaho.reportdesigner.crm.report.ReportDialog;
019: import org.pentaho.reportdesigner.crm.report.util.JOptionPaneHelper;
020: import org.pentaho.reportdesigner.lib.client.commands.AbstractCommand;
021: import org.pentaho.reportdesigner.lib.client.commands.CommandEvent;
022: import org.pentaho.reportdesigner.lib.client.commands.KeyStrokeUtil;
023: import org.pentaho.reportdesigner.lib.client.components.CenterPanelDialog;
024: import org.pentaho.reportdesigner.lib.client.i18n.TranslationManager;
025:
026: /**
027: * User: Martin
028: * Date: 25.01.2006
029: * Time: 11:26:24
030: */
031: public class CloseReportCommand extends AbstractCommand {
032: public CloseReportCommand() {
033: super ("CloseCommand");
034: getTemplatePresentation().setText(
035: TranslationManager.getInstance().getTranslation("R",
036: "CloseCommand.Text"));
037: getTemplatePresentation().setDescription(
038: TranslationManager.getInstance().getTranslation("R",
039: "CloseCommand.Description"));
040: getTemplatePresentation().setMnemonic(
041: TranslationManager.getInstance().getMnemonic("R",
042: "CloseCommand.Text"));
043: getTemplatePresentation().setDisplayedMnemonicIndex(
044: TranslationManager.getInstance()
045: .getDisplayedMnemonicIndex("R",
046: "CloseCommand.Text"));
047:
048: getTemplatePresentation().setAccelerator(
049: KeyStrokeUtil.getKeyStroke(TranslationManager
050: .getInstance().getTranslation("R",
051: "CloseCommand.Accelerator")));
052: }
053:
054: public void update(@NotNull
055: CommandEvent event) {
056: ReportDialog reportDialog = (ReportDialog) event
057: .getPresentation().getCommandApplicationRoot();
058: event.getPresentation().setEnabled(
059: reportDialog.getReport() != null);
060: }
061:
062: public void execute(@NotNull
063: CommandEvent event) {
064: ReportDialog reportDialog = (ReportDialog) event
065: .getPresentation().getCommandApplicationRoot();
066: close(reportDialog, false);
067: }
068:
069: public static boolean close(@NotNull
070: ReportDialog reportDialog, boolean forceDispose) {
071: //noinspection ConstantConditions
072: if (reportDialog == null) {
073: throw new IllegalArgumentException(
074: "reportDialog must not be null");
075: }
076:
077: boolean lastOpenedWindow = ReportDesignerWindows.getInstance()
078: .getReportDialogs().size() == 1;
079:
080: if (reportDialog.isModified()) {
081: reportDialog.toFront();
082:
083: int option = JOptionPaneHelper.showConfirmDialog(
084: reportDialog,
085: TranslationManager.getInstance().getTranslation(
086: "R", "ReportModifiedCloseWarning.Message"),
087: TranslationManager.getInstance().getTranslation(
088: "R", "ReportModifiedCloseWarning.Title"),
089: JOptionPaneHelper.YES_NO_CANCEL_OPTION,
090: JOptionPaneHelper.WARNING_MESSAGE,
091: CenterPanelDialog.ModalityType.APPLICATION_MODAL);
092: if (option == JOptionPaneHelper.YES_OPTION) {
093: boolean saved = SaveReportCommand.save(false,
094: reportDialog, true) != null;
095: if (saved) {
096: if (forceDispose || !lastOpenedWindow) {
097: reportDialog.getWorkspaceSettings()
098: .storeFrameBounds(reportDialog,
099: "ReportDialog");
100: reportDialog.dispose();
101: ReportDesignerWindows.getInstance()
102: .unregisterReportDialog(reportDialog);
103: return true;
104: } else {
105: reportDialog.setReport(null);
106: return false;
107: }
108: }
109: } else if (option == JOptionPaneHelper.NO_OPTION) {
110: if (forceDispose || !lastOpenedWindow) {
111: reportDialog.getWorkspaceSettings()
112: .storeFrameBounds(reportDialog,
113: "ReportDialog");
114: reportDialog.dispose();
115: ReportDesignerWindows.getInstance()
116: .unregisterReportDialog(reportDialog);
117: return true;
118: } else {
119: reportDialog.setReport(null);
120: return false;
121: }
122: } else {
123: return false;
124: }
125: }
126:
127: if (forceDispose || !lastOpenedWindow) {
128: reportDialog.getWorkspaceSettings().storeFrameBounds(
129: reportDialog, "ReportDialog");
130: reportDialog.dispose();
131: ReportDesignerWindows.getInstance().unregisterReportDialog(
132: reportDialog);
133: return true;
134: } else {
135: reportDialog.setReport(null);
136: return false;
137: }
138: }
139: }
|