/***************************************************************************
               AboutAuthorPanel.java 
------------------------------------------
begin                : 29 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.about;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.util.Vector;

import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;

import net.sourceforge.ganttproject.GanttProject;
import net.sourceforge.ganttproject.gui.options.GeneralOptionPanel;
import net.sourceforge.ganttproject.language.GanttLanguage;

/**
 * @author athomas
 *
 * Form that show informations about authors
 */
public class AboutAuthorPanel extends GeneralOptionPanel {

	/** Constructor. */
	public AboutAuthorPanel(GanttProject parent)
	{
		super(GanttLanguage.getInstance().getText("authors"),
				  GanttLanguage.getInstance().getText("settingsAuthors"),
				  parent);
		
		JTable jTableAuthors = new JTable();
		AuthorsFieldTableModel modelauthors = new AuthorsFieldTableModel();
		
		jTableAuthors.setModel(modelauthors);
	    modelauthors.addField(new AuthorsInfo("THOMAS Alexandre","alexthomas@ganttproject.org"));
        modelauthors.addField(new AuthorsInfo("BARASHEV Dmitry","dmitry.barashev@borland.com"));
        modelauthors.addField(new AuthorsInfo("",""));
        modelauthors.addField(new AuthorsInfo("AZURE Joe",""));
	    modelauthors.addField(new AuthorsInfo("BARMEIER Matthias","matthias.barmeier@sourcepark.de"));
	    modelauthors.addField(new AuthorsInfo("LU Cui","cuix1@yahoo.com"));
	    modelauthors.addField(new AuthorsInfo("SCHULZ Maik","post@maikschulz.de"));
	    modelauthors.addField(new AuthorsInfo("HAEUSLER Michael","michael@akatose.de"));
	    modelauthors.addField(new AuthorsInfo("LIPINSKI Pawel","pawel.lipinski@javart.com.pl"));		
	    modelauthors.addField(new AuthorsInfo("",""));
	    modelauthors.addField(new AuthorsInfo("ANDRESEN Roger","Roger@Andresen.com"));
	    modelauthors.addField(new AuthorsInfo("AUDRU C�dric","cedricaudru@yahoo.fr"));
	    modelauthors.addField(new AuthorsInfo("A S Hodel","hodelas@ieee.org"));
	    modelauthors.addField(new AuthorsInfo("BALAZS Major","BMajor@Graphisoft.hu"));
	    modelauthors.addField(new AuthorsInfo("BREZINA Marek","marek.brezina@seznam.cz"));
	    modelauthors.addField(new AuthorsInfo("BROKER Rick","rick_broker@yahoo.com"));
	    modelauthors.addField(new AuthorsInfo("CASTILHO Danilo","dncastilho@yahoo.com.br"));
	    modelauthors.addField(new AuthorsInfo("CHRISTENSEN Carsten","coc-kultur@aalborg.dk"));
	    modelauthors.addField(new AuthorsInfo("CROUNSE Brian","brian@crounse.name"));
	    modelauthors.addField(new AuthorsInfo("FERRAZ Nelson","nferraz@phperl.com"));
		modelauthors.addField(new AuthorsInfo("GLOEGL Michael","gloegl@fmi.uni-passau.de"));
	    modelauthors.addField(new AuthorsInfo("HERRMANN G.","herr@nike.eonet.ne.jp"));
	    modelauthors.addField(new AuthorsInfo("HURSEY John","joshh@cs.earlham.edu"));
	    modelauthors.addField(new AuthorsInfo("KARLGREN Jussi","jussi@sics.se"));
	    modelauthors.addField(new AuthorsInfo("KITSIK Ahti","ahti@smarthoster.com"));
	    modelauthors.addField(new AuthorsInfo("LIN Kirin","kirinlin@users.sourceforge.net"));
	    modelauthors.addField(new AuthorsInfo("L'KENFACK Etienne","etiennelk@hotmail.com"));
	    modelauthors.addField(new AuthorsInfo("MADSEN Jan","JM-kultur@aalborg.dk"));
	    modelauthors.addField(new AuthorsInfo("MARCH Stephen","steve@enerds.ca"));
	    modelauthors.addField(new AuthorsInfo("MIYATA Yasuhiro","yasuhiro.miyata@ulsystems.co.jp"));
	    modelauthors.addField(new AuthorsInfo("NATHANAEL Uwe","Uwe.Nathanael@t-online.de"));
	    modelauthors.addField(new AuthorsInfo("OGNESS John","john@ogness.net"));
	    modelauthors.addField(new AuthorsInfo("PAOLETTI Tomaso","tom@ipaoletti.net"));
	    modelauthors.addField(new AuthorsInfo("PLUSCHKE Andreas","homepage.plueschke@gmx.de"));
	    modelauthors.addField(new AuthorsInfo("RACINOWSKI Przemyslaw","p.racinowski@wp.pl"));
	    modelauthors.addField(new AuthorsInfo("REY Juan","juanrey@inicia.es"));
	    modelauthors.addField(new AuthorsInfo("SAHIN Cengiz","cengiz@sahinc.de"));
	    modelauthors.addField(new AuthorsInfo("SENIGAGLIESI Paolo","senigagliesi_inf@hotmail.com"));
	    modelauthors.addField(new AuthorsInfo("SHABTAI Yoav","yoavs@pmp-medical.com"));
	    modelauthors.addField(new AuthorsInfo("STAVRIDES Paul","pstav@adelie.net"));
	    modelauthors.addField(new AuthorsInfo("VAN DER WIEL Andre","a.vd.wiel@chello.nl"));
	    modelauthors.addField(new AuthorsInfo("VOCI Elio","elio.voci@gawab.com"));
	    modelauthors.addField(new AuthorsInfo("ZAVOLZHSKY Alexandr","zavolzhsky@mail.ru"));
		
		JPanel authorsPanel = new JPanel(new BorderLayout());
		authorsPanel.add(new JScrollPane(jTableAuthors), BorderLayout.CENTER);
		authorsPanel.setPreferredSize(new Dimension(400,350));
		vb.add(authorsPanel);

		applyComponentOrientation(language.getComponentOrientation());
	}
	
	/* (non-Javadoc)
	 * @see net.sourceforge.ganttproject.gui.options.GeneralOptionPanel#applyChanges(boolean)
	 */
	public boolean applyChanges(boolean askForApply) {
		return false;
	}

	/* (non-Javadoc)
	 * @see net.sourceforge.ganttproject.gui.options.GeneralOptionPanel#initialize()
	 */
	public void initialize() 
	{
		// nothing to change
	}

	
	class AuthorsInfo
	{
	  private String name;
	  private String mail;

	  public AuthorsInfo(String name, String mail)
	  {
	    this.name = name;
	    this.mail = mail;
	  }

	  public String getName()
	  {
	    return name;
	  }

	  public String getMail()
	  {
	    return mail;
	  }
	}
	class AuthorsFieldTableModel extends AbstractTableModel
	{
	 private GanttLanguage language = GanttLanguage.getInstance();
	  
	  final String[] columnNames = {language.getText("name"), language.getText("colMail")};
	  final Class[] columnClasses = {String.class, String.class};
	  Vector data = new Vector();

	  public void addField(AuthorsInfo w)
	  {
	    data.addElement(w);
	    fireTableRowsInserted(data.size() - 1, data.size() - 1);
	  }

	  public int getColumnCount()
	  {
	    return columnNames.length;
	  }

	  public int getRowCount()
	  {
	    return data.size();
	  }

	  public String getColumnName(int col)
	  {
	    return columnNames[col];
	  }

	  public Class getColumnClass(int c)
	  {
	    return columnClasses[c];
	  }

	  public Object getValueAt(int row, int col)
	  {
	  	AuthorsInfo info = (AuthorsInfo)data.elementAt(row);
	    if(col == 0)
	      return info.getName();
	    else if(col == 1)
	      return info.getMail();
	    else
	      return null;    
	  }

	  public boolean isCellEditable(int row, int col)
	  {
	    return col==1;
	  }
	 }
}
