/***************************************************************************
               ProjectSettingsPanel.java 
------------------------------------------
begin                : 27 juin 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.BorderLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.Box;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

import net.sourceforge.ganttproject.GanttProject;
import net.sourceforge.ganttproject.IGanttProject;
import net.sourceforge.ganttproject.gui.GanttDialogInfo;
import net.sourceforge.ganttproject.gui.TestGanttRolloverButton;
import net.sourceforge.ganttproject.language.GanttLanguage;
import net.sourceforge.ganttproject.util.BrowserControl;

/**
 * @author athomas
 *
 * panel to edit the project properties
 */
public class ProjectSettingsPanel extends GeneralOptionPanel {

	//JTextField tfFile;	
	JTextField tfName;
	JTextField tfOrganization;
	JTextField tfWebLink;
	JTextArea taDescr;
	private final IGanttProject myProject;
	/** Default constructor. */
	public ProjectSettingsPanel(Frame owner, IGanttProject project)
	{
		super(GanttProject.correctLabel(GanttLanguage.getInstance().getText("project")),
			  GanttLanguage.getInstance().getText("settingsProject"),owner);
		
        myProject = project;
		Box vbproject = Box.createVerticalBox();

		/*JPanel filePanel = new JPanel(new BorderLayout());
		filePanel.add(new JLabel(language.getText("file")), BorderLayout.WEST);
		vbproject.add(filePanel);
		vbproject.add(tfFile = new JTextField());
		tfFile.setEditable(false);
		vbproject.add(new JPanel());*/
		
		JPanel namePanel = new JPanel(new BorderLayout());
		namePanel.add(new JLabel(language.getText("name")), BorderLayout.WEST);
		vbproject.add(namePanel);
		vbproject.add(tfName = new JTextField());
		vbproject.add(new JPanel());
		
		JPanel orgaPanel = new JPanel(new BorderLayout());
		orgaPanel.add(new JLabel(language.getText("organization")), BorderLayout.WEST);
		vbproject.add(orgaPanel);
		vbproject.add(tfOrganization = new JTextField());
		vbproject.add(new JPanel());
		
		tfWebLink = new JTextField();
		JButton bWeb = new TestGanttRolloverButton(new ImageIcon(getClass().getResource("/icons/web_16.gif")));
		bWeb.setToolTipText(GanttProject.getToolTip(language.getText("openWebLink")));
		bWeb.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				//link to open the web link
				if (!BrowserControl.displayURL(tfWebLink.getText())) {
					GanttDialogInfo gdi = new GanttDialogInfo(null,
							GanttDialogInfo.ERROR, GanttDialogInfo.YES_OPTION, 
							language.getText("msg4"), 
							language.getText("error"));							
					gdi.show();
				}
			}
		});
		
		JPanel webPanel = new JPanel(new BorderLayout());
		webPanel.add(new JLabel(language.getText("webLink")), BorderLayout.WEST);
		webPanel.add(bWeb, BorderLayout.EAST);
		vbproject.add(webPanel);
		vbproject.add(tfWebLink);
		vbproject.add(new JPanel());
		
		JPanel descrPanel = new JPanel(new BorderLayout());
		descrPanel.add(new JLabel(language.getText("shortDescription")), BorderLayout.WEST);
		vbproject.add(descrPanel);
		taDescr = new JTextArea(12,25);
		taDescr.setLineWrap(true);
		taDescr.setWrapStyleWord(true);
		JScrollPane scpArea = new JScrollPane(taDescr);
		vbproject.add(scpArea);
				
		JPanel projectPanel = new JPanel(new BorderLayout());
		projectPanel.add(vbproject,BorderLayout.NORTH);
		vb.add(projectPanel);

		applyComponentOrientation(language.getComponentOrientation());
	}
	
	/** This method check if the value has changed, and assk for commit changes. */
	public boolean applyChanges(boolean askForApply)
	{
		if(myProject.getProjectName().equals(tfName.getText()) && 
                myProject.getOrganization().equals(tfOrganization.getText()) &&
                myProject.getWebLink().equals(tfWebLink.getText()) && 
                myProject.getDescription().equals(taDescr.getText()))
		{
			bHasChange = false;
			//no changes
		}
		else
		{
			bHasChange = true;
			//apply changes
			if(!askForApply || (askForApply && askForApplyChanges()))
			{
                myProject.setProjectName(getProjectName());
                myProject.setDescription(getProjectDescription());
                myProject.setOrganization(getProjectOrganization());
                myProject.setWebLink(getWebLink());
			}
		}
		return bHasChange;
	}
	
	/** Initialize the component. */
	public void initialize()
	{
		/*if(appli.projectDocument!=null) {
			String filename = appli.projectDocument.getFilePath();
			if(appli.askForSave)
				filename+="*";
			tfFile.setText(filename);
		}*/
		//tfFile.setText("see ProjectSettingsPanel line 149 ??");
		
		
		
		tfName.setText(myProject.getProjectName());
		tfOrganization.setText(myProject.getOrganization());
		tfWebLink.setText(myProject.getWebLink());
		taDescr.setText(myProject.getDescription());
	}
	
	/** Return the selected project name */
	public String getProjectName() {
		return tfName.getText();
	}

	/** Return the ogranisation */
	public String getProjectOrganization() {
		return tfOrganization.getText();
	}
	
	/** Return the web link */
	public String getWebLink() {
		return tfWebLink.getText();
	}

	/** Return the project description */
	public String getProjectDescription() {
		return taDescr.getText();
	}
}
