Package net.sourceforge.ganttproject.gui.options

Source Code of net.sourceforge.ganttproject.gui.options.SettingsDialog

/***************************************************************************
SettingsDialog.java   
-----------------------------------------------------
begin                : jun 2004
copyright            : (C) 2004 by Thomas Alexandre
email                : alexthomas(at)ganttproject.org
***************************************************************************/

/***************************************************************************
*                                                                         *
*   This program is free software; you can redistribute it and/or modify  *
*   it under the terms of the GNU General Public License as published by  *
*   the Free Software Foundation; either version 2 of the License, or     *
*   (at your option) any later version.                                   *
*                                                                         *
***************************************************************************/

package net.sourceforge.ganttproject.gui.options;

import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;

import net.sourceforge.ganttproject.GanttProject;
import net.sourceforge.ganttproject.Mediator;
import net.sourceforge.ganttproject.gui.GeneralDialog;
import net.sourceforge.ganttproject.gui.options.model.OptionPageProvider;
import net.sourceforge.ganttproject.language.GanttLanguage;

/**
* @author athomas Dialog to edit the preferences for the application.
*/
public class SettingsDialog extends GeneralDialog implements ActionListener

{

    boolean reinit = false; // If restart the initialization

    JButton restoreButton = null;

    /** Constructor. */
    public SettingsDialog(GanttProject parent) {
        super(parent, GanttProject.correctLabel(GanttLanguage.getInstance()
                .getText("settings")), true, new WelcomeSettingsPanel(parent));

       
        restoreButton = new JButton(language.getText("restoreDefaults"));
        restoreButton.setName("restore");
        restoreButton.addActionListener(this);
        if (southPanel != null) {
            southPanel.add(restoreButton);
        }
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                super.windowClosing(e);
                if (settingPanel!=null) {
                    settingPanel.rollback();
                }
            }
           
        });
    }

    /** Construct the menu settings. */
    public void constructSections() {
        addPagesFromProviders();
        DefaultMutableTreeNode projectNode = addObject(GanttProject
                .correctLabel(language.getText("project")), null);
        DefaultMutableTreeNode generalNode = addObject(language
                .getText("general"), null);
        DefaultMutableTreeNode exportNode = addObject(GanttProject
                .correctLabel(language.getText("export")), null);
        DefaultMutableTreeNode roleNode = addObject(language
                .getText("resourceRole"), null);

        // general section
        addObject(language.getText("parameters"), generalNode);
        addObject(language.getText("looknfeel"), generalNode);
        addObject(language.getText("languages"), generalNode);
        //addObject(language.getText("colors"), generalNode);

        // Export section
        // addObject ("html", exportNode);
        addObject("csv", exportNode);

        // Just to see the first level of the tree
        treeSections.scrollPathToVisible(new TreePath(projectNode.getPath()));
    }

    private void addPagesFromProviders() {
        Object[] extensions = Mediator.getPluginManager().getExtensions("net.sourceforge.ganttproject.OptionPageProvider", OptionPageProvider.class);
        for (int i=0; i<extensions.length; i++) {
            OptionPageProvider nextProvider = (OptionPageProvider) extensions[i];
            addObject(nextProvider, null);
        }
    }

    /** Callback for the tree selection event. */
    public void valueChanged(TreeSelectionEvent e) {
        if (reinit)
            return;
        DefaultMutableTreeNode node = (DefaultMutableTreeNode) (e.getPath()
                .getLastPathComponent());
        boolean bHasChange = settingPanel.applyChanges(true);

        // construct the sections
        if ((settingPanel instanceof LanguageSettingsPanel) && bHasChange) {
            reinit = true;
            rootNode.removeAllChildren();
            treeModel.setRoot(rootNode);
            treeModel.reload();
            constructSections();
            reinit = false;
        }

        // - remove the settingPanel
        mainPanel2.remove(0);
       
        Box vb = Box.createVerticalBox();       
        Object userObject = node.getUserObject();
        if (userObject instanceof OptionPageProvider) {
            settingPanel = new OptionPageProviderPanel((OptionPageProvider) userObject, getProject(), getUIFacade());
        }
        else {

        // - ask the settingPanel if parameters are changed

        // - Create the new panel
            String sNode = (String) (node.getUserObject());
            if (sNode.equals(language.getText("languages")))
                settingPanel = new LanguageSettingsPanel(appli);
   
            else if (sNode.equals(GanttProject.correctLabel(language
                    .getText("project"))))
                settingPanel = new ProjectSettingsPanel((Frame) getOwner(),
                        getProject());
   
            else if (sNode.equals(GanttProject.correctLabel(language
                    .getText("parameters"))))
                settingPanel = new ParametersSettingsPanel(appli);
   
            else if (sNode.equals(GanttProject.correctLabel(language
                    .getText("resourceRole"))))
                settingPanel = new RolesSettingsPanel(appli);
   
            else if (sNode.equals(language.getText("looknfeel")))
                settingPanel = new LnFSettingsPanel(appli);
   
            else if (sNode.equals(GanttProject.correctLabel(language
                    .getText("export"))))
                settingPanel = new ExportSettingsPanel(appli);
   
            else if (sNode.equals("csv"))
                settingPanel = new CSVSettingsPanel(appli);
   
            else
                settingPanel = new WelcomeSettingsPanel(appli);
            vb.add(new TopPanel("  " + settingPanel.getTitle(), settingPanel
                    .getComment()));
        }   
        // - initialize the panel
        settingPanel.initialize();
        vb.add(settingPanel.getComponent());

        // - add the settingPanel into the main Panel
        mainPanel2.add(vb, 0);
        mainPanel2.repaint();
        mainPanel2.validate(); // valide the changes
    }

    public void actionPerformed(ActionEvent e) {
        super.actionPerformed(e);
        if (e.getSource() == restoreButton) {
            appli.restoreOptions();
            // refresh the current panel
            settingPanel.rollback();
        }
    }
   
   

}
TOP

Related Classes of net.sourceforge.ganttproject.gui.options.SettingsDialog

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.