jueves, 8 de diciembre de 2011

How to: Create Login with Ajax and CodeIgniter // Crear Login con Ajax y CodeIgniter

Bueno, hola otra vez :D. Últimamente debido a mis pequeños momentos de ocio que he podido tener en el trabajo, me he dedicado a aprender un poco más (nunca esta de mas conocer un poco acerca de las tecnologías actuales :) ) acerca de programación web con PHP 5 y el framework CodeIgniter (version 2.1.0).

Haciendo un poco de lectura en la documentación oficial del framework he decidido llevar a la practica lo que ahí se expone, claro esta, incluyendo una que otra funcionalidad con la libraría de javascript JQuery (usando esta para las llamadas ajax a los controladores [llamadas a bases de datos y demás cosas]).

En este punto doy por entendido que ya tienes Apache, PHP y MySQL instalado, configurado y el Framework CodeIgniter configurado con la base de datos que vamos a usar, de no ser así leer la documentación oficial.
En la base de datos debemos tener una tabla llamada user/usuario/persona/ o como querrás llamarla, eso es irrelevante (en mi caso user), acá una imagen de la estructura:


Ahora crearemos.
  • una vista; la cual llamaremos userLogin.php y esta estara situada en application/views
  • un Controlador; UserController.php y lo guardamos en application/controllers
  • y por ultimo un modelo; UserModel.php, application/models
 Creamos en la raíz del proyecto dos carpetas. llamadas
  • css. acá guardaremos (obviamente) las hojas de estilo y las imágenes del sistema
  • js. carpeta que almacenará la libreria de jquery y jquery-ui.min, entre otros scripts que deseemos crear.
Bueno una vez ya definido la estructura del sistema, ahora definiremos la lógica bajo la cual programaremos el Login.
Por el momento los campos que nos interesan de la tabla user con : password, nickname, email. mediante estos se validara al usuario.
Las llamadas a la base de datos serán de modo asíncronas  lo cual nos va a permitir consultar la base de datos sin necesidad de refrescar el sitio entero.
Empecemos entonces creando el Modelo:

How to: set MaxLength JTextfield // Setear longitud maxima de texto JTextField

Hola a todos :D espero estén pasando bien y preparándose para la celebración de la Navidad (si es que la celebran claro :D). no hay nada de malo en no celebrarla pero muchas veces hay regalos y comida... y lo mejor de todo... Its FREE!! x).
Bueno ya pasando al tema en cuestión. muchas veces (por no decir todas) queremos validar desde la interfaz del usuario la cantidad máxima de caracteres que un campo puede soportar. Cuando creamos una aplicación web la tarea es mas que sencilla, simplemente (si mi memoria no me falla) se hace asi:
Fácil verdad :D. pero en Java. por diferentes razones no existe un método para lograr dicho comportamiento en nuestros JTextField. entonces nosotros creamos una clase a la cual le indicamos la longitud deseada. esto de la siguente manera:

jueves, 27 de octubre de 2011

How to: Change JInternalFrame Icons // Cambiar iconos de los JInternalFrame (maximizar, cerrar, minimizar)

Hola a todos :D en esta ocasión vamos a ver como darle un aspecto un poco mas personalizado a nuestras aplicaciones swing en java. el objetivo de esta entrada es cambiar los botones de maximiza, minimizar y cerrar(en sus diferentes estados) de los JInternalFrames. He optado por usar la clase NimbusLookAndFeel para lograr el objetivo, lo hago de estar forma porque es un LookAndFeel bastante agradable a la vista y permite (como vimos en esta entrada) poner, de una forma super sencilla, barras traslucidas a los JInternalFrames.
Pasamos de tener algo como esto:


a algo aun mas bonito y personalizado(me refiero al aspecto de los botones de los JInternalFrames x)... por alguna duda que pueda surgir) como esto:

Como vamos a lograr eso?. la verdad super sencillo. algo asi:

viernes, 21 de octubre de 2011

Abrir JInternalFrame desde otro JInternalFrame

Hola como respuesta a un comentario en esta entrada (por fin alguien comenta en el blog xD) . veremos (justo lo que solicitan e indica el titulo de la entrada)
Crearemos 3 Clases.(LafMain.java, JIF.java, JIF2.java)
el codigo de JIF2.java no lo escribo porque es un JinternalFrame vacio :D

Si necesitan o quieren ver como crear un menú pueden entrar acá o acá :D
la clase principal:

miércoles, 12 de octubre de 2011

How To: Create Dinamic menu from XML file Java // Crear menu dinamico desde XML en Java

Hola a todos, ahora lo que vamos a ver es como generar un menú y sus opciones hijas desde un xml, esto desde mi humilde punto de vista es bastante útil, dado que estar generando el menú desde código en java lleva mucho tiempo, y si queremos agregar otra opción al menú, se tienen que hacer demasiados cambios al código; con esto no quiero decir que con esta forma que veremos a continuación no se tiene que cambiar nada cuando se quiera cambiar la estructura del código, pero si los cambios son mínimos y el esfuerzo también.

Para empezar veremos el resultado final (para que se animen mas a seguir leyendo ^^).
y la otra opción de menú:

martes, 11 de octubre de 2011

Debian tambien es atractivo para el usuario final


mmm Hola :D, pues después de algún tiempo de no publicar algo relacionado directamente con el O.S Gnu/Linux, pues quiero volver a darle continuidad a compartir y hacer ver las ventajas que un sistema operativo de ideología libre te puede ofrecer, pues la foto de ahora, quiero dar a demostrar que Gnu/Linux no es esto:


sino que puede ser esto (siempre que el usuario lo desee):

viernes, 7 de octubre de 2011

HOW TO: Llenar Swing Jtree con archivo XML

Hola a todos :). espero la estén pasando genial; y si no es así, almenos que no la estén pasando mal x).
Ahora pienso compartir algo que a mi parecer es muy útil (almenos en su debido momento me sirvió mucho) y es llenar un un Jtree desde un archivo xml. bueno, iniciemos entonces :D

Para empezar vamos a crear una sencilla clase que se llamará XMLTreeNode.java, dicha clase solo poseerá una propiedad Element (dicho tipo (interface que extiende de Node) representa un elemento un poco obvio no? xD en un documento HTML o XML, para nuestro caso un xml), un método getElement() que nos devuelve la propiedad, el método toString() (obviamente sobre escrito) y un método getKey(), entenderemos su uso a medida avancemos con la lectura. Quedando el código de la siguiente manera:

martes, 6 de septiembre de 2011

HOW TO: JDesktopPane Background Image, JInternalFrame Transparent Title Bar

Hey hola a todos :) mas de alguna vez hemos querido darle un aspecto un poco mas vistoso a nuestras aplicaciones Swing en Java, ademas de eso, como todos sabemos algunos Look and Feel nos ayudan bastante (como el caso de Nimbus), pero aun asi, no estamos conforme con el resultado final.
Entonces supongamos que nuestra aplicacion se mira asi:


ummmm... la verdad, por muy bueno que sea el funcionamiento de la aplicacion no deja de ser un poco "aburrida" para el usuario final (al cual casi siempre le gusta ver que las pantallas tengas fuegos artificiales).
Obviamente no puedo hacer que las pantallas tengas dichos efectos x) pero almenos vamos a mejorar su aspecto haciendo la barra de titulo transparentes y una imagen de fondo a la pantalla principal. quedando el resultado final:



Bueno ahora es el momento indicado para decir: "No es lo que estoy buscando!!! esto no me sirve" y hacer clic en el icono de la flecha de "go back" de tu navegador x).

viernes, 2 de septiembre de 2011

HOW TO: resize jcombobox popup // redimensionar popup de un JCombobox

Hola a todos. si sueles programar en java, o al menos lo intentas (como es mi caso xD),  mas de alguna ocasión has creado una aplicación de escritorio usando las JFC para crear tu GUI. si es así, quizá es bastante posible que hallas usado un JCombobox que se llena desde la base de datos (con información la cual no sabemos la longitud que posee).

cuando este caso se presenta pueden ocurrir los siguientes problemas o complicaciones del diseño:
  • El objecto no muestra su texto completo, dejando incompleta la información que necesitamos mostrar en el JCombobox
  • El componente (JCombobox) se auto-re dimensiona al ancho del objeto con el texto mas extenso... cuando esto sucede, es bastante común que el componente desordene otros componentes que están ubicados cerca de el, obligándonos a re diseñar o re ubicar algunos componentes en dicha pantalla; lo cual implica tiempo, tiempo que lo podríamos estar usando para avanzar en otras pantallas del sistema o... simplemente para navegar por Internet ^^
un ejemplo ilustrado del terrible problema:

EDITO: debido a un problema con algunas versiones de jdk lanza un Null Pointer; al final de la entrada agrego un metodo alternativo para lograr el mismo objetivo.

Bueno para solucionar dichos problemas vamos a crear una clase que implemente la interfaz PopupMenuListener la cual va a cambiar los límites (ancho) del menú emergente para proveer al JComboBox algunas funcionalidades diferentes. entre las cuales:
  • la ventana emergente puede ser más amplio que el JCombobox
  • la ventana emergente se muestra por encima del JCombobox (útil cuando el componente esta ubicado al fondo de la pantalla y las opciones que desplegara son bastantes, evitando así que las opciones ultimas de la lista no sean visibles)

viernes, 12 de agosto de 2011

Abrir solo un JinternalFrame por instancia en una Aplicación MDI // Allow only one JinternalFrame per Instance in a MDI app.



Para lograr este objetivo existen muchas maneras (como toda cosa en la vida) de lograrlo, pero como mi conocimiento es muy limitado no conozco todas esas maneras x). asi que solamente alcanzaremos ese objetivo mediante 3 formas: 
  1. Patron Singleton
  2. Utilizando HashMap y una clase de utilidad
  3. Haciendo modal el JinternalFrame
A mi parecer la mas eficiente y eficaz (Nose cual es la diferencia entre esas dos palabras pero suena como que si en verdad se lo que estoy hablando xD) de las opciones es la #2. Pero mi intencion no es obligar a nadie a usar  simplemente las opciones que a mi me gustan, sino mas bien, ampliar el conocimiento de cómo podemos alcanzar el mismo objetivo mediante diferentes medios.
La estructura de estos ejercicios (para mayor claridad) sera: un solo proyecto, el cual tendra 3 Opciones en la barra de menu, en cada opcion se desarrollara cada una de las formas. 

lunes, 4 de julio de 2011

Deshabilitar Opciones en JCombobox y de paso ponerle imagenes. parte II. // Disabling options on JComboBox


Bueno, como siempre trato de cumplir con lo que prometo, aca vamos a ver (basandonos en el articulo anterior) como terminar de codificar nuestro Jcombobox con imágenes y opciones deshabilitadas (la ultima quedo cubierta en el post anterior). Asi que lo que queda practicamente es setearle al combo un HashMap, que quiere decir eso, que para cada opcion del combo solo tendra una imagen, y si por alguna razon la opcion se repite solo quedara con una imagen (un combo solamente puede tener una imagen asociada) vease http://download.oracle.com/javase/1.4.2/docs/api/java/util/HashMap.html para mayor entendimiento :D
bueno como dije al final del post anterior lo unico que haremos sera agregar un metodo AgregarImagenesAlCombo, y en el setRenderer al Componente (nuestro caso un Jlable) setearle el icon para el correspondiente Opcion del combo, al final el resultado de nuestras clases sera:



he tratado de comentar lo mas posible el codigo para que sea, hasta cierto punto, autoexplicable (ya que me esta dando problemas el script de la sintaxis de java, me agrega codigo [parentesis, signos de igual, etc]), pero de tener alguna duda enviame un email o comenta en el blog y pues veremos como superamos las barreras. Anexo las tres clases en un .rar para que lo puedan correr….bueno eso es todo amigos!!!
Espero que de una forma u otra te halla servido este pequeño ejemplo. Obviamente el correcto funcionamiento u optimizacion del mismo depende como tengas tu codigo :D

Codigo Fuente:
http://www.mediafire.com/?81dqoa7t4dwbk9z

Un pdf en el que trato de explicar con mayor profundidad algunos aspectos (incluye el codigo fuente en imagenes)
http://www.mediafire.com/?0q2pbq1joepm1z3
PD1: el pdf esta de lado x) pero solo rotenlo con el adobe reader o cualquier lector de pdf que utilicen
PD2. Si tienen alguna duda referente al codigo seria bueno que se documenten un poco acerca de: 

viernes, 1 de julio de 2011

How to: Disable Options JCombobox // JComboBox con opciones deshabilitadas e imagenes // Disabling Options on JComboBox


Woow mañana será un año desde mi última publicación en el post… Qué vergüenza x) pero por motivos de estudio y trabajo descontinué la publicación de artículos; No estoy seguro de cuantas personas son lectores frecuentes del blog, aunque espero que no sea el único *_* Bueno aunque si fuera el único si llego a sufrir de una amnesia profunda al menos voy a recordar que solía gustarme (eso si me recuerdo de la url del blog O.o) jajaja. También espero que de ahora en adelante pueda postear al menos un articulo cada semana o cada mes… pero no cada año como es el caso de este post x).

Bueno pues últimamente he estado un poco aprendiendo (o al menos tratando) un poco del extenso mundo de Java Swing, cosas como Objetos, Componente y Listeners, entre algunos mas. Pues en una de esas tardes que vas buscando el significado de la vida por internet (y obvio no lo encontré xD) mejor busque como hacer que un JcomboBox pueda mostrar un texto en la Ventana pero como Variable de ese texto tener otro valor. Explicándome mejor: Supongamos que tenemos una lista de paises —Paises[todos los países del Mundo], pero al usuario le queremos mostrar ex: Luxemburgo, y en la Base de Datos queremos guardar ese valor con el código ISO, ósea: LUX. En HTML el problema mencionando anteriormente se resolvería (si me memoria no me deja mal) fácilmente con un: 
<select>
   <option value='LUX'>Luxemburgo</option>
  </select>