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.settings;
015:
016: import org.jetbrains.annotations.NotNull;
017: import org.pentaho.reportdesigner.crm.report.IconLoader;
018: import org.pentaho.reportdesigner.crm.report.util.JOptionPaneHelper;
019: import org.pentaho.reportdesigner.lib.client.components.Category;
020: import org.pentaho.reportdesigner.lib.client.components.CenterPanelDialog;
021: import org.pentaho.reportdesigner.lib.client.components.tabbedpane.ButtonTabbedPane;
022: import org.pentaho.reportdesigner.lib.client.i18n.TranslationManager;
023: import org.pentaho.reportdesigner.lib.client.util.GUIUtils;
024: import org.pentaho.reportdesigner.lib.client.util.WindowUtils;
025:
026: import javax.swing.*;
027: import java.awt.*;
028: import java.awt.event.ActionEvent;
029: import java.awt.event.ActionListener;
030: import java.util.ArrayList;
031: import java.util.List;
032:
033: /**
034: * User: Martin
035: * Date: 01.03.2006
036: * Time: 18:14:55
037: */
038: public class SettingsDialog extends CenterPanelDialog {
039: @NotNull
040: private List<Category<JPanel>> categories;
041: @NotNull
042: private List<SettingsPanel> settingsPanels;
043:
044: @NotNull
045: private ButtonTabbedPane listTabbedPane;
046:
047: @NotNull
048: private JButton applyButton;
049: @NotNull
050: private JButton resetButton;
051: @NotNull
052: private JButton cancelButton;
053:
054: public SettingsDialog(@NotNull
055: Frame owner) {
056: super (owner, TranslationManager.getInstance().getTranslation(
057: "R", "SettingsDialog.Title"),
058: ModalityType.DOCUMENT_MODAL);
059: init();
060: }
061:
062: public SettingsDialog(@NotNull
063: Dialog owner) {
064: super (owner, TranslationManager.getInstance().getTranslation(
065: "R", "SettingsDialog.Title"),
066: ModalityType.DOCUMENT_MODAL);
067: init();
068: }
069:
070: private void init() {
071: categories = new ArrayList<Category<JPanel>>();
072: settingsPanels = new ArrayList<SettingsPanel>();
073:
074: LanguageSettingsPanel languageSettingsPanel = new LanguageSettingsPanel();
075: Category<JPanel> languageCategory = new Category<JPanel>(
076: "languageSettings", IconLoader.getInstance()
077: .getLanguageIcon32(), IconLoader.getInstance()
078: .getLanguageIcon32(), TranslationManager
079: .getInstance().getTranslation("R",
080: "SettingsDialog.Language"),
081: languageSettingsPanel);
082: categories.add(languageCategory);
083: settingsPanels.add(languageSettingsPanel);
084:
085: ProxySettingsPanel proxySettingsPanel = new ProxySettingsPanel();
086: Category<JPanel> proxyCategory = new Category<JPanel>(
087: "proxySettings", IconLoader.getInstance()
088: .getNetworkIcon32(), IconLoader.getInstance()
089: .getNetworkIcon32(), TranslationManager
090: .getInstance().getTranslation("R",
091: "SettingsDialog.Proxy"),
092: proxySettingsPanel);
093: categories.add(proxyCategory);
094: settingsPanels.add(proxySettingsPanel);
095:
096: BrowserSettingsPanel browserSettingsPanel = new BrowserSettingsPanel();
097: Category<JPanel> browserCategory = new Category<JPanel>(
098: "browserSettings", IconLoader.getInstance()
099: .getBrowserIcon32(), IconLoader.getInstance()
100: .getBrowserIcon32(), TranslationManager
101: .getInstance().getTranslation("R",
102: "SettingsDialog.Browser"),
103: browserSettingsPanel);
104: categories.add(browserCategory);
105: settingsPanels.add(browserSettingsPanel);
106:
107: ExternalToolSettingsPanel externalToolSettingsPanel = new ExternalToolSettingsPanel();
108: Category<JPanel> externalToolCategory = new Category<JPanel>(
109: "externalTool", IconLoader.getInstance()
110: .getExternalToolsIcon32(), IconLoader
111: .getInstance().getExternalToolsIcon32(),
112: TranslationManager.getInstance().getTranslation("R",
113: "SettingsDialog.ExternalTool"),
114: externalToolSettingsPanel);
115: categories.add(externalToolCategory);
116: settingsPanels.add(externalToolSettingsPanel);
117:
118: listTabbedPane = new ButtonTabbedPane(true);
119: for (Category<JPanel> category1 : categories) {
120: listTabbedPane.addCard(category1);
121: }
122:
123: listTabbedPane.setSelectedIndex(0);
124:
125: applyButton = new JButton(TranslationManager.getInstance()
126: .getTranslation("R", "Button.apply"));
127: resetButton = new JButton(TranslationManager.getInstance()
128: .getTranslation("R", "Button.reset"));
129: cancelButton = new JButton(TranslationManager.getInstance()
130: .getTranslation("R", "Button.cancel"));
131:
132: applyButton.addActionListener(new ActionListener() {
133: public void actionPerformed(@NotNull
134: ActionEvent e) {
135: for (SettingsPanel settingsPanel : settingsPanels) {
136: ValidationResult validationResult = settingsPanel
137: .getValidationResult();
138: ArrayList<ValidationMessage> validationMessages = validationResult
139: .getValidationMessages(new ValidationMessage.Severity[] {
140: ValidationMessage.Severity.WARN,
141: ValidationMessage.Severity.ERROR });
142:
143: if (!validationMessages.isEmpty()) {
144: StringBuilder messages = new StringBuilder(100);
145: for (ValidationMessage validationMessage : validationMessages) {
146: if (validationMessage.getText() != null) {
147: messages.append(validationMessage
148: .getText());
149: } else {
150: messages.append(TranslationManager
151: .getInstance().getTranslation(
152: "R",
153: validationMessage
154: .getKey()));
155: }
156: messages.append('\n');
157: }
158: JOptionPaneHelper.showMessageDialog(
159: SettingsDialog.this , messages,
160: TranslationManager.getInstance()
161: .getTranslation("R",
162: "Error.Title"),
163: JOptionPaneHelper.ERROR_MESSAGE,
164: ModalityType.DOCUMENT_MODAL);
165: return;
166: }
167: }
168:
169: for (SettingsPanel settingsPanel : settingsPanels) {
170: settingsPanel.apply();
171: }
172:
173: dispose();
174: }
175: });
176:
177: resetButton.addActionListener(new ActionListener() {
178: public void actionPerformed(@NotNull
179: ActionEvent e) {
180: for (SettingsPanel settingsPanel : settingsPanels) {
181: settingsPanel.reset();
182: }
183: }
184: });
185:
186: cancelButton.addActionListener(new ActionListener() {
187: public void actionPerformed(@NotNull
188: ActionEvent e) {
189: for (SettingsPanel settingsPanel : settingsPanels) {
190: settingsPanel.reset();
191: }
192:
193: dispose();
194: }
195: });
196:
197: JPanel centerPanel = new JPanel(new BorderLayout());
198: centerPanel.add(listTabbedPane, BorderLayout.CENTER);
199:
200: setCenterPanel(centerPanel);
201:
202: setButtons(applyButton, cancelButton, resetButton,
203: cancelButton, null, applyButton);
204:
205: pack();
206: GUIUtils.ensureMinimumDialogSize(this , 500, 400);
207: WindowUtils.setLocationRelativeTo(this, getParent());
208: }
209:
210: }
|