]> Softwares of Agnibho - dietsurvey.git/blobdiff - com/agnibho/code/dietSurvey/IdPanel.java
Rewritten in PHP/Javascript
[dietsurvey.git] / com / agnibho / code / dietSurvey / IdPanel.java
diff --git a/com/agnibho/code/dietSurvey/IdPanel.java b/com/agnibho/code/dietSurvey/IdPanel.java
deleted file mode 100644 (file)
index 1491eb6..0000000
+++ /dev/null
@@ -1,540 +0,0 @@
-/*
-    Diet-Survey: Perform diet survey based on 24 hours recall
-    Copyright (C) 2013  Agnibho Mondal
-    
-    This file is part of Diet-Survey.
-
-    Diet-Survey 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.
-
-    Diet-Survey 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 Diet-Survey.  If not, see <http://www.gnu.org/licenses/>.
-*/
-package com.agnibho.code.dietSurvey;
-
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.swing.BorderFactory;
-import javax.swing.ButtonGroup;
-import javax.swing.GroupLayout;
-import javax.swing.JButton;
-import javax.swing.JCheckBox;
-import javax.swing.JComboBox;
-import javax.swing.JLabel;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-import javax.swing.JRadioButton;
-import javax.swing.JScrollPane;
-import javax.swing.JTextField;
-import javax.swing.LayoutStyle;
-import javax.swing.SwingUtilities;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.xpath.XPath;
-import javax.xml.xpath.XPathConstants;
-import javax.xml.xpath.XPathExpressionException;
-
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-
-@SuppressWarnings("serial")
-public class IdPanel extends JPanel implements ActionListener {
-    private GroupLayout layout;
-    
-    private JPanel multiPanel;
-    private JScrollPane multiScroll;
-    private GroupLayout multiLayout;
-
-    private JLabel hofLabel;
-    private JTextField hofField;
-    private JLabel dateLabel;
-    private JTextField dateField;
-    private JButton add;
-    private JButton remove;
-    private List<Member> members;
-
-    public IdPanel() {
-       hofLabel=new JLabel("<html><h4>Enter the name of Head of Family:</h4></html>", JLabel.TRAILING);
-       hofField=new JTextField();
-       hofField.setMaximumSize(new Dimension(Integer.MAX_VALUE, 30));
-       dateLabel=new JLabel("<html><h4>Enter the date:</h4></html>", JLabel.TRAILING);
-       dateField=new JTextField();
-       dateField.setText("dd-mm-yyyy");
-       dateField.addFocusListener(new java.awt.event.FocusAdapter() {
-           public void focusGained(java.awt.event.FocusEvent evt) {
-               SwingUtilities.invokeLater( new Runnable() {
-                   @Override
-                   public void run() {
-                       dateField.selectAll();          
-                   }
-               });
-           }
-       });
-       dateField.setMaximumSize(new Dimension(Integer.MAX_VALUE, 30));
-       add=new JButton("Add Family Member");
-       add.setActionCommand("add");
-       add.addActionListener(this);
-       remove=new JButton("Remove Selected Members");
-       remove.setActionCommand("remove");
-       remove.addActionListener(this);
-       
-       multiPanel=new JPanel();
-       multiScroll=new JScrollPane(multiPanel);
-       
-       members=new ArrayList<Member>();
-       members.add(new Member());
-       refreshLayout();
-    }
-    private void refreshLayout(){
-       this.removeAll();
-       multiPanel.removeAll();
-       
-       layout=new GroupLayout(this);
-       this.setLayout(layout);
-       layout.setAutoCreateGaps(true);
-       layout.setAutoCreateContainerGaps(true);
-       
-       multiLayout=new GroupLayout(multiPanel);
-       multiPanel.setLayout(multiLayout);
-       multiLayout.setAutoCreateGaps(true);
-       multiLayout.setAutoCreateContainerGaps(true);
-       
-       GroupLayout.ParallelGroup pg=multiLayout.createParallelGroup();
-       GroupLayout.SequentialGroup sg=multiLayout.createSequentialGroup();
-       
-       for(int i=0; i<members.size(); i++){
-           members.get(i).updateNum(i+1);
-           pg.addComponent(members.get(i));
-           sg.addComponent(members.get(i));
-       }
-       sg.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.PREFERRED_SIZE, Short.MAX_VALUE);
-       multiLayout.setVerticalGroup(sg);
-       multiLayout.setHorizontalGroup(pg);
-       
-       layout.setVerticalGroup(layout.createSequentialGroup()
-               .addGroup(layout.createParallelGroup()
-                       .addComponent(hofLabel)
-                       .addComponent(hofField))
-                       .addGroup(layout.createParallelGroup()
-                               .addComponent(dateLabel)
-                               .addComponent(dateField))
-                               .addGroup(layout.createParallelGroup()
-                                       .addComponent(add)
-                                       .addComponent(remove))
-                                       .addComponent(multiScroll));
-       layout.setHorizontalGroup(layout.createParallelGroup()
-               .addGroup(layout.createSequentialGroup()
-                       .addComponent(hofLabel)
-                       .addComponent(hofField))
-                       .addGroup(layout.createSequentialGroup()
-                               .addComponent(dateLabel)
-                               .addComponent(dateField))
-                               .addGroup(layout.createSequentialGroup()
-                                       .addComponent(add)
-                                       .addComponent(remove))
-                                       .addComponent(multiScroll));
-       layout.linkSize(hofLabel, dateLabel);
-    }
-    private void addMember(){
-       members.add(new Member());
-       refreshLayout();
-    }
-    private void removeMember(){
-       int i=0;
-       while(i<members.size()){
-           if(members.get(i).isSelected())
-               members.remove(i);
-           else
-               i++;
-       }
-       refreshLayout();
-    }
-    private boolean checkDate(String date){
-       date=date.trim();
-       String[] parts;
-       if(date.contains("/"))
-           parts=date.split("/");
-       else if(date.contains("."))
-           parts=date.split(".");
-       else if(date.contains("-"))
-           parts=date.split("-");
-       else
-           return false;
-       if(parts.length!=3)
-           return false;
-       try{
-           if(Integer.parseInt(parts[0])<1||Integer.parseInt(parts[0])>31)
-               return false;
-           if(Integer.parseInt(parts[1])<1||Integer.parseInt(parts[1])>12)
-               return false;
-           if(!((Integer.parseInt(parts[2])>=1950&&Integer.parseInt(parts[2])<=2050)||(Integer.parseInt(parts[2])>=0||Integer.parseInt(parts[2])<=99)))
-               return false;
-       }catch(NumberFormatException e){
-           return false;
-       }
-       return true;
-    }
-    public boolean isComplete(){
-       if(hofField.getText().toString().trim().length()==0){
-           JOptionPane.showMessageDialog(this, "Please enter the name of Head of Family", "Error", JOptionPane.ERROR_MESSAGE);
-           return false;
-       }
-       if(!checkDate(dateField.getText())){
-           JOptionPane.showMessageDialog(this, "Invalid date.", "Error", JOptionPane.ERROR_MESSAGE);
-           return false;
-       }
-       if(members.size()==0){
-           JOptionPane.showMessageDialog(this, "No member was found.", "Error", JOptionPane.ERROR_MESSAGE);
-           return false;
-       }
-       for(int i=0; i<members.size(); i++){
-           if(!members.get(i).isComplete())
-               return false;
-       }
-       return true;
-    }
-    public Document copyToDoc(Document doc) throws XPathExpressionException, ParserConfigurationException{
-       XPath xp=DocHandler.getXpInstance();
-       Node node=(Node) xp.evaluate("/record/id", doc, XPathConstants.NODE);
-       node.appendChild(doc.createElement("hof"));
-       node.getFirstChild().appendChild(doc.createTextNode(hofField.getText().toString().trim()));
-       node.appendChild(doc.createElement("date"));
-       if(checkDate(dateField.getText()))
-           node.getLastChild().appendChild(doc.createTextNode(dateField.getText().toString().trim()));
-       for(int i=0; i<members.size(); i++){
-           doc=members.get(i).copyToDoc(doc);
-       }
-       return doc;
-    }
-
-    @Override
-    public void actionPerformed(ActionEvent ae) {
-       if(ae.getActionCommand().equals("add"))
-           addMember();
-       else if(ae.getActionCommand().equals("remove"))
-           removeMember();
-    }
-    
-    private class Member extends JPanel implements ActionListener {
-       GroupLayout layout;
-
-       JCheckBox selection;
-       JLabel nameLabel;
-       JTextField nameField;
-       JLabel ageLabel;
-       JTextField ageField;
-       JLabel sexLabel;
-       ButtonGroup sex;
-       JRadioButton male;
-       JRadioButton female;
-       JLabel jobLabel;
-       JComboBox<String> jobBox;
-       JLabel pregLabel;
-       ButtonGroup preg;
-       JRadioButton yesP;
-       JRadioButton noP;
-       JLabel lacLabel;
-       ButtonGroup lac;
-       JRadioButton yesLbelow6;
-       JRadioButton yesLabove6;
-       JRadioButton noL;
-
-       Member(){
-           selection=new JCheckBox();
-           
-           nameLabel=new JLabel("<html><b>Enter name:</b></html>");
-           nameLabel.setPreferredSize(new Dimension(120, 20));
-           nameField=new JTextField(30);
-           nameField.setMaximumSize(new Dimension(Integer.MAX_VALUE, 30));
-           
-           ageLabel=new JLabel("<html><b>Enter age:</b></html>");
-           ageField=new JTextField();
-           ageField.setActionCommand("check");
-           ageField.addActionListener(this);
-           ageField.setMaximumSize(new Dimension(Integer.MAX_VALUE, 30));
-           
-           sexLabel=new JLabel("<html><b>Enter Sex:</b></html>");
-           male=new JRadioButton("Male");
-           male.setActionCommand("check");
-           male.addActionListener(this);
-           female=new JRadioButton("Female");
-           female.setActionCommand("check");
-           female.addActionListener(this);
-           sex=new ButtonGroup();
-           sex.add(male);
-           sex.add(female);
-           
-           jobLabel=new JLabel("<html><b>Enter Work Type:</b></html>");
-           jobLabel.setVisible(false);
-           String[] jobCat={"Sedentary", "Moderate", "Heavy"};
-           jobBox=new JComboBox<String>(jobCat);
-           jobBox.setMaximumSize(new Dimension(Integer.MAX_VALUE, 30));
-           jobBox.setVisible(false);
-           
-           pregLabel=new JLabel("<html><b>Is she pregnant?</b></html>");
-           pregLabel.setVisible(false);
-           yesP=new JRadioButton("Yes");
-           yesP.setActionCommand("check");
-           yesP.addActionListener(this);
-           yesP.setVisible(false);
-           noP=new JRadioButton("No");
-           noP.setVisible(false);
-           preg=new ButtonGroup();
-           preg.add(yesP);
-           preg.add(noP);
-           
-           lacLabel=new JLabel("<html><b>Is she lactating?</b></html>");
-           lacLabel.setVisible(false);
-           yesLbelow6=new JRadioButton("Yes, below 6 months");
-           yesLbelow6.setActionCommand("check");
-           yesLbelow6.addActionListener(this);
-           yesLbelow6.setVisible(false);
-           yesLabove6=new JRadioButton("Yes, above 6 months");
-           yesLabove6.setActionCommand("check");
-           yesLabove6.addActionListener(this);
-           yesLabove6.setVisible(false);
-           noL=new JRadioButton("No");
-           noL.setVisible(false);
-           lac=new ButtonGroup();
-           lac.add(yesLbelow6);
-           lac.add(yesLabove6);
-           lac.add(noL);
-
-           layout=new GroupLayout(this);
-           this.setLayout(layout);
-           layout.setAutoCreateGaps(true);
-           layout.setAutoCreateContainerGaps(true);
-           layout.setVerticalGroup(
-                   layout.createSequentialGroup()
-                   .addComponent(selection)
-                   .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE)
-                   .addGroup(layout.createParallelGroup()
-                           .addComponent(nameLabel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
-                           .addComponent(nameField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
-                           .addGroup(layout.createParallelGroup()
-                                   .addComponent(ageLabel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
-                                   .addComponent(ageField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
-                                   .addGroup(layout.createParallelGroup()
-                                           .addComponent(sexLabel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
-                                           .addComponent(male, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
-                                           .addComponent(female, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
-                                           .addGroup(layout.createParallelGroup()
-                                                   .addComponent(jobLabel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
-                                                   .addComponent(jobBox, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
-                                                   .addGroup(layout.createParallelGroup()
-                                                           .addComponent(pregLabel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
-                                                           .addComponent(yesP, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
-                                                           .addComponent(noP, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
-                                                           .addGroup(layout.createParallelGroup()
-                                                                   .addComponent(lacLabel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
-                                                                   .addComponent(yesLbelow6, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
-                                                                   .addComponent(yesLabove6, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
-                                                                   .addComponent(noL, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
-                                                                   //.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-                   );
-           layout.setHorizontalGroup(
-                   layout.createParallelGroup()
-                   .addComponent(selection)
-                   .addGroup(layout.createSequentialGroup()
-                           .addComponent(nameLabel, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-                           .addComponent(nameField, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
-                           .addGroup(layout.createSequentialGroup()
-                                   .addComponent(ageLabel, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-                                   .addComponent(ageField, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
-                                   .addGroup(layout.createSequentialGroup()
-                                           .addComponent(sexLabel)
-                                           .addComponent(male)
-                                           .addComponent(female))
-                                           .addGroup(layout.createSequentialGroup()
-                                                   .addComponent(jobLabel, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-                                                   .addComponent(jobBox, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
-                                                   .addGroup(layout.createSequentialGroup()
-                                                           .addComponent(pregLabel)
-                                                           .addComponent(yesP)
-                                                           .addComponent(noP))
-                                                           .addGroup(layout.createSequentialGroup()
-                                                                   .addComponent(lacLabel)
-                                                                   .addComponent(yesLbelow6)
-                                                                   .addComponent(yesLabove6)
-                                                                   .addComponent(noL)));
-           layout.linkSize(nameLabel, ageLabel, sexLabel, jobLabel, pregLabel, lacLabel);
-           this.setBorder(BorderFactory.createLineBorder(Color.gray));
-       }
-       
-       public void updateNum(int num){
-           selection.setText("<html><h4>Member "+String.valueOf(num)+"</h4></html>");
-       }
-       
-       public boolean isSelected(){
-           return selection.isSelected();
-       }
-       
-       public void check(){
-           if(!ageField.getText().toString().trim().endsWith("m")){
-               try{
-                   if(Integer.parseInt(ageField.getText().toString().trim())>=18){
-                       jobLabel.setVisible(true);
-                       jobBox.setVisible(true);
-                   }
-                   else{
-                       jobLabel.setVisible(false);
-                       jobBox.setVisible(false);
-                       pregLabel.setVisible(false);
-                       yesP.setVisible(false);
-                       noP.setVisible(false);
-                       lacLabel.setVisible(false);
-                       yesLbelow6.setVisible(false);
-                       yesLabove6.setVisible(false);
-                       noL.setVisible(false);
-                   }
-                   if(female.isSelected()&&Integer.parseInt(ageField.getText().toString().trim())>=18&&Integer.parseInt(ageField.getText().toString().trim())<=45){
-                       pregLabel.setVisible(true);
-                       yesP.setVisible(true);
-                       noP.setVisible(true);
-                       lacLabel.setVisible(true);
-                       yesLbelow6.setVisible(true);
-                       yesLabove6.setVisible(true);
-                       noL.setVisible(true);
-                   }
-                   else{
-                       pregLabel.setVisible(false);
-                       yesP.setVisible(false);
-                       noP.setVisible(false);
-                       lacLabel.setVisible(false);
-                       yesLbelow6.setVisible(false);
-                       yesLabove6.setVisible(false);
-                       noL.setVisible(false);
-                   }
-                   if(yesP.isSelected())
-                       noL.setSelected(true);
-                   else if(yesLbelow6.isSelected()||yesLabove6.isSelected())
-                       noP.setSelected(true);
-               }catch(NumberFormatException e){
-                   
-               }
-           }
-           else{
-               jobLabel.setVisible(false);
-               jobBox.setVisible(false);
-               pregLabel.setVisible(false);
-               yesP.setVisible(false);
-               noP.setVisible(false);
-               lacLabel.setVisible(false);
-               yesLbelow6.setVisible(false);
-               yesLabove6.setVisible(false);
-               noL.setVisible(false);
-           }
-       }
-       
-       public boolean isComplete(){
-           String age=ageField.getText().toString().trim();
-           try{
-               if(Integer.parseInt(age)>=18 && !jobBox.isVisible()){
-                   JOptionPane.showMessageDialog(this, "Please enter the work type.", "Error", JOptionPane.ERROR_MESSAGE);
-                   check();
-                   return false;
-               }
-               if(age.endsWith("m")){
-                   if(Integer.parseInt(age.substring(0, age.length()-1).trim())<0 && Integer.parseInt(age.substring(0, age.length()-2).trim())>11){
-                       JOptionPane.showMessageDialog(this, "Invalid age. Please try again.", "Error", JOptionPane.ERROR_MESSAGE);
-                       return false;
-                   }
-               }
-               else{
-                   if(Integer.parseInt(age)<1){
-                       JOptionPane.showMessageDialog(this, "Invalid age. Please try again.", "Error", JOptionPane.ERROR_MESSAGE);
-                       return false;
-                   }
-               }
-           }catch(NumberFormatException e){
-               JOptionPane.showMessageDialog(this, "Invalid age. Please try again.", "Error", JOptionPane.ERROR_MESSAGE);
-               return false;
-           }
-           
-           check();
-           
-           if(!(male.isSelected()||female.isSelected())){
-               JOptionPane.showMessageDialog(this, "Please enter sex", "Error", JOptionPane.ERROR_MESSAGE);
-               return false;
-           }
-           if(pregLabel.isVisible()&&!(yesP.isSelected()||noP.isSelected())){
-               JOptionPane.showMessageDialog(this, "Please enter pregnancy status.", "Error", JOptionPane.ERROR_MESSAGE);
-               return false;
-           }
-           if(lacLabel.isVisible()&&!(yesLbelow6.isSelected()||yesLabove6.isSelected()||noL.isSelected())){
-               JOptionPane.showMessageDialog(this, "Please enter lactation status", "Error", JOptionPane.ERROR_MESSAGE);
-               return false;
-           }
-           return true;
-       }
-       
-       public Document copyToDoc(Document doc) throws XPathExpressionException{
-           XPath xp=DocHandler.getXpInstance();
-           Node node=(Node) xp.evaluate("/record/id", doc, XPathConstants.NODE);
-           node.appendChild(doc.createElement("member"));
-           node=node.getLastChild();
-           if(nameField.getText().toString().trim().length()>0){
-               node.appendChild(doc.createElement("name"));
-               node.getLastChild().appendChild(doc.createTextNode(nameField.getText().toString().trim()));
-           }
-           
-           String age=ageField.getText().toString().trim();
-           if(age.endsWith("m")){
-               node.appendChild(doc.createElement("infant"));
-               node.getLastChild().appendChild(doc.createTextNode(age.substring(0, age.length()-1).trim()));
-           }
-           else{
-               node.appendChild(doc.createElement("age"));
-               node.getLastChild().appendChild(doc.createTextNode(age));
-           }
-           node.appendChild(doc.createElement("sex"));
-           if(male.isSelected())
-               node.getLastChild().appendChild(doc.createTextNode("male"));
-           else
-               node.getLastChild().appendChild(doc.createTextNode("female"));
-           if(jobBox.isVisible()){
-               node.appendChild(doc.createElement("occupation"));
-               node.getLastChild().appendChild(doc.createTextNode(jobBox.getSelectedItem().toString().trim().toLowerCase()));
-           }
-           if(pregLabel.isVisible()){
-               node.appendChild(doc.createElement("pregnant"));
-               if(yesP.isSelected())
-                   node.getLastChild().appendChild(doc.createTextNode("true"));
-               else
-                   node.getLastChild().appendChild(doc.createTextNode("false"));
-           }
-           if(lacLabel.isVisible()){
-               node.appendChild(doc.createElement("lactating"));
-               if(yesLbelow6.isSelected()||yesLabove6.isSelected()){
-                   node.getLastChild().appendChild(doc.createTextNode("true"));
-                   node.appendChild(doc.createElement("beyond6m"));
-                   if(yesLabove6.isSelected())
-                       node.getLastChild().appendChild(doc.createTextNode("true"));
-                   else
-                       node.getLastChild().appendChild(doc.createTextNode("false"));
-               }
-               else
-                   node.getLastChild().appendChild(doc.createTextNode("false"));
-           }
-           return doc;
-       }
-
-       @Override
-       public void actionPerformed(ActionEvent ae) {
-           if(ae.getActionCommand().equals("check")){
-               check();
-           }
-       }
-    }
-}