/* * This file is part of the aidGer project. * * Copyright (C) 2010-2013 The aidGer Team * * 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 3 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. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package de.aidger.view.forms; import static de.aidger.utils.Translation._; import java.text.ParseException; import java.util.List; import javax.swing.JPanel; import javax.swing.SwingUtilities; import de.aidger.model.models.Course; import de.aidger.model.models.FinancialCategory; import de.aidger.utils.Logger; import de.aidger.view.models.ComboBoxModel; import de.aidger.view.models.GenericListModel; import de.aidger.view.models.UIFinancialCategory; import de.aidger.view.tabs.ViewerTab.DataType; import de.aidger.view.utils.InputPatternFilter; import de.aidger.view.utils.NumberFormat; import siena.SienaException; /** * A form used for editing / creating new courses. * * @author aidGer Team */ @SuppressWarnings("serial") public class CourseEditorForm extends JPanel { /** * Constructs a course editor form. * * @param course * The course that will be edited */ @SuppressWarnings("unchecked") public CourseEditorForm(Course course, List<GenericListModel> listModels) { initComponents(); SwingUtilities.invokeLater(new Runnable() { public void run() { txtDescription.requestFocusInWindow(); } }); // add input filters InputPatternFilter.addDoubleFilter(txtAWHperGroup); InputPatternFilter.addFilter(txtPart, ".?"); InputPatternFilter.addFilter(txtSemester, "([0-9]{0,4})|(WS?|WS[0-9]{0,4})|(SS?|SS[0-9]{0,2})"); // help info for user hlpAWHperGroup.setToolTipText(_("Only a decimal number is allowed.")); hlpPart.setToolTipText(_("Only one character is allowed.")); hlpSemester .setToolTipText(_("Only the format SS[XX], WS[XXXX] and year in 4 digits is allowed.")); List<FinancialCategory> fcs = null; try { fcs = (new FinancialCategory()).getAll(); } catch (SienaException e) { Logger.error(e.getMessage()); } ComboBoxModel cmbFinancialCategoryModel = new ComboBoxModel( DataType.FinancialCategory); for (FinancialCategory fc : fcs) { cmbFinancialCategoryModel.addElement(new UIFinancialCategory(fc)); } cmbFinancialCategory.setModel(cmbFinancialCategoryModel); listModels.add(cmbFinancialCategoryModel); if (course != null) { txtDescription.setText(course.getDescription()); txtSemester.setText(course.getSemester()); txtLecturer.setText(course.getLecturer()); txtAdvisor.setText(course.getAdvisor()); txtTargetAudience.setText(course.getTargetAudience()); spNumberOfGroups.setValue(course.getNumberOfGroups()); txtAWHperGroup.setText(NumberFormat.getInstance().format( course.getUnqualifiedWorkingHours())); cmbScope.setSelectedItem(course.getScope()); txtPart.setText(String.valueOf(course.getPart())); txtGroup.setText(course.getGroup()); txtRemark.setText(course.getRemark()); try { FinancialCategory fc = (new FinancialCategory()) .getById(course.getFinancialCategoryId()); cmbFinancialCategory.setSelectedItem(new FinancialCategory(fc)); } catch (SienaException e) { Logger.error(e.getMessage()); } } else { txtAWHperGroup.setText("150"); txtGroup.setText("A"); } } /** * Get the description of the course * * @return The description of the course */ public String getDescription() { return txtDescription.getText(); } /** * Get the id referencing the category. * * @return The id of the category */ public Long getFinancialCategoryId() { if (cmbFinancialCategory.getSelectedItem() == null) { return null; } return ((FinancialCategory) cmbFinancialCategory.getSelectedItem()).getId(); } /** * Get the group of the course. * * @return The group of the course */ public String getGroup() { return txtGroup.getText(); } /** * Get the lecturer of the course. * * @return The lecturer of the course */ public String getLecturer() { return txtLecturer.getText(); } /** * Get the advisor of the course. * * @return The advisor of the course */ public String getAdvisor() { return txtAdvisor.getText(); } /** * Get the number of groups in the course. * * @return The number of groups */ public int getNumberOfGroups() { return (Integer) spNumberOfGroups.getValue(); } /** * Get the part of the course. * * @return The part of the course * @throws StringIndexOutOfBoundsException */ public char getPart() throws StringIndexOutOfBoundsException { String part = txtPart.getText(); return part.isEmpty() ? ' ' : part.charAt(0); } /** * Get remarks regarding the course. * * @return The remarks */ public String getRemark() { return txtRemark.getText(); } /** * Get the scope of the course. * * @return The scope of the course */ public String getScope() { return (String) cmbScope.getSelectedItem(); } /** * Get the semester of the course. * * @return The semester */ public String getSemester() { return txtSemester.getText(); } /** * Get the target audience of the course. * * @return The target audience */ public String getTargetAudience() { return txtTargetAudience.getText(); } /** * Get the amount of unqualified working hours granted. * * @return The amount of UWHs * @throws NumberFormatException */ public double getUnqualifiedWorkingHours() throws ParseException { return NumberFormat.getInstance().parse(txtAWHperGroup.getText()) .doubleValue(); } /** * 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. */ // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { java.awt.GridBagConstraints gridBagConstraints; lblDescription = new javax.swing.JLabel(); lblSemester = new javax.swing.JLabel(); lblLecturer = new javax.swing.JLabel(); lblAdvisor = new javax.swing.JLabel(); lblNumberOfGroups = new javax.swing.JLabel(); lblTargetAudience = new javax.swing.JLabel(); txtDescription = new javax.swing.JTextField(); txtSemester = new javax.swing.JTextField(); txtLecturer = new javax.swing.JTextField(); txtAdvisor = new javax.swing.JTextField(); spNumberOfGroups = new javax.swing.JSpinner(); txtTargetAudience = new javax.swing.JTextField(); lblAWHperGroup = new javax.swing.JLabel(); lblScope = new javax.swing.JLabel(); lblPart = new javax.swing.JLabel(); lblGroup = new javax.swing.JLabel(); lblRemark = new javax.swing.JLabel(); lblFinancialCategory = new javax.swing.JLabel(); txtAWHperGroup = new javax.swing.JTextField(); cmbScope = new javax.swing.JComboBox(); txtPart = new javax.swing.JTextField(); txtGroup = new javax.swing.JTextField(); txtRemark = new javax.swing.JTextField(); cmbFinancialCategory = new javax.swing.JComboBox(); hlpAWHperGroup = new de.aidger.view.utils.HelpLabel(); hlpPart = new de.aidger.view.utils.HelpLabel(); hlpSemester = new de.aidger.view.utils.HelpLabel(); setLayout(new java.awt.GridBagLayout()); lblDescription.setText(_("Description")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10); add(lblDescription, gridBagConstraints); lblDescription.getAccessibleContext().setAccessibleDescription( "description"); lblSemester.setText(_("Semester")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10); add(lblSemester, gridBagConstraints); lblSemester.getAccessibleContext().setAccessibleDescription("semester"); lblLecturer.setText(_("Lecturer")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10); add(lblLecturer, gridBagConstraints); lblLecturer.getAccessibleContext().setAccessibleDescription("lecturer"); lblAdvisor.setText(_("Advisor")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 3; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10); add(lblAdvisor, gridBagConstraints); lblAdvisor.getAccessibleContext().setAccessibleDescription("advisor"); lblNumberOfGroups.setText(_("Number of Groups")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 4; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10); add(lblNumberOfGroups, gridBagConstraints); lblNumberOfGroups.getAccessibleContext().setAccessibleDescription( "numberOfGroups"); lblTargetAudience.setText(_("Target Audience")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 5; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10); add(lblTargetAudience, gridBagConstraints); lblTargetAudience.getAccessibleContext().setAccessibleDescription( "targetAudience"); txtDescription.setMinimumSize(new java.awt.Dimension(200, 25)); txtDescription.setPreferredSize(new java.awt.Dimension(200, 25)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10); add(txtDescription, gridBagConstraints); txtSemester.setMinimumSize(new java.awt.Dimension(200, 25)); txtSemester.setPreferredSize(new java.awt.Dimension(200, 25)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 1; gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10); add(txtSemester, gridBagConstraints); txtLecturer.setMinimumSize(new java.awt.Dimension(200, 25)); txtLecturer.setPreferredSize(new java.awt.Dimension(200, 25)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 2; gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10); add(txtLecturer, gridBagConstraints); txtAdvisor.setMinimumSize(new java.awt.Dimension(200, 25)); txtAdvisor.setPreferredSize(new java.awt.Dimension(200, 25)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 3; gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10); add(txtAdvisor, gridBagConstraints); spNumberOfGroups.setModel(new javax.swing.SpinnerNumberModel(Integer .valueOf(1), Integer.valueOf(1), null, Integer.valueOf(1))); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 4; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10); add(spNumberOfGroups, gridBagConstraints); txtTargetAudience.setMinimumSize(new java.awt.Dimension(200, 25)); txtTargetAudience.setPreferredSize(new java.awt.Dimension(200, 25)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 5; gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10); add(txtTargetAudience, gridBagConstraints); lblAWHperGroup.setText(_("AWH per group")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 3; gridBagConstraints.gridy = 0; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(10, 50, 10, 10); add(lblAWHperGroup, gridBagConstraints); lblAWHperGroup.getAccessibleContext().setAccessibleDescription( "unqualifiedWorkingHours"); lblScope.setText(_("Scope")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 3; gridBagConstraints.gridy = 1; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(10, 50, 10, 10); add(lblScope, gridBagConstraints); lblScope.getAccessibleContext().setAccessibleDescription("scope"); lblPart.setText(_("Part")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 3; gridBagConstraints.gridy = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(10, 50, 10, 10); add(lblPart, gridBagConstraints); lblPart.getAccessibleContext().setAccessibleDescription("part"); lblGroup.setText(_("Group")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 3; gridBagConstraints.gridy = 3; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(10, 50, 10, 10); add(lblGroup, gridBagConstraints); lblGroup.getAccessibleContext().setAccessibleDescription("group"); lblRemark.setText(_("Remark")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 3; gridBagConstraints.gridy = 4; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(10, 50, 10, 10); add(lblRemark, gridBagConstraints); lblRemark.getAccessibleContext().setAccessibleDescription("remark"); lblFinancialCategory.setText(_("Financial Category")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 3; gridBagConstraints.gridy = 5; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(10, 50, 10, 10); add(lblFinancialCategory, gridBagConstraints); lblFinancialCategory.getAccessibleContext().setAccessibleDescription( "financialCategoryId"); txtAWHperGroup.setMinimumSize(new java.awt.Dimension(200, 25)); txtAWHperGroup.setPreferredSize(new java.awt.Dimension(200, 25)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 4; gridBagConstraints.gridy = 0; gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10); add(txtAWHperGroup, gridBagConstraints); cmbScope.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "", "1Ü", "2Ü", "1P", "2P", "4P", "6P" })); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 4; gridBagConstraints.gridy = 1; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10); add(cmbScope, gridBagConstraints); txtPart.setMinimumSize(new java.awt.Dimension(200, 25)); txtPart.setPreferredSize(new java.awt.Dimension(200, 25)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 4; gridBagConstraints.gridy = 2; gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10); add(txtPart, gridBagConstraints); txtGroup.setMinimumSize(new java.awt.Dimension(200, 25)); txtGroup.setPreferredSize(new java.awt.Dimension(200, 25)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 4; gridBagConstraints.gridy = 3; gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10); add(txtGroup, gridBagConstraints); txtRemark.setMinimumSize(new java.awt.Dimension(200, 25)); txtRemark.setPreferredSize(new java.awt.Dimension(200, 25)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 4; gridBagConstraints.gridy = 4; gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10); add(txtRemark, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 4; gridBagConstraints.gridy = 5; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10); add(cmbFinancialCategory, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 5; gridBagConstraints.gridy = 0; gridBagConstraints.insets = new java.awt.Insets(10, 0, 10, 0); add(hlpAWHperGroup, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 5; gridBagConstraints.gridy = 2; gridBagConstraints.insets = new java.awt.Insets(10, 0, 10, 0); add(hlpPart, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 1; gridBagConstraints.insets = new java.awt.Insets(10, 0, 10, 0); add(hlpSemester, gridBagConstraints); }// </editor-fold>//GEN-END:initComponents // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JComboBox cmbFinancialCategory; private javax.swing.JComboBox cmbScope; private de.aidger.view.utils.HelpLabel hlpAWHperGroup; private de.aidger.view.utils.HelpLabel hlpPart; private de.aidger.view.utils.HelpLabel hlpSemester; private javax.swing.JLabel lblAWHperGroup; private javax.swing.JLabel lblAdvisor; private javax.swing.JLabel lblDescription; private javax.swing.JLabel lblFinancialCategory; private javax.swing.JLabel lblGroup; private javax.swing.JLabel lblLecturer; private javax.swing.JLabel lblNumberOfGroups; private javax.swing.JLabel lblPart; private javax.swing.JLabel lblRemark; private javax.swing.JLabel lblScope; private javax.swing.JLabel lblSemester; private javax.swing.JLabel lblTargetAudience; private javax.swing.JSpinner spNumberOfGroups; private javax.swing.JTextField txtAWHperGroup; private javax.swing.JTextField txtAdvisor; private javax.swing.JTextField txtDescription; private javax.swing.JTextField txtGroup; private javax.swing.JTextField txtLecturer; private javax.swing.JTextField txtPart; private javax.swing.JTextField txtRemark; private javax.swing.JTextField txtSemester; private javax.swing.JTextField txtTargetAudience; // End of variables declaration//GEN-END:variables }