/*
* File : RevisionEditPanel.java
* Created : 27-feb-2004 17:13
* By : fbusquets
*
* JClic - Authoring and playing system for educational activities
*
* Copyright (C) 2000 - 2005 Francesc Busquets & Departament
* d'Educacio de la Generalitat de Catalunya
*
* 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.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details (see the LICENSE file).
*/
package edu.xtec.jclic.project;
import edu.xtec.jclic.beans.TextListEditor;
import edu.xtec.util.Options;
import edu.xtec.util.StrUtils;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.swing.JComponent;
/**
*
* @author Francesc Busquets (fbusquets@xtec.cat)
* @version 13.10.29
*/
public class RevisionEditPanel extends javax.swing.JPanel {
Options options;
/** Creates new form AuthorEditPanel */
public RevisionEditPanel(Options options) {
this.options=options;
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
private void initComponents() {//GEN-BEGIN:initComponents
javax.swing.JLabel authorLb;
javax.swing.JLabel commentsLb;
javax.swing.JScrollPane commentsScroll;
javax.swing.JLabel dateLb;
javax.swing.JLabel descLb;
java.awt.GridBagConstraints gridBagConstraints;
dateLb = new javax.swing.JLabel();
dateText = new javax.swing.JTextField();
descLb = new javax.swing.JLabel();
descText = new javax.swing.JTextField();
authorLb = new javax.swing.JLabel();
authorListEditor = new TextListEditor(options){
protected Object editItem(Object currentValue, boolean newValue){
return editAuthor(currentValue, newValue);
}
};
commentsLb = new javax.swing.JLabel();
commentsScroll = new javax.swing.JScrollPane();
commentsText = new javax.swing.JTextArea();
setLayout(new java.awt.GridBagLayout());
dateLb.setLabelFor(dateText);
dateLb.setText(options.getMsg("edit_project_rev_date"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
add(dateLb, gridBagConstraints);
dateText.setToolTipText(options.getMsg("edit_project_rev_date_tooltip"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
add(dateText, gridBagConstraints);
descLb.setLabelFor(descText);
descLb.setText(options.getMsg("edit_project_rev_description"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
add(descLb, gridBagConstraints);
descText.setToolTipText(options.getMsg("edit_project_rev_description_tooltip"));
descText.setPreferredSize(new java.awt.Dimension(300, 21));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
add(descText, gridBagConstraints);
authorLb.setLabelFor(authorListEditor);
authorLb.setText(options.getMsg("edit_project_rev_authors"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHEAST;
add(authorLb, gridBagConstraints);
authorListEditor.setToolTipText(options.getMsg("edit_project_rev_authors_tooltip"));
authorListEditor.setPreferredSize(new java.awt.Dimension(400, 80));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
add(authorListEditor, gridBagConstraints);
commentsLb.setLabelFor(commentsText);
commentsLb.setText(options.getMsg("edit_project_rev_comments"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHEAST;
add(commentsLb, gridBagConstraints);
commentsScroll.setPreferredSize(new java.awt.Dimension(300, 60));
commentsText.setLineWrap(true);
commentsText.setToolTipText(options.getMsg("edit_project_rev_comments_tooltip"));
commentsText.setWrapStyleWord(true);
commentsScroll.setViewportView(commentsText);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
add(commentsScroll, gridBagConstraints);
}//GEN-END:initComponents
public void setRevision(Revision rev){
dateText.setText(options.getMessages().getShortDateStr(rev==null ? new Date() : rev.date));
descText.setText(rev!=null ? rev.description : "");
commentsText.setText(rev!=null ? rev.comments : "");
List<Object> v=new ArrayList<Object>();
if(rev!=null && rev.authors!=null){
//v.add(Arrays.asList(rev.authors));
for(Author a : rev.authors)
v.add(a);
}
authorListEditor.setListData(v);
}
public Revision getRevision(){
Revision rev=null;
Date date=options.getMessages().parseShortDate(dateText.getText());
String desc=StrUtils.nullableString(descText.getText().trim());
if(date==null){
options.getMessages().showAlert(this, "DATE_INCORRECT");
} else if(desc==null){
options.getMessages().showAlert(this, "edit_project_rev_err_nodesc");
} else{
rev=new Revision();
rev.date=date;
rev.description=desc;
rev.comments=StrUtils.nullableString(commentsText.getText().trim());
List<Object> v=authorListEditor.getListData();
rev.authors=(Author[])v.toArray(new Author[v.size()]);
}
return rev;
}
private AuthorEditPanel authorEditPanel;
private Object editAuthor(Object currentValue, boolean newValue){
Author result=null;
if(authorEditPanel==null)
authorEditPanel=new AuthorEditPanel(options);
if(newValue)
currentValue=null;
authorEditPanel.setAuthor((Author)currentValue);
if(options.getMessages().showInputDlg(
this, new String[] {"edit_project_author_info"}
, null, new JComponent[]{authorEditPanel}
, (newValue ? "edit_project_author_add" : "edit_project_author_edit"))){
result=authorEditPanel.getAuthor();
if(result.name.length()<1)
result=null;
}
return result;
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private edu.xtec.jclic.beans.TextListEditor authorListEditor;
private javax.swing.JTextArea commentsText;
private javax.swing.JTextField dateText;
private javax.swing.JTextField descText;
// End of variables declaration//GEN-END:variables
}