001 /******************************************************************************
002 * Copyright (C) MActor Developers. All rights reserved. *
003 * ---------------------------------------------------------------------------*
004 * This file is part of MActor. *
005 * *
006 * MActor is free software; you can redistribute it and/or modify *
007 * it under the terms of the GNU General Public License as published by *
008 * the Free Software Foundation; either version 2 of the License, or *
009 * (at your option) any later version. *
010 * *
011 * MActor is distributed in the hope that it will be useful, *
012 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
014 * GNU General Public License for more details. *
015 * *
016 * You should have received a copy of the GNU General Public License *
017 * along with MActor; if not, write to the Free Software *
018 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *
019 ******************************************************************************/
020 package org.mactor.ui.gui.project;
021
022 import java.awt.BorderLayout;
023 import java.awt.FlowLayout;
024 import java.awt.event.ActionEvent;
025 import java.io.File;
026 import java.io.IOException;
027
028 import javax.swing.AbstractAction;
029 import javax.swing.BorderFactory;
030 import javax.swing.JButton;
031 import javax.swing.JDialog;
032 import javax.swing.JLabel;
033 import javax.swing.JPanel;
034
035 import org.mactor.framework.MactorException;
036 import org.mactor.framework.spec.ProjectContext;
037 import org.mactor.ui.gui.AsyncAction;
038 import org.mactor.ui.gui.project.editors.FileNodeComboBox;
039 import org.mactor.ui.gui.project.editors.ProjectInternalDirSelector;
040 import org.mactor.ui.gui.project.editors.SimpleFormPanel;
041
042 public class ProjectSettingsDlg extends JDialog {
043 ProjectSettingsPanel pp;
044 JButton okButton = new JButton(new AsyncAction("Ok", false, new AsyncAction.AsyncRunnable() {
045 public void run() throws MactorException {
046 pp.saveSettings();
047 dispose();
048 }
049 }));
050 JButton cancelButton = new JButton(new AbstractAction("Cancel") {
051 public void actionPerformed(ActionEvent arg0) {
052 dispose();
053 };
054 });
055 public ProjectSettingsDlg(ProjectController projectController) throws IOException {
056 super(projectController.getControllerFrame());
057 setModal(true);
058 setLayout(new BorderLayout());
059 setTitle("Project Settings");
060 this.pp = new ProjectSettingsPanel(projectController);
061 add(pp, BorderLayout.CENTER);
062 JPanel buttonPanel = new JPanel(new FlowLayout());
063 buttonPanel.add(okButton);
064 buttonPanel.add(cancelButton);
065 add(buttonPanel, BorderLayout.SOUTH);
066 pack();
067 setResizable(false);
068 }
069 static class ProjectSettingsPanel extends JPanel {
070 File configDir;
071 ProjectInternalDirSelector configDirSel = new ProjectInternalDirSelector();
072 FileNodeComboBox gcList = new FileNodeComboBox(ProjectNodeType.G_GLOBAL_CONFIG);
073 FileNodeComboBox mbList = new FileNodeComboBox(ProjectNodeType.MBC_MESSAGE_BROKERS);
074 private boolean settingChanged = false;
075 ProjectController projectController;
076 public ProjectSettingsPanel(ProjectController projectController) {
077 super(new BorderLayout());
078 setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
079 this.projectController = projectController;
080 SimpleFormPanel form = new SimpleFormPanel();
081 form.add(new JLabel("Project Config Directory:"));
082 form.add(configDirSel);
083 form.add(new JLabel("Current Global Config:"));
084 form.add(gcList);
085 form.add(new JLabel("Current Message Broker Config:"));
086 form.add(mbList);
087 add(form, BorderLayout.WEST);
088 configDir = ProjectContext.getGlobalInstance().getProjectConfigDir();
089 loadSettings();
090 }
091 public void loadSettings() {
092 gcList.setConfig(projectController.getProjectModel().getRoot());
093 gcList.setSelectedName(ProjectContext.getGlobalInstance().getGlobalConfigName());
094 mbList.setConfig(projectController.getProjectModel().getRoot());
095 mbList.setSelectedName(ProjectContext.getGlobalInstance().getMessageBrokerConfigName());
096 configDirSel.setPath(ProjectContext.getGlobalInstance().getProjectConfigDir());
097 }
098 public void saveSettings() throws MactorException {
099 ProjectContext.getGlobalInstance().setProjectConfigDir(ProjectContext.getGlobalInstance().getAbsolutePath(configDirSel.getPath()));
100 ProjectContext.getGlobalInstance().setMessageBrokerConfigName(mbList.getSelectedName());
101 ProjectContext.getGlobalInstance().setGlobalConfigName(gcList.getSelectedName());
102 // if
103 // (!configDir.equals(ProjectContext.getGlobalInstance().getProjectConfigDir()))
104 projectController.reloadProject();
105 }
106 }
107 }