diff --git a/UyTube_aplicacion/src/Presentacion/Usuario/frmAltaUsuario.form b/UyTube_aplicacion/src/Presentacion/Usuario/frmAltaUsuario.form index 465b68df0dba3a423713fd134e1e3c21e1019587..2a6d70672f696c47c4b4f9823eff9ea1c453f06d 100644 --- a/UyTube_aplicacion/src/Presentacion/Usuario/frmAltaUsuario.form +++ b/UyTube_aplicacion/src/Presentacion/Usuario/frmAltaUsuario.form @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8" ?> -<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JDialogFormInfo"> +<Form version="1.8" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JDialogFormInfo"> <NonVisualComponents> <Component class="javax.swing.ButtonGroup" name="GrupoPrivacidad"> </Component> @@ -113,14 +113,14 @@ <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> <Font name="Tahoma" size="18" style="0"/> </Property> - <Property name="text" type="java.lang.String" value="Selecionar"/> + <Property name="text" type="java.lang.String" value="Selecionar Imagen"/> </Properties> <Events> <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btSeleccionarActionPerformed"/> </Events> <Constraints> <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="230" y="270" width="160" height="60"/> + <AbsoluteConstraints x="170" y="290" width="200" height="60"/> </Constraint> </Constraints> </Component> @@ -335,6 +335,16 @@ </Constraint> </Constraints> </Component> + <Component class="javax.swing.JLabel" name="jLabel10"> + <Properties> + <Property name="text" type="java.lang.String" value="Imagen"/> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> + <AbsoluteConstraints x="30" y="270" width="-1" height="20"/> + </Constraint> + </Constraints> + </Component> <Container class="javax.swing.JPanel" name="pnlImagen"> <Properties> <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> @@ -348,7 +358,7 @@ </Events> <Constraints> <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="80" y="270" width="130" height="110"/> + <AbsoluteConstraints x="30" y="290" width="130" height="110"/> </Constraint> </Constraints> @@ -356,7 +366,7 @@ <Property name="useNullLayout" type="boolean" value="false"/> </Layout> <SubComponents> - <Component class="javax.swing.JLabel" name="lbImagen"> + <Component class="javax.swing.JLabel" name="lbImg"> <Constraints> <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> <AbsoluteConstraints x="0" y="0" width="130" height="110"/> @@ -365,16 +375,6 @@ </Component> </SubComponents> </Container> - <Component class="javax.swing.JLabel" name="jLabel10"> - <Properties> - <Property name="text" type="java.lang.String" value="Imagen"/> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="20" y="270" width="-1" height="20"/> - </Constraint> - </Constraints> - </Component> <Component class="javax.swing.JLabel" name="jLabel42"> <Properties> <Property name="text" type="java.lang.String" value="Email"/> @@ -394,7 +394,7 @@ </Properties> <Constraints> <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="260" y="350" width="90" height="-1"/> + <AbsoluteConstraints x="90" y="270" width="90" height="-1"/> </Constraint> </Constraints> </Component> @@ -436,7 +436,23 @@ <Component class="com.toedter.calendar.JDateChooser" name="jDateChooser1"> <Constraints> <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="270" y="220" width="100" height="-1"/> + <AbsoluteConstraints x="270" y="220" width="130" height="-1"/> + </Constraint> + </Constraints> + </Component> + <Component class="javax.swing.JButton" name="btnQuitarImagen"> + <Properties> + <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> + <Font name="Dialog" size="18" style="0"/> + </Property> + <Property name="text" type="java.lang.String" value="Quitar Imagen"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnQuitarImagenActionPerformed"/> + </Events> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> + <AbsoluteConstraints x="170" y="360" width="200" height="60"/> </Constraint> </Constraints> </Component> diff --git a/UyTube_aplicacion/src/Presentacion/Usuario/frmAltaUsuario.java b/UyTube_aplicacion/src/Presentacion/Usuario/frmAltaUsuario.java index ee280c6529c95b570250a5f735f6a9afa58e83bc..f9fa9794a01ce67817c9ffa216f7e0ebc757ddc7 100644 --- a/UyTube_aplicacion/src/Presentacion/Usuario/frmAltaUsuario.java +++ b/UyTube_aplicacion/src/Presentacion/Usuario/frmAltaUsuario.java @@ -28,7 +28,6 @@ import javax.swing.plaf.ColorUIResource; public class frmAltaUsuario extends javax.swing.JDialog { - // Patrón para validar el email Pattern patronEmail = Pattern.compile("^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@" + "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"); @@ -46,7 +45,7 @@ public class frmAltaUsuario extends javax.swing.JDialog { String nombreCanal = new String(); String descripcion = new String(); Privacidad privacidad = Privacidad.PRIVADO; - String imagen = new String(); + String ruta; java.sql.Date fecha = null; @@ -150,7 +149,7 @@ public class frmAltaUsuario extends javax.swing.JDialog { txtDescripcion.setText(""); txtNombreCanal.setText(""); jDateChooser1.setDate(null); - lbImagen.setIcon(null); + lbImg.setIcon(null); } @SuppressWarnings("unchecked") @@ -182,9 +181,9 @@ public class frmAltaUsuario extends javax.swing.JDialog { jLabel14 = new javax.swing.JLabel(); rdPublico = new javax.swing.JRadioButton(); jSeparator2 = new javax.swing.JSeparator(); - pnlImagen = new javax.swing.JPanel(); - lbImagen = new javax.swing.JLabel(); jLabel10 = new javax.swing.JLabel(); + pnlImagen = new javax.swing.JPanel(); + lbImg = new javax.swing.JLabel(); jLabel42 = new javax.swing.JLabel(); jLabel50 = new javax.swing.JLabel(); lbMsjNikname = new javax.swing.JLabel(); @@ -193,6 +192,7 @@ public class frmAltaUsuario extends javax.swing.JDialog { lbMsjEmail = new javax.swing.JLabel(); lbMsjFecha = new javax.swing.JLabel(); jDateChooser1 = new com.toedter.calendar.JDateChooser(); + btnQuitarImagen = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("Alta usuario"); @@ -262,13 +262,13 @@ public class frmAltaUsuario extends javax.swing.JDialog { jPanel2.add(txtEmail, new org.netbeans.lib.awtextra.AbsoluteConstraints(100, 170, 300, -1)); btSeleccionar.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N - btSeleccionar.setText("Selecionar"); + btSeleccionar.setText("Selecionar Imagen"); btSeleccionar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btSeleccionarActionPerformed(evt); } }); - jPanel2.add(btSeleccionar, new org.netbeans.lib.awtextra.AbsoluteConstraints(230, 270, 160, 60)); + jPanel2.add(btSeleccionar, new org.netbeans.lib.awtextra.AbsoluteConstraints(170, 290, 200, 60)); txtNombreCanal.addKeyListener(new java.awt.event.KeyAdapter() { public void keyPressed(java.awt.event.KeyEvent evt) { @@ -346,6 +346,9 @@ public class frmAltaUsuario extends javax.swing.JDialog { jPanel2.add(rdPublico, new org.netbeans.lib.awtextra.AbsoluteConstraints(540, 350, -1, -1)); jPanel2.add(jSeparator2, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 30, 980, 10)); + jLabel10.setText("Imagen"); + jPanel2.add(jLabel10, new org.netbeans.lib.awtextra.AbsoluteConstraints(30, 270, -1, 20)); + pnlImagen.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED)); pnlImagen.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { @@ -353,25 +356,31 @@ public class frmAltaUsuario extends javax.swing.JDialog { } }); pnlImagen.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout()); - pnlImagen.add(lbImagen, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 130, 110)); + pnlImagen.add(lbImg, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 130, 110)); - jPanel2.add(pnlImagen, new org.netbeans.lib.awtextra.AbsoluteConstraints(80, 270, 130, 110)); - - jLabel10.setText("Imagen"); - jPanel2.add(jLabel10, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 270, -1, 20)); + jPanel2.add(pnlImagen, new org.netbeans.lib.awtextra.AbsoluteConstraints(30, 290, 130, 110)); jLabel42.setText("Email"); jPanel2.add(jLabel42, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 170, -1, -1)); jLabel50.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N jLabel50.setText("(Opcional)"); - jPanel2.add(jLabel50, new org.netbeans.lib.awtextra.AbsoluteConstraints(260, 350, 90, -1)); + jPanel2.add(jLabel50, new org.netbeans.lib.awtextra.AbsoluteConstraints(90, 270, 90, -1)); jPanel2.add(lbMsjNikname, new org.netbeans.lib.awtextra.AbsoluteConstraints(100, 70, 270, -1)); jPanel2.add(lbMsjNombre, new org.netbeans.lib.awtextra.AbsoluteConstraints(100, 110, 270, -1)); jPanel2.add(lbMsjApellido, new org.netbeans.lib.awtextra.AbsoluteConstraints(100, 150, 270, -1)); jPanel2.add(lbMsjEmail, new org.netbeans.lib.awtextra.AbsoluteConstraints(100, 190, 300, -1)); jPanel2.add(lbMsjFecha, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 240, 350, 15)); - jPanel2.add(jDateChooser1, new org.netbeans.lib.awtextra.AbsoluteConstraints(270, 220, 100, -1)); + jPanel2.add(jDateChooser1, new org.netbeans.lib.awtextra.AbsoluteConstraints(270, 220, 130, -1)); + + btnQuitarImagen.setFont(new java.awt.Font("Dialog", 0, 18)); // NOI18N + btnQuitarImagen.setText("Quitar Imagen"); + btnQuitarImagen.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnQuitarImagenActionPerformed(evt); + } + }); + jPanel2.add(btnQuitarImagen, new org.netbeans.lib.awtextra.AbsoluteConstraints(170, 360, 200, 60)); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); @@ -398,10 +407,85 @@ public class frmAltaUsuario extends javax.swing.JDialog { }// </editor-fold>//GEN-END:initComponents private void btSeleccionarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btSeleccionarActionPerformed - //Usiario->nuevo Usuario->seleccionar - cargarImagen(lbImagen); + //cargarImagen(lbImagen); + String rutaAnterior = ruta; + ruta = seleccionarImagen(); + if (ruta.isEmpty()) { + ruta = rutaAnterior; + } + cargarImagenEnJlabel(lbImg, ruta); }//GEN-LAST:event_btSeleccionarActionPerformed + private void cargarImagenEnJlabel(javax.swing.JLabel jLabelx, String Ruta) { + jLabelx.setText(null); + // Carga la imagen a la variable de tipo Image + Image img = new ImageIcon(Ruta).getImage(); + // Crea un ImageIcon a partir de la imagen (obtiene las dimenciones del jLbel y escala la imagen para que entre en el mismo) + ImageIcon icono = new ImageIcon( + img.getScaledInstance(jLabelx.getWidth(), jLabelx.getHeight(), Image.SCALE_SMOOTH) + ); + // establece la imagen en el label + jLabelx.setIcon(icono); + } + + private String seleccionarImagen() { + // Crea un JFileChooser + JFileChooser JFC = new JFileChooser(); + // crea un filtro para aceptar solo algunas extensiones + FileNameExtensionFilter filtroImagen = new FileNameExtensionFilter("JPG, PNG", "jpg", "png"); + // Agrega el filtro al JFileChooser + JFC.setFileFilter(filtroImagen); + + // archivo seleccionado + File archivo; + // para saber si se selecciono algo o se cancelo + int resultado; + + while (true) { + // muestra el JFileChooser + resultado = JFC.showOpenDialog(this); + + // Si pasa algo que no sea el aceptar + if (resultado != JFileChooser.APPROVE_OPTION) { + return ""; + } + + // obtiene el archivo seleccionado + archivo = JFC.getSelectedFile(); + + // Si se selecciono algun archivo + if (archivo != null) { + // obtiene la ruta del archivo + String rutaArchivo = archivo.getAbsolutePath(); + // obtiene el archivo como imagen a partir de la ruta + Image img = new ImageIcon(rutaArchivo).getImage(); + + // verifica que tanto se deformará la imagen al mostrarla en un cuadrado + float deformacion; + if (img.getHeight(null) > img.getWidth(null)) { + deformacion = img.getHeight(null) / img.getWidth(null); + } else { + deformacion = img.getWidth(null) / img.getHeight(null); + } + + if (deformacion < 1.3 && deformacion >= 1) { + // si no se deforma demasiado + // devuelve la ruta absoluta + return rutaArchivo; + } else { + // si se deforma demasiado, lo avisa al usuario para que escoja otra + JOptionPane.showMessageDialog(null, + "La imagen es demasiado alta o demasiado ancha.\n" + img.getWidth(null) + "x" + img.getHeight(null), + "Problemas con la imagen", + JOptionPane.WARNING_MESSAGE + ); + } + } else { + // sino devuelve un string vacio + return ""; + } + } + } private void btnCargarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCargarActionPerformed jDateChooser1.setBorder(bordeDefault); @@ -413,8 +497,6 @@ public class frmAltaUsuario extends javax.swing.JDialog { email = txtEmail.getText().toLowerCase().trim(); descripcion = txtDescripcion.getText().trim(); nombreCanal = txtNombreCanal.getText().trim(); - //Privacidad Privado por default - imagen= ""; //Verifica la opcion seleccionada por los radioButton (Privado o Publico) if(rdPublico.isSelected()){ privacidad = Privacidad.PUBLICO; @@ -453,7 +535,7 @@ public class frmAltaUsuario extends javax.swing.JDialog { } try { - DtUsuario dtUsuario = new DtUsuario(nickname, nickname, nombre, apellido, email, fecha, imagen, 0); + DtUsuario dtUsuario = new DtUsuario(nickname, nickname, nombre, apellido, email, fecha, ruta, 0); DtCanal dtCanal = new DtCanal(Canal.getNuevoId(), nombre, descripcion, privacidad); sys.altaUsuarioCanal(dtUsuario, dtCanal); JOptionPane.showMessageDialog(null, "Se ha creado el usuario "+nickname, "Alta de usuario", JOptionPane.INFORMATION_MESSAGE); @@ -563,43 +645,20 @@ public class frmAltaUsuario extends javax.swing.JDialog { jDateChooser1.setDate(fechaActual);//Setea el JDateChooser con la fecha actual }//GEN-LAST:event_formWindowActivated - private void cargarImagen(javax.swing.JLabel jLabelx) { - JFileChooser jf = new JFileChooser(); - jf.showOpenDialog(this); - File archivo = jf.getSelectedFile(); - - if (archivo != null) { - FileNameExtensionFilter filtroImagen = new FileNameExtensionFilter("JPG, PNG", "jpg", "png"); - jf.setFileFilter(filtroImagen); - //jLabel4.setText(archivo.getAbsolutePath()); - Image img = new ImageIcon(archivo.getAbsolutePath()).getImage(); - float i = 0f; - if (img.getHeight(null) > img.getWidth(null)) { - i = img.getHeight(null) / img.getWidth(null); - } else { - i = img.getWidth(null) / img.getHeight(null); - } - if (i < 1.4 && i >= 1) { - ImageIcon img2 = new ImageIcon(img.getScaledInstance(jLabelx.getWidth(), jLabelx.getHeight(), Image.SCALE_SMOOTH)); - jLabelx.setIcon(img2); - /* - ImageIcon img3 = new ImageIcon(img.getScaledInstance(jLabelx.getWidth(), jLabelx.getHeight(), Image.SCALE_SMOOTH)); - jLabelx.setIcon(img3);//cuidado!! - jLabelx.setVisible(false);//cuidado!!*/ - } else { - JOptionPane.showMessageDialog(null, "Imagen fuera de dimenciones " + img.getWidth(null) + " x " + img.getHeight(null)); - } - } - } - - - + private void btnQuitarImagenActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnQuitarImagenActionPerformed + // Quitar imagen + ruta = ""; + cargarImagenEnJlabel(lbImg, ruta); + }//GEN-LAST:event_btnQuitarImagenActionPerformed + + // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.ButtonGroup GrupoPrivacidad; private javax.swing.JButton btCancelar; private javax.swing.JButton btSeleccionar; private javax.swing.JButton btnCargar; + private javax.swing.JButton btnQuitarImagen; private com.toedter.calendar.JDateChooser jDateChooser1; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel10; @@ -617,7 +676,7 @@ public class frmAltaUsuario extends javax.swing.JDialog { private javax.swing.JScrollPane jScrollPane1; private javax.swing.JSeparator jSeparator1; private javax.swing.JSeparator jSeparator2; - private javax.swing.JLabel lbImagen; + private javax.swing.JLabel lbImg; private javax.swing.JLabel lbMsjApellido; private javax.swing.JLabel lbMsjEmail; private javax.swing.JLabel lbMsjFecha;