Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Logic Familiar Hierarchy - AddNewRelation.java

AddNewRelation.java

Caricato da: Nophiq
Scarica il programma completo

  1. /************************************************************************
  2.  * Copyright (C) 19aa Claudio Reggiani alias Nophiq                     *
  3.  * Questo programma è software libero; è lecito ridistribuirlo e/o      *
  4.  * modificarlo secondo i termini della Licenza Pubblica Generica GNU    *
  5.  * come pubblicata dalla Free Software Foundation; o la versione 2      *
  6.  * della licenza o (a scelta) una versione successiva.                  *
  7.  *                                                                      *
  8.  * Questo programma è distribuito  nella speranza che sia utile, ma     *
  9.  * SENZA ALCUNA GARANZIA; senza neppure la garanzia implicita di        *
  10.  * COMMERCIABILITÀ o di APPLICABILITÀ PER UN PARTICOLARE SCOPO. Si      *
  11.  * veda la Licenza Pubblica Generica GNU per avere maggiori dettagli.   *
  12.  *                                                                      *
  13.  * Ognuno dovrebbe avere ricevuto una copia  della Licenza Pubblica     *
  14.  * Generica GNU insieme a questo programma; in caso contrario, la si    *
  15.  * può ottenere dalla Free Software Foundation, Inc., 675 Mass Ave,     *
  16.  * Cambridge, MA 02139, Stati Uniti.                                    *
  17.  *                                                                      *
  18.  * Per contattarmi attraverso posta elettronica: nophiq@virgilio.it     *
  19.  ************************************************************************/
  20.  
  21. package albero;
  22.  
  23. import javax.swing.*;
  24. import java.awt.event.*;
  25. import java.awt.*;
  26. /**
  27.  *
  28.  * @author nophiq
  29.  */
  30. public class AddNewRelation extends JFrame implements ActionListener, KeyListener {
  31.   private JLabel l1, l2, l3;
  32.   private JTextField name1, name2, name3, name4, name5, name6;
  33.   private JButton add;
  34.   private GridBagConstraints c;
  35.   private ButtonGroup selectRelation;
  36.   private JRadioButton a1, b1, c1;
  37.   private ObjectPanel panelTree;
  38.  
  39.   /** Creates a new instance of addNewMember */
  40.   public AddNewRelation(ObjectPanel panelTree) {
  41.     super("Aggiungi relazione");
  42.     this.panelTree = panelTree;
  43.     initialize();
  44.   }
  45.  
  46.   public void initialize() {
  47.     this.setLayout(new GridBagLayout());
  48.     c = new GridBagConstraints();
  49.    
  50.     l1 = new JLabel("è padre di ");
  51.     setObjectSetting(c, 20, 10, 1, 1);
  52.     this.add(l1, c);
  53.    
  54.     name1 = new JTextField(20);
  55.     name1.addKeyListener(this);
  56.     name1.setEditable(true);
  57.     setObjectSetting(c, 10, 10, 1, 1);
  58.     this.add(name1, c);
  59.    
  60.     name2 = new JTextField(20);
  61.     name2.addKeyListener(this);
  62.     name2.setEditable(true);
  63.     setObjectSetting(c, 30, 10, 1, 1);
  64.     this.add(name2, c);
  65.    
  66.     // ---------------------------------
  67.    
  68.     l2 = new JLabel("è madre di ");
  69.     setObjectSetting(c, 20, 20, 1, 1);
  70.     this.add(l2, c);
  71.    
  72.     name3 = new JTextField(20);
  73.     name3.addKeyListener(this);
  74.     name3.setEditable(false);
  75.     setObjectSetting(c, 10, 20, 1, 1);
  76.     this.add(name3, c);
  77.    
  78.     name4 = new JTextField(20);
  79.     name4.addKeyListener(this);
  80.     name4.setEditable(false);
  81.     setObjectSetting(c, 30, 20, 1, 1);
  82.     this.add(name4, c);
  83.    
  84.     // ---------------------------------
  85.    
  86.     l3 = new JLabel("è marito di ");
  87.     setObjectSetting(c, 20, 30, 1, 1);
  88.     this.add(l3, c);
  89.    
  90.     name5 = new JTextField(20);
  91.     name5.addKeyListener(this);
  92.     name5.setEditable(false);
  93.     setObjectSetting(c, 10, 30, 1, 1);
  94.     this.add(name5, c);
  95.    
  96.     name6 = new JTextField(20);
  97.     name6.addKeyListener(this);
  98.     name6.setEditable(false);
  99.     setObjectSetting(c, 30, 30, 1, 1);
  100.     this.add(name6, c);
  101.    
  102.       a1 = new JRadioButton();
  103.       a1.addActionListener(this);
  104.       a1.setSelected(true);
  105.       setObjectSetting(c, 5, 10, 1, 1);
  106.       this.add(a1, c);
  107.  
  108.       b1 = new JRadioButton();
  109.       b1.addActionListener(this);
  110.       setObjectSetting(c, 5, 20, 1, 1);
  111.       this.add(b1, c);
  112.      
  113.       c1 = new JRadioButton();
  114.       c1.addActionListener(this);
  115.       setObjectSetting(c, 5, 30, 1, 1);
  116.       this.add(c1, c);
  117.      
  118.       selectRelation = new ButtonGroup();
  119.       selectRelation.add(a1);
  120.       selectRelation.add(b1);
  121.       selectRelation.add(c1);
  122.    
  123.     add = new JButton("Aggiungi relazione");
  124.     add.addActionListener(this);
  125.     setObjectSetting(c, 20, 50, 1, 1);
  126.     this.add(add, c);
  127.    
  128.     this.pack();
  129.     this.setVisible(true);
  130.   }
  131.  
  132.   private void setObjectSetting(GridBagConstraints c, int gridx, int gridy, int gridheight, int gridwidth) {
  133.     c.gridx = gridx;  // Posizionamento Orizzontale
  134.     c.gridy = gridy;  // Posizionamento Verticale
  135.     c.gridheight = gridheight;
  136.     c.gridwidth = gridwidth;
  137.   }
  138.  
  139.   private void addRelation() {      
  140.     if (a1.isSelected() &&
  141.       !name1.getText().equals("") &&
  142.       name1.getText().toLowerCase().charAt(0) >= 'a' &&
  143.       name1.getText().toLowerCase().charAt(0) <= 'z' &&
  144.  
  145.       !name2.getText().equals("") &&
  146.       name2.getText().toLowerCase().charAt(0) >= 'a' &&
  147.       name2.getText().toLowerCase().charAt(0) <= 'z') {
  148.       String s1 = name1.getText();
  149.       s1 = s1.toLowerCase();
  150.       s1 = s1.replace(' ', '_');
  151.  
  152.       String s2 = name2.getText();
  153.       s2 = s2.toLowerCase();
  154.       s2 = s2.replace(' ', '_');
  155.  
  156.       if (panelTree.isMemberPresent(s1) && panelTree.isMemberPresent(s2)) {
  157.         this.panelTree.addTheory("father(person("+s1+", _), person("+s2+", _)).");
  158.         this.dispose();
  159.       }
  160.       else {
  161.         JOptionPane.showMessageDialog(null,
  162.           "I nomi dei membri inseriti non sono presenti nel database\n", "Attenzione",
  163.           JOptionPane.INFORMATION_MESSAGE);
  164.       }
  165.     }
  166.     else if (b1.isSelected() &&
  167.       !name3.getText().equals("") &&
  168.       name3.getText().toLowerCase().charAt(0) >= 'a' &&
  169.       name3.getText().toLowerCase().charAt(0) <= 'z' &&
  170.  
  171.       !name4.getText().equals("") &&
  172.       name4.getText().toLowerCase().charAt(0) >= 'a' &&
  173.       name4.getText().toLowerCase().charAt(0) <= 'z') {
  174.       String s1 = name3.getText();
  175.       s1 = s1.toLowerCase();
  176.       s1 = s1.replace(' ', '_');
  177.  
  178.       String s2 = name4.getText();
  179.       s2 = s2.toLowerCase();
  180.       s2 = s2.replace(' ', '_');
  181.      
  182.       if (panelTree.isMemberPresent(s1) && panelTree.isMemberPresent(s2)) {
  183.         this.panelTree.addTheory("mother(person("+s1+", _), person("+s2+", _)).");
  184.         this.dispose();
  185.       }
  186.       else {
  187.         JOptionPane.showMessageDialog(null,
  188.           "I nomi dei membri inseriti non sono presenti nel database\n", "Attenzione",
  189.           JOptionPane.INFORMATION_MESSAGE);
  190.       }
  191.     }
  192.     else if (c1.isSelected() &&
  193.       !name5.getText().equals("") &&
  194.       name5.getText().toLowerCase().charAt(0) >= 'a' &&
  195.       name5.getText().toLowerCase().charAt(0) <= 'z' &&
  196.  
  197.       !name6.getText().equals("") &&
  198.       name6.getText().toLowerCase().charAt(0) >= 'a' &&
  199.       name6.getText().toLowerCase().charAt(0) <= 'z') {
  200.       String s1 = name5.getText();
  201.       s1 = s1.toLowerCase();
  202.       s1 = s1.replace(' ', '_');
  203.  
  204.       String s2 = name6.getText();
  205.       s2 = s2.toLowerCase();
  206.       s2 = s2.replace(' ', '_');
  207.  
  208.       if (panelTree.isMemberPresent(s1) && panelTree.isMemberPresent(s2)) {
  209.         this.panelTree.addTheory("husband(person("+s1+", _), person("+s2+", _)).");
  210.         this.dispose();
  211.       }
  212.       else {
  213.         JOptionPane.showMessageDialog(null,
  214.           "I nomi dei membri inseriti non sono presenti nel database\n", "Attenzione",
  215.           JOptionPane.INFORMATION_MESSAGE);
  216.       }
  217.     }
  218.     else {
  219.       JOptionPane.showMessageDialog(null,
  220.         "Nome membri non inseriti correttamente\n" +
  221.         "1) Il primo carattere deve essere una lettera dell'alfabeto\n" +
  222.         "2) Tutti i campi devono essere completati", "Attenzione",
  223.         JOptionPane.INFORMATION_MESSAGE);
  224.     }
  225.   }
  226.  
  227.   public void actionPerformed(ActionEvent ev) {
  228.     Object src = ev.getSource();
  229.    
  230.     if (src == add) this.addRelation();
  231.    
  232.     if (src == a1) {
  233.       name1.setEditable(true);
  234.       name2.setEditable(true);
  235.       name3.setEditable(false);
  236.       name4.setEditable(false);
  237.       name5.setEditable(false);
  238.       name6.setEditable(false);
  239.     }
  240.     if (src == b1) {
  241.       name1.setEditable(false);
  242.       name2.setEditable(false);
  243.       name3.setEditable(true);
  244.       name4.setEditable(true);
  245.       name5.setEditable(false);
  246.       name6.setEditable(false);
  247.     }
  248.     if (src == c1) {
  249.       name1.setEditable(false);
  250.       name2.setEditable(false);
  251.       name3.setEditable(false);
  252.       name4.setEditable(false);
  253.       name5.setEditable(true);
  254.       name6.setEditable(true);
  255.     }
  256.   }
  257.  
  258.   public void keyPressed(KeyEvent e) {}
  259.   public void keyTyped(KeyEvent e) {}
  260.   public void keyReleased(KeyEvent e) {
  261.     int src = e.getKeyCode();
  262.    
  263.     if (src == KeyEvent.VK_ENTER) {
  264.       this.addRelation();
  265.     }
  266.   }
  267. }