Firmas Personalizadas con Gmail

Hace tiempo que quería postear algo como esto, y es porque desde que cerré mi cuenta del hotmail para mudarme completamente al gmail, he buscado personalizarlo y adaptarlo a mis necesidades, usando etiquetas, filtros, entre otras cosas; pero una de las grandes desventajas que ví, fue que gmail no te permite poner firmas personalizadas. Estuve buscando por horas en Internet, y encontré soluciones, como usar una extensión para Firefox o usar un cliente de mensajería externo, pero todas esas alternativas me limitan a solo usar mi PC(previamente configurada) para enviar mi firma adjunta. Bueno, lo deje por un tiempo y luego revisando Gmail Labs, encontré una extensión para el Gmail que permite agregar respuestas prediseñadas.

Funcion Respuestas Prediseñadas - Gmail Labs

Respuestas Prediseñadas - Gmail

Al principio lo active por probar, pensando “de algo me ha de servir”, aunque pensando de que solo se podía agregar texto(como muestra la imagen de ahi, ademas la descripción no es muy intuitiva que digamos) bueno luego me di cuenta que podía agregar cualquier cosa ahi, y citarla cuando quiera(no solo texto plano, si no tambien imagenes) pero gmail permite imagenes ¿?.. pues no, para esto tenemos otra extencion de gmail labs.

Inserción de Imagenes - Gmail Labs

Luego de activar esas dos extensiones, solo nos queda Crear nuestras firmas, y llamarlas cuando queramos, pero como hacer una firma bonita “profesional”, las herramientas que nos da gmail, para crear mensajes, no son tan estéticas que digamos. Lo que podemos hacer es copiarnos de otros mensajes o de otras paginas por ejemplo yo recibí un bonito y estilizado mensaje de arsys.es cuando registre este dominio, decía un montón de cosas sobre mis datos bla bla.. lo que hice fue darle al botón ”reenviar”, copiar todo lo del mensaje, y pegarlo en un nuevo mensaje, luego borrar todo lo relacionado con arsys, cambiar algunos datos.. y dejarlo como plantilla al guardarlo en respuestas prediseñadas. Quedo algo como esto…

Mensaje Estilizado

Como podemos notar, se transforma en un mensaje, mucho mas agradable de leer(aunque este en latín, y no entienda ni un pepino xD)

Esa es una plantilla con firma incluida, que puedes usar para tratos un poco mas elegantes, y para tus amigos puedes usar otra firma, con una imagen como esta:

Mensaje con firma personalizada, un poco mas coloquial

Esta es una tabla, que gmail no permite tablas ¿?, pero si permite el copy paste ^^ XD Lo que hice fue hacer la tabla en html, con una lista en el cuadro de la derecha, donde van mis datos, y en la izquierda, inserte la imagen con el mismo gmail.

Tambien, puedes copiar fragmentos de diseños de otras paginas, con control + c y control + v, aunque no siempre funcionan, aunque se ve bien antes de enviar, cuando lo reciben, no se ve igual. Puedes ir probando reenviandote el mensaje a ti mismo, luego que te gusta como queda la firma, la guardas como respuesta prediseñada y listo.

Otra cosa buena, de esta “extensión” de google labs, es que las respuestas prediseñadas se agregan al final del mensaje que ya hayas escrito, copiado, o estes reenviando.

Algunos pueden decir, que esto no es una firma personalizada, si no es como un mensaje que guardo en borrador y lo re-uso varias veces. Yo creo que es mas como una opcion, que se agrega al editor del mensaje y que te dice, deseas adjuntar firma “si” o “no”?, es muy útil dado que no puedes enviar la misma firma a tu jefe, o a tu profesor, que a tus amigos, incluso puedes cambiar de firma constantemente o elegir una al azar, para no enviar con la misma firma siempre… ^^

;-) Espero que les haya sido util.

Actualizacion 10/08/2010

Últimamente han surgido varios cambios en gmail(etiquetas en los contactos, nuevos botones, etc.), hoy me di con la sorpresa de que ahora gmail ahora ya permite firmas personalizadas, eso es muy bueno, asi que aquí les dejo la captura:

Firma con Estilos - Gmail

Continue reading

, , , , ,

Crea tus Propios Componentes de Java con Netbeans

Bueno, esto lo aprendí hace tiempo cuando quería encontrar una forma de ponerle una imagen de un JPanel, creo que fue cuando estaba en 2º Ciclo, bueno esta vez voy a explicar como crear tus propios componentes así como un JTextField, un JPanel, un JLabel, un JButton o el componente que desees para adaptarlo a tus necesidades, por ejemplo en este tutorial crearemos un componente que extenderá de un JTextField y nos validará con expresiones regulares una cadena cualquiera. Mostrandonos si esta o no bien.

Primero antes de empezar si no sabes que es una expresión regular pásate por esta pagina, en resumen una expresion regular es una cadena de caracteres que establece un patrón que debe cumplirse. Por ejemplo si yo quiero saber si un DNI es valido, uso esto "\d{8}" donde el \d indica que debe ser un dígito cualquiera y el {8} que debe estar 8 veces. Las expresiones regulares también pueden servirte para validar un correo, o para validar que un campo no tenga números ni caracteres especiales, etc.

Bueno ahora si empezamos con el código, lo primero que debemos programar es nuestro componente:

JAVA:
  1. /*
  2. * To change this template, choose Tools | Templates
  3. * and open the template in the editor.
  4. */
  5. package componentespropios;
  6.  
  7. import java.awt.Graphics;
  8. import java.awt.Insets;
  9. import java.awt.event.KeyAdapter;
  10. import java.awt.event.KeyEvent;
  11. import java.awt.image.BufferedImage;
  12. import javax.imageio.ImageIO;
  13. import javax.swing.JTextField;
  14.  
  15. /**
  16. *
  17. * @author onZeroPK
  18. */
  19. public class JTextFieldValidator extends JTextField {
  20.  
  21. private BufferedImage bien;//Icono que se mostrará cuando la cadena ingresada sea correcta
  22. private BufferedImage mal;//Icono que se mostrará cuando la cadena ingresada sea incorrecta
  23. private String exprecionRegular = ".*";//Expresion regular por defecto, todas las combinaciones posibles.
  24.  
  25. public JTextFieldValidator() {
  26. super();
  27. try {
  28. bien = ImageIO.read(getClass().getResource("/iconos/bien.png"));//Obtengo la el icono bien.png del paquete iconos para luego graficarlos
  29. mal = ImageIO.read(getClass().getResource("/iconos/mal.png"));//Obtengo la el icono mal.png del paquete iconos
  30. } catch (Exception e) {
  31. e.printStackTrace();
  32. }
  33. super.setMargin(new Insets(super.getMargin().top, super.getMargin().left, super.getMargin().bottom, super.getMargin().right + 10));//Ponemos un margen al texto, para que este no se ponga encima de la imagen.
  34. addKeyListener(new KeyAdapter() {
  35. /*
  36. * Agregamos un listener, para que cuando una tecla sea presionada, este vuelva a repintar el componente,
  37. * o sea verificar si la cadena cumple con la expresion regular o no, para cambiar el icono.
  38. */
  39.  
  40. @Override
  41. public void keyReleased(KeyEvent e) {
  42. repaint();//Repintamos cada vez que se presione
  43. }
  44. });
  45. }
  46. /*
  47. * Dado que hemos cambiado los margenes, tenemos que hacer que cualquier cambio que se haga en el margen, no afecte al icono,
  48. * Y quede transparente hacía el usuario.
  49. */
  50.  
  51. @Override
  52. public void setMargin(Insets ins) {
  53. super.setMargin(new Insets(ins.top, ins.left, ins.bottom, ins.right + 10));
  54. }
  55.  
  56. @Override
  57. public Insets getMargin() {
  58. try {
  59. Insets a = new Insets(super.getMargin().top, super.getMargin().left, super.getMargin().bottom, super.getMargin().right - 10);
  60. return a;
  61. } catch (Exception e) {
  62. return null;
  63. }
  64. }
  65.  
  66. @Override
  67. protected void paintComponent(Graphics g) {
  68. super.paintComponent(g);//pintamos el textfield, como lo debería hacer normalmente si no estuvieramos sobreescribiendo este metodo.
  69. int y = (getHeight() - bien.getHeight()) / 2;//Establecemos la pocicion en y donde aparecera el icono
  70. g.drawImage(isTextoValido() ? bien : mal, getWidth() - 20, y, this);//Dibujamos el icono
  71. /*
  72. * isTextoValido() ? bien : mal
  73. * Ese es un if corto, lo que esta antes del signo de ? es la condicion
  74. * lo que esta entre el signo de ? y el : es el "entonces"(then)
  75. * lo que esta despues del : es el "si no"(else)
  76. */
  77. }
  78. /*
  79. * Un metodo que nos permita saber si lo ingresado es valido.
  80. */
  81.  
  82. public boolean isTextoValido() {
  83. return getText().matches(getExprecionRegular());//Aqui decimos que retorne si cumple o no la expresion regular.
  84. }
  85.  
  86. /**
  87. * @return the exprecionRegular
  88. */
  89. public String getExprecionRegular() {
  90. return exprecionRegular;
  91. }
  92.  
  93. /**
  94. * @param exprecionRegular the exprecionRegular to set
  95. */
  96. public void setExprecionRegular(String exprecionRegular) {
  97. this.exprecionRegular = exprecionRegular;
  98. }
  99. }

Luego que creamos nuestro Componente, lo compilamos.(Si no lo compilamos no podremos agregarlo a la paleta. Puedes compilar todo el proyecto o solo la clase) Después tenemos que darle clic derecho a nuestra clase>herramientas>agregar a paleta:

Agregamos la clase a la paleta de componentes.

Luego de eso nos aparecerá la siguiente ventana, donde elegiremos a que categoría de la paleta, deseamos agregar nuestro componente, en nuestro caso elegiremos Controles Swing por que ahí también pertenece el JTextField.

Seleccionamos la categoría de la Paleta

Luego de eso, nuestro componente nos aparecerá a la derecha de para reutilizarlo cuantas veces queramos, simplemente arrastrando.

Aquí podemos Ver que ahí aparece nuestro componente

Ejemplo Practico:

Incluso, a la derecha en propiedades, podemos ver los atributos que nosotros creamos, los cuales están con set y get.

Bueno creo que eso es todo. Espero que me hallan entendido, cualquier duda escribirla en los comentarios.

Proyecto en Netbeans: ComponentesPropios

Continue reading

, , , ,

Ajedrez en Java con Netbeans

Ajedrez en Java corriendo desde NetbeansBueno el año pasado en el 2009 por el mes de octubre, un amigo del colegio me pidió que le ayudará en hacer un ajedrez en java, bueno yo acepte el "reto" y ese mismo día me puse a desarrollar el ajedrez, al primer día ya se mostraba el tablero y las piezas en sus respectivas posiciones, y ya respondía a eventos del mouse, en fin, me había pedido que lo ayude no? creí que eso era suficiente como para impulsarlo a que lo termine, bueno después de que me pidiera otros favores para hacer pequeñas algunas cosas en el código, termine de hacer el ajedrez yo solo, en fin.. me doy en la libertad de publicarlo, por que yo he hecho el 99.9% del código, el 0.1% consiste en encontrar los iconos para el ajedrez xD.

Se puede considerar que en el ajedrez juega también la maquina, pero sus movimientos son prácticamente aleatorios, no hay ningun agente inteligente detrás del ajedrez, aunque se puede después podría implementarlo , solo reescribiendo un método.

Por cierto, intente comentar el código; pero es realmente, realmente, aburrido y solo logre comentar la algunas clases, aunque los nombres que usan los métodos(creo yo) que son bien intuitivos.

Ajedrez/Archivo Jar

Ajedrez/Sorce Code

Cualquier duda sobre el código, podrán agregarla en los comentarios ;-)

Continue reading

, , , , ,

Inauguración del Blog onZeroPK

Bueno iniciando la segunda década del siglo 21, doy por iniciado mi primer blog, donde intentaré publicar todo lo piense que pueLogo corto, Oficialda ayudar a alguien y entre otras cosas como noticias, el blog lo cree el 29 de diciembre del 2009 pero estuve reparando detalles como logos, portada, y recién doy el 1º de enero del 2010 como iniciado.

Los logos que hice antes de decidir por el del centro son los siguientes:

Alternativas de Logos

En estoy momentos estoy intentando terminar de corregir algunos detalles, y quiero dar las gracias a Ismael, por darme un pequeño espacio en su host y evitar estar con el lento 000Webost 000WebHost

Saludos y ahi vamos!! :)

Continue reading