/*
 * The contents of this file are subject to the Mozilla Public License
 * Version 1.1 (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.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
 * the specific language governing rights and limitations under the License.
 *
 * The Original Code is Protege-2000.
 *
 * The Initial Developer of the Original Code is Stanford University. Portions
 * created by Stanford University are Copyright (C) 2007.  All Rights Reserved.
 *
 * Protege was developed by Stanford Medical Informatics
 * (http://www.smi.stanford.edu) at the Stanford University School of Medicine
 * with support from the National Library of Medicine, the National Science
 * Foundation, and the Defense Advanced Research Projects Agency.  Current
 * information about Protege can be obtained at http://protege.stanford.edu.
 *
 */

package edu.stanford.smi.protege.action;

import java.awt.event.*;
import java.net.*;
import java.util.*;

import javax.swing.*;

import edu.stanford.smi.protege.model.*;
import edu.stanford.smi.protege.resource.*;
import edu.stanford.smi.protege.util.*;

/**
 * Action to prompt the user for a new project to be included and then include it.
 *
 * @author    Ray Fergerson <fergerson@smi.stanford.edu>
 */
public class IncludeProject extends LocalProjectAction {

    public IncludeProject() {
        super(ResourceKey.PROJECT_INCLUDE);
    }

    public void actionPerformed(ActionEvent event) {
        JComponent parent = getProjectManager().getMainPanel();
        Project project = getProjectManager().getCurrentProject();
        if (project != null) {
            JFileChooser chooser = ComponentFactory.createFileChooser("Included Project", "pprj");
            int rval = chooser.showOpenDialog(parent);
            switch (rval) {
                case JFileChooser.ERROR_OPTION:
                    // Get this on 'close"
                    break;
                case JFileChooser.CANCEL_OPTION:
                    break;
                case JFileChooser.APPROVE_OPTION:
                    Collection includedProjectURIs = new ArrayList(project.getDirectIncludedProjectURIs());
                    URI newProject = chooser.getSelectedFile().toURI();
                    String currentProjectFileName = project.getName() + ".pprj";
                    if (newProject.equals(currentProjectFileName)) {
                        String text = LocalizedText
                                .getText(ResourceKey.INCLUDE_PROJECT_FAILED_DIALOG_RECURSIVE_INCLUDE_TEXT);
                        ModalDialog.showMessageDialog(parent, text);
                    } else if (includedProjectURIs.contains(newProject)) {
                        String text = LocalizedText
                                .getText(ResourceKey.INCLUDE_PROJECT_FILED_DIALOG_ALREADY_INCLUDED_TEXT);
                        ModalDialog.showMessageDialog(parent, text);
                    } else {
                        includedProjectURIs.add(newProject);
                        getProjectManager().changeIncludedProjectURIsRequest(includedProjectURIs);
                    }
                    break;
                default:
                    Log.getLogger().warning("Bad value: " + rval);
                    break;
            }
        }
    }
}
