/*********************************************************************** This file is part of KEEL-software, the Data Mining tool for regression, classification, clustering, pattern mining and so on. Copyright (C) 2004-2010 F. Herrera (herrera@decsai.ugr.es) L. S�nchez (luciano@uniovi.es) J. Alcal�-Fdez (jalcala@decsai.ugr.es) S. Garc�a (sglopez@ujaen.es) A. Fern�ndez (alberto.fernandez@ujaen.es) J. Luengo (julianlm@decsai.ugr.es) 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/ **********************************************************************/ /* * Container.java * * Created on 8 de abril de 2010, 23:15 */ package keel.GraphInterKeel.experiments; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Vector; import javax.swing.JTextField; import java.awt.*; import javax.swing.*; import org.jdom.Element; import org.jfree.data.general.Dataset; /** * * @author tua */ public class Container_Selected extends javax.swing.JDialog { Parameters parameterData; Node orig; Vector<DinamicParameter> copia = new Vector<DinamicParameter>(); Vector<String> all_datasets = new Vector<String>(); Vector<Vector<Integer>> positions = new Vector<Vector<Integer>>(); Vector<Vector<Integer>> datano= new Vector<Vector<Integer>>(); public Experiments exp; JPanel expan2 = new JPanel(); int nexp; Joint way =new Joint(); Vector<String> problems = new Vector<String>(); Vector<Boolean> fromdata = new Vector<Boolean>(); /** Creates new form Container */ public Container_Selected(java.awt.Frame parent, boolean modal) { super(parent, modal); } //show the node public Container_Selected(java.awt.Frame parent, boolean modal,String title, Node destino, Experiments expe) { //We have to take into account if the node saved in destino //is a type_dataset or other. If is a type_dataset we can //select other new datasets, else only we can change the parameters. super(parent, modal); initComponents(); exp=expe; this.setTitle(title); this.jLabel1.setText("Algoritm: "+destino.id+"."+destino.dsc.getName(0)); this.jLabel1.setForeground(Color.BLUE); int nu=15; parameterData = (Parameters) (destino.par.elementAt(0)); //The imagen of the node is modified whether this imagen contain a * if(destino.image == Toolkit.getDefaultToolkit().getImage( this.getClass().getResource("/keel/GraphInterKeel/resources/ico/experiments/preprocessLQD_ast.gif"))) destino.image =Toolkit.getDefaultToolkit().getImage( this.getClass().getResource("/keel/GraphInterKeel/resources/ico/experiments/preprocessLQD.gif")); for(int i=0;i<destino.dsc.arg.size();i++) { // System.out.println("This is the joint with position "+i); if(destino.dsc.arg.get(i).before.getType()==Node.type_Dataset) { // System.out.println("The origen node is type_dataset "); javax.swing.JLabel titulo= new javax.swing.JLabel(); titulo.setForeground(Color.BLUE); titulo.setBounds(10, nu, 450, 25); String tipo=""; DatasetXML[] files = null; if(destino.dsc.arg.get(i).before.type_lqd==Node.LQD) { tipo="LQD"; files= exp.listData; } else if(destino.dsc.arg.get(i).before.type_lqd==Node.LQD_C) { tipo="LQD_C"; files=exp.listDataLQD_C; } else if(destino.dsc.arg.get(i).before.type_lqd==Node.C_LQD) { tipo="C_LQD"; files=exp.listDataC_LQD; } else if(destino.dsc.arg.get(i).before.type_lqd==Node.CRISP2) { tipo="CRISP"; files=exp.listDataC; } titulo.setText("Datasets from "+tipo); jPanel2.add(titulo); nu=nu+25; for(int j=0;j<destino.dsc.arg.get(i).before.dsc.getNamesLength();j++) { if(destino.dsc.arg.get(i).contain(destino.dsc.arg.get(i).before.dsc.getName(j))==true) { // System.out.println("The dataset is contained in destine "); javax.swing.JCheckBox data= new javax.swing.JCheckBox(); data.setForeground(Color.red); data.setBounds(1, nu, 400, 25); data.setText(destino.dsc.arg.get(i).before.dsc.getName(j)); all_datasets.addElement(destino.dsc.arg.get(i).before.dsc.getName(j)); fromdata.addElement(true); data.addActionListener(new Container_Selected_data_Show_actionAdapter(this,data,destino.dsc.arg.get(i))); jPanel2.add(data); data.setSelected(true); int pos=0; int para_pos=0; int fin=0; javax.swing.JPanel panel = new javax.swing.JPanel(); panel.setBackground(new Color(201, 216, 237)); // NOI18N org.jdesktop.layout.GroupLayout panelLayout = new org.jdesktop.layout.GroupLayout(panel); panel.setLayout(panelLayout); nu=nu+25; int posicion_para=destino.dsc.arg.get(i).position_name(destino.dsc.arg.get(i).before.dsc.getName(j)); for(int p=0;p<destino.dsc.arg.get(i).parameters.get(posicion_para).size();p++) { Vector<String> contain = destino.dsc.arg.get(i).parameters.get(posicion_para).get(p); javax.swing.JLabel ins= new javax.swing.JLabel(); ins.setBounds(20+pos, nu, 130, 25); pos=pos+150; if(p==0) ins.setText("Instances: "+contain.get(0)); else if(p==1) { Vector<String> cla=destino.dsc.arg.get(i).parameters.get(posicion_para).get(3); ins.setText("Classes: "+contain.get(0)+" "+cla); } else if (p==2) ins.setText("Attributes: "+contain.get(0)); jPanel2.add(ins); //nu=nu+15; if(p>3 && p<destino.dsc.arg.get(i).parameters.get(posicion_para).size()-1) //the dinamic parameters { javax.swing.JLabel par= new javax.swing.JLabel(); par.setText("Parameter "+para_pos+": "+parameterData.descriptions.get(para_pos)); panel.add(par); par.setBounds(50, fin, 150, 25); javax.swing.JLabel type= new javax.swing.JLabel(); /* if(parameterData.parameterType.get(para_pos).toString().compareTo("list")==0 || parameterData.parameterType.get(para_pos).toString().compareTo("List")==0) { javax.swing.JComboBox value = new javax.swing.JComboBox(); panel.add(value); value.setBounds(220, fin, 100, 25); value.setVisible(true); System.out.println(parameterData.domain.get(para_pos)); for (int v = 0; v < parameterData.getDomain(p-4).size(); v++) { value.addItem( parameterData.getDomainValue(para_pos, v)); if(parameterData.getDomainValue(para_pos,v).compareTo(contain.toString())==0) value.setSelectedIndex(v); } value.setEnabled(true); value.addActionListener(new Container_Selected_Property_actionAdapter(this,value,destino.dsc.arg.get(i),destino.dsc.arg.get(i).before.dsc.getName(j))); type.setText(parameterData.parameterType.get(para_pos).toString()); }*/ //else // { javax.swing.JTextField value = new javax.swing.JTextField(); value.setText(contain.toString()); if(parameterData.descriptions.get(para_pos).toString().compareTo("Classes")==0 || parameterData.descriptions.get(para_pos).toString().compareTo("Costs")==0) { if(parameterData.descriptions.get(para_pos).toString().compareTo("Classes")==0) value.setEnabled(false); else value.setEnabled(true); type.setText("Set of "+parameterData.parameterType.get(para_pos).toString()); } else { type.setText(parameterData.parameterType.get(para_pos).toString()); } value.setBounds(220, fin, 100, 25); String nombre=destino.dsc.arg.get(i).before.dsc.name[j].toString(); value.addActionListener(new Container_Selected_Value_Show_actionAdapter(this,value,p,destino.dsc.arg.get(i),nombre)); panel.add(value); //} panel.add(type); type.setBounds(340, fin, 75, 25); fin=fin+25; para_pos++; } if(p==destino.dsc.arg.get(i).parameters.get(posicion_para).size()-1) { javax.swing.JLabel par= new javax.swing.JLabel(); par.setText("Parameter: Dataset "); panel.add(par); par.setBounds(50, fin, 150, 25); javax.swing.JTextField type_data_used = new javax.swing.JTextField(); panel.add(type_data_used); type_data_used.setBounds(220, fin, 100, 25); type_data_used.setVisible(true); fin=fin+25; type_data_used.setEnabled(false); type_data_used.setText(contain.toString()); problems.addElement(destino.dsc.arg.get(i).problem.get(posicion_para)); } } panel.setBounds(45,nu+35,this.getWidth()-100,fin); jPanel2.add(panel); nu=nu+fin+55; } // if detino contain the dataset else // Save the node no selected { // destino.dsc.arg.get(i).before.dsc.getName(j) int position=0; for (int f = 0; f < files.length; f++) { //System.out.println (" Data de la lista: "+files[f].nameAbr + " en el nodo " + destino.dsc.arg.get(i).before.dsc.getName(j) ); if (files[f].nameAbr.equalsIgnoreCase(destino.dsc.arg.get(i).before.dsc.getName(j))) { // System.out.println(files[f].fuzzy+ " nombre seria "+destino.dsc.arg.get(i).before.dsc.getName(j)); // System.out.println(((Parameters)destino.par.elementAt(0)).fuzzy); position=f; break; } } if((files[position].fuzzy==true && ((Parameters)destino.par.elementAt(0)).fuzzy==false) || (files[position].exh_test==false && destino.dsc.getName(0).compareTo("FGFS_LQD_Base")==0)) position=0; //JOptionPane.showMessageDialog(this, //"The algorithm "+destino.dsc.getName(0)+ "only support interval data. File "+destino.dsc.arg.get(i).before.dsc.getName(j)+" is fuzzy.","Warning", JOptionPane.WARNING_MESSAGE); else { //System.out.println("The dataset is not contained in destine "); Vector<Integer> data_joint = new Vector<Integer>(); data_joint.addElement(j); data_joint.addElement(i); datano.addElement(data_joint); } } }//FOR all the datasets in the previous node (node saved in destine) for(int c=0;c<destino.dsc.arg.get(i).parameters.size();c++) { DinamicParameter contain = new DinamicParameter(); for(int j=0;j<destino.dsc.arg.get(i).parameters.get(c).size();j++) { Vector<String> v1= new Vector<String>(); for(int v=0;v<destino.dsc.arg.get(i).parameters.get(c).get(j).size();v++) { v1.addElement(destino.dsc.arg.get(i).parameters.get(c).get(j).get(v)); } contain.parameter_data.addElement(v1); } copia.addElement(contain); } } // for the node is type_dataset else // is other type so we can not choose datasets only chance parrameters { javax.swing.JLabel titulo= new javax.swing.JLabel(); titulo.setForeground(Color.BLUE); titulo.setBounds(10, nu, 450, 25); titulo.setText("Datasets from "+destino.dsc.arg.get(i).before.dsc.getName()); jPanel2.add(titulo); nu=nu+25; for(int j=0;j<destino.dsc.arg.get(i).data_selected.size();j++) { javax.swing.JLabel data= new javax.swing.JLabel(); data.setForeground(Color.red); data.setBounds(10, nu, 400, 25); data.setText(destino.dsc.arg.get(i).data_selected.get(j)); data.setText(destino.dsc.arg.get(i).problem.get(j)); jPanel2.add(data); all_datasets.addElement(destino.dsc.arg.get(i).data_selected.get(j)); fromdata.addElement(false); problems.addElement(destino.dsc.arg.get(i).problem.get(j)); nu=nu+25; int pos=0; int para_pos=0; int fin=0; javax.swing.JPanel panel = new javax.swing.JPanel(); panel.setBackground(new Color(201, 216, 237)); // NOI18N org.jdesktop.layout.GroupLayout panelLayout = new org.jdesktop.layout.GroupLayout(panel); panel.setLayout(panelLayout); for(int p=0;p<destino.dsc.arg.get(i).parameters.get(j).size();p++) { Vector<String> contain = destino.dsc.arg.get(i).parameters.get(j).get(p); javax.swing.JLabel ins= new javax.swing.JLabel(); ins.setBounds(pos+20, nu, 130, 25); pos=pos+150; if(p==0) ins.setText("Instances: "+contain.get(0)); else if(p==1) { Vector<String> cla=destino.dsc.arg.get(i).parameters.get(j).get(3); ins.setText("Classes: "+contain.get(0)+" "+cla); } else if (p==2) ins.setText("Attributes: "+contain.get(0)); jPanel2.add(ins); //nu=nu+15; if(p>3 && p!=destino.dsc.arg.get(i).parameters.get(j).size()-1) //the dinamic parameters { javax.swing.JLabel par= new javax.swing.JLabel(); par.setText("Parameter "+para_pos+": "+parameterData.descriptions.get(para_pos)); panel.add(par); par.setBounds(50, fin, 150, 25); javax.swing.JLabel type= new javax.swing.JLabel(); /*if(parameterData.parameterType.get(para_pos).toString().compareTo("list")==0 || parameterData.parameterType.get(para_pos).toString().compareTo("List")==0) { javax.swing.JComboBox value = new javax.swing.JComboBox(); panel.add(value); value.setBounds(220, fin, 100, 25); value.setVisible(true); System.out.println(parameterData.domain.get(para_pos)); for (int v = 0; v < parameterData.getDomain(para_pos).size(); v++) { value.addItem( parameterData.getDomainValue(para_pos, v)); if(parameterData.getDomainValue(para_pos,v).compareTo(contain.toString())==0) value.setSelectedIndex(v); } value.setEnabled(true); value.addActionListener(new Container_Selected_Property_actionAdapter(this,value,destino.dsc.arg.get(i),destino.dsc.arg.get(i).before.dsc.getName(j))); type.setText(parameterData.parameterType.get(para_pos).toString()); }*/ // else //{ javax.swing.JTextField value = new javax.swing.JTextField(); value.setText(contain.toString()); if(parameterData.descriptions.get(para_pos).toString().compareTo("Classes")==0 || parameterData.descriptions.get(para_pos).toString().compareTo("Costs")==0) { if(parameterData.descriptions.get(para_pos).toString().compareTo("Classes")==0) value.setEnabled(false); type.setText("Set of "+parameterData.parameterType.get(para_pos).toString()); } else { type.setText(parameterData.parameterType.get(para_pos).toString()); } value.setBounds(220, fin, 100, 25); //String nombre=destino.dsc.arg.get(i).data_selected.get(j); String nombre=destino.dsc.arg.get(i).problem.get(j); value.addActionListener(new Container_Selected_Value_Show_Ant_actionAdapter(this,value,p,destino.dsc.arg.get(i),nombre)); panel.add(value); // } panel.add(type); type.setBounds(340, fin, 75, 25); fin=fin+25; para_pos++; } if(p==destino.dsc.arg.get(i).parameters.get(j).size()-1) { javax.swing.JLabel par= new javax.swing.JLabel(); par.setText("Parameter: Dataset "); panel.add(par); par.setBounds(50, fin, 150, 25); javax.swing.JTextField type_data_used = new javax.swing.JTextField(); panel.add(type_data_used); type_data_used.setBounds(220, fin, 100, 25); type_data_used.setVisible(true); fin=fin+25; type_data_used.setEnabled(false); type_data_used.setText(contain.toString()); } } panel.setBounds(45,nu+35,this.getWidth()-100,fin); jPanel2.add(panel); nu=nu+fin+55; } for(int c=0;c<destino.dsc.arg.get(i).parameters.size();c++) { DinamicParameter contain = new DinamicParameter(); for(int j=0;j<destino.dsc.arg.get(i).parameters.get(c).size();j++) { Vector<String> v1= new Vector<String>(); for(int v=0;v<destino.dsc.arg.get(i).parameters.get(c).get(j).size();v++) { v1.addElement(destino.dsc.arg.get(i).parameters.get(c).get(j).get(v)); } contain.parameter_data.addElement(v1); } copia.addElement(contain); } } destino.dsc.arg.get(i).information(); } nexp=nu; int hei=0; for(int v=0;v<datano.size() ;v++) { System.out.println("The "+v+" dataset not contained in the joint "+datano.get(v).get(1)); JButton data= new JButton(); data.setForeground(Color.black); //data.setBackground(new Color(255, 253, 202)); data.setBackground(Color.yellow); data.setText(destino.dsc.arg.get(datano.get(v).get(1)).before.dsc.getName(datano.get(v).get(0))); data.addActionListener(new Container_Selected_datano_actionAdapter(this,v,destino.dsc.arg.get(datano.get(v).get(1)),destino)); expan2.add(data); hei=hei+15; } expan2.setBounds(15, nexp, jPanel2.getWidth()-30,hei+15); jPanel2.add(expan2); javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, nu+hei+10, Short.MAX_VALUE) ); } //create the form when the node is different a type_dataset public Container_Selected(java.awt.Frame parent, boolean modal,Node origen, Node destino,Experiments expe) { super(parent, modal); initComponents(); this.setTitle("Datasets and its parameters"); this.jLabel1.setText("Algoritm: "+destino.id+"."+destino.dsc.getName(0)); this.jLabel1.setForeground(Color.BLUE); orig=origen; int nu=15; //destino.dsc.arg.addElement(new Joint()); //destino.dsc.arg.get(destino.dsc.arg.size()-1).setNode(origen); way.setNode(orig); way.type_lqd= origen.dsc.arg.get(0).type_lqd; // all the same type (determined in the connections) DatasetXML[] files = null; if(origen.getTypelqd()==Node.LQD) files= expe.listData; else if(origen.getTypelqd()==Node.LQD_C) files=expe.listDataLQD_C; else if(origen.getTypelqd()==Node.C_LQD) files=expe.listDataC_LQD; else if(origen.getTypelqd()==Node.CRISP2) files=expe.listDataC; int position=0; for(int i=0;i<origen.dsc.arg.size();i++) { for(int d=0;d<origen.dsc.arg.get(i).data_selected.size();d++) { for (int j = 0; j < files.length; j++) { //System.out.println (" Data de la lista: "+files[j].nameAbr + " en el nodo " + origen.dsc.arg.get(i).data_selected.get(d)); if (files[j].nameAbr.equalsIgnoreCase(origen.dsc.arg.get(i).data_selected.get(d))) { //System.out.println(files[j].fuzzy+ " nombre seria "+origen.dsc.name[i]); //System.out.println(((Parameters)destino.par.elementAt(0)).fuzzy); position=j; break; } } if(files[position].fuzzy==true && ((Parameters)destino.par.elementAt(0)).fuzzy==false) JOptionPane.showMessageDialog(this, "The algorithm "+destino.dsc.getName(0)+ " only support interval data. File "+origen.dsc.arg.get(i).data_selected.get(d)+" is fuzzy.","Warning", JOptionPane.WARNING_MESSAGE); else if (files[position].exh_test==false && destino.dsc.getName(0).compareTo("FGFS_LQD_Base")==0) JOptionPane.showMessageDialog(this, "The algorithm "+destino.dsc.getName(0)+ " only support exhaustive test. File "+origen.dsc.arg.get(i).data_selected.get(d)+" no suppor it.","Warning", JOptionPane.WARNING_MESSAGE); else { javax.swing.JLabel data= new javax.swing.JLabel(); data.setForeground(Color.red); data.setBounds(10, nu, 400, 25); //data.setText(origen.dsc.arg.get(i).data_selected.get(d)); data.setText(origen.id+"."+origen.dsc.getName()+"-"+origen.dsc.arg.get(i).problem.get(d)); jPanel2.add(data); way.insertproblem(origen.id+"."+origen.dsc.getName()+"-"+origen.dsc.arg.get(i).problem.get(d)); way.insertDataSelected(origen.dsc.arg.get(i).data_selected.get(d)); way.getdataSelected(); nu=nu+25; int more=0; more=copy_description_dataset(d,origen.dsc.arg.get(i),destino,nu); jPanel2.setBorder(javax.swing.BorderFactory.createLineBorder(Color.black)); nu=nu+more; } } } for(int i=0;i<way.parameters.size();i++) { DinamicParameter contain = new DinamicParameter(); for(int j=0;j<way.parameters.get(i).size();j++) { Vector<String> v1= new Vector<String>(); for(int v=0;v<way.parameters.get(i).get(j).size();v++) { v1.addElement(way.parameters.get(i).get(j).get(v)); } contain.parameter_data.addElement(v1); } copia.addElement(contain); } destino.dsc.arg.addElement(way); javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, nu+20, Short.MAX_VALUE) ); } //create the form when the node is type-dataset public Container_Selected(java.awt.Frame parent, boolean modal,String title,Node origen, Node destino, Experiments exp) { //We obtain the form when the origen node is a type-dataset and therefore //we can select the datasets and its parameters super(parent, modal); initComponents(); this.setTitle(title); this.jLabel1.setText("Algoritm: "+destino.id+"."+destino.dsc.getName(0)); this.jLabel1.setForeground(Color.BLUE); orig=origen; int nu=15; //destino.dsc.arg.addElement(new Joint()); //destino.dsc.arg.get(destino.dsc.arg.size()-1).setNode(origen); way.setNode(orig); if(orig.type_lqd==Node.LQD) way.type_lqd = "LQD"; else if(orig.type_lqd==Node.LQD_C) way.type_lqd = "CRISP"; else if(orig.type_lqd==Node.C_LQD) way.type_lqd = "LQD"; else if(orig.type_lqd==Node.CRISP2) way.type_lqd = "CRISP"; DatasetXML[] files=exp.listData; if(origen.getTypelqd()==Node.LQD) files= exp.listData; else if(origen.getTypelqd()==Node.LQD_C) files=exp.listDataLQD_C; else if(origen.getTypelqd()==Node.C_LQD) files=exp.listDataC_LQD; else if(origen.getTypelqd()==Node.CRISP2) files=exp.listDataC; int position=0; for(int i=0;i<origen.dsc.name.length;i++) { for (int j = 0; j < files.length; j++) { System.out.println (" Data de la lista: "+files[j].nameAbr + " en el nodo " + origen.dsc.name[i] ); if (files[j].nameAbr.equalsIgnoreCase(origen.dsc.name[i])) { System.out.println(files[j].fuzzy+ " nombre seria "+origen.dsc.name[i]); System.out.println(((Parameters)destino.par.elementAt(0)).fuzzy); position=j; break; } } if(files[position].fuzzy==true && ((Parameters)destino.par.elementAt(0)).fuzzy==false) JOptionPane.showMessageDialog(this, "The algorithm "+destino.dsc.getName(0)+ " only support interval data. File "+origen.dsc.name[i]+" is fuzzy.","Warning", JOptionPane.WARNING_MESSAGE); else if (files[position].exh_test==false && destino.dsc.getName(0).compareTo("FGFS_LQD_Base")==0) JOptionPane.showMessageDialog(this, "The algorithm "+destino.dsc.getName(0)+ " only support exhaustive test. File "+origen.dsc.name[i]+" no suppor it.","Warning", JOptionPane.WARNING_MESSAGE); else { javax.swing.JCheckBox data= new javax.swing.JCheckBox(); data.setForeground(Color.red); data.setSelected(true); //data.setBorderPainted(true); data.setBounds(1, nu, 400, 25); data.setText(origen.dsc.name[i]); //data.addActionListener(new Container_Selected_data_actionAdapter(this,data,destino.dsc.arg.get(destino.dsc.arg.size()-1))); data.addActionListener(new Container_Selected_data_actionAdapter(this,data,way)); jPanel2.add(data); nu=nu+25; int more=0; //Save the data of the first dataset if(origen.getTypelqd()==Node.LQD) { more=load_description_dataset(i,origen,exp.listData,way,destino,nu); jPanel2.setBorder(javax.swing.BorderFactory.createLineBorder(Color.orange)); } else if(origen.getTypelqd()==Node.LQD_C) { more=load_description_dataset(i,origen,exp.listDataLQD_C,way,destino,nu); jPanel2.setBorder(javax.swing.BorderFactory.createLineBorder(Color.yellow)); } else if(origen.getTypelqd()==Node.C_LQD) { more=load_description_dataset(i,origen,exp.listDataC_LQD,way,destino,nu); jPanel2.setBorder(javax.swing.BorderFactory.createLineBorder(Color.BLUE)); } else if(origen.getTypelqd()==Node.CRISP2) { more=load_description_dataset(i,origen,exp.listDataC,way,destino,nu); jPanel2.setBorder(javax.swing.BorderFactory.createLineBorder(Color.gray)); } nu=nu+more; } } for(int i=0;i<way.parameters.size();i++) { DinamicParameter contain = new DinamicParameter(); for(int j=0;j<way.parameters.get(i).size();j++) { Vector<String> v1= new Vector<String>(); for(int v=0;v<way.parameters.get(i).get(j).size();v++) { v1.addElement(way.parameters.get(i).get(j).get(v)); } contain.parameter_data.addElement(v1); } copia.addElement(contain); } destino.dsc.arg.addElement(way); javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, nu+20, Short.MAX_VALUE) ); } /* * We obtain the name of all dataset and the number of instances, class and atributtes * of each one of them. An these information is saved in the destine node. Also we save * the parameters that we need to run the algorithm (destine node) */ private int copy_description_dataset(int position,Joint origen,Node destino, int nu) { DinamicParameter parar_data = new DinamicParameter(); javax.swing.JLabel ins= new javax.swing.JLabel(); ins.setBounds(20, nu, 100, 25); ins.setText("Instances: "+origen.parameters.get(position).parameter_data.get(0)); jPanel2.add(ins); javax.swing.JLabel cla= new javax.swing.JLabel(); cla.setBounds(150, nu, 150, 25); cla.setText("Classes: "+origen.parameters.get(position).parameter_data.get(1)+" "+origen.parameters.get(position).parameter_data.get(3)); jPanel2.add(cla); javax.swing.JLabel atri= new javax.swing.JLabel(); atri.setBounds(310, nu, 100, 25); atri.setText("Attributes: "+origen.parameters.get(position).parameter_data.get(2)); jPanel2.add(atri); //Save the instances in the vector Vector<String> parameterI = new Vector<String>(); parameterI.addElement(""+origen.parameters.get(position).parameter_data.get(0).get(0)); parar_data.insert(parameterI); Vector<String> parameterC = new Vector<String>(); parameterC.addElement(""+origen.parameters.get(position).parameter_data.get(1).get(0)); parar_data.insert(parameterC); Vector<String> parameterA = new Vector<String>(); parameterA.addElement(""+origen.parameters.get(position).parameter_data.get(2).get(0)); parar_data.insert(parameterA); parar_data.insert(origen.parameters.get(position).parameter_data.get(3)); int pos=nu; //Rest of parameters. Needed by the algorithm parameterData = (Parameters) (destino.par.elementAt(0)); javax.swing.JPanel panel = new javax.swing.JPanel(); panel.setBackground(new Color(201, 216, 237)); // NOI18N org.jdesktop.layout.GroupLayout panelLayout = new org.jdesktop.layout.GroupLayout(panel); panel.setLayout(panelLayout); int fin=0; for(int pa=0;pa<parameterData.getNumParameters();pa++) { //System.out.println("number of parameters "+parameterData.getNumParameters()); /*System.out.println( " default values "+ parameterData.getDefaultValue(pa));*/ Vector<String> p= new Vector<String>(); javax.swing.JLabel par= new javax.swing.JLabel(); par.setText("Parameter "+pa+": "+parameterData.descriptions.get(pa)); panel.add(par); par.setBounds(50, fin, 150, 25); javax.swing.JLabel type= new javax.swing.JLabel(); /*if(parameterData.parameterType.get(pa).toString().compareTo("list")==0 || parameterData.parameterType.get(pa).toString().compareTo("List")==0) { javax.swing.JComboBox value = new javax.swing.JComboBox(); panel.add(value); value.setBounds(220, fin, 100, 25); value.setVisible(true); System.out.println(parameterData.domain.get(pa)); for (int v = 0; v < parameterData.getDomain(pa).size(); v++) { value.addItem( parameterData.getDomainValue(pa, v)); } p.add(value.getSelectedItem().toString()); value.setEnabled(true); String nombre=origen.data_selected.get(position); value.addActionListener(new Container_Selected_Property_actionAdapter(this,value,way,nombre) ); type.setText(parameterData.parameterType.get(pa).toString()); }*/ javax.swing.JTextField value = new javax.swing.JTextField(); int fc=100; if(parameterData.descriptions.get(pa).toString().contains("Files")==true && origen.data_selected.get(position).contains("C_LQD")==true) { //System.out.println("deberia de entrar "+parameterData.descriptions.get(pa)+" y el valor del dataset "+ destin.before.dsc.getName(i)); value.setText("10"); type.setText(parameterData.parameterType.get(pa).toString()); } else if(parameterData.descriptions.get(pa).toString().compareTo("Classes")==0) { value.setText(parar_data.get(3).toString()); value.setEnabled(false); type.setText("Set of "+parameterData.parameterType.get(pa).toString()); } else if(parameterData.descriptions.get(pa).toString().compareTo("Costs")==0 && destino.dsc.getSubtype()==Node.type_Preprocess) { value.setText("["); for(int cl=0;cl<Integer.parseInt(parar_data.get(1).get(0));cl++) { if(cl==(Integer.parseInt(parar_data.get(1).get(0)))-1) { if(Integer.parseInt(parar_data.get(1).get(0))==2) value.setText(value.getText()+9+"]"); else value.setText(value.getText()+5+"]"); } else { if(Integer.parseInt(parar_data.get(1).get(0))==2) value.setText(value.getText()+4+","); else value.setText(value.getText()+5+","); } } type.setText("Set of "+parameterData.parameterType.get(pa).toString()); } else if(parameterData.descriptions.get(pa).toString().compareTo("Costs")==0 && destino.dsc.getSubtype()==Node.type_Method) { value.setText("["); for(int f=0;f<Integer.parseInt(parar_data.get(1).get(0));f++) { fc=fc+10; for(int cl=0;cl<Integer.parseInt(parar_data.get(1).get(0));cl++) { if(f==(Integer.parseInt(parar_data.get(1).get(0)))-1 && cl==(Integer.parseInt(parar_data.get(1).get(0)))-1) { if(Integer.parseInt(parar_data.get(1).get(0))==2) value.setText(value.getText()+9+"]"); else value.setText(value.getText()+5+"]"); } /* else if(cl==(Integer.parseInt(parar_data.get(1).get(0)))-1) { if(Integer.parseInt(parar_data.get(1).get(0))==2) value.setText(value.getText()+4+"\n"); else value.setText(value.getText()+5+"\n"); }*/ else { if(Integer.parseInt(parar_data.get(1).get(0))==2) value.setText(value.getText()+4+","); else value.setText(value.getText()+5+","); } } } type.setText("Set of Cost"); } else { value.setText(parameterData.getDefaultValue(pa)); type.setText(parameterData.parameterType.get(pa).toString()); } value.setBounds(220, fin, fc, 25); String nombre=origen.data_selected.get(position); value.addActionListener(new Container_Selected_Value_actionAdapter(this,value,pa,way,nombre)); panel.add(value); panel.add(type); type.setBounds(240+fc, fin, 75, 25); if(value.getText().contains("{")==true || value.getText().contains("[")==true) { int posi=0; int inicio=1; posi=value.getText().toString().indexOf(',',posi); while(posi!=-1) { p.addElement(value.getText().substring(inicio, posi)); inicio=posi+1; posi=value.getText().toString().indexOf(',',posi+1); } p.addElement(value.getText().substring(inicio, value.getText().length()-1)); } else { p.addElement(value.getText()); } parar_data.insert(p); fin=fin+25; } //Insert the type of dataset that we can use javax.swing.JLabel par= new javax.swing.JLabel(); par.setText("Parameter: Dataset "); panel.add(par); par.setBounds(50, fin, 150, 25); javax.swing.JTextField type_data_used = new javax.swing.JTextField(); type_data_used.setEnabled(false); panel.add(type_data_used); type_data_used.setBounds(220, fin, 100, 25); type_data_used.setVisible(true); fin=fin+25; if(origen.parameters.get(position).parameter_data.get(origen.parameters.get(position).parameter_data.size()-1).get(0).compareTo("O-100boost")==0) type_data_used.setText("100boost"); else if (origen.parameters.get(position).parameter_data.get(origen.parameters.get(position).parameter_data.size()-1).get(0).compareTo("O-10cv")==0) type_data_used.setText("10cv"); else if (origen.parameters.get(position).parameter_data.get(origen.parameters.get(position).parameter_data.size()-1).get(0).compareTo("10cv")==0) type_data_used.setText("10cv"); else if (origen.parameters.get(position).parameter_data.get(origen.parameters.get(position).parameter_data.size()-1).get(0).compareTo("100boost")==0) type_data_used.setText("100boost"); Vector<String> p = new Vector<String>(); p.add(type_data_used.getText()); parar_data.insert(p); panel.setBounds(45,pos+35,this.getWidth()-100,fin); jPanel2.add(panel); way.insertParameter(parar_data); return fin+55; } /* * We obtain the name of all dataset and the number of instances, class and atributtes * of each one of them. An these information is saved in the destine node. Also we save * the parameters that we need to run the algorithm (destine node) */ private int load_description_dataset(int i,Node origen,DatasetXML[] list,Joint way,Node destino, int nu) { DinamicParameter parar_data = new DinamicParameter(); for (int j = 0; j < list.length; j++) { System.out.println (" Data de la lista: "+list[j].nameAbr + " en el nodo " + origen.dsc.name[i] ); if (list[j].nameAbr.equalsIgnoreCase(origen.dsc.name[i])) { javax.swing.JLabel ins= new javax.swing.JLabel(); ins.setBounds(100, nu, 100, 25); ins.setText("Instances: "+list[j].nInstances); jPanel2.add(ins); javax.swing.JLabel cla= new javax.swing.JLabel(); cla.setBounds(240, nu, 150, 25); cla.setText("Classes: "+list[j].nClasses+" {"+list[j].classes+"}"); jPanel2.add(cla); javax.swing.JLabel atri= new javax.swing.JLabel(); atri.setBounds(390, nu, 100, 25); atri.setText("Attributes: "+list[j].nAttributes); jPanel2.add(atri); //Save the instances in the vector Vector<String> parameterI = new Vector<String>(); parameterI.addElement(""+list[j].nInstances); parar_data.insert(parameterI); Vector<String> parameterC = new Vector<String>(); parameterC.addElement(""+list[j].nClasses); parar_data.insert(parameterC); Vector<String> parameterA = new Vector<String>(); parameterA.addElement(""+list[j].nAttributes); parar_data.insert(parameterA); parar_data.insert(list[j].classes); way.insertDataSelected(origen.dsc.name[i]); way.getdataSelected(); break; } } int pos=nu; //Rest of parameters. Needed by the algorithm parameterData = (Parameters) (destino.par.elementAt(0)); javax.swing.JPanel panel = new javax.swing.JPanel(); panel.setBackground(new Color(201, 216, 237)); // NOI18N org.jdesktop.layout.GroupLayout panelLayout = new org.jdesktop.layout.GroupLayout(panel); panel.setLayout(panelLayout); int fin=0; for(int pa=0;pa<parameterData.getNumParameters();pa++ ) { Vector<String> p= new Vector<String>(); javax.swing.JLabel par= new javax.swing.JLabel(); par.setText("Parameter "+pa+": "+parameterData.descriptions.get(pa)); panel.add(par); par.setBounds(50, fin, 150, 25); javax.swing.JLabel type= new javax.swing.JLabel(); /* if((parameterData.parameterType.get(pa).toString().compareTo("list")==0 || parameterData.parameterType.get(pa).toString().compareTo("List")==0)) { javax.swing.JComboBox value = new javax.swing.JComboBox(); panel.add(value); value.setBounds(220, fin, 100, 25); value.setVisible(true); System.out.println(parameterData.domain.get(pa)); for (int v = 0; v < parameterData.getDomain(pa).size(); v++) value.addItem( parameterData.getDomainValue(pa, v)); p.add(value.getSelectedItem().toString()); value.setEnabled(true); value.addActionListener(new Container_Selected_Property_actionAdapter(this,value,way,origen.dsc.name[i].toString()) ); type.setText(parameterData.parameterType.get(pa).toString()); }*/ //else // { javax.swing.JTextField value = new javax.swing.JTextField(); int fc=100; if(parameterData.descriptions.get(pa).toString().contains("Files")==true && origen.dsc.name[i].contains("C_LQD")==true) { //System.out.println("deberia de entrar "+parameterData.descriptions.get(pa)+" y el valor del dataset "+ destin.before.dsc.getName(i)); value.setText("10"); type.setText(parameterData.parameterType.get(pa).toString()); } else if(parameterData.descriptions.get(pa).toString().compareTo("Classes")==0) { value.setText(parar_data.get(3).toString()); value.setEnabled(false); type.setText("Set of "+parameterData.parameterType.get(pa).toString()); } else if(parameterData.descriptions.get(pa).toString().compareTo("Costs")==0 && destino.dsc.getSubtype()==Node.type_Preprocess) { value.setText("["); for(int cl=0;cl<Integer.parseInt(parar_data.get(1).get(0));cl++) { if(cl==(Integer.parseInt(parar_data.get(1).get(0)))-1) { if(Integer.parseInt(parar_data.get(1).get(0))==2) value.setText(value.getText()+9+"]"); else value.setText(value.getText()+5+"]"); } else { if(Integer.parseInt(parar_data.get(1).get(0))==2) value.setText(value.getText()+4+","); else value.setText(value.getText()+5+","); } } type.setText("Set of Cost"); } else if(parameterData.descriptions.get(pa).toString().compareTo("Costs")==0 && destino.dsc.getSubtype()==Node.type_Method) { //value.setText("BOTON MATRIZ"); value.setText("["); for(int f=0;f<Integer.parseInt(parar_data.get(1).get(0));f++) { fc=fc+10; for(int cl=0;cl<Integer.parseInt(parar_data.get(1).get(0));cl++) { if(f==(Integer.parseInt(parar_data.get(1).get(0)))-1 && cl==(Integer.parseInt(parar_data.get(1).get(0)))-1) { if(Integer.parseInt(parar_data.get(1).get(0))==2) value.setText(value.getText()+9+"]"); else value.setText(value.getText()+5+"]"); } /* else if(cl==(Integer.parseInt(parar_data.get(1).get(0)))-1) { if(Integer.parseInt(parar_data.get(1).get(0))==2) value.setText(value.getText()+4+"\n"); else value.setText(value.getText()+5+"\n"); }*/ else { if(Integer.parseInt(parar_data.get(1).get(0))==2) value.setText(value.getText()+4+","); else value.setText(value.getText()+5+","); } } } type.setText("Set of Cost"); } else { value.setText(parameterData.getDefaultValue(pa)); type.setText(parameterData.parameterType.get(pa).toString()); } value.setBounds(220, fin, fc, 25); String nombre=origen.dsc.name[i].toString(); value.addActionListener(new Container_Selected_Value_actionAdapter(this,value,pa,way,nombre)); panel.add(value); if(value.getText().contains("{")==true || value.getText().contains("[")==true) { int position=0; int inicio=1; position=value.getText().toString().indexOf(',',position); while(position!=-1) { p.addElement(value.getText().substring(inicio, position)); inicio=position+1; position=value.getText().toString().indexOf(',',position+1); } p.addElement(value.getText().substring(inicio, value.getText().length()-1)); } else { p.addElement(value.getText()); } //} panel.add(type); type.setBounds(240+fc, fin, 75, 25); parar_data.insert(p); fin=fin+25; } //Insert the type of dataset that we can use javax.swing.JLabel par= new javax.swing.JLabel(); par.setText("Parameter: Partitions_Data "); panel.add(par); par.setBounds(50, fin, 150, 25); javax.swing.JComboBox type_data_used = new javax.swing.JComboBox(); panel.add(type_data_used); type_data_used.setBounds(220, fin, 100, 25); type_data_used.setVisible(true); fin=fin+25; for(int p=0;p<parameterData.dataset_used.size();p++) { System.out.println(parameterData.dataset_used.get(p)); type_data_used.addItem(parameterData.dataset_used.get(p)); } if(parameterData.dataset_used.size()==0) type_data_used.addItem("10cv"); else type_data_used.addActionListener(new Container_Selected_Property_actionAdapter(this,type_data_used,way,origen.dsc.name[i].toString()) ); Vector<String> p = new Vector<String>(); p.add(type_data_used.getSelectedItem().toString()); parar_data.insert(p); panel.setBounds(45,pos+35,this.getWidth()-100,fin); jPanel2.add(panel); way.insertParameter(parar_data); way.problem.addElement(origen.dsc.name[i]+"-"+type_data_used.getSelectedItem().toString()); problems.addElement(origen.dsc.name[i]+"-"+type_data_used.getSelectedItem().toString()); return fin+55; } public void expan(ActionEvent e,int v,Joint destin,Node destino) { javax.swing.JCheckBox data= new javax.swing.JCheckBox(); data.setForeground(Color.red); data.setSelected(true); data.setBounds(1, nexp, 400, 25); data.setText(destin.before.dsc.getName(datano.get(v).get(0))); all_datasets.addElement(destin.before.dsc.getName(datano.get(v).get(0))); fromdata.addElement(true); //System.out.println("extiende el "+destin.before.dsc.getName(datano.get(v).get(0))); destin.data_selected.addElement(destin.before.dsc.getName(datano.get(v).get(0))); data.addActionListener(new Container_Selected_data_Show_actionAdapter(this,data,destin)); jPanel2.add(data); int more=0; if(destin.before.getTypelqd()==Node.LQD) { more=load_button(datano.get(v).get(0),destin,exp.listData,destino,nexp); jPanel2.setBorder(javax.swing.BorderFactory.createLineBorder(Color.orange)); } else if(destin.before.getTypelqd()==Node.LQD_C) { more=load_button(datano.get(v).get(0),destin,exp.listDataLQD_C,destino,nexp); jPanel2.setBorder(javax.swing.BorderFactory.createLineBorder(Color.yellow)); } else if(destin.before.getTypelqd()==Node.C_LQD) { more=load_button(datano.get(v).get(0),destin,exp.listDataC_LQD,destino,nexp); jPanel2.setBorder(javax.swing.BorderFactory.createLineBorder(Color.BLUE)); } else if(destin.before.getTypelqd()==Node.CRISP2) { more=load_button(datano.get(v).get(0),destin,exp.listDataC,destino,nexp); jPanel2.setBorder(javax.swing.BorderFactory.createLineBorder(Color.gray)); } //Reload copia //datano.remove(v); expan2.getComponent(v).setVisible(false); expan2.setBounds(15, more+nexp, expan2.getWidth(),expan2.getHeight()); nexp=more+nexp; javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, nexp+expan2.getHeight()+20, Short.MAX_VALUE) ); } private int load_button(int i,Joint destin,DatasetXML[] list,Node destino, int nu) { DinamicParameter parar_data = new DinamicParameter(); for (int j = 0; j < list.length; j++) { if (list[j].nameAbr.equalsIgnoreCase(destin.before.dsc.name[i])) { javax.swing.JLabel ins= new javax.swing.JLabel(); ins.setBounds(100, nu, 100, 25); ins.setText("Instances: "+list[j].nInstances); jPanel2.add(ins); javax.swing.JLabel cla= new javax.swing.JLabel(); cla.setBounds(240, nu, 150, 25); cla.setText("Classes: "+list[j].nClasses+" {"+list[j].classes+"}"); jPanel2.add(cla); javax.swing.JLabel atri= new javax.swing.JLabel(); atri.setBounds(390, nu, 100, 25); atri.setText("Attributes: "+list[j].nAttributes); jPanel2.add(atri); //Save the instances in the vector Vector<String> parameterI = new Vector<String>(); parameterI.addElement(""+list[j].nInstances); parar_data.insert(parameterI); Vector<String> parameterC = new Vector<String>(); parameterC.addElement(""+list[j].nClasses); parar_data.insert(parameterC); Vector<String> parameterA = new Vector<String>(); parameterA.addElement(""+list[j].nAttributes); parar_data.insert(parameterA); parar_data.insert(list[j].classes); break; } } int pos=nu; //Rest of parameters. Needed by the algorithm parameterData = (Parameters) (destino.par.elementAt(0)); javax.swing.JPanel panel = new javax.swing.JPanel(); panel.setBackground(new Color(201, 216, 237)); // NOI18N org.jdesktop.layout.GroupLayout panelLayout = new org.jdesktop.layout.GroupLayout(panel); panel.setLayout(panelLayout); int fin=0; for(int pa=0;pa<parameterData.getNumParameters();pa++ ) { Vector<String> p= new Vector<String>(); javax.swing.JLabel par= new javax.swing.JLabel(); par.setText("Parameter "+pa+": "+parameterData.descriptions.get(pa)); panel.add(par); par.setBounds(50, fin, 150, 25); javax.swing.JLabel type= new javax.swing.JLabel(); /* if(parameterData.parameterType.get(pa).toString().compareTo("list")==0 || parameterData.parameterType.get(pa).toString().compareTo("List")==0) { javax.swing.JComboBox value = new javax.swing.JComboBox(); panel.add(value); value.setBounds(220, fin, 100, 25); value.setVisible(true); System.out.println(parameterData.domain.get(pa)); System.out.println(parameterData.domain.get(pa)); for (int v = 0; v < parameterData.getDomain(pa).size(); v++) value.addItem( parameterData.getDomainValue(pa, v)); p.add(value.getSelectedItem().toString()); value.setEnabled(true); value.addActionListener(new Container_Selected_Property_actionAdapter(this,value,destin,destin.before.dsc.getName(i)) ); type.setText(parameterData.parameterType.get(pa).toString()); }*/ // else //{ javax.swing.JTextField value = new javax.swing.JTextField(); int fc=100; //System.out.println("si es file "+parameterData.descriptions.get(pa)+" y el valor del dataset "+ destin.before.dsc.getName(i)); if(parameterData.descriptions.get(pa).toString().contains("Files")==true && destin.before.dsc.getName(i).contains("C_LQD")==true) { //System.out.println("deberia de entrar "+parameterData.descriptions.get(pa)+" y el valor del dataset "+ destin.before.dsc.getName(i)); value.setText("10"); type.setText(parameterData.parameterType.get(pa).toString()); } else if(parameterData.descriptions.get(pa).toString().compareTo("Classes")==0) { value.setText(parar_data.get(3).toString()); value.setEnabled(false); type.setText("Set of "+parameterData.parameterType.get(pa).toString()); } else if(parameterData.descriptions.get(pa).toString().compareTo("Costs")==0 && destino.dsc.getSubtype()==Node.type_Preprocess) { value.setText("["); for(int cl=0;cl<Integer.parseInt(parar_data.get(1).get(0));cl++) { if(cl==(Integer.parseInt(parar_data.get(1).get(0)))-1) { if(Integer.parseInt(parar_data.get(1).get(0))==2) value.setText(value.getText()+9+"]"); else value.setText(value.getText()+5+"]"); } else { if(Integer.parseInt(parar_data.get(1).get(0))==2) value.setText(value.getText()+4+","); else value.setText(value.getText()+5+","); } } type.setText("Set of "+parameterData.parameterType.get(pa).toString()); } else if(parameterData.descriptions.get(pa).toString().compareTo("Costs")==0 && destino.dsc.getSubtype()==Node.type_Method) { //value.setText("BOTON MATRIZ"); value.setText("["); for(int f=0;f<Integer.parseInt(parar_data.get(1).get(0));f++) { fc=fc+10; for(int cl=0;cl<Integer.parseInt(parar_data.get(1).get(0));cl++) { if(f==(Integer.parseInt(parar_data.get(1).get(0)))-1 && cl==(Integer.parseInt(parar_data.get(1).get(0)))-1) { if(Integer.parseInt(parar_data.get(1).get(0))==2) value.setText(value.getText()+9+"]"); else value.setText(value.getText()+5+"]"); } /* else if(cl==(Integer.parseInt(parar_data.get(1).get(0)))-1) { if(Integer.parseInt(parar_data.get(1).get(0))==2) value.setText(value.getText()+4+"\n"); else value.setText(value.getText()+5+"\n"); }*/ else { if(Integer.parseInt(parar_data.get(1).get(0))==2) value.setText(value.getText()+4+","); else value.setText(value.getText()+5+","); } } } type.setText("Set of Cost"); } else { value.setText(parameterData.getDefaultValue(pa)); type.setText(parameterData.parameterType.get(pa).toString()); } value.setBounds(220, fin, fc, 25); String nombre=destin.before.dsc.name[i].toString(); value.addActionListener(new Container_Selected_Value_Show_actionAdapter(this,value,pa+4,destin,nombre)); panel.add(value); if(value.getText().contains("{")==true || value.getText().contains("[")==true) { int position=0; int inicio=1; position=value.getText().toString().indexOf(',',position); while(position!=-1) { p.addElement(value.getText().substring(inicio, position)); inicio=position+1; position=value.getText().toString().indexOf(',',position+1); } p.addElement(value.getText().substring(inicio, value.getText().length()-1)); } else { p.addElement(value.getText()); } //} panel.add(type); type.setBounds(240+fc, fin, 75, 25); parar_data.insert(p); fin=fin+25; } //Insert the type of dataset that we can use javax.swing.JLabel par= new javax.swing.JLabel(); par.setText("Parameter: Dataset "); panel.add(par); par.setBounds(50, fin, 150, 25); javax.swing.JComboBox type_data_used = new javax.swing.JComboBox(); panel.add(type_data_used); type_data_used.setBounds(220, fin, 100, 25); type_data_used.setVisible(true); fin=fin+25; for(int p=0;p<parameterData.dataset_used.size();p++) { System.out.println(parameterData.dataset_used.get(p)); type_data_used.addItem(parameterData.dataset_used.get(p)); } if(parameterData.dataset_used.size()==0) type_data_used.addItem("10cv"); type_data_used.setEnabled(false); Vector<String> p = new Vector<String>(); p.add(type_data_used.getSelectedItem().toString()); parar_data.insert(p); problems.addElement(destin.before.dsc.name[i]+"-"+type_data_used.getSelectedItem().toString()); destin.problem.addElement(destin.before.dsc.name[i]+"-"+type_data_used.getSelectedItem().toString()); panel.setBounds(45,pos+35,this.getWidth()-100,fin); jPanel2.add(panel); destin.insertParameter(parar_data); DinamicParameter contain = new DinamicParameter(); Vector<String> v1= new Vector<String>(); for(int va=0;va<parar_data.parameter_data.size();va++) { for(int v=0;v<parar_data.parameter_data.get(va).size();v++) { v1.addElement(parar_data.parameter_data.get(va).get(v)); } } contain.parameter_data.addElement(v1); copia.addElement(contain); return fin+55; } public void check(ActionEvent e,javax.swing.JCheckBox data_selected,Joint destin) { if(data_selected.isSelected()==false) { if(destin.data_selected.size()==1) { JOptionPane.showMessageDialog(this, "At least one dataset must be selected", "Datasets selected", JOptionPane.ERROR_MESSAGE); data_selected.setSelected(true); } else{ int position=0; for(int i=0;i<destin.data_selected.size();i++) { if(destin.data_selected.get(i).compareTo(data_selected.getText())==0) { position=i; break; } } destin.removeParameters(position); destin.removeDataset(position); destin.removeProblem(position); data_selected.setForeground(Color.black); } } else { destin.insertDataSelected(data_selected.getText()); for(int i=0;i<orig.dsc.name.length;i++) { if(orig.dsc.name[i].compareTo(data_selected.getText())==0) { destin.insertproblem(problems.get(i)); destin.insertParameter(copia.get(i)); break; } } data_selected.setForeground(Color.red); } destin.information(); } public void check_show(ActionEvent e,javax.swing.JCheckBox data_selected,Joint destin) { destin.information(); if(data_selected.isSelected()==false) { if(destin.data_selected.size()==1) { JOptionPane.showMessageDialog(this, "At least one dataset must be selected", "Datasets selected", JOptionPane.ERROR_MESSAGE); data_selected.setSelected(true); } else{ int position=0; for(int i=0;i<destin.data_selected.size();i++) { if(destin.data_selected.get(i).compareTo(data_selected.getText())==0) { position=i; break; } } destin.removeParameters(position); destin.removeDataset(position); destin.removeProblem(position); data_selected.setForeground(Color.black); } } else { destin.insertDataSelected(data_selected.getText()); for(int i=0;i<all_datasets.size();i++) { if(all_datasets.get(i).compareTo(data_selected.getText())==0 && fromdata.get(i)) { destin.insertproblem(problems.get(i)); destin.insertParameter(copia.get(i)); break; } } data_selected.setForeground(Color.red); } destin.information(); } public void value(ActionEvent e,javax.swing.JTextField value,int pa,Joint destin,String nombre) { // System.out.println("estmaos modificando "+value.getText()+" del dataset "+nombre+ " y es el parametro "+pa); int posi=0; for(int i=0;i<destin.data_selected.size();i++) { if(destin.data_selected.get(i).compareTo(nombre)==0) { posi=i; // System.out.println("la position es del datasetttttttttt "+posi); break; } } Vector<String> p = new Vector<String>(); if(value.getText().contains("{")==true || value.getText().contains("[")==true) { int position=0; int inicio=1; position=value.getText().toString().indexOf(',',position); while(position!=-1) { p.addElement(value.getText().substring(inicio, position)); inicio=position+1; position=value.getText().toString().indexOf(',',position+1); } p.addElement(value.getText().substring(inicio, value.getText().length()-1)); } else { p.addElement(value.getText()); } if(validation(p, parameterData.parameterType.get(pa).toString(),parameterData.descriptions.get(pa).toString(),pa,value)==true) { destin.getParametersP(posi).set(pa+4,p); value.setBackground(new Color(255, 253, 202)); for(int i=0;i<orig.dsc.name.length;i++) { if(orig.dsc.name[i].compareTo(nombre)==0) { copia.set(i, destin.getParametersP(posi)); break; } } } } public boolean validation(Vector<String> p,String type,String description, int pa,javax.swing.JTextField value) { //System.out.println("la descripcion es "+description); // System.out.println("y el tipo "+type); System.out.println(parameterData.domain.get(pa)); //for (int v = 0; v < parameterData.getDomain(pa).size(); v++) System.out.println("the ] is "+p.get(0).toString().indexOf(']')); System.out.println(" the length is "+(p.get(0).length())); if((p.get(0).toString().indexOf(']')<p.get(0).toString().length()) && p.get(0).toString().indexOf(']')!=-1 ) { JOptionPane.showMessageDialog(this,"Introduce the value between the []", "Value incorrected", 2); return false; } else if((type.compareTo("integer")==0 || type.compareTo("Integer")==0 || type.compareTo("real")==0 || type.compareTo("Real")==0) && description.contains("Costs")==false && description.contains("NP")==false && description.contains("MP")==false) { //control that the number does not contain letter (we have to do id) if(Float.parseFloat(p.get(0))<Float.parseFloat(parameterData.getDomainValue(pa, 0)) || Float.parseFloat(p.get(0))>Float.parseFloat(parameterData.getDomainValue(pa, 1))) { value.setText(parameterData.getDomainValue(pa, 0)); JOptionPane.showMessageDialog(this,"The value inserted is incorrect. Must be contained between "+parameterData.getDomainValue(pa, 0) +" and "+parameterData.getDomainValue(pa, 1), "Value incorrected", 2); return false; } } else if (type.compareTo("List")==0 || type.compareTo("list")==0 ) { boolean found=false; for (int v = 0; v < parameterData.getDomain(pa).size(); v++) { if(p.get(0).compareTo(parameterData.getDomainValue(pa, v))==0) { found=true; break; } } if(found==false) { value.setText(parameterData.getDomainValue(pa, 0)); JOptionPane.showMessageDialog(this,"The value inserted is incorrect. Must be "+parameterData.domain.get(pa), "Value incorrected", 2); return false; } } //} return true; } public void value_show(ActionEvent e,javax.swing.JTextField value,int pa,Joint destin,String nombre) { // System.out.println("estmaos en SHOWWWWWWWW modificando "+value.getText()+" del dataset "+nombre+ " y es el parametro "+pa); int posi=0; for(int i=0;i<destin.data_selected.size();i++) { if(destin.data_selected.get(i).compareTo(nombre)==0) { posi=i; break; } } //Falta comprobar que value sea el tipo correcto y que tenga tantas variables //como debe cada parametro (tantas como antes tenia guardadas) Vector<String> p = new Vector<String>(); if(value.getText().contains("{")==true || value.getText().contains("[")==true) { int position=0; int inicio=1; position=value.getText().toString().indexOf(',',position); while(position!=-1) { p.addElement(value.getText().substring(inicio, position)); inicio=position+1; position=value.getText().toString().indexOf(',',position+1); } p.addElement(value.getText().substring(inicio, value.getText().length()-1)); } else { p.addElement(value.getText()); } if(validation(p, parameterData.parameterType.get(pa-4).toString(),parameterData.descriptions.get(pa-4).toString(),pa-4,value)==true) { destin.getParametersP(posi).set(pa,p); value.setBackground(new Color(255, 253, 202)); DinamicParameter contain = new DinamicParameter(); for(int i=0;i<all_datasets.size();i++) { if(all_datasets.get(i).compareTo(nombre)==0) { for(int j=0;j<destin.getParametersP(posi).size();j++) { Vector<String> v= new Vector<String>(); for(int k=0;k<destin.getParametersP(posi).get(j).size();k++) v.addElement(destin.getParametersP(posi).get(j).get(k)); contain.parameter_data.addElement(v); } copia.set(i,contain); break; } } } } public void value_show_ant(ActionEvent e,javax.swing.JTextField value,int pa,Joint destin,String nombre) { //System.out.println("estmaos en SHOWWWWWWWW anttt modificando "+value.getText()+" del dataset "+nombre+ " y es el parametro "+pa); int posi=-1; for(int j=0;j<destin.data_selected.size();j++) { if(destin.problem.get(j).contains(nombre)==true) { posi=j; break; } } /*for(int pro=0;pro<problems.size();pro++) { if(problems.get(pro).contains(nombre)==true) { posi=pro; break; } } */ // System.out.println("position es "+posi+" tamñano es "+destin.parameters.size()); //Falta comprobar que value sea el tipo correcto y que tenga tantas variables //como debe cada parametro (tantas como antes tenia guardadas) Vector<String> p = new Vector<String>(); if(value.getText().contains("{")==true || value.getText().contains("[")==true) { int position=0; int inicio=1; position=value.getText().toString().indexOf(',',position); while(position!=-1) { p.addElement(value.getText().substring(inicio, position)); inicio=position+1; position=value.getText().toString().indexOf(',',position+1); } p.addElement(value.getText().substring(inicio, value.getText().length()-1)); } else { p.addElement(value.getText()); } if(validation(p, parameterData.parameterType.get(pa-4).toString(),parameterData.descriptions.get(pa-4).toString(),pa-4,value)==true) { destin.getParametersP(posi).set(pa,p); value.setBackground(new Color(255, 253, 202)); DinamicParameter contain = new DinamicParameter(); for(int i=0;i<all_datasets.size();i++) { if(all_datasets.get(i).compareTo(nombre)==0) { for(int j=0;j<destin.getParametersP(posi).size();j++) { Vector<String> v= new Vector<String>(); for(int k=0;k<destin.getParametersP(posi).get(j).size();k++) v.addElement(destin.getParametersP(posi).get(j).get(k)); contain.parameter_data.addElement(v); } copia.set(i,contain); break; } } } } public void properties(ActionEvent e,javax.swing.JComboBox value,Joint destin,String nombre) { //System.out.println("estmaos modificando "+value.getSelectedItem().toString()+" del dataset "+nombre); int posi=0; for(int i=0;i<destin.data_selected.size();i++) { // System.out.println("el nombre de los data que tenemos "+destin.data_selected.get(i)); if(destin.data_selected.get(i).compareTo(nombre)==0) { posi=i; //System.out.println("la position es del datasetttttttttt "+posi); break; } } Vector<String> p = new Vector<String>(); p.addElement(value.getSelectedItem().toString()); destin.getParametersP(posi).set(destin.getParametersP(posi).size()-1,p); destin.problem.set(posi,destin.data_selected.get(posi)+"-"+value.getSelectedItem().toString()); value.setBackground(new Color(255, 253, 202)); if(orig!=null) { for(int i=0;i<orig.dsc.name.length;i++) { if(orig.dsc.name[i].compareTo(nombre)==0) { copia.set(i, destin.getParametersP(posi)); break; } } } else { // System.out.println(" si que es null"); DinamicParameter contain = new DinamicParameter(); for(int i=0;i<all_datasets.size();i++) { if(all_datasets.get(i).compareTo(nombre)==0) { for(int j=0;j<destin.getParametersP(posi).size();j++) { Vector<String> v= new Vector<String>(); for(int k=0;k<destin.getParametersP(posi).get(j).size();k++) v.addElement(destin.getParametersP(posi).get(j).get(k)); contain.parameter_data.addElement(v); } copia.set(i,contain); break; } } } } /** 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() { jFrame1 = new javax.swing.JFrame(); jLabel1 = new javax.swing.JLabel(); jButton1 = new javax.swing.JButton(); jPanel1 = new javax.swing.JPanel(); jScrollPane1 = new javax.swing.JScrollPane(); jPanel2 = new javax.swing.JPanel(); jFrame1.setName("jPanel1"); // NOI18N javax.swing.GroupLayout jFrame1Layout = new javax.swing.GroupLayout(jFrame1.getContentPane()); jFrame1.getContentPane().setLayout(jFrame1Layout); jFrame1Layout.setHorizontalGroup( jFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 400, Short.MAX_VALUE) ); jFrame1Layout.setVerticalGroup( jFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 300, Short.MAX_VALUE) ); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setName("Form"); // NOI18N jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel1.setName("jLabel1"); // NOI18N org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(keel.GraphInterKeel.datacf.DataCFApp.class).getContext().getResourceMap(Container_Selected.class); jButton1.setFont(resourceMap.getFont("jButton1.font")); // NOI18N jButton1.setForeground(resourceMap.getColor("jButton1.foreground")); // NOI18N jButton1.setText(resourceMap.getString("jButton1.text")); // NOI18N jButton1.setName("jButton1"); // NOI18N jButton1.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jButton1MouseClicked(evt); } }); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); jPanel1.setName("jPanel1"); // NOI18N javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 553, Short.MAX_VALUE) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); jScrollPane1.setAutoscrolls(true); jScrollPane1.setName("jScrollPane1"); // NOI18N jPanel2.setAutoscrolls(true); jPanel2.setName("jPanel2"); // NOI18N javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 551, Short.MAX_VALUE) ); jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 554, Short.MAX_VALUE) ); jScrollPane1.setViewportView(jPanel2); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 573, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap()) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 553, Short.MAX_VALUE) .addContainerGap()) .addGroup(layout.createSequentialGroup() .addGap(207, 207, 207) .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 95, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(271, Short.MAX_VALUE)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(3, 3, 3) .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 556, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); pack(); }// </editor-fold>//GEN-END:initComponents private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jButton1MouseClicked // TODO add your handling code here: this.setVisible(false); }//GEN-LAST:event_jButton1MouseClicked private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed // TODO add your handling code here: this.setVisible(false); }//GEN-LAST:event_jButton1ActionPerformed /** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { Container_Selected dialog = new Container_Selected(new javax.swing.JFrame(), true);//,"x",n,m,d,0); dialog.addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent e) { System.exit(0); } }); dialog.setVisible(true); } }); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton jButton1; private javax.swing.JFrame jFrame1; private javax.swing.JLabel jLabel1; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JScrollPane jScrollPane1; // End of variables declaration//GEN-END:variables } class Container_Selected_datano_actionAdapter implements ActionListener { private Container_Selected adaptee; public int data_selected; public Joint destin; public Node destino; Container_Selected_datano_actionAdapter(Container_Selected adaptee,int v, Joint a,Node des) { this.adaptee = adaptee; this.data_selected = v; this.destin=a; this.destino=des; } public void actionPerformed(ActionEvent e) { adaptee.expan(e, data_selected, destin, destino); } /* public void actionPerformed(ActionEvent e) { throw new UnsupportedOperationException("Not supported yet."); }*/ } class Container_Selected_data_actionAdapter implements ActionListener { private Container_Selected adaptee; public javax.swing.JCheckBox data_selected; public Joint destin; Container_Selected_data_actionAdapter(Container_Selected adaptee,javax.swing.JCheckBox data, Joint a) { this.adaptee = adaptee; this.data_selected = data; this.destin=a; } public void actionPerformed(ActionEvent e) { adaptee.check(e, data_selected, destin); } /* public void actionPerformed(ActionEvent e) { throw new UnsupportedOperationException("Not supported yet."); }*/ } class Container_Selected_data_Show_actionAdapter implements ActionListener { private Container_Selected adaptee; public javax.swing.JCheckBox data_selected; public Joint destin; Container_Selected_data_Show_actionAdapter(Container_Selected adaptee,javax.swing.JCheckBox data, Joint a) { this.adaptee = adaptee; this.data_selected = data; this.destin=a; } public void actionPerformed(ActionEvent e) { adaptee.check_show(e, data_selected, destin); } /* public void actionPerformed(ActionEvent e) { throw new UnsupportedOperationException("Not supported yet."); }*/ } class Container_Selected_Value_actionAdapter implements ActionListener { private Container_Selected adaptee; public int parametro; public Joint destin; public String dataset; javax.swing.JTextField value; Container_Selected_Value_actionAdapter(Container_Selected aThis, JTextField valu, int pa, Joint a, String nombre) { this.adaptee = aThis; this.parametro=pa; this.destin=a; this.dataset = nombre; this.value=valu; } public void actionPerformed(ActionEvent e) { adaptee.value(e, value, parametro, destin, dataset); } } class Container_Selected_Value_Show_actionAdapter implements ActionListener { private Container_Selected adaptee; public int parametro; public Joint destin; public String dataset; javax.swing.JTextField value; Container_Selected_Value_Show_actionAdapter(Container_Selected aThis, JTextField valu, int pa, Joint a, String nombre) { this.adaptee = aThis; this.parametro=pa; this.destin=a; this.dataset = nombre; this.value=valu; } public void actionPerformed(ActionEvent e) { adaptee.value_show(e, value, parametro, destin, dataset); } } class Container_Selected_Value_Show_Ant_actionAdapter implements ActionListener { private Container_Selected adaptee; public int parametro; public Joint destin; public String dataset; javax.swing.JTextField value; Container_Selected_Value_Show_Ant_actionAdapter(Container_Selected aThis, JTextField valu, int pa, Joint a, String nombre) { this.adaptee = aThis; this.parametro=pa; this.destin=a; this.dataset = nombre; this.value=valu; } public void actionPerformed(ActionEvent e) { adaptee.value_show_ant(e, value, parametro, destin, dataset); } } class Container_Selected_Property_actionAdapter implements ActionListener { private Container_Selected adaptee; public Joint destin; javax.swing.JComboBox value; String dataset; Container_Selected_Property_actionAdapter(Container_Selected aThis, JComboBox valu, Joint a, String nombre) { this.adaptee = aThis; this.destin=a; this.value=valu; this.dataset=nombre; } public void actionPerformed(ActionEvent e) { adaptee.properties(e, value, destin,dataset); } } /* public void actionPerformed(ActionEvent e) { throw new UnsupportedOperationException("Not supported yet."); }*/