import java.awt.event.*; import java.awt.*; import java.io.*; import javax.swing.*; /** * Clase MenuArchivoAbrir * Permite abrir un programa guardado previamente en como ".ljep". * @author Patricio A. Castillo Pizarro - Eric C. Maldonado Olguin * @version 1.0 - Jun 26th, 2007 */ class MenuArchivoAbrir implements MouseListener { private EditorPanel panel; /** * Constructor. * @param p Panel en que se encuentra el programa grafico a compilar */ public MenuArchivoAbrir(EditorPanel p) { panel = p; } /** *Metodo que define las acciones a realizar al presiona el boton del mouse *@param event Parametro que indica la accion realizada por el mouse */ public void mousePressed(MouseEvent event){ //Este codigo permite escoger el archivo JFileChooser fcOpen = new JFileChooser(); fcOpen.setSelectedFile(new File("*.ljep")); fcOpen.setFileFilter(new FileFilterLJEP()); int return_fcOpen = fcOpen.showOpenDialog(null); if (return_fcOpen == JFileChooser.APPROVE_OPTION) { File fileForOpen = fcOpen.getSelectedFile(); String archivoAbre = fileForOpen.getAbsolutePath(); //Este codigo permite leer el codigo del archivo. String leido = new String(); try { BufferedReader entrada = new BufferedReader(new FileReader(archivoAbre)); String linea = entrada.readLine(); while (linea != null){ leido = leido + linea + "\n"; linea = entrada.readLine(); } entrada.close(); } catch (IOException e) { System.out.println("No se puede leer el archivo"); JOptionPane.showMessageDialog(null, "No se puede leer el archivo.", "Error", JOptionPane.ERROR_MESSAGE); } panel.limpiar(); //Se le quita la cabecera de referencia al codigo recuperado. leido = leido.substring(leido.indexOf("->")+2,leido.length()); //Este codigo permite interpretar el codigo del archivo. int i = 0; while (leido.length()>3&&i<1000){ String nombreObjeto = leido.substring(0,leido.indexOf("---")); leido = leido.substring(leido.indexOf("---")+3,leido.length()); if(nombreObjeto.equals("Avanzar") || nombreObjeto.equals("Retroceder") || nombreObjeto.equals("CambiarDireccion") || nombreObjeto.equals("Detener")){ String x = leido.substring(0,leido.indexOf("---")); leido = leido.substring(leido.indexOf("---")+3, leido.length()); String y = leido.substring(0,leido.indexOf("---")); leido = leido.substring(leido.indexOf("---")+3, leido.length()); ObjetoEvento nuevo = new ObjetoEvento(Double.valueOf(x), Double.valueOf(y)); String outs = leido.substring(0,leido.indexOf("\n")); leido = leido.substring(leido.indexOf("->")+2, leido.length()); nuevo.nombreObjeto = nombreObjeto; nuevo.outs = outs.toString(); panel.incorpore(nuevo); } if(nombreObjeto.equals("Esperar")){ String x = leido.substring(0,leido.indexOf("---")); leido = leido.substring(leido.indexOf("---")+3, leido.length()); String y = leido.substring(0,leido.indexOf("---")); leido = leido.substring(leido.indexOf("---")+3, leido.length()); ObjetoEvento nuevo = new ObjetoEvento(Double.valueOf(x), Double.valueOf(y)); int time = Integer.valueOf(leido.substring( 0,leido.indexOf("\n"))); leido = leido.substring(leido.indexOf("->")+2, leido.length()); nuevo.nombreObjeto = nombreObjeto; nuevo.time = time; panel.incorpore(nuevo); } if(nombreObjeto.equals("PotenciaMotores")){ String x = leido.substring(0,leido.indexOf("---")); leido = leido.substring(leido.indexOf("---")+3, leido.length()); String y = leido.substring(0,leido.indexOf("---")); leido = leido.substring(leido.indexOf("---")+3, leido.length()); ObjetoEvento nuevo = new ObjetoEvento(Double.valueOf(x), Double.valueOf(y)); int power = Integer.valueOf(leido.substring( 0,leido.indexOf("---"))); leido = leido.substring(leido.indexOf("---")+3, leido.length()); String outs = leido.substring( 0,leido.indexOf("\n")); leido = leido.substring(leido.indexOf("->")+2, leido.length()); nuevo.nombreObjeto = nombreObjeto; nuevo.power = power; nuevo.outs = outs; panel.incorpore(nuevo); } if(nombreObjeto.equals("EnviarMSG")){ String x = leido.substring(0,leido.indexOf("---")); leido = leido.substring(leido.indexOf("---")+3, leido.length()); String y = leido.substring(0,leido.indexOf("---")); leido = leido.substring(leido.indexOf("---")+3, leido.length()); ObjetoEvento nuevo = new ObjetoEvento(Double.valueOf(x), Double.valueOf(y)); int message = Integer.valueOf(leido.substring( 0,leido.indexOf("\n"))); leido = leido.substring(leido.indexOf("->")+2, leido.length()); nuevo.nombreObjeto = nombreObjeto; nuevo.message = message; panel.incorpore(nuevo); } if(nombreObjeto.equals("LimpiarMSG")){ String x = leido.substring(0,leido.indexOf("---")); leido = leido.substring(leido.indexOf("---")+3, leido.length()); String y = leido.substring(0,leido.indexOf("\n")); leido = leido.substring(leido.indexOf("->")+2, leido.length()); ObjetoEvento nuevo = new ObjetoEvento(Double.valueOf(x), Double.valueOf(y)); nuevo.nombreObjeto = nombreObjeto; panel.incorpore(nuevo); } if(nombreObjeto.equals("NQCPersonal")){ String x = leido.substring(0,leido.indexOf("---")); leido = leido.substring(leido.indexOf("---")+3, leido.length()); String y = leido.substring(0,leido.indexOf("---")); leido = leido.substring(leido.indexOf("---")+3, leido.length()); ObjetoEvento nuevo = new ObjetoEvento(Double.valueOf(x), Double.valueOf(y)); String nqc = leido.substring( 0,leido.indexOf(">>>\n")); leido = leido.substring(leido.indexOf("->")+2, leido.length()); nuevo.nombreObjeto = nombreObjeto; nuevo.nqc = nqc; panel.incorpore(nuevo); } if(nombreObjeto.equals("EmitirSonido")){ String x = leido.substring(0,leido.indexOf("---")); leido = leido.substring(leido.indexOf("---")+3, leido.length()); String y = leido.substring(0,leido.indexOf("---")); leido = leido.substring(leido.indexOf("---")+3, leido.length()); ObjetoEvento nuevo = new ObjetoEvento(Double.valueOf(x), Double.valueOf(y)); String sound = leido.substring( 0,leido.indexOf("\n")); leido = leido.substring(leido.indexOf("->")+2, leido.length()); nuevo.nombreObjeto = nombreObjeto; nuevo.sound = sound; panel.incorpore(nuevo); } if(nombreObjeto.equals("EmitirTono")){ String x = leido.substring(0,leido.indexOf("---")); leido = leido.substring(leido.indexOf("---")+3, leido.length()); String y = leido.substring(0,leido.indexOf("---")); leido = leido.substring(leido.indexOf("---")+3, leido.length()); ObjetoEvento nuevo = new ObjetoEvento(Double.valueOf(x), Double.valueOf(y)); int frecuency = Integer.valueOf(leido.substring( 0,leido.indexOf("---"))); leido = leido.substring(leido.indexOf("---")+3, leido.length()); int time = Integer.valueOf(leido.substring( 0,leido.indexOf("\n"))); leido = leido.substring(leido.indexOf("->")+2, leido.length()); nuevo.nombreObjeto = nombreObjeto; nuevo.frecuency = frecuency; nuevo.time = time; panel.incorpore(nuevo); } if(nombreObjeto.equals("NuevaVariable") || nombreObjeto.equals("ModificarVariable")){ String x = leido.substring(0,leido.indexOf("---")); leido = leido.substring(leido.indexOf("---")+3, leido.length()); String y = leido.substring(0,leido.indexOf("---")); leido = leido.substring(leido.indexOf("---")+3, leido.length()); ObjetoEvento nuevo = new ObjetoEvento(Double.valueOf(x), Double.valueOf(y)); String name = leido.substring(0,leido.indexOf("---")); leido = leido.substring(leido.indexOf("---")+3, leido.length()); String value = leido.substring(0,leido.indexOf("\n")); leido = leido.substring(leido.indexOf("->")+2, leido.length()); nuevo.nombreObjeto = nombreObjeto; nuevo.name = name; nuevo.value = value; panel.incorpore(nuevo); } if(nombreObjeto.equals("SiNo") || nombreObjeto.equals("RepetirMientras")){ String x = leido.substring(0,leido.indexOf("---")); leido = leido.substring(leido.indexOf("---")+3, leido.length()); String y = leido.substring(0,leido.indexOf("---")); leido = leido.substring(leido.indexOf("---")+3, leido.length()); ObjetoCondicion nuevo=new ObjetoCondicion(Double.valueOf(x) ,Double.valueOf(y)); String sensor = leido.substring(0,leido.indexOf("---")); leido = leido.substring(leido.indexOf("---")+3, leido.length()); String type = leido.substring(0,leido.indexOf("---")); leido = leido.substring(leido.indexOf("---")+3, leido.length()); String condicion = leido.substring(0,leido.indexOf("\n")); leido = leido.substring(leido.indexOf("->")+2, leido.length()); nuevo.nombreObjeto = nombreObjeto; nuevo.sensor = sensor; nuevo.type = type; nuevo.condicion = condicion; panel.incorpore(nuevo); } if(nombreObjeto.equals("RepetirN")){ String x = leido.substring(0,leido.indexOf("---")); leido = leido.substring(leido.indexOf("---")+3, leido.length()); String y = leido.substring(0,leido.indexOf("---")); leido = leido.substring(leido.indexOf("---")+3, leido.length()); ObjetoCondicion nuevo=new ObjetoCondicion(Double.valueOf(x) ,Double.valueOf(y)); int veces = Integer.valueOf(leido.substring(0, leido.indexOf("\n"))); leido = leido.substring(leido.indexOf("->")+2, leido.length()); nuevo.nombreObjeto = nombreObjeto; nuevo.veces = veces; panel.incorpore(nuevo); } if(nombreObjeto.equals("RepetirSiempre") || nombreObjeto.equals("CondicionFin")){ String x = leido.substring(0,leido.indexOf("---")); leido = leido.substring(leido.indexOf("---")+3, leido.length()); String y = leido.substring(0,leido.indexOf("\n")); leido = leido.substring(leido.indexOf("->")+2, leido.length()); ObjetoCondicion nuevo=new ObjetoCondicion(Double.valueOf(x) ,Double.valueOf(y)); nuevo.nombreObjeto = nombreObjeto; panel.incorpore(nuevo); } i++; } panel.nombrePrograma = fileForOpen.getName().substring(0, fileForOpen.getName().lastIndexOf(".")); } } /** *Implementacion de MouseListener cuando el boton del mouse hace click */ public void mouseClicked(MouseEvent event){} /** *Implementacion de MouseListener cuando el boton del mouse se libera */ public void mouseReleased(MouseEvent event){} /** *Implementacion de MouseListener cuando el mouse ingresa a un componente */ public void mouseEntered(MouseEvent event){} /** *Implementacion de MouseListener cuando el mouse sale de un componente */ public void mouseExited(MouseEvent event){} } //Fin clase MenuArchivoAbrir