diff --git a/lib/jl1.0.1.jar b/lib/jl1.0.1.jar new file mode 100644 index 0000000..bd5fb8b Binary files /dev/null and b/lib/jl1.0.1.jar differ diff --git a/src/AgregarSonido.java b/src/AgregarSonido.java new file mode 100644 index 0000000..b1a936e --- /dev/null +++ b/src/AgregarSonido.java @@ -0,0 +1,283 @@ + + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.io.File; +import java.io.IOException; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JFileChooser; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JTextField; +import javax.swing.filechooser.FileNameExtensionFilter; + + +public class AgregarSonido extends JFrame{ + + private int largoText = 37, totalBotones = 0; + private JLabel labelNombre, labelTip; + private JButton botonImagen, botonSonido, botonGuardar; + private JTextField textNombre, textImagen, textSonido,textTip; + private JCheckBox checkImagen, checkTip; + private GridBagLayout gridCentral; + private GridBagConstraints restricciones; + private JPanel panelCentral; + private String nombreImagen, nombreSonido; + private String tmpTextImg="NADA", tmpTextTip=""; + config con = new config(); + + public AgregarSonido(){ + + super("Nuevo sonido"); + + // el contenido del constructor es la interfaz grafica, botones, campos de texto entre otros + + labelNombre = new JLabel("Nombre del boton"); + labelTip = new JLabel("Frase de ayuda"); + + botonImagen = new JButton("Seleccionar imagen"); + botonImagen.setToolTipText("No es necesario una imagen"); + botonImagen.setEnabled(false); + botonSonido = new JButton("Seleccionar sonido"); + botonGuardar = new JButton("Guardar"); + botonGuardar.setBackground(new Color( 182, 239, 226 )); + + textNombre = new JTextField(largoText); + textNombre.setToolTipText("Si en el boton solo quieres la imagen deja este campo en blanco"); + textImagen = new JTextField(largoText); + textImagen.setEnabled(false); + textImagen.setText("NADA"); + textSonido = new JTextField(largoText); + textSonido.setEnabled(false); + textSonido.setText("NADA"); + textTip = new JTextField(largoText); + textTip.setText("NADA"); + textTip.setEnabled(false); + textTip.setToolTipText("Esta es una frase de ayuda"); + + checkImagen = new JCheckBox ("Con imagen"); + checkTip = new JCheckBox ("Con frase de ayuda"); + + gridCentral = new GridBagLayout(); + + panelCentral = new JPanel(); + panelCentral.setLayout(gridCentral); + restricciones = new GridBagConstraints(); + + agregarComponente(labelNombre,0,0,1,1); + agregarComponente(textNombre,0,1,3,1); + + agregarComponente(labelTip,1,0,1,1); + agregarComponente(textTip,1,1,2,1); + agregarComponente(checkTip,1,3,1,1); + + agregarComponente(botonSonido,2,0,1,1); + agregarComponente(textSonido,2,1,3,1); + + agregarComponente(botonImagen,3,0,1,1); + agregarComponente(textImagen,3,1,2,1); + agregarComponente(checkImagen,3,3,1,1); + + + + agregarComponente(botonGuardar,4,0,1,1); + + add( panelCentral, BorderLayout.CENTER); + + ManejadorBoton manejadorBotones = new ManejadorBoton(); + botonImagen.addActionListener(manejadorBotones); + botonSonido.addActionListener(manejadorBotones); + botonGuardar.addActionListener(manejadorBotones); + + ManejadorCheckBox manejadorChecks = new ManejadorCheckBox(); + checkImagen.addItemListener(manejadorChecks); + checkTip.addItemListener(manejadorChecks); + + setDefaultCloseOperation( JFrame.DISPOSE_ON_CLOSE ); + setSize( 850, 300 ); + setVisible( true ); + //setResizable(false); + setLocationRelativeTo(null); + } + + //metodo para agregar componentes a un grid bag, se le pasa como parametro las restricciones de cada componente + private void agregarComponente( Component componente, int fila, int columna, int anchura, int altura ){ + restricciones.gridx = columna; // establece gridx + restricciones.gridy = fila; // establece gridy + restricciones.gridwidth = anchura; // establece gridwidth + restricciones.gridheight = altura; // establece gridheight + gridCentral.setConstraints( componente, restricciones ); // establece restricciones + panelCentral.add( componente ); // agrega el componente + } + + //en esta clase estan las acciones de los checkbox, habilitar campos de texto y botones asi como rescatar los textos y mostrarlos nuevamente + private class ManejadorCheckBox implements ItemListener{ + public void itemStateChanged( ItemEvent evento ){ + if(evento.getSource()==checkImagen){ + if(checkImagen.isSelected()){ + textImagen.setText(tmpTextImg); + botonImagen.setEnabled(true); + } + + else{ + tmpTextImg = textImagen.getText(); + textImagen.setText("NADA"); + botonImagen.setEnabled(false); + } + } + if(evento.getSource()==checkTip){ + if(checkTip.isSelected()){ + textTip.setEnabled(true); + textTip.setText(tmpTextTip); + } + else{ + tmpTextTip = textTip.getText(); + textTip.setEnabled(false); + textTip.setText("NADA"); + } + } + + } + } + + private class ManejadorBoton implements ActionListener{ + + public void actionPerformed( ActionEvent evento ){ + //al seleccionar el boton imagen se usa un filechooser para que el usuario la seleccione su imagen + if (evento.getSource() == botonImagen){ + JFileChooser fileChooser = new JFileChooser(); + fileChooser.setDialogTitle("Seleccione su imagen");//titulo de ventana del JFileChooser + + /*Permite ver archivos con extencion especifica*/ + fileChooser.setFileFilter(new FileNameExtensionFilter("png (*.png)","png")); + fileChooser.setFileFilter(new FileNameExtensionFilter("gif (*.gif)", "gif")); + fileChooser.setFileFilter(new FileNameExtensionFilter("jpeg (*.jpeg)", "jpeg")); + fileChooser.setFileFilter(new FileNameExtensionFilter("jpg (*.jpg)", "jpg")); + + int seleccion = fileChooser.showOpenDialog(null); + + + if (seleccion == JFileChooser.APPROVE_OPTION) { + File fileToSave = fileChooser.getSelectedFile(); + textImagen.setText("");//limpia el campo de texto antes de mostrar una nueva ruta al archivo de imagen + textImagen.setText(fileToSave.getAbsolutePath()); + nombreImagen = fileToSave.getName();//obtiene el nombre del archivo, esta variable se usa al usar el boton guardar + } + } + //las acciones para el boton seleccionar sonido son parecidas a la de seleccionar imagen + else if (evento.getSource()==botonSonido){ + JFileChooser fileChooser = new JFileChooser(); + fileChooser.setDialogTitle("Seleccione su sonido");//titulo de ventana del JFileChooser + + /*Permite ver archivos con extencion especifica*/ + fileChooser.setFileFilter(new FileNameExtensionFilter("mp3 (*.mp3)", "mp3")); + int seleccion = fileChooser.showOpenDialog(null); + + + if (seleccion == JFileChooser.APPROVE_OPTION) { + File fileToSave = fileChooser.getSelectedFile(); + textSonido.setText(""); + textSonido.setText(fileToSave.getAbsolutePath()); + nombreSonido = fileToSave.getName(); + } + } + // acciones para el boton guardar + else if (evento.getSource()==botonGuardar){ + + //Si hay un sonido seleccionado guardalo + if(!(textSonido.getText().equals("NADA"))){ + try { + // si hay un archivo config.config obtiene cuantos botones hay + if (!(con.getConfig("Botones").equals("NO_config.config"))){ + totalBotones = Integer.parseInt(con.getConfig("Botones")); + } + } catch (IOException ex) { + + //Logger.getLogger(AgregarSonido.class.getName()).log(Level.SEVERE, null, ex); + } + + config con = new config(); + + File origenSonido; + File destinoSonido; + + origenSonido = new File (textSonido.getText()); + //dependiendo de sistema operativo prepara la ruta relativa para copiar el archivo de sonido + if(System.getProperty("os.name").toLowerCase().startsWith("windows")){ + destinoSonido = new File ("Sonidos\\"+nombreSonido); + } + else{ + destinoSonido = new File ("./Sonidos/"+nombreSonido); + } + try { + // copia el arhivo de sonido y guarda los parametros en el archivo config.config + con.copiarArchivo(origenSonido, destinoSonido); + con.guardarConfig("SonidoU"+Integer.toString(totalBotones), "./Sonidos/"+nombreSonido); + con.guardarConfig("SonidoW"+Integer.toString(totalBotones), "Sonidos\\"+nombreSonido); + con.guardarConfig("Nombre"+Integer.toString(totalBotones), textNombre.getText()); + con.guardarConfig("Tooltip"+Integer.toString(totalBotones), textTip.getText()); + + } catch (IOException ex) { + Logger.getLogger(AgregarSonido.class.getName()).log(Level.SEVERE, null, ex); + } + + //Si hay una imagen guardala + + if (!(textImagen.getText().equals("NADA"))){ + File origenImagen; + File destinoImagen; + + origenImagen = new File(textImagen.getText()); + //dependiendo del sistema operativo usa la ruta relativa para copiar el archivo + if(System.getProperty("os.name").toLowerCase().startsWith("windows")){ + destinoImagen = new File ("Imagenes\\"+nombreImagen); + } + else{ + destinoImagen = new File ("./Imagenes/"+nombreImagen); + } + + try { + //copia la imagen y guarda sus propiedades en el arhivo config.config + con.copiarArchivo(origenImagen, destinoImagen); + con.guardarConfig("ImagenU"+Integer.toString(totalBotones), "./Imagenes/"+nombreImagen); + con.guardarConfig("ImagenW"+Integer.toString(totalBotones), "./Imagenes/"+nombreImagen); + } catch (IOException ex) { + Logger.getLogger(AgregarSonido.class.getName()).log(Level.SEVERE, null, ex); + } + + + } + // si no hay una imagen se guarda NADA en el archivo config.config + else{ + + con.guardarConfig("ImagenW"+Integer.toString(totalBotones), textImagen.getText()); + con.guardarConfig("ImagenU"+Integer.toString(totalBotones), textImagen.getText()); + + } + // al terminar de guardar el boton en el archivo config.config copiar imagen y sonido aumento el numero de botones en uno + con.guardarConfig("Botones", Integer.toString(totalBotones+1)); + JOptionPane.showMessageDialog( null, "Cierra y abre la aplicacion para ver los cambios","AGREGADO", JOptionPane.INFORMATION_MESSAGE ); + } + //cuando no hay un sonido seleccionado muestra este mensaje + else{ + + JOptionPane.showMessageDialog( null, "Necesita seleccionar al menos el sonido","ERROR", JOptionPane.WARNING_MESSAGE ); + + + } + } + } + } +} diff --git a/src/AgregarSonido.java~ b/src/AgregarSonido.java~ new file mode 100644 index 0000000..749e467 --- /dev/null +++ b/src/AgregarSonido.java~ @@ -0,0 +1,283 @@ +package caja.de.sonidos; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.io.File; +import java.io.IOException; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JFileChooser; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JTextField; +import javax.swing.filechooser.FileNameExtensionFilter; + + +public class AgregarSonido extends JFrame{ + + private int largoText = 37, totalBotones = 0; + private JLabel labelNombre, labelTip; + private JButton botonImagen, botonSonido, botonGuardar; + private JTextField textNombre, textImagen, textSonido,textTip; + private JCheckBox checkImagen, checkTip; + private GridBagLayout gridCentral; + private GridBagConstraints restricciones; + private JPanel panelCentral; + private String nombreImagen, nombreSonido; + private String tmpTextImg="NADA", tmpTextTip=""; + config con = new config(); + + public AgregarSonido(){ + + super("Nuevo sonido"); + + // el contenido del constructor es la interfaz grafica, botones, campos de texto entre otros + + labelNombre = new JLabel("Nombre del boton"); + labelTip = new JLabel("Frase de ayuda"); + + botonImagen = new JButton("Seleccionar imagen"); + botonImagen.setToolTipText("No es necesario una imagen"); + botonImagen.setEnabled(false); + botonSonido = new JButton("Seleccionar sonido"); + botonGuardar = new JButton("Guardar"); + botonGuardar.setBackground(new Color( 182, 239, 226 )); + + textNombre = new JTextField(largoText); + textNombre.setToolTipText("Si en el boton solo quieres la imagen deja este campo en blanco"); + textImagen = new JTextField(largoText); + textImagen.setEnabled(false); + textImagen.setText("NADA"); + textSonido = new JTextField(largoText); + textSonido.setEnabled(false); + textSonido.setText("NADA"); + textTip = new JTextField(largoText); + textTip.setText("NADA"); + textTip.setEnabled(false); + textTip.setToolTipText("Esta es una frase de ayuda"); + + checkImagen = new JCheckBox ("Con imagen"); + checkTip = new JCheckBox ("Con frase de ayuda"); + + gridCentral = new GridBagLayout(); + + panelCentral = new JPanel(); + panelCentral.setLayout(gridCentral); + restricciones = new GridBagConstraints(); + + agregarComponente(labelNombre,0,0,1,1); + agregarComponente(textNombre,0,1,3,1); + + agregarComponente(labelTip,1,0,1,1); + agregarComponente(textTip,1,1,2,1); + agregarComponente(checkTip,1,3,1,1); + + agregarComponente(botonSonido,2,0,1,1); + agregarComponente(textSonido,2,1,3,1); + + agregarComponente(botonImagen,3,0,1,1); + agregarComponente(textImagen,3,1,2,1); + agregarComponente(checkImagen,3,3,1,1); + + + + agregarComponente(botonGuardar,4,0,1,1); + + add( panelCentral, BorderLayout.CENTER); + + ManejadorBoton manejadorBotones = new ManejadorBoton(); + botonImagen.addActionListener(manejadorBotones); + botonSonido.addActionListener(manejadorBotones); + botonGuardar.addActionListener(manejadorBotones); + + ManejadorCheckBox manejadorChecks = new ManejadorCheckBox(); + checkImagen.addItemListener(manejadorChecks); + checkTip.addItemListener(manejadorChecks); + + setDefaultCloseOperation( JFrame.DISPOSE_ON_CLOSE ); + setSize( 850, 300 ); + setVisible( true ); + //setResizable(false); + setLocationRelativeTo(null); + } + + //metodo para agregar componentes a un grid bag, se le pasa como parametro las restricciones de cada componente + private void agregarComponente( Component componente, int fila, int columna, int anchura, int altura ){ + restricciones.gridx = columna; // establece gridx + restricciones.gridy = fila; // establece gridy + restricciones.gridwidth = anchura; // establece gridwidth + restricciones.gridheight = altura; // establece gridheight + gridCentral.setConstraints( componente, restricciones ); // establece restricciones + panelCentral.add( componente ); // agrega el componente + } + + //en esta clase estan las acciones de los checkbox, habilitar campos de texto y botones asi como rescatar los textos y mostrarlos nuevamente + private class ManejadorCheckBox implements ItemListener{ + public void itemStateChanged( ItemEvent evento ){ + if(evento.getSource()==checkImagen){ + if(checkImagen.isSelected()){ + textImagen.setText(tmpTextImg); + botonImagen.setEnabled(true); + } + + else{ + tmpTextImg = textImagen.getText(); + textImagen.setText("NADA"); + botonImagen.setEnabled(false); + } + } + if(evento.getSource()==checkTip){ + if(checkTip.isSelected()){ + textTip.setEnabled(true); + textTip.setText(tmpTextTip); + } + else{ + tmpTextTip = textTip.getText(); + textTip.setEnabled(false); + textTip.setText("NADA"); + } + } + + } + } + + private class ManejadorBoton implements ActionListener{ + + public void actionPerformed( ActionEvent evento ){ + //al seleccionar el boton imagen se usa un filechooser para que el usuario la seleccione su imagen + if (evento.getSource() == botonImagen){ + JFileChooser fileChooser = new JFileChooser(); + fileChooser.setDialogTitle("Seleccione su imagen");//titulo de ventana del JFileChooser + + /*Permite ver archivos con extencion especifica*/ + fileChooser.setFileFilter(new FileNameExtensionFilter("png (*.png)","png")); + fileChooser.setFileFilter(new FileNameExtensionFilter("gif (*.gif)", "gif")); + fileChooser.setFileFilter(new FileNameExtensionFilter("jpeg (*.jpeg)", "jpeg")); + fileChooser.setFileFilter(new FileNameExtensionFilter("jpg (*.jpg)", "jpg")); + + int seleccion = fileChooser.showOpenDialog(null); + + + if (seleccion == JFileChooser.APPROVE_OPTION) { + File fileToSave = fileChooser.getSelectedFile(); + textImagen.setText("");//limpia el campo de texto antes de mostrar una nueva ruta al archivo de imagen + textImagen.setText(fileToSave.getAbsolutePath()); + nombreImagen = fileToSave.getName();//obtiene el nombre del archivo, esta variable se usa al usar el boton guardar + } + } + //las acciones para el boton seleccionar sonido son parecidas a la de seleccionar imagen + else if (evento.getSource()==botonSonido){ + JFileChooser fileChooser = new JFileChooser(); + fileChooser.setDialogTitle("Seleccione su sonido");//titulo de ventana del JFileChooser + + /*Permite ver archivos con extencion especifica*/ + fileChooser.setFileFilter(new FileNameExtensionFilter("mp3 (*.mp3)", "mp3")); + int seleccion = fileChooser.showOpenDialog(null); + + + if (seleccion == JFileChooser.APPROVE_OPTION) { + File fileToSave = fileChooser.getSelectedFile(); + textSonido.setText(""); + textSonido.setText(fileToSave.getAbsolutePath()); + nombreSonido = fileToSave.getName(); + } + } + // acciones para el boton guardar + else if (evento.getSource()==botonGuardar){ + + //Si hay un sonido seleccionado guardalo + if(!(textSonido.getText().equals("NADA"))){ + try { + // si hay un archivo config.config obtiene cuantos botones hay + if (!(con.getConfig("Botones").equals("NO_config.config"))){ + totalBotones = Integer.parseInt(con.getConfig("Botones")); + } + } catch (IOException ex) { + + //Logger.getLogger(AgregarSonido.class.getName()).log(Level.SEVERE, null, ex); + } + + config con = new config(); + + File origenSonido; + File destinoSonido; + + origenSonido = new File (textSonido.getText()); + //dependiendo de sistema operativo prepara la ruta relativa para copiar el archivo de sonido + if(System.getProperty("os.name").toLowerCase().startsWith("windows")){ + destinoSonido = new File ("Sonidos\\"+nombreSonido); + } + else{ + destinoSonido = new File ("./Sonidos/"+nombreSonido); + } + try { + // copia el arhivo de sonido y guarda los parametros en el archivo config.config + con.copiarArchivo(origenSonido, destinoSonido); + con.guardarConfig("SonidoU"+Integer.toString(totalBotones), "./Sonidos/"+nombreSonido); + con.guardarConfig("SonidoW"+Integer.toString(totalBotones), "Sonidos\\"+nombreSonido); + con.guardarConfig("Nombre"+Integer.toString(totalBotones), textNombre.getText()); + con.guardarConfig("Tooltip"+Integer.toString(totalBotones), textTip.getText()); + + } catch (IOException ex) { + Logger.getLogger(AgregarSonido.class.getName()).log(Level.SEVERE, null, ex); + } + + //Si hay una imagen guardala + + if (!(textImagen.getText().equals("NADA"))){ + File origenImagen; + File destinoImagen; + + origenImagen = new File(textImagen.getText()); + //dependiendo del sistema operativo usa la ruta relativa para copiar el archivo + if(System.getProperty("os.name").toLowerCase().startsWith("windows")){ + destinoImagen = new File ("Imagenes\\"+nombreImagen); + } + else{ + destinoImagen = new File ("./Imagenes/"+nombreImagen); + } + + try { + //copia la imagen y guarda sus propiedades en el arhivo config.config + con.copiarArchivo(origenImagen, destinoImagen); + con.guardarConfig("ImagenU"+Integer.toString(totalBotones), "./Imagenes/"+nombreImagen); + con.guardarConfig("ImagenW"+Integer.toString(totalBotones), "./Imagenes/"+nombreImagen); + } catch (IOException ex) { + Logger.getLogger(AgregarSonido.class.getName()).log(Level.SEVERE, null, ex); + } + + + } + // si no hay una imagen se guarda NADA en el archivo config.config + else{ + + con.guardarConfig("ImagenW"+Integer.toString(totalBotones), textImagen.getText()); + con.guardarConfig("ImagenU"+Integer.toString(totalBotones), textImagen.getText()); + + } + // al terminar de guardar el boton en el archivo config.config copiar imagen y sonido aumento el numero de botones en uno + con.guardarConfig("Botones", Integer.toString(totalBotones+1)); + JOptionPane.showMessageDialog( null, "Cierra y abre la aplicacion para ver los cambios","AGREGADO", JOptionPane.INFORMATION_MESSAGE ); + } + //cuando no hay un sonido seleccionado muestra este mensaje + else{ + + JOptionPane.showMessageDialog( null, "Necesita seleccionar al menos el sonido","ERROR", JOptionPane.WARNING_MESSAGE ); + + + } + } + } + } +} diff --git a/src/CajaDeSonidos.java b/src/CajaDeSonidos.java new file mode 100644 index 0000000..d0cda9c --- /dev/null +++ b/src/CajaDeSonidos.java @@ -0,0 +1,211 @@ + + +import java.awt.BorderLayout; +import java.awt.GridLayout; +import javax.swing.JFrame; +import java.awt.event.ActionListener; +import java.awt.event.ActionEvent; +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.swing.JButton; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.UIManager; +import javax.swing.UIManager.LookAndFeelInfo; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import javazoom.jl.player.Player; +import javazoom.jl.decoder.JavaLayerException; + +public class CajaDeSonidos extends JFrame{ + //crea un objeto de una clase interna anonima que se agraga como escuhador a los botones, esta clase esta en este archivo + ManejadorBoton manejadorBotones = new ManejadorBoton(); + config con = new config(); + + private JButton boton[]; // en este arreglo estan los botones que se ven en la cuadricula + private String origenSonido[]; // en este arreglo esta la ruta al sonido asociado a cada boton + + private JButton botonModificar, botonAgregar;// son los botones modificar y agregar que se encuentran por defecto en el programa + + private int botonesSonidos = 0, botonesMod = 2, totalBotones = 2; + + private GridLayout gridCentral; + + private JPanel panelCentral; + + + public CajaDeSonidos() throws IOException{ + super("Caja de sonidos << BETA >>"); + + botonModificar = new JButton("Modificar botones"); + botonModificar.setToolTipText("Modifica las propiedades de los botones"); + + botonAgregar = new JButton("Nuevo boton"); + botonAgregar.setToolTipText("Agrega un nuevo boton a la cuadricula"); + + //si se encuentra el archivo config.config carga los botones segun el sistema operativo + if (!(con.getConfig("Botones").equals("NO_config.config"))){ + botonesSonidos = Integer.parseInt(con.getConfig("Botones")); + + if(System.getProperty("os.name").toLowerCase().startsWith("windows")){ + boton = con.getBotonesWindows(); + origenSonido = con.getOrigenSonidosWindows(); + } + else{ + boton = con.getBotonesUnix(); + origenSonido = con.getOrigenSonidosUnix(); + } + + totalBotones = botonesMod + botonesSonidos; + } + else{ + JOptionPane.showMessageDialog( null, "Parece que hay un problema al leer el archivo config.config o no se encuentran las carpetas Imagenes y Sonidos","AVISO", JOptionPane.WARNING_MESSAGE ); + } + + //los parametros del GridLayout es la manera de como se redimenciona automaticamente la cuadricula al quitar o poner botones + gridCentral = new GridLayout( (int) Math.round(Math.sqrt(totalBotones)), (int) Math.ceil(Math.sqrt(totalBotones)),2,2 ); + + panelCentral = new JPanel(); + panelCentral.setLayout(gridCentral); + + // si se encuentra el archivo config.config pone los botones en la ventana con su escuchador + if (!(con.getConfig("Botones").equals("NO_config.config"))){ + for(int i=0; i < botonesSonidos; i++){ + if (!(origenSonido[i].equals("NADA"))){ + panelCentral.add (boton[i]); + boton[i].addActionListener(manejadorBotones); + } + } + } + + //ponel los botones modificar y agregar a la ventana + panelCentral.add(botonModificar); + panelCentral.add(botonAgregar); + add( panelCentral, BorderLayout.CENTER); + botonModificar.addActionListener(manejadorBotones); + botonAgregar.addMouseListener( new ManejadorClick() ); + botonAgregar.addActionListener(manejadorBotones); + } + + +// estos dos metodos estan hechos para desactivar los botones cuando se reproduce un sonido, es una posible mejora a futuro +public void desactivarBotones(){ + for (int i=0;i>"); + + botonModificar = new JButton("Modificar botones"); + botonModificar.setToolTipText("Modifica las propiedades de los botones"); + + botonAgregar = new JButton("Nuevo boton"); + botonAgregar.setToolTipText("Agrega un nuevo boton a la cuadricula"); + + //si se encuentra el archivo config.config carga los botones segun el sistema operativo + if (!(con.getConfig("Botones").equals("NO_config.config"))){ + botonesSonidos = Integer.parseInt(con.getConfig("Botones")); + + if(System.getProperty("os.name").toLowerCase().startsWith("windows")){ + boton = con.getBotonesWindows(); + origenSonido = con.getOrigenSonidosWindows(); + } + else{ + boton = con.getBotonesUnix(); + origenSonido = con.getOrigenSonidosUnix(); + } + + totalBotones = botonesMod + botonesSonidos; + } + else{ + JOptionPane.showMessageDialog( null, "Parece que hay un problema al leer el archivo config.config o no se encuentran las carpetas Imagenes y Sonidos","AVISO", JOptionPane.WARNING_MESSAGE ); + } + + //los parametros del GridLayout es la manera de como se redimenciona automaticamente la cuadricula al quitar o poner botones + gridCentral = new GridLayout( (int) Math.round(Math.sqrt(totalBotones)), (int) Math.ceil(Math.sqrt(totalBotones)),2,2 ); + + panelCentral = new JPanel(); + panelCentral.setLayout(gridCentral); + + // si se encuentra el archivo config.config pone los botones en la ventana con su escuchador + if (!(con.getConfig("Botones").equals("NO_config.config"))){ + for(int i=0; i < botonesSonidos; i++){ + if (!(origenSonido[i].equals("NADA"))){ + panelCentral.add (boton[i]); + boton[i].addActionListener(manejadorBotones); + } + } + } + + //ponel los botones modificar y agregar a la ventana + panelCentral.add(botonModificar); + panelCentral.add(botonAgregar); + add( panelCentral, BorderLayout.CENTER); + botonModificar.addActionListener(manejadorBotones); + botonAgregar.addMouseListener( new ManejadorClick() ); + botonAgregar.addActionListener(manejadorBotones); + } + + +// estos dos metodos estan hechos para desactivar los botones cuando se reproduce un sonido, es una posible mejora a futuro +public void desactivarBotones(){ + for (int i=0;i>>>>"+origenImagen.getName()+"<<<<<<<"); + + try { + //copia la imagen y guarda sus propiedades en el arhivo config.config + con.copiarArchivo(origenImagen, destinoImagen); + con.guardarConfig("ImagenU"+id, "./Imagenes/"+origenImagen.getName()); + con.guardarConfig("ImagenW"+id, "./Imagenes/"+origenImagen.getName()); + } catch (IOException ex) { + Logger.getLogger(AgregarSonido.class.getName()).log(Level.SEVERE, null, ex); + } + + } + else{ + // si no hay una imagen se guarda NADA en el archivo config.config + con.guardarConfig("ImagenU"+id, textImagen.getText()); + con.guardarConfig("ImagenW"+id, textImagen.getText()); + + } + JOptionPane.showMessageDialog( null, "Cierra y abre la aplicacion para ver los cambios","AGREGADO", JOptionPane.INFORMATION_MESSAGE ); + } + //si no hay un archivo de sonido seleccionado pone NADA en el archivo config.config y correr el programa no lo pone en la ventana + else{ + config con = new config(); + int totalBotones=0; + try { + //si esta el archivo config.config obtiene la cantidad de botones + if (!(con.getConfig("Botones").equals("NO_config.config"))){ + totalBotones = Integer.parseInt(con.getConfig("Botones")); + } + } catch (IOException ex) { + Logger.getLogger(ModificaPropiedades.class.getName()).log(Level.SEVERE, null, ex); + } + //pone NADA para que asi no se muestre el boton la siguiente vez que se corra el programa + con.guardarConfig("SonidoU"+id, "NADA"); + con.guardarConfig("SonidoW"+id, "NADA"); + con.guardarConfig("Botones", Integer.toString(totalBotones-1) );//resta uno al total de botones + JOptionPane.showMessageDialog( null, "Se ha eliminado este boton\nCierra y abre la aplicacion para ver los cambios","ELIMINADO", JOptionPane.INFORMATION_MESSAGE ); + } + } + } + } +} diff --git a/src/ModificaPropiedades.java~ b/src/ModificaPropiedades.java~ new file mode 100644 index 0000000..1b308a5 --- /dev/null +++ b/src/ModificaPropiedades.java~ @@ -0,0 +1,306 @@ +package caja.de.sonidos; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.io.File; +import java.io.IOException; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JFileChooser; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JTextField; +import javax.swing.filechooser.FileNameExtensionFilter; + +public class ModificaPropiedades extends JFrame{ + private int largoTextos = 35; + private JCheckBox checkImagen, checkTip; + private String id, tmpTextImg, tmpTextTip; + private JLabel labelSonido, labelNombre, labelImagen, labelTip, labelEliminar; + private JTextField textSonido, textNombre, textImagen, textTip; + private JButton botonImagen, botonSonido, botonGuardar, botonEliminar; + private GridBagLayout gridCentral, gridSur; + private GridBagConstraints restricciones; + private JPanel panelCentral, panelSur; + + //el contenido del constructor es la interfaz grafica, botones, campos de texto entre otros + public ModificaPropiedades(String sonido, String nombre, String imagen, String toolTip, String idBoton){ + + super("Cambio de propiedades"); + id = idBoton; + labelSonido = new JLabel("Origen del sonido"); + labelNombre = new JLabel("Nombre del boton"); + labelImagen = new JLabel("Origen de la Imagen"); + labelTip = new JLabel("Frase de ayuda"); + labelEliminar = new JLabel("Tambien puedes: "); + + botonImagen = new JButton("Nueva imagen"); + botonSonido = new JButton("Nuevo sonido"); + botonGuardar = new JButton("Guardar"); + botonGuardar.setBackground(new Color( 182, 239, 226 )); + botonEliminar = new JButton("Reiniciar todos los valores"); + botonEliminar.setBackground(new Color( 246, 81, 81 )); + + textSonido = new JTextField(largoTextos); + textSonido.setEnabled(false); + textNombre = new JTextField(largoTextos); + textNombre.setToolTipText("Si en el boton solo quieres la imagen deja este campo en blanco"); + textImagen = new JTextField(largoTextos); + textImagen.setEnabled(false); + textTip = new JTextField(largoTextos); + textTip.setToolTipText("Esta es una frase de ayuda"); + + checkImagen = new JCheckBox ("Sin imagen"); + checkTip = new JCheckBox ("Sin frase de ayuda"); + + gridCentral = new GridBagLayout(); + gridSur = new GridBagLayout(); + + panelCentral = new JPanel(); + panelCentral.setLayout(gridCentral); + restricciones = new GridBagConstraints(); + + panelSur = new JPanel(); + panelSur.setLayout(gridSur); + + + textSonido.setText(sonido); + textNombre.setText(nombre); + textImagen.setText(imagen); + textTip.setText(toolTip); + + agregarComponente(labelNombre, 0, 0, 1, 1, gridCentral, panelCentral); + agregarComponente(textNombre, 0, 1, 3, 1, gridCentral, panelCentral); + + agregarComponente(labelTip, 1, 0, 1, 1, gridCentral, panelCentral); + agregarComponente(textTip, 1, 1, 3, 1, gridCentral, panelCentral); + agregarComponente(checkTip, 1 , 4, 1, 1,gridCentral, panelCentral); + + agregarComponente(labelSonido, 2, 0, 1, 1, gridCentral, panelCentral); + agregarComponente(textSonido, 2, 1, 3, 1, gridCentral, panelCentral); + agregarComponente(botonSonido, 2, 4, 1, 1, gridCentral, panelCentral); + + agregarComponente(labelImagen, 3, 0, 1, 1, gridCentral, panelCentral); + agregarComponente(textImagen, 3, 1, 3, 1, gridCentral, panelCentral); + agregarComponente(botonImagen, 3, 4, 1, 1, gridCentral, panelCentral); + agregarComponente(checkImagen, 3, 5 , 1, 1, gridCentral, panelCentral); + + agregarComponente(botonGuardar, 4, 0, 1, 1, gridCentral, panelCentral); + + + + agregarComponente(labelEliminar, 0, 0, 2, 1, gridSur, panelSur); + agregarComponente(botonEliminar, 0, 3, 2, 1, gridSur, panelSur); + + add( panelCentral, BorderLayout.CENTER); + add ( panelSur, BorderLayout.SOUTH); + + ManejadorBoton manejadorBotones = new ManejadorBoton(); + botonImagen.addActionListener(manejadorBotones); + botonSonido.addActionListener(manejadorBotones); + botonEliminar.addActionListener(manejadorBotones); + botonGuardar.addActionListener(manejadorBotones); + + ManejadorCheckBox manejadorChecks = new ManejadorCheckBox(); + checkImagen.addItemListener(manejadorChecks); + checkTip.addItemListener(manejadorChecks); + + setDefaultCloseOperation( JFrame.DISPOSE_ON_CLOSE ); + setSize( 850, 350 ); + setVisible( true ); + //setResizable(false); + setLocationRelativeTo(null); + } + + //metodo para agregar componentes a un grid bag, se le pasa como parametro las restricciones de cada componente, el GridBag y el panel donde se colocaran + private void agregarComponente( Component componente, int fila, int columna, int anchura, int altura, GridBagLayout elGrid, JPanel elPanel){ + restricciones.gridx = columna; // establece gridx + restricciones.gridy = fila; // establece gridy + restricciones.gridwidth = anchura; // establece gridwidth + restricciones.gridheight = altura; // establece gridheight + + elGrid.setConstraints( componente, restricciones ); // establece restricciones + elPanel.add( componente ); // agrega el componente + + } + //en esta clase estan las acciones de los checkbox, habilitar campos de texto y botones asi como rescatar los textos y mostrarlos nuevamente + private class ManejadorCheckBox implements ItemListener{ + public void itemStateChanged( ItemEvent evento ){ + if(evento.getSource()==checkImagen){ + if(checkImagen.isSelected()){ + tmpTextImg = textImagen.getText(); + botonImagen.setEnabled(false); + textImagen.setText("NADA"); + } + + else{ + + botonImagen.setEnabled(true); + textImagen.setText(tmpTextImg); + } + } + if(evento.getSource()==checkTip){ + if(checkTip.isSelected()){ + tmpTextTip = textTip.getText(); + textTip.setEnabled(false); + textTip.setText("NADA"); + } + else{ + textTip.setEnabled(true); + textTip.setText(tmpTextTip); + } + } + + } + } + + private class ManejadorBoton implements ActionListener{ + + public void actionPerformed( ActionEvent evento ){ + //al seleccionar el boton imagen se usa un filechooser para que el usuario la seleccione su imagen + if (evento.getSource() == botonImagen){ + JFileChooser fileChooser = new JFileChooser(); + fileChooser.setDialogTitle("Seleccione su imagen");//titulo de ventana del JFileChooser + + /*Permite ver archivos con extencion especifica*/ + fileChooser.setFileFilter(new FileNameExtensionFilter("png (*.png)","png")); + fileChooser.setFileFilter(new FileNameExtensionFilter("gif (*.gif)", "gif")); + fileChooser.setFileFilter(new FileNameExtensionFilter("jpeg (*.jpeg)", "jpeg")); + fileChooser.setFileFilter(new FileNameExtensionFilter("jpg (*.jpg)", "jpg")); + + int seleccion = fileChooser.showOpenDialog(null); + + + if (seleccion == JFileChooser.APPROVE_OPTION) { + File fileToSave = fileChooser.getSelectedFile(); + textImagen.setText("");//limpia el campo de texto antes de mostrar una nueva ruta al archivo de imagen + textImagen.setText(fileToSave.getAbsolutePath()); + + } + } + //las acciones para el boton seleccionar sonido son parecidas a la de seleccionar imagen se usa un filechooser + else if (evento.getSource()==botonSonido){ + JFileChooser fileChooser = new JFileChooser(); + fileChooser.setDialogTitle("Seleccione su sonido");//titulo de ventana del JFileChooser + + /*Permite ver archivos con extencion especifica*/ + fileChooser.setFileFilter(new FileNameExtensionFilter("mp3 (*.mp3)", "mp3")); + int seleccion = fileChooser.showOpenDialog(null); + + + if (seleccion == JFileChooser.APPROVE_OPTION) { + File fileToSave = fileChooser.getSelectedFile(); + textSonido.setText("");//limpia el campo de texto antes de poenr una ruta al archivo nueva + textSonido.setText(fileToSave.getAbsolutePath()); + + } + } + + //el boton eliminar (o el boton reinicio de valores pone en los campos de texto NADA y muestra el mensaje) + else if (evento.getSource() == botonEliminar){ + textSonido.setText("NADA"); + textNombre.setText("NADA"); + textImagen.setText("NADA"); + textTip.setText("NADA"); + + JOptionPane.showMessageDialog( null, "Al reiniciar los valores puedes:\n- Guardar con EL VALOR DEL SONIDO REINICIADO para eliminar este boton\n- Modificar los valores para obtener un boton nuevo","Reinicio de valores", JOptionPane.INFORMATION_MESSAGE ); + } + + else if (evento.getSource() == botonGuardar){ + // si hay un sonido guardalo + if(!(textSonido.getText().equals("NADA"))){ + + + config con = new config(); + + File origenSonido; + File destinoSonido; + + origenSonido = new File (textSonido.getText()); + //dependiendo de sistema operativo prepara la ruta relativa para copiar el archivo de sonido + if(System.getProperty("os.name").toLowerCase().startsWith("windows")){ + destinoSonido = new File ("Sonidos\\"+origenSonido.getName()); + } + else{ + destinoSonido = new File ("./Sonidos/"+origenSonido.getName()); + } + try { + // copia el arhivo de sonido y guarda los parametros en el archivo config.config + con.copiarArchivo(origenSonido, destinoSonido); + con.guardarConfig("SonidoU"+id, "./Sonidos/"+origenSonido.getName()); + con.guardarConfig("SonidoW"+id, "Sonidos\\"+origenSonido.getName()); + con.guardarConfig("Nombre"+id, textNombre.getText()); + con.guardarConfig("Tooltip"+id, textTip.getText()); + + } catch (IOException ex) { + Logger.getLogger(AgregarSonido.class.getName()).log(Level.SEVERE, null, ex); + } + + //Si hay una imagen guardala + + if (!(textImagen.getText().equals("NADA"))){ + File origenImagen; + + File destinoImagen; + + origenImagen = new File(textImagen.getText()); + //dependiendo del sistema operativo usa la ruta relativa para copiar el archivo + if(System.getProperty("os.name").toLowerCase().startsWith("windows")){ + destinoImagen = new File ("Imagenes\\"+origenImagen.getName()); + } + else{ + destinoImagen = new File ("./Imagenes/"+origenImagen.getName()); + } + System.out.println(">>>>>"+origenImagen.getName()+"<<<<<<<"); + + try { + //copia la imagen y guarda sus propiedades en el arhivo config.config + con.copiarArchivo(origenImagen, destinoImagen); + con.guardarConfig("ImagenU"+id, "./Imagenes/"+origenImagen.getName()); + con.guardarConfig("ImagenW"+id, "./Imagenes/"+origenImagen.getName()); + } catch (IOException ex) { + Logger.getLogger(AgregarSonido.class.getName()).log(Level.SEVERE, null, ex); + } + + } + else{ + // si no hay una imagen se guarda NADA en el archivo config.config + con.guardarConfig("ImagenU"+id, textImagen.getText()); + con.guardarConfig("ImagenW"+id, textImagen.getText()); + + } + JOptionPane.showMessageDialog( null, "Cierra y abre la aplicacion para ver los cambios","AGREGADO", JOptionPane.INFORMATION_MESSAGE ); + } + //si no hay un archivo de sonido seleccionado pone NADA en el archivo config.config y correr el programa no lo pone en la ventana + else{ + config con = new config(); + int totalBotones=0; + try { + //si esta el archivo config.config obtiene la cantidad de botones + if (!(con.getConfig("Botones").equals("NO_config.config"))){ + totalBotones = Integer.parseInt(con.getConfig("Botones")); + } + } catch (IOException ex) { + Logger.getLogger(ModificaPropiedades.class.getName()).log(Level.SEVERE, null, ex); + } + //pone NADA para que asi no se muestre el boton la siguiente vez que se corra el programa + con.guardarConfig("SonidoU"+id, "NADA"); + con.guardarConfig("SonidoW"+id, "NADA"); + con.guardarConfig("Botones", Integer.toString(totalBotones-1) );//resta uno al total de botones + JOptionPane.showMessageDialog( null, "Se ha eliminado este boton\nCierra y abre la aplicacion para ver los cambios","ELIMINADO", JOptionPane.INFORMATION_MESSAGE ); + } + } + } + } +} diff --git a/src/Sonidos/Abucheos.mp3 b/src/Sonidos/Abucheos.mp3 new file mode 100644 index 0000000..f6496dd Binary files /dev/null and b/src/Sonidos/Abucheos.mp3 differ diff --git a/src/Sonidos/Aplausos.mp3 b/src/Sonidos/Aplausos.mp3 new file mode 100644 index 0000000..b5b3d95 Binary files /dev/null and b/src/Sonidos/Aplausos.mp3 differ diff --git a/src/Sonidos/Ba Dum Tss.mp3 b/src/Sonidos/Ba Dum Tss.mp3 new file mode 100644 index 0000000..23f9e4c Binary files /dev/null and b/src/Sonidos/Ba Dum Tss.mp3 differ diff --git a/src/Sonidos/CAMPANA DE BOX.mp3 b/src/Sonidos/CAMPANA DE BOX.mp3 new file mode 100644 index 0000000..046750b Binary files /dev/null and b/src/Sonidos/CAMPANA DE BOX.mp3 differ diff --git a/src/Sonidos/Claxon de Micro Del D.F ByGtagamermester! FIXED.mp3 b/src/Sonidos/Claxon de Micro Del D.F ByGtagamermester! FIXED.mp3 new file mode 100644 index 0000000..4bc3c5c Binary files /dev/null and b/src/Sonidos/Claxon de Micro Del D.F ByGtagamermester! FIXED.mp3 differ diff --git "a/src/Sonidos/EFECTO DE SONIDO DE SUSPENSO (EL M\303\201S USADO) 2015.mp3" "b/src/Sonidos/EFECTO DE SONIDO DE SUSPENSO (EL M\303\201S USADO) 2015.mp3" new file mode 100644 index 0000000..5a5dfc4 Binary files /dev/null and "b/src/Sonidos/EFECTO DE SONIDO DE SUSPENSO (EL M\303\201S USADO) 2015.mp3" differ diff --git a/src/Sonidos/EFECTOS DE SONIDO Cerdo llorando.mp3 b/src/Sonidos/EFECTOS DE SONIDO Cerdo llorando.mp3 new file mode 100644 index 0000000..71e195b Binary files /dev/null and b/src/Sonidos/EFECTOS DE SONIDO Cerdo llorando.mp3 differ diff --git a/src/Sonidos/Efectos De Sonido #8 _ Vidrios Rotos _ Sin Copyright.mp3 b/src/Sonidos/Efectos De Sonido #8 _ Vidrios Rotos _ Sin Copyright.mp3 new file mode 100644 index 0000000..f0503d8 Binary files /dev/null and b/src/Sonidos/Efectos De Sonido #8 _ Vidrios Rotos _ Sin Copyright.mp3 differ diff --git a/src/Sonidos/Illuminati (X Files) Sound Effect [HQ][Free Download].mp3 b/src/Sonidos/Illuminati (X Files) Sound Effect [HQ][Free Download].mp3 new file mode 100644 index 0000000..b22a07c Binary files /dev/null and b/src/Sonidos/Illuminati (X Files) Sound Effect [HQ][Free Download].mp3 differ diff --git a/src/Sonidos/La cucaracha horn test for GTA SA Sound Effect.mp3 b/src/Sonidos/La cucaracha horn test for GTA SA Sound Effect.mp3 new file mode 100644 index 0000000..ffc2aef Binary files /dev/null and b/src/Sonidos/La cucaracha horn test for GTA SA Sound Effect.mp3 differ diff --git a/src/Sonidos/README.md b/src/Sonidos/README.md new file mode 100644 index 0000000..3023c17 --- /dev/null +++ b/src/Sonidos/README.md @@ -0,0 +1,5 @@ +# NO BORRAR ESTE ARCHIVO + +En este directorio se encuentran sonidos y copias de sonidos usados en la caja de sonido. + +Este archivo facilita el localizar este directorio en el equipo. diff --git a/src/Sonidos/README.md~ b/src/Sonidos/README.md~ new file mode 100644 index 0000000..e69de29 diff --git a/src/Sonidos/Redoble De Tambores Efecto De Sonido-Sin CopyRight-Drum Roll.mp3 b/src/Sonidos/Redoble De Tambores Efecto De Sonido-Sin CopyRight-Drum Roll.mp3 new file mode 100644 index 0000000..95568b3 Binary files /dev/null and b/src/Sonidos/Redoble De Tambores Efecto De Sonido-Sin CopyRight-Drum Roll.mp3 differ diff --git a/src/Sonidos/Retrete.mp3 b/src/Sonidos/Retrete.mp3 new file mode 100644 index 0000000..7b97e51 Binary files /dev/null and b/src/Sonidos/Retrete.mp3 differ diff --git a/src/Sonidos/SONIDO DE EFECTO DE DISCO RAYADO ESTILO DJ 2015 EL MAS USADO.mp3 b/src/Sonidos/SONIDO DE EFECTO DE DISCO RAYADO ESTILO DJ 2015 EL MAS USADO.mp3 new file mode 100644 index 0000000..c20dfda Binary files /dev/null and b/src/Sonidos/SONIDO DE EFECTO DE DISCO RAYADO ESTILO DJ 2015 EL MAS USADO.mp3 differ diff --git a/src/Sonidos/Sad Violin - Air Horn Sound Effect (MLG) CORTO.mp3 b/src/Sonidos/Sad Violin - Air Horn Sound Effect (MLG) CORTO.mp3 new file mode 100644 index 0000000..82d2845 Binary files /dev/null and b/src/Sonidos/Sad Violin - Air Horn Sound Effect (MLG) CORTO.mp3 differ diff --git a/src/Sonidos/Silbido Sexy FIXED.mp3 b/src/Sonidos/Silbido Sexy FIXED.mp3 new file mode 100644 index 0000000..bf317e8 Binary files /dev/null and b/src/Sonidos/Silbido Sexy FIXED.mp3 differ diff --git a/src/Sonidos/Sonido de un grillo cantando (Efecto de sonido).mp3 b/src/Sonidos/Sonido de un grillo cantando (Efecto de sonido).mp3 new file mode 100644 index 0000000..9bd554d Binary files /dev/null and b/src/Sonidos/Sonido de un grillo cantando (Efecto de sonido).mp3 differ diff --git a/src/Sonidos/Sound Fail.mp3 b/src/Sonidos/Sound Fail.mp3 new file mode 100644 index 0000000..5e3af05 Binary files /dev/null and b/src/Sonidos/Sound Fail.mp3 differ diff --git a/src/Sonidos/Terror Clasico.mp3 b/src/Sonidos/Terror Clasico.mp3 new file mode 100644 index 0000000..0602b8a Binary files /dev/null and b/src/Sonidos/Terror Clasico.mp3 differ diff --git a/src/Sonidos/chivo gritando FIXED.mp3 b/src/Sonidos/chivo gritando FIXED.mp3 new file mode 100644 index 0000000..acf0e2b Binary files /dev/null and b/src/Sonidos/chivo gritando FIXED.mp3 differ diff --git a/src/Sonidos/sonido caja registradora.mp3 b/src/Sonidos/sonido caja registradora.mp3 new file mode 100644 index 0000000..051dfb1 Binary files /dev/null and b/src/Sonidos/sonido caja registradora.mp3 differ diff --git a/src/config.config b/src/config.config new file mode 100644 index 0000000..fad56e0 --- /dev/null +++ b/src/config.config @@ -0,0 +1,136 @@ +#Sun Jun 11 19:45:57 CDT 2017 +Botones=19 + +Nombre0= +SonidoU0=./Sonidos/SONIDO DE EFECTO DE DISCO RAYADO ESTILO DJ 2015 EL MAS USADO.mp3 +SonidoW0=Sonidos\\SONIDO DE EFECTO DE DISCO RAYADO ESTILO DJ 2015 EL MAS USADO.mp3 +ImagenU0=./Imagenes/vinilo-music-player_318-86034.jpg +ImagenW0=Imagenes\\vinilo-music-player_318-86034.jpg +Tooltip0=NADA + +Nombre1=Abucheos +SonidoU1=./Sonidos/Abucheos.mp3 +SonidoW1=Sonidos\\Abucheos.mp3 +ImagenU1=./Imagenes/dislike.png +ImagenW1=Imagenes\\dislike.png +Tooltip1=NADA + +Nombre2=Aplausos +SonidoU2=./Sonidos/Aplausos.mp3 +SonidoW2=Sonidos\\Aplausos.mp3 +ImagenU2=./Imagenes/Clap.png +ImagenW2=Imagenes\\Clap.png +Tooltip2=NADA + +Nombre3= +SonidoU3=./Sonidos/Ba Dum Tss.mp3 +SonidoW3=Sonidos\\Ba Dum Tss.mp3 +ImagenU3=./Imagenes/ba dum tss.png +ImagenW3=Imagenes\\ba dum tss.png +Tooltip3=NADA + +Nombre4= +SonidoU4=./Sonidos/CAMPANA DE BOX.mp3 +SonidoW4=Sonidos\\CAMPANA DE BOX.mp3 +ImagenU4=./Imagenes/campanaBox.jpg +ImagenW4=Imagenes\\campanaBox.jpg +Tooltip4=NADA + +Nombre5= +SonidoU5=./Sonidos/Efectos De Sonido #8 _ Vidrios Rotos _ Sin Copyright.mp3 +SonidoW5=Sonidos\\Efectos De Sonido #8 _ Vidrios Rotos _ Sin Copyright.mp3 +ImagenU5=./Imagenes/vidrio roto.jpg +ImagenW5=Imagenes\\vidrio roto.jpg +Tooltip5=Vidrios rotos + +Nombre6=X files +SonidoU6=./Sonidos/Illuminati (X Files) Sound Effect [HQ][Free Download].mp3 +SonidoW6=Sonidos\\Illuminati (X Files) Sound Effect [HQ][Free Download].mp3 +ImagenU6=NADA +ImagenW6=NADA +Tooltip6=NADA + +Nombre7= +SonidoU7=./Sonidos/Redoble De Tambores Efecto De Sonido-Sin CopyRight-Drum Roll.mp3 +SonidoW7=Sonidos\\Redoble De Tambores Efecto De Sonido-Sin CopyRight-Drum Roll.mp3 +ImagenU7=./Imagenes/tambores.jpeg +ImagenW7=Imagenes\\tambores.jpeg +Tooltip7=Redoble de tambores + +Nombre8= +SonidoU8=./Sonidos/Retrete.mp3 +SonidoW8=Sonidos\\Retrete.mp3 +ImagenU8=./Imagenes/Retrete.gif +ImagenW8=Imagenes\\Retrete.gif +Tooltip8=NADA + +Nombre9= +SonidoU9=./Sonidos/sonido caja registradora.mp3 +SonidoW9=Sonidos\\sonido caja registradora.mp3 +ImagenU9=./Imagenes/dolar.jpg +ImagenW9=Imagenes\\dolar.jpg +Tooltip9=Sonido de caja registradora + +Nombre10=Mal chiste +SonidoU10=./Sonidos/Sonido de un grillo cantando (Efecto de sonido).mp3 +SonidoW10=Sonidos\\Sonido de un grillo cantando (Efecto de sonido).mp3 +ImagenU10=./Imagenes/grillo.jpeg +ImagenW10=Imagenes\\grillo.jpeg +Tooltip10=NADA + +Nombre11= +SonidoU11=./Sonidos/Sound Fail.mp3 +SonidoW11=Sonidos\\Sound Fail.mp3 +ImagenU11=./Imagenes/fail.png +ImagenW11=Imagenes\\fail.png +Tooltip11=cua cua cuuaaa + +Nombre12= +SonidoU12=./Sonidos/Terror Clasico.mp3 +SonidoW12=Sonidos\\Terror Clasico.mp3 +ImagenU12=./Imagenes/Horror_icon-icons.com_54174.png +ImagenW12=Imagenes\\Horror_icon-icons.com_54174.png +Tooltip12=Musica de la clasica escena de la regadera + +Nombre13=CERDO +SonidoU13=./Sonidos/EFECTOS DE SONIDO Cerdo llorando.mp3 +SonidoW13=Sonidos\\EFECTOS DE SONIDO Cerdo llorando.mp3 +ImagenU13=NADA +ImagenW13=NADA +Tooltip13=NADA + +Nombre14=CUCARACHA +SonidoU14=./Sonidos/La cucaracha horn test for GTA SA Sound Effect.mp3 +SonidoW14=Sonidos\\La cucaracha horn test for GTA SA Sound Effect.mp3 +ImagenU14=NADA +ImagenW14=NADA +Tooltip14=NADA + +Nombre15= +SonidoU15=./Sonidos/Sad Violin - Air Horn Sound Effect (MLG) CORTO.mp3 +SonidoW15=Sonidos\\Sad Violin - Air Horn Sound Effect (MLG) CORTO.mp3 +ImagenU15=./Imagenes/MLG air horn.jpg +ImagenW15=Imagenes\\MLG air horn.jpg +Tooltip15=NADA + +Nombre16=Claxon DF +SonidoU16=./Sonidos/Claxon de Micro Del D.F ByGtagamermester! FIXED.mp3 +SonidoW16=Sonidos\\Claxon de Micro Del D.F ByGtagamermester! FIXED.mp3 +ImagenU16=NADA +ImagenW16=NADA +Tooltip16=NADA + +Nombre17= +SonidoU17=./Sonidos/chivo gritando FIXED.mp3 +SonidoW17=Sonidos\\chivo gritando FIXED.mp3 +ImagenU17=./Imagenes/chivo gritando FIXED.jpg +ImagenW17=Imagenes\\chivo gritando FIXED.jpg +Tooltip17=NADA + +Nombre18=Silbido sexy +SonidoU18=./Sonidos/Silbido Sexy FIXED.mp3 +SonidoW18=Sonidos\\Silbido Sexy FIXED.mp3 +ImagenU18=NADA +ImagenW18=NADA +Tooltip18=NADA + diff --git a/src/config.java b/src/config.java new file mode 100644 index 0000000..b8076cc --- /dev/null +++ b/src/config.java @@ -0,0 +1,218 @@ + + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.Properties; +import javax.swing.Icon; +import javax.swing.ImageIcon; +import javax.swing.JButton; +//import javax.swing.JOptionPane; + + +public class config { + + public static Properties prop = new Properties(); + + //usa la clase properties que usa el modelo clave - valor + public void guardarConfig(String elemento, String valor){ + + try{ + prop.setProperty(elemento, valor); + prop.store(new FileOutputStream("config.config"), null); + + }catch(IOException e){ + + } + + } + + //usa la clase properties que usa el modelo clave - valor aqui se obtiene el valor dependiendo de la clave o retorna NO_config.config + public String getConfig(String elemento) throws IOException{ + String valor = null; + + try{ + + prop.load( new FileInputStream("config.config") ); + valor = prop.getProperty( elemento ); + + /* + if (valor==null){ + JOptionPane.showMessageDialog( null, "El archivo config.config esta corrupto o no se encuentran las carpetas de imagenes y sonidos\nPuede repararlo o descargar uno nuevo\nNO MODIFIQUE EL ARCHIVO SI NO CONOCE SU ESTRUCTURA","ERROR FATAL", JOptionPane.ERROR_MESSAGE ); + return "CORRUPTO"; + }*/ + + }catch(IOException ex){ + //JOptionPane.showMessageDialog( null, "Parece que hay un problema al leer el archivo config.config","AVISO", JOptionPane.WARNING_MESSAGE ); + + return "NO_config.config"; + } + + + return valor; + } + + //copia el archivo excepto cuando es el mismo archivo a la misma carpeta + public void copiarArchivo(File source, File dest) throws FileNotFoundException, IOException{ + InputStream is = null; + OutputStream os = null; + if (!(source.getCanonicalPath().equals(dest.getCanonicalPath()))){ + //if(source.exists()){ este if-else para verificar si existe el archivo se debe poner en las clases que agregan o modifican sonidos + try { + is = new FileInputStream(source); + os = new FileOutputStream(dest); + byte[] buffer = new byte[1024]; + int length; + while ((length = is.read(buffer)) > 0) { + os.write(buffer, 0, length); + } + } finally { + is.close(); + os.close(); + } + //} + /* + else{ + JOptionPane.showMessageDialog( null, "Parece que el archivo de sonido o imagen no existe","ERROR", JOptionPane.ERROR_MESSAGE ); + }*/ + } + } + + //Retorna los botones con su nombre, icono y tooltip para sistemas unix + public JButton[] getBotonesUnix() throws IOException{ + int botonesSonidos = Integer.parseInt(getConfig("Botones")); + JButton botonSonido[] = new JButton[botonesSonidos]; + String nombreBoton[] = new String[botonesSonidos]; + String origenImagen[] = new String[botonesSonidos]; + String toolTip[] = new String[botonesSonidos]; + Icon icono [] = new Icon[botonesSonidos]; + + //carga en los areglos el contenido del archivo config + for (int i = 0; i < botonesSonidos; i++){ + + nombreBoton[i] = getConfig("Nombre"+Integer.toString(i)); + origenImagen[i] = getConfig("ImagenU"+Integer.toString(i)); + toolTip[i] = getConfig("Tooltip"+Integer.toString(i)); + + } + + //pone las propiedades en los botones + for (int i =0; i 0) { + os.write(buffer, 0, length); + } + } finally { + is.close(); + os.close(); + } + //} + /* + else{ + JOptionPane.showMessageDialog( null, "Parece que el archivo de sonido o imagen no existe","ERROR", JOptionPane.ERROR_MESSAGE ); + }*/ + } + } + + //Retorna los botones con su nombre, icono y tooltip para sistemas unix + public JButton[] getBotonesUnix() throws IOException{ + int botonesSonidos = Integer.parseInt(getConfig("Botones")); + JButton botonSonido[] = new JButton[botonesSonidos]; + String nombreBoton[] = new String[botonesSonidos]; + String origenImagen[] = new String[botonesSonidos]; + String toolTip[] = new String[botonesSonidos]; + Icon icono [] = new Icon[botonesSonidos]; + + //carga en los areglos el contenido del archivo config + for (int i = 0; i < botonesSonidos; i++){ + + nombreBoton[i] = getConfig("Nombre"+Integer.toString(i)); + origenImagen[i] = getConfig("ImagenU"+Integer.toString(i)); + toolTip[i] = getConfig("Tooltip"+Integer.toString(i)); + + } + + //pone las propiedades en los botones + for (int i =0; i