tag:blogger.com,1999:blog-83199167332167352702024-03-13T22:37:19.104-07:00Netbeans 6.1 betaEste blog lo he creado con la intención de participar en "NetBeans IDE 6.1 Beta Blogging Contest" y aportar un granito de arena a la comunidad de netbeans con artículos e ideas que he tenido a lo largo del uso de este espectacular IDE.iberckhttp://www.blogger.com/profile/01789114762310833879noreply@blogger.comBlogger12125tag:blogger.com,1999:blog-8319916733216735270.post-64592459412435821502008-04-21T14:19:00.000-07:002008-04-21T19:45:42.275-07:00Todos estan invitados a la fiesta ... JQuery en NB6.1Poco se ha hablado que la versión de Netbeans 6.1 tiene soporte para la sorprendente librería de javascript<span style="font-weight: bold;"> </span><a href="http://jquery.com/">jquery</a><span style="font-weight: bold;">. </span>JQuery es una librería muy pequeña para desarrollar de forma simple y rápida javascript, además de que cuenta con una amplia gama de plugins para hacer casi cualquier cosa. En este tutorial hablaré del soporte con que cuenta NB61 para jquery y no tanto de la librería.<br /><br />La nueva versión de netbeans cuenta con soporte para javascript, prototype y jquery.<br />Vamos a crear un proyecto web y a la par iremos viendo las características que aporta el IDE...<br /><div style="text-align: center;"><span style="font-weight: bold;"><br /></span><br /><div style="text-align: left;"><span>1. Crea un nuevo proyecto web<br /><br /></span></div></div><a style="font-weight: bold;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_R6s_fzkMMl8/SA0hrC1VbCI/AAAAAAAAALo/SG0lZWWN5sM/s1600-h/projectName.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp0.blogger.com/_R6s_fzkMMl8/SA0hrC1VbCI/AAAAAAAAALo/SG0lZWWN5sM/s400/projectName.jpg" alt="" id="BLOGGER_PHOTO_ID_5191842968806714402" border="0" /></a><br /><ul><li>Menú File/New Project</li><li>Categories: Web</li><li>Projects: Web application</li><li>Next</li><li>Project Name: JQuerySupport</li><li>Click en Next<br /></li></ul><br /><br /><br /><br /><br /><br /><br /><br />2. En la siguiente ventana deje los valores por default y de click en Next<br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_R6s_fzkMMl8/SA0lHS1VbGI/AAAAAAAAAMI/W5981ALl3L4/s1600-h/server.jpg"><img style="cursor: pointer;" src="http://bp1.blogger.com/_R6s_fzkMMl8/SA0lHS1VbGI/AAAAAAAAAMI/W5981ALl3L4/s400/server.jpg" alt="" id="BLOGGER_PHOTO_ID_5191846752672902242" border="0" /></a><br /></div><br />3. Deje en blanco la lista de frameworks<br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_R6s_fzkMMl8/SA0k_y1VbFI/AAAAAAAAAMA/g-RLasYtbcM/s1600-h/frameworksList.jpg"><img style="cursor: pointer;" src="http://bp3.blogger.com/_R6s_fzkMMl8/SA0k_y1VbFI/AAAAAAAAAMA/g-RLasYtbcM/s400/frameworksList.jpg" alt="" id="BLOGGER_PHOTO_ID_5191846623823883346" border="0" /></a><br /></div><br />4. Click en Finish<br /><br />5. <a href="http://code.google.com/p/jqueryjs/downloads/detail?name=jquery-1.2.3.js">Descarga la libreria de jquery</a> desde la página oficial<br /><br />6. Agrega la librería a tu proyecto, para ello:<br /><ul><li>Crea un folder sobre la carpeta WebPages de tu proyecto (Click derecho sobre la carpeta Web Pages/New/Other/Categories: Other/File types: Folder<br /></li><li>Folder name: js</li><li>Pegue la librería que descargó de jquery al nuevo folder js<br /></li></ul><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_R6s_fzkMMl8/SA0l3y1VbHI/AAAAAAAAAMQ/RtCQkzyEo1U/s1600-h/jquerynode.jpg"><img style="cursor: pointer;" src="http://bp3.blogger.com/_R6s_fzkMMl8/SA0l3y1VbHI/AAAAAAAAAMQ/RtCQkzyEo1U/s400/jquerynode.jpg" alt="" id="BLOGGER_PHOTO_ID_5191847585896557682" border="0" /></a></div><br /><br />Note que en la paleta de componentes se pueden ver todos los miembros de la librería:<br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_R6s_fzkMMl8/SA0u6WO8sYI/AAAAAAAAANY/wYa7OzqDFP4/s1600-h/jquerynavigator.jpg"><img style="cursor: pointer;" src="http://bp0.blogger.com/_R6s_fzkMMl8/SA0u6WO8sYI/AAAAAAAAANY/wYa7OzqDFP4/s400/jquerynavigator.jpg" alt="" id="BLOGGER_PHOTO_ID_5191857525363618178" border="0" /></a><br /></div><br /><br />7. Agregue la definición de la librería en el archivo index.jsp<br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_R6s_fzkMMl8/SA0mdy1VbII/AAAAAAAAAMY/g8ur_Ht-lnw/s1600-h/jquerydef.jpg"><img style="cursor: pointer;" src="http://bp3.blogger.com/_R6s_fzkMMl8/SA0mdy1VbII/AAAAAAAAAMY/g8ur_Ht-lnw/s400/jquerydef.jpg" alt="" id="BLOGGER_PHOTO_ID_5191848238731586690" border="0" /></a><br /><br /><div style="text-align: left;">8. Aquí viene lo interesante.<br />JQuery utiliza la sintaxis '$()' para crear a su vez un objeto de jquery (chainability), como se muestra en la siguiente imágen, el ide nos da sugerencias de qué objeto podría ir allí dentro, un resumen, sintaxis, parámetros y documentación. ¡ Realmente bueno !<br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_R6s_fzkMMl8/SA0nKC1VbJI/AAAAAAAAAMg/jv-OQKSqfPA/s1600-h/domsuggest.jpg"><img style="cursor: pointer;" src="http://bp0.blogger.com/_R6s_fzkMMl8/SA0nKC1VbJI/AAAAAAAAAMg/jv-OQKSqfPA/s400/domsuggest.jpg" alt="" id="BLOGGER_PHOTO_ID_5191848998940798098" border="0" /></a><br /><br /><br /><div style="text-align: left;">9. Sugerencia de métodos: en el punto anterior comenté que la sentencia '$()' sirve para crear un objeto jquery. Como se puede ver en la siguiente imágen, el IDE nos da sugerencia de métodos.<br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_R6s_fzkMMl8/SA0pcGO8sTI/AAAAAAAAAMw/kz5KcNQx4mc/s1600-h/jquerysuggest.jpg"><img style="cursor: pointer;" src="http://bp3.blogger.com/_R6s_fzkMMl8/SA0pcGO8sTI/AAAAAAAAAMw/kz5KcNQx4mc/s400/jquerysuggest.jpg" alt="" id="BLOGGER_PHOTO_ID_5191851508114436402" border="0" /></a><br /></div><br />10. El método ready de jquery sirve para ejecutar alguna instruccion cuando el documento esté listo, es similar al evento onload del body pero a diferencia de éste, se ejecuta cuando termina de construir el arbol dom (y no hasta que pinte todos los elementos de la página)<br />Agregue el siguiente script:<br /><br />$(document).ready(function() {<br />alert("CARGADO");<br />});<br /><br />11. Prueba jquery<br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_R6s_fzkMMl8/SA06WmO8sfI/AAAAAAAAAOQ/GosClwAWSIg/s1600-h/jquerytest.jpg"><img style="cursor: pointer;" src="http://bp1.blogger.com/_R6s_fzkMMl8/SA06WmO8sfI/AAAAAAAAAOQ/GosClwAWSIg/s400/jquerytest.jpg" alt="" id="BLOGGER_PHOTO_ID_5191870105322828274" border="0" /></a><br /></div><br /><span style="font-weight: bold;"><br />Top 10 de las características más espectaculares de Netbeans 6.1 en el soporte para jquery.</span><br /><br /><div style="text-align: center;"> <div style="text-align: left;">1. Para cada elemento, nos sugiere la compatibilidad con navegadores ....<br /></div> <a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_R6s_fzkMMl8/SA00UWO8sdI/AAAAAAAAAOA/rBgChL3EoTg/s1600-h/browsercomp.jpg"><img style="cursor: pointer;" src="http://bp0.blogger.com/_R6s_fzkMMl8/SA00UWO8sdI/AAAAAAAAAOA/rBgChL3EoTg/s400/browsercomp.jpg" alt="" id="BLOGGER_PHOTO_ID_5191863469598355922" border="0" /></a></div><br /><br />2. Coloreado de sintaxis:<br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_R6s_fzkMMl8/SA09H2O8shI/AAAAAAAAAOg/I0b79IBDF_U/s1600-h/colsin.jpg"><img style="cursor: pointer;" src="http://bp2.blogger.com/_R6s_fzkMMl8/SA09H2O8shI/AAAAAAAAAOg/I0b79IBDF_U/s400/colsin.jpg" alt="" id="BLOGGER_PHOTO_ID_5191873150454641170" border="0" /></a><br /></div><div style="text-align: center;"><br /></div>3. La sugerencia en tiempo real de los elementos de la página:<div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_R6s_fzkMMl8/SA0t4GO8sVI/AAAAAAAAANA/BFQl10-sI5A/s1600-h/elemsugg.jpg"><img style="cursor: pointer;" src="http://bp3.blogger.com/_R6s_fzkMMl8/SA0t4GO8sVI/AAAAAAAAANA/BFQl10-sI5A/s400/elemsugg.jpg" alt="" id="BLOGGER_PHOTO_ID_5191856387197284690" border="0" /></a><br /></div><br /><br />4. No deje de admirar, agregue un div dentro del body, 'Sugerencia de los elementos hijo' ...<div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_R6s_fzkMMl8/SA0uB2O8sWI/AAAAAAAAANI/OrbW42bOyFg/s1600-h/subelem.jpg"><img style="cursor: pointer;" src="http://bp2.blogger.com/_R6s_fzkMMl8/SA0uB2O8sWI/AAAAAAAAANI/OrbW42bOyFg/s400/subelem.jpg" alt="" id="BLOGGER_PHOTO_ID_5191856554701009250" border="0" /></a><br /></div><br />5. ¿ Sugerencia de atributos ? Si porfavor<br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_R6s_fzkMMl8/SA0ukGO8sXI/AAAAAAAAANQ/BVaxJUOu7Eo/s1600-h/attrsuggest.jpg"><img style="cursor: pointer;" src="http://bp3.blogger.com/_R6s_fzkMMl8/SA0ukGO8sXI/AAAAAAAAANQ/BVaxJUOu7Eo/s400/attrsuggest.jpg" alt="" id="BLOGGER_PHOTO_ID_5191857143111528818" border="0" /></a><br /><br /><div style="text-align: left;"><br />6. Errores javascript en tiempo de desarrollo</div></div><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_R6s_fzkMMl8/SA0wJ2O8sZI/AAAAAAAAANg/Tk09mdToc7Y/s1600-h/errDevel.jpg"><img style="cursor: pointer;" src="http://bp2.blogger.com/_R6s_fzkMMl8/SA0wJ2O8sZI/AAAAAAAAANg/Tk09mdToc7Y/s400/errDevel.jpg" alt="" id="BLOGGER_PHOTO_ID_5191858891163218322" border="0" /></a><br /><br /><div style="text-align: left;"><br />7. Muestra posibles errores en el código fuente (warnings)</div></div><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_R6s_fzkMMl8/SA0w0mO8saI/AAAAAAAAANo/99CdI_1sVYo/s1600-h/sugerencias.jpg"><img style="cursor: pointer;" src="http://bp1.blogger.com/_R6s_fzkMMl8/SA0w0mO8saI/AAAAAAAAANo/99CdI_1sVYo/s400/sugerencias.jpg" alt="" id="BLOGGER_PHOTO_ID_5191859625602625954" border="0" /></a><br /><br /><div style="text-align: left;"><br />8. Acompletado de métodos javascript.</div></div><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_R6s_fzkMMl8/SA0xbmO8sbI/AAAAAAAAANw/V6pddfSG3Mo/s1600-h/sug2.jpg"><img style="cursor: pointer;" src="http://bp1.blogger.com/_R6s_fzkMMl8/SA0xbmO8sbI/AAAAAAAAANw/V6pddfSG3Mo/s400/sug2.jpg" alt="" id="BLOGGER_PHOTO_ID_5191860295617524146" border="0" /></a><br /><br /><br /><div style="text-align: left;">9. Ctrl + click ->Ir a la declaración del método<br /></div><div style="text-align: left;"><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_R6s_fzkMMl8/SA0x_mO8scI/AAAAAAAAAN4/EO_1PUvFzeM/s1600-h/goto.jpg"><img style="cursor: pointer;" src="http://bp1.blogger.com/_R6s_fzkMMl8/SA0x_mO8scI/AAAAAAAAAN4/EO_1PUvFzeM/s400/goto.jpg" alt="" id="BLOGGER_PHOTO_ID_5191860914092814786" border="0" /></a><br /><br /><div style="text-align: left;">10. Go to type (ctrl + o)<br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_R6s_fzkMMl8/SA017WO8seI/AAAAAAAAAOI/wMrCki1ViSI/s1600-h/gototype.jpg"><img style="cursor: pointer;" src="http://bp0.blogger.com/_R6s_fzkMMl8/SA017WO8seI/AAAAAAAAAOI/wMrCki1ViSI/s400/gototype.jpg" alt="" id="BLOGGER_PHOTO_ID_5191865239124881890" border="0" /></a><br /><br /><div style="text-align: center;"><span style="font-weight: bold;">¡ El único IDE que tu necesitas !<br /></span></div></div></div></div></div></div></div></div></div></div>iberckhttp://www.blogger.com/profile/01789114762310833879noreply@blogger.com0tag:blogger.com,1999:blog-8319916733216735270.post-33064612199832070272008-04-21T09:03:00.000-07:002008-04-21T19:38:55.716-07:00Envolviendo un pequeño obsequio<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_R6s_fzkMMl8/SAy7qC1VaqI/AAAAAAAAAIw/D-vvmPaMSFQ/s1600-h/netbeans-stamp60-61.gif"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp3.blogger.com/_R6s_fzkMMl8/SAy7qC1VaqI/AAAAAAAAAIw/D-vvmPaMSFQ/s400/netbeans-stamp60-61.gif" alt="" id="BLOGGER_PHOTO_ID_5191730801440811682" border="0" /></a><br />En este blog crearé un plugin para Netbeans 6.1 el cual ayudará a buscar el jar a partir del nombre de una clase. A mi parecer siempre ha hecho falta un plugin que haga esto, ¿cuántas veces no te has encontrado con un <span class="tdvamseebig">ClassDefNotFoundException o un NoClassDefFoundError por que no se encuentra presente un jar dentro del proyecto ?<br /><br /></span>El objetivo de este blog es crear un campo de texto en el toolbar del ide donde podrás anotar el nombre de tu clase y al presionar enter abrirá un browser con los posibles jar que la contienen.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_R6s_fzkMMl8/SAzBdS1VauI/AAAAAAAAAJQ/knYqTgL-T-M/s1600-h/jarfinder5.jpg"><img style="cursor: pointer;" src="http://bp0.blogger.com/_R6s_fzkMMl8/SAzBdS1VauI/AAAAAAAAAJQ/knYqTgL-T-M/s400/jarfinder5.jpg" alt="" id="BLOGGER_PHOTO_ID_5191737179467246306" border="0" /></a><br /><br /><br /><span style="font-weight: bold;">Pasos</span><br /><br />1. File/New Project/<br /><ul><li>[Categories]: Netbeans Modules,</li><li>[Projects]: Module</li><li>Click en next</li></ul><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_R6s_fzkMMl8/SAy-nC1VarI/AAAAAAAAAI4/e50T4YN7SJA/s1600-h/newnbmodule.jpg"><img style="cursor: pointer;" src="http://bp3.blogger.com/_R6s_fzkMMl8/SAy-nC1VarI/AAAAAAAAAI4/e50T4YN7SJA/s400/newnbmodule.jpg" alt="" id="BLOGGER_PHOTO_ID_5191734048436087474" border="0" /></a><br /><br /><div style="text-align: left;">2. Aparecerá una nueva ventana para indicar la ruta y nombre del proyecto.<br /><ul><li>Project name: JarFinderToolbar</li><li>Crea el proyecto como un standalone module ya que no será parte de una suite de módulos,<br /></li><li>Click en Next.</li></ul><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_R6s_fzkMMl8/SAy_hy1VasI/AAAAAAAAAJA/wpFuVh85o_w/s1600-h/newmodule.jpg"><img style="cursor: pointer;" src="http://bp2.blogger.com/_R6s_fzkMMl8/SAy_hy1VasI/AAAAAAAAAJA/wpFuVh85o_w/s400/newmodule.jpg" alt="" id="BLOGGER_PHOTO_ID_5191735057753402050" border="0" /></a><br /><br /><div style="text-align: left;">3. Aparecerá la siguiente ventana en la cual deberás indicar el paquete de tu proyecto, así como el nombre que mostrará y la localización de los archivos de recursos...<br /><ul><li>Code Name Base: org.jarfindertoolbar</li><li>Module display name: JarFinder Toolbar</li><li>Localizing Bundle: org/jarfindertoolbar/Bundle.properties</li></ul><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_R6s_fzkMMl8/SAzAgS1VatI/AAAAAAAAAJI/pnjp4-lZUwQ/s1600-h/newmodule2.jpg"><img style="cursor: pointer;" src="http://bp0.blogger.com/_R6s_fzkMMl8/SAzAgS1VatI/AAAAAAAAAJI/pnjp4-lZUwQ/s400/newmodule2.jpg" alt="" id="BLOGGER_PHOTO_ID_5191736131495226066" border="0" /></a><br /><br /><div style="text-align: left;">4. Click en Finish<br />5. Ahora, crearemos el JPanel que contendrá el text field para la busqueda.<br /><ul><li>Da clic derecho sobre el proyecto</li><li>New</li><li>Other...</li></ul><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_R6s_fzkMMl8/SAzDii1VawI/AAAAAAAAAJg/PuG4So1uIyE/s1600-h/newOther.jpg"><img style="cursor: pointer;" src="http://bp1.blogger.com/_R6s_fzkMMl8/SAzDii1VawI/AAAAAAAAAJg/PuG4So1uIyE/s400/newOther.jpg" alt="" id="BLOGGER_PHOTO_ID_5191739468684815106" border="0" /></a><div style="text-align: left;"><br /><br />6. Elije la categoría Swing GUI Forms y en File Types: JPanel Form... click en Next<br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_R6s_fzkMMl8/SAzD9y1VaxI/AAAAAAAAAJo/RT7t94pR10g/s1600-h/newjpanelform.jpg"><img style="cursor: pointer;" src="http://bp2.blogger.com/_R6s_fzkMMl8/SAzD9y1VaxI/AAAAAAAAAJo/RT7t94pR10g/s400/newjpanelform.jpg" alt="" id="BLOGGER_PHOTO_ID_5191739936836250386" border="0" /></a><br /><br /><div style="text-align: left;">7. En el campo class name escribe JarFinderPanel y en package elige el que aparece en la lista, click en Finish.<br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_R6s_fzkMMl8/SAzE7C1VayI/AAAAAAAAAJw/E8MQ7WO3krc/s1600-h/JarFinderPanel.jpg"><img style="cursor: pointer;" src="http://bp3.blogger.com/_R6s_fzkMMl8/SAzE7C1VayI/AAAAAAAAAJw/E8MQ7WO3krc/s400/JarFinderPanel.jpg" alt="" id="BLOGGER_PHOTO_ID_5191740989103237922" border="0" /></a><br /><br /><div style="text-align: left;">8. Diseña tu JPanel similar al siguiente ...<br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_R6s_fzkMMl8/SAzFly1VazI/AAAAAAAAAJ4/Hg-lrvs3GMA/s1600-h/jpaneldesign.jpg"><img style="cursor: pointer;" src="http://bp2.blogger.com/_R6s_fzkMMl8/SAzFly1VazI/AAAAAAAAAJ4/Hg-lrvs3GMA/s400/jpaneldesign.jpg" alt="" id="BLOGGER_PHOTO_ID_5191741723542645554" border="0" /></a><br /><div style="text-align: left;"><br />9. Crea el evento key typed para el text field del diseño<br /><ul><li>Click derecho al textField/Events/Key/Key Typed.</li></ul><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_R6s_fzkMMl8/SAzGTC1Va0I/AAAAAAAAAKA/OrHjQErkCmY/s1600-h/keytyped.jpg"><img style="cursor: pointer;" src="http://bp3.blogger.com/_R6s_fzkMMl8/SAzGTC1Va0I/AAAAAAAAAKA/OrHjQErkCmY/s400/keytyped.jpg" alt="" id="BLOGGER_PHOTO_ID_5191742500931726146" border="0" /></a><br /><br /><div style="text-align: left;">10. Define el método keytyped del textfield como el siguiente:<br /><br />private void jTextField1KeyTyped(java.awt.event.KeyEvent evt) { <br />int i = evt.getKeyChar();<br />if (i==10){//The ENTER KEY<br />// we display the jarfinder url.<br />try{<br />URLDisplayer.getDefault().showURL<br /> (new URL("http://www.jarfinder.com/?class="+jTextField1.getText()+"&submit=search"));<br />} catch (Exception e){<br />return;<br />}<br />}<br />}<br /><br />11. Has un reformat code (Alt+Shift+F)<br />12. Como netbeans trabaja por medio de módulos, deberás agregar una dependencia para la clase URLDisplayer.<br /><br />13. Da click derecho a tu proyecto/Properties/Del lado izquierdo elige la categoría Libraries<br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_R6s_fzkMMl8/SAzH0y1Va3I/AAAAAAAAAKQ/3qFnr8JypX0/s1600-h/librariescat.jpg"><img style="cursor: pointer;" src="http://bp2.blogger.com/_R6s_fzkMMl8/SAzH0y1Va3I/AAAAAAAAAKQ/3qFnr8JypX0/s400/librariescat.jpg" alt="" id="BLOGGER_PHOTO_ID_5191744180263938930" border="0" /></a><br /></div><br /></div></div>14. Agrega la dependencia para la clase URLDisplayer<br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_R6s_fzkMMl8/SAzIey1Va4I/AAAAAAAAAKY/xkSVKzMlrZ0/s1600-h/urldispldep.jpg"><img style="cursor: pointer;" src="http://bp2.blogger.com/_R6s_fzkMMl8/SAzIey1Va4I/AAAAAAAAAKY/xkSVKzMlrZ0/s400/urldispldep.jpg" alt="" id="BLOGGER_PHOTO_ID_5191744901818444674" border="0" /></a><br /></div><br />15. Has un fix all imports (ctrl + shift + i) y da clic en ok<br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_R6s_fzkMMl8/SAzI-y1Va5I/AAAAAAAAAKg/AANjU_SbGbc/s1600-h/fiximports.jpg"><img style="cursor: pointer;" src="http://bp2.blogger.com/_R6s_fzkMMl8/SAzI-y1Va5I/AAAAAAAAAKg/AANjU_SbGbc/s400/fiximports.jpg" alt="" id="BLOGGER_PHOTO_ID_5191745451574258578" border="0" /></a><br /><br /><div style="text-align: left;">16. Las librerías de tu proyecto deberán quedar con las de esta ventana.<br /><br /></div></div><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_R6s_fzkMMl8/SAzJly1Va6I/AAAAAAAAAKo/NLicE2-x1A8/s1600-h/moduledep2.jpg"><img style="cursor: pointer;" src="http://bp2.blogger.com/_R6s_fzkMMl8/SAzJly1Va6I/AAAAAAAAAKo/NLicE2-x1A8/s400/moduledep2.jpg" alt="" id="BLOGGER_PHOTO_ID_5191746121589156770" border="0" /></a><br /><br /><div style="text-align: left;">17. Lo único que resta es agregar un acción para nuestro JPanel, para ello da click derecho a tu proyecto/New/Action...<br /><ul><li>Indica que siempre este disponible (Always enabled)/Click en Next</li><li>Aparecerá una pantalla donde deberás indicar en category: Edit</li><li>Desactivar el check Global Menu item</li><li>En la sección de Global Toolbar Button elegir Edit en toolbar y Redo-Here en position</li><li>Click en Next<br /></li></ul><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_R6s_fzkMMl8/SAzKkS1Va7I/AAAAAAAAAKw/1dJCegW3Ko4/s1600-h/action1.jpg"><img style="cursor: pointer;" src="http://bp0.blogger.com/_R6s_fzkMMl8/SAzKkS1Va7I/AAAAAAAAAKw/1dJCegW3Ko4/s400/action1.jpg" alt="" id="BLOGGER_PHOTO_ID_5191747195330980786" border="0" /></a><br /><br /><div style="text-align: left;">18. En la siguiente ventana deberás indicar los datos para acción.<br /><ul><li>Class Name: JarFinderAction</li><li>Display Name: JarFinder Action</li><li>Icon: Debes elegir uno aunque no se vaya a mostrar</li><li>Click en Finish<br /></li></ul><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_R6s_fzkMMl8/SAzL_C1Va8I/AAAAAAAAAK4/jSIamuHpqRo/s1600-h/jarfinderaction2.jpg"><img style="cursor: pointer;" src="http://bp3.blogger.com/_R6s_fzkMMl8/SAzL_C1Va8I/AAAAAAAAAK4/jSIamuHpqRo/s400/jarfinderaction2.jpg" alt="" id="BLOGGER_PHOTO_ID_5191748754404109250" border="0" /></a><br /><br /><div style="text-align: left;">19. Declara la siguiente variable dentro del archivo JarFinderAction.java<br />JarFinderPanel jarFinderPanel = new JarFinderPanel();<br /><br />20. Sobreescribe el método getToolbarPresenter() y retorna la variable jarFinderPanel<br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_R6s_fzkMMl8/SAzM4C1Va9I/AAAAAAAAALA/QOiMc06aAc8/s1600-h/JarFinderactionsource.jpg"><img style="cursor: pointer;" src="http://bp3.blogger.com/_R6s_fzkMMl8/SAzM4C1Va9I/AAAAAAAAALA/QOiMc06aAc8/s400/JarFinderactionsource.jpg" alt="" id="BLOGGER_PHOTO_ID_5191749733656652754" border="0" /></a><br /><br /><div style="text-align: left;">21. Solo basta probar tu nuevo obsequio...<br />Clic derecho al proyecto<br />Install/Reload in Development IDE: Lo ejecuta sobre el ide en el que estes trabajando actualmente.<br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_R6s_fzkMMl8/SAzOSy1Va-I/AAAAAAAAALI/a_YhgybzfWg/s1600-h/target.jpg"><img style="cursor: pointer;" src="http://bp2.blogger.com/_R6s_fzkMMl8/SAzOSy1Va-I/AAAAAAAAALI/a_YhgybzfWg/s400/target.jpg" alt="" id="BLOGGER_PHOTO_ID_5191751292729781218" border="0" /></a><br /><br /><div style="text-align: left;">22. Escribimos una clase sobre nuestro plugin, por ejemplo: <img src="file:///C:/Users/erika/AppData/Local/Temp/moz-screenshot-3.jpg" alt="" /><span style="font-weight: bold;">'com.sun.tools.javac.code.Flags'</span> ... damos enter<br /><br />23. Precioso resultado, ahora sabemos en que jar podemos encontrar la clase<br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_R6s_fzkMMl8/SAzPnC1Va_I/AAAAAAAAALQ/TYnw_hzintI/s1600-h/jarfinderexplorer.jpg"><img style="cursor: pointer;" src="http://bp3.blogger.com/_R6s_fzkMMl8/SAzPnC1Va_I/AAAAAAAAALQ/TYnw_hzintI/s400/jarfinderexplorer.jpg" alt="" id="BLOGGER_PHOTO_ID_5191752740133759986" border="0" /></a><br /></div></div></div><br />24. Lo único que hace falta es distribuir el módulo como plugin para que todos puedan usarlo.<br /><ul><li>Click derecho al proyecto</li><li>Create NBM</li><li>Ve a la pestaña Files</li><li>Carpeta build</li><li>Veras el archivo org-jarfindertoolbar.nbm</li></ul>25. El plugin lo puedes descargar de la siguiente <a href="http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=8006">url</a><br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_R6s_fzkMMl8/SAzUIy1VbAI/AAAAAAAAALY/arccgbLMThQ/s1600-h/jarfinderuploaded.jpg"><img style="cursor: pointer;" src="http://bp2.blogger.com/_R6s_fzkMMl8/SAzUIy1VbAI/AAAAAAAAALY/arccgbLMThQ/s400/jarfinderuploaded.jpg" alt="" id="BLOGGER_PHOTO_ID_5191757718000856066" border="0" /></a><br /><br /><br /><span style="font-weight: bold;">'Ahora tienes el obsequio, de ti depende si lo abres'<br /></span><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_R6s_fzkMMl8/SAzg3S1VbBI/AAAAAAAAALg/wJMnxFCjJXw/s1600-h/netbeans0.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_R6s_fzkMMl8/SAzg3S1VbBI/AAAAAAAAALg/wJMnxFCjJXw/s400/netbeans0.png" alt="" id="BLOGGER_PHOTO_ID_5191771711004306450" border="0" /></a><br /></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>iberckhttp://www.blogger.com/profile/01789114762310833879noreply@blogger.com2tag:blogger.com,1999:blog-8319916733216735270.post-45113009127608885302008-04-20T22:58:00.000-07:002008-04-22T20:24:52.806-07:00Mi carta para los reyes magosEn estos días he estado haciendo mi carta para los reyes magos, se que falta mucho tiempo pero ya no puedo esperar más para ver mis regalos...<br /><br />Queridos reyes magos, yo se que me he portado mal (muy mal :P) este año pero se que ustedes siempre comprenden que un niño como yo se emociona mucho con los regalos que le traen, prometo que si me traen mis regalos me portaré mucho mejor para el prox. año (siempre decía lo mismo :) )<br /><br />Me gustaría que Netbeans 6.1 rc3 tenga las siguientes características.<br /><br />1. Que el editor de java cuando escriba '<' , automáticamente ponga el cierre <> ... lo mismo que hace con los paréntesis.<br /><br />2. Agregar ligas cuando se estan subiendo los archivos del svn/cvs/mercurial, que aparezcan subrayados los nombres de los archivos para poder ir a ellos.<br /><br />3. Cuando le hago refactor a una propiedad, no le hace refactor a sus gets y sets.<br /><br />4. Posibilidad de agregar o eliminar carpetas de un repositorio desde Netbeans.<br /><br />5. Quisiera ver si le pudieran un poco de colorcito a los comentarios, seria interesante poner en cursiva los TODO, o cambiarlos a otro color para asi reconocerlos de los simples comentarios.<br /><br />6. Soporte para jquery (me dijo santa clause que ya tienen soporte para prototype y eso es genial por que la sintaxis ${} es igual ... pero digo, jquery tiene mucha popularidad y todos los niños lo estan pidiendo ... que les cuesta darle soporte?)<br /><br />7. Crear un plugin para jarfinder <a href="http://www.jarfinder.com/">http://www.jarfinder.com/</a> para saber a que jar pertenece cierta clase (este lo hago yo en los proximos días para que digan que me porto bien)<br /><br />8. Poner marcas del lado derecho a los comentarios con TODO, así como lo hacen como los bookmarks pero ahora con los TODO<br /><br />9. Librerias con rutas relativas (oh, esto ya me lo trajeron el día de mi cumpleaños, gracias !)<br /><br />10. Ahora que sus templates soportan freemarker, ¿sería mucho pedir un plugin decente? (me tuve que rebajar a pedirle prestados sus juguetes a mi vecinito juan ... sus papás le compraron el '<a href="http://www.jboss.org/tools/download/">jboss tools freemarker ide</a>').<br /><br />11.No quiero ser grosero con ustedes pero está re gacha la interfaz para JUnit.<br /><ul><li>No se ve el avance de los test (en %)</li><li>La consola de junit no tiene la misma potencia que la consula por default(output), no se tienen ligas para ir hacia los errores</li><li>Es tedioso estar cambiando entre la pestaña de junit y la de output console.</li><li>No se puede buscar texto dentro de la consola de JUnit.</li><li>No se sabe cuanto tiempo tardan todos los test.<br /></li></ul><br />12. Cuando estoy en un editor de xml/html y creo una etiqueta de apertura, deberia crearse automáticamente la etiqueta de cierre como le pasa a mi vecinito juan con su IDE, ya he buscado como cambiar este comportamiento y parece ser que no se puede.<br /><br />13. Con este regalo sí me muero de felicidad. Extender el editor gráfico de jsf para que sea capaz de soportar controles como richfaces, icefaces, tomahawk, sandbox, etc ... en lugar de solo estar atados a woodstock. Yo se que ustedes pueden, hace unos cuantos años me dieron la sorpresa con el editor matisse, ahi puedo agregar componentes de distintos componentes. No me extrañaría levantarme mañana y ver los controles colgados de la paleta.<br /><br />14. Soporte para hibernate. Gracias benditos reyes magos<br /><br />15. Soporte para spring. Prometo portarme bien pero no me lo quiten.<br /><br />16. En el editor html pone lineas amarillas cuando un elemento es deprecated, estaría de lujo si el IDE dijera qué debo usar como nuevo elemento (' lo que debo usar en lugar del deprecated')... oh ya me enteré que las sugerencias en javascript te dicen <a href="http://wiki.netbeans.org/JavaScript">sobre qué navegador correrá tu script</a> ... ¡ Te luciste pinche gaspar ! (Ya se me solto la primer groseria, espero no lean esta parte :S).<br /><br />17. A veces me pongo a jugar con mis proyectitos web y estan llenos de imágenes que ya no uso. ¿Me podrían avisar de alguna forma qué imáges del proyecto web no están siendo ocupadas?<br />¿Sería mucho pedir para los css/js y demás recursos externos ?<br /><br />18. Mejorar el editor jsp, darle la misma potencia que el editor de código fuente java.<br /><br />19. Soporte para jetty<br /><br />20. Soporte para comentarios multilínea, esto quiere decir que cuando seleccione código fuente y presione [ctrl + c ] entonces comente de la forma /* */ y no de la forma //<br /><br />21. Editor grafico para jsp y un atari.<br /><br />22. Soporte para trac.<br /><br />23. Mi plugin para facelets se quedo sin pilas, corría para netbeans 6.0.1 pero ha muerto en la version 6.1.<br /><br />24. Hacer el IDE Online (<a href="http://blogs.sun.com/roumen/entry/netbeans_7_0_plans_uncovered#comments">oh, espero y no solo sean rumores y me lo traigan despues del 2009</a>)<br /><br />25. Soporte para Bugzilla<br /><br />26. Por favor, cuando tenga un proyecto sobre un repositorio de versiones y elimine un paquete ... también eliminenlo de la estructura de directorios (ya que se queda el iconito del paquete vacío y por mas que lo borro no desaparece), evitenme el trabajo de ir a la pestaña Files y borrar manualmente la carpeta.<br /><br />27. Al poner la primer comilla del atributo src de un tag html, mostrar un mensaje para elegir por medio de un dialogo nuestro recurso. Algo así como lo hace dreamweaver.<br /><br />28. Mostrar por medio de alguna marca las ligas rotas hacia recursos inexistentes, por ejemplo si una etiqueta <img src="" /> apunta hacia una imágen que no existe, el IDE lo podría notificar?<br /><br />29. Refresh para los proyectos. En ocasiones no se actualiza el icono del proyecto, por ejemplo cuando tienes un error de compilación y se corrige ... el icono del proyecto (o del archivo) se queda con el error siendo que éste no existe. Para solucionar el problema tengo que cerrar y volver a abrir el proyecto :(<br /><br /><div style="text-align: center;"><span style="font-weight: bold;">Pd. No olviden las pilas de mis juguetes<br /></span></div>iberckhttp://www.blogger.com/profile/01789114762310833879noreply@blogger.com4tag:blogger.com,1999:blog-8319916733216735270.post-1805764642584156052008-04-20T21:23:00.000-07:002008-04-21T11:30:53.619-07:00La potencia de Netbeans 6.1 para soportar una librería ... commons-loggingLa mayoría de los proyectos en producción no utilizan la sentencia System.out.println(""), en lugar de ello utilizan un sistema de trazas basado en Log4J, el log predefinido de java o un wrapper como lo es Commons logging.<br /><br />En este artículo explicaré cómo configurar el sistema de trazas para Netbeans 6.1 y utilizarlo de una forma muy productiva.<br /><br /><div style="text-align: center;"><span style="font-weight: bold;">Pasos a seguir</span><br /></div><span style="font-weight: bold;">1. Crear los code templates para los mensajes de consola...</span><br /><br />1.1 Ve al menú Tools/Options/Editor/[Code templates]/New/Abbreviation=logd<br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_R6s_fzkMMl8/SAweTC1VabI/AAAAAAAAAG4/gW2wKyMffFM/s1600-h/logd.jpg"><img style="cursor: pointer;" src="http://bp3.blogger.com/_R6s_fzkMMl8/SAweTC1VabI/AAAAAAAAAG4/gW2wKyMffFM/s400/logd.jpg" alt="" id="BLOGGER_PHOTO_ID_5191557782978259378" border="0" /></a><br /><br /><div style="text-align: left;">1.2 En Expanded Text introduce lo siguiente:<br />log.debug("${cursor}");<br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_R6s_fzkMMl8/SAwfCS1VacI/AAAAAAAAAHA/6Y8Vw_w7TYg/s1600-h/logd2.jpg"><img style="cursor: pointer;" src="http://bp0.blogger.com/_R6s_fzkMMl8/SAwfCS1VacI/AAAAAAAAAHA/6Y8Vw_w7TYg/s400/logd2.jpg" alt="" id="BLOGGER_PHOTO_ID_5191558594727078338" border="0" /></a><br /></div></div></div><br />1.3 Crea un nuevo code template llamado logdv, éste lo usaremos para imprimir en pantalla en modo debug la primer variable que encuentre hacia arriba (similar a soutv pero con un sistema de trazas.)<br />--------------------------------------------------<br />Abbreviation: logdv<br />Expanded text: log.debug("${EXP instanceof="<any>" default="exp"} = " + ${EXP});<br />--------------------------------------------------<br /><br />El resultado será algo similar a lo siguiente:<br /><br /></any><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_R6s_fzkMMl8/SAwf8C1VadI/AAAAAAAAAHI/9m3acxeUOMA/s1600-h/logdv.jpg"><img style="cursor: pointer;" src="http://bp3.blogger.com/_R6s_fzkMMl8/SAwf8C1VadI/AAAAAAAAAHI/9m3acxeUOMA/s400/logdv.jpg" alt="" id="BLOGGER_PHOTO_ID_5191559586864523730" border="0" /></a><br /></div><br />1.4 Repite el mismo proceso para los siguientes code templates<br />Mensajes de warning: logw, logwv<br />Mensajes de info: logi, logiv<br />Mensajes de error: loge, logev<br />Mensajes de fatal: logf, logfv<br /><br />El resultado debería ser similar al siguiente:<br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_R6s_fzkMMl8/SAwhei1VaeI/AAAAAAAAAHQ/pc8p5FyYaww/s1600-h/finallog.jpg"><img style="cursor: pointer;" src="http://bp1.blogger.com/_R6s_fzkMMl8/SAwhei1VaeI/AAAAAAAAAHQ/pc8p5FyYaww/s400/finallog.jpg" alt="" id="BLOGGER_PHOTO_ID_5191561279081638370" border="0" /></a><br /><br /><div style="text-align: left;">2. Para utilizar el sistema de trazas en una clase, se necesita una variable que tenga una referencia a la clase, por lo tanto es necesario crear un code template para insertar la variable log como miembro de las clases:<br /><br />------------------------------<br />Abbreviation: logv<br />Expanded text:<br />private static final Log log = LogFactory.getLog(${clase}.class);<any><br />-----------------------------<br /></any><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_R6s_fzkMMl8/SAyvwC1VanI/AAAAAAAAAIY/GTXBc05FWPU/s1600-h/logv5.jpg"><img style="cursor: pointer;" src="http://bp3.blogger.com/_R6s_fzkMMl8/SAyvwC1VanI/AAAAAAAAAIY/GTXBc05FWPU/s400/logv5.jpg" alt="" id="BLOGGER_PHOTO_ID_5191717710380493426" border="0" /></a><br /></div><div style="text-align: center;"><br /><div style="text-align: left;"><span style="font-weight: bold;">Resultado:</span><br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_R6s_fzkMMl8/SAywVC1VaoI/AAAAAAAAAIg/x125YTrjlz8/s1600-h/reslogv.jpg"><img style="cursor: pointer;" src="http://bp3.blogger.com/_R6s_fzkMMl8/SAywVC1VaoI/AAAAAAAAAIg/x125YTrjlz8/s400/reslogv.jpg" alt="" id="BLOGGER_PHOTO_ID_5191718346035653250" border="0" /></a></div><div style="text-align: center;"><br /><div style="text-align: left;"><span style="font-weight: bold;"><br />No todo es miel sobre hojuelas, punto en contra para Netbeans:</span><br />El IDE tiene un code hint para envolver un método que lanza excepciones con un try y catch<br /><img src="file:///C:/Users/erika/AppData/Local/Temp/moz-screenshot-2.jpg" alt="" />Para probarlo declare un método que lance cualquier excepción y mandelo a llamar desde cualquier otro método.<br />Después tipe [alt + enter] y verá un foco en la parte izquierda sugiriendo envolver el método con un try/catch como muestra la imágen.<br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_R6s_fzkMMl8/SAwpPi1VakI/AAAAAAAAAIA/sjMnuWQtScc/s1600-h/codehintex2.jpg"><img style="cursor: pointer;" src="http://bp1.blogger.com/_R6s_fzkMMl8/SAwpPi1VakI/AAAAAAAAAIA/sjMnuWQtScc/s400/codehintex2.jpg" alt="" id="BLOGGER_PHOTO_ID_5191569817476622914" border="0" /></a><br /><div style="text-align: left;"><br />Al ejecutarlo nos da el siguiente resultado:<br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_R6s_fzkMMl8/SAwptS1ValI/AAAAAAAAAII/K1Ol2iHHsfQ/s1600-h/jdklog.jpg"><img style="cursor: pointer;" src="http://bp0.blogger.com/_R6s_fzkMMl8/SAwptS1ValI/AAAAAAAAAII/K1Ol2iHHsfQ/s400/jdklog.jpg" alt="" id="BLOGGER_PHOTO_ID_5191570328577731154" border="0" /></a><br /><br /><div style="text-align: left;">Como te puedes dar cuenta, el sistema de trazas que esta ocupando es el que tiene por defecto el JDK y no el de commons logging, intentemos personalizarlo llendo al menú Tools/Options/[Java Code]/[HInts]/Error Fixes/Sorround with try-catch<br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_R6s_fzkMMl8/SAwqaC1VamI/AAAAAAAAAIQ/LfJIqLxyFlw/s1600-h/hinttrycatch.jpg"><img style="cursor: pointer;" src="http://bp3.blogger.com/_R6s_fzkMMl8/SAwqaC1VamI/AAAAAAAAAIQ/LfJIqLxyFlw/s400/hinttrycatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5191571097376877154" border="0" /></a><br /><div style="text-align: left;">Desafortunadamente no hay forma de indicarle al IDE que utilice el sistema de trazas de commons logging o mínimo de log4j... <span style="font-style: italic; font-weight: bold;">¡ lastima ! ya será para la próxima versión. Aún así podrías crear un code template o una macro ;)<br /></span></div></div><br /></div></div></div></div>Lo único que resta es instalar log4j y commons logging en un nuevo proyecto.<br /></div></div></div></div></div></div>1. Crea un nuevo proyecto java con el nombre LoggingTest<br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_R6s_fzkMMl8/SAwany1VaXI/AAAAAAAAAGY/w2KMxSlCB54/s1600-h/newProj.jpg"><img style="cursor: pointer;" src="http://bp2.blogger.com/_R6s_fzkMMl8/SAwany1VaXI/AAAAAAAAAGY/w2KMxSlCB54/s400/newProj.jpg" alt="" id="BLOGGER_PHOTO_ID_5191553741414033778" border="0" /></a><br /><br /><div style="text-align: left;"><br />2. Expande tu proyecto y sobre source packages click derecho/New/ Other.../<br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_R6s_fzkMMl8/SAwbUS1VaYI/AAAAAAAAAGg/IoRPB4GHNSw/s1600-h/newOther.jpg"><img style="cursor: pointer;" src="http://bp0.blogger.com/_R6s_fzkMMl8/SAwbUS1VaYI/AAAAAAAAAGg/IoRPB4GHNSw/s400/newOther.jpg" alt="" id="BLOGGER_PHOTO_ID_5191554505918212482" border="0" /></a><br /><br /><div style="text-align: left;"><br />3. Ve a la categoría other y elige properties file<br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_R6s_fzkMMl8/SAwbvy1VaZI/AAAAAAAAAGo/RjwmIdHmXKE/s1600-h/newprops.jpg"><img style="cursor: pointer;" src="http://bp2.blogger.com/_R6s_fzkMMl8/SAwbvy1VaZI/AAAAAAAAAGo/RjwmIdHmXKE/s400/newprops.jpg" alt="" id="BLOGGER_PHOTO_ID_5191554978364615058" border="0" /></a><br /><br /><div style="text-align: left;">4. En File name pon log4j<br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_R6s_fzkMMl8/SAwcEi1VaaI/AAAAAAAAAGw/DOvz4pQOc9E/s1600-h/log4j.jpg"><img style="cursor: pointer;" src="http://bp1.blogger.com/_R6s_fzkMMl8/SAwcEi1VaaI/AAAAAAAAAGw/DOvz4pQOc9E/s400/log4j.jpg" alt="" id="BLOGGER_PHOTO_ID_5191555334846900642" border="0" /></a><br /><br /><div style="text-align: left;">5. Introduce el siguiente código en tu nuevo archivo log4j.properties:<br /><br />log4j.appender.stdout=org.apache.log4j.ConsoleAppender<br />log4j.appender.stdout.Target=System.out<br />log4j.appender.stdout.layout=org.apache.log4j.PatternLayout<br />log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n<br />log4j.rootLogger=debug, stdout<br /><br />6. Descarga (log4j y commons-logging)<br /><br /></div></div></div></div></div></div>7. Click derecho al proyecto y Clean and build.<br /><br />8. Prueba el resultado:<br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_R6s_fzkMMl8/SAwm6y1VaiI/AAAAAAAAAHw/6t22PIIP7ao/s1600-h/log4jresult.jpg"><img style="cursor: pointer;" src="http://bp2.blogger.com/_R6s_fzkMMl8/SAwm6y1VaiI/AAAAAAAAAHw/6t22PIIP7ao/s400/log4jresult.jpg" alt="" id="BLOGGER_PHOTO_ID_5191567261971081762" border="0" /></a><br /><br /><div style="text-align: left;"><br /><span style="font-style: italic;">Ahora tienes un Netbeans 6.1 completamente armado para utilizar commons-logging como wrapper para cualquier sistema de trazas, costó un poco de trabajo pero a cambio de ello serás mucho más productivo y veloz a la hora de escribir código fuente.<br /></span><span style="font-weight: bold;"><br /></span><div style="text-align: center;"><span style="font-weight: bold;">'A partir de ahora tu camino en Netbeans 6.1 deja huella'<br /></span></div></div></div></div></div>iberckhttp://www.blogger.com/profile/01789114762310833879noreply@blogger.com0tag:blogger.com,1999:blog-8319916733216735270.post-38741274942227935032008-04-20T19:10:00.000-07:002008-04-21T01:09:06.614-07:00Corre mas rápido que el viento y llega antes que nadie con Netbeans 6.1 (Parte 8)<span style="font-weight: bold;">Crea tus propios code templates.</span><br /><br />Netbeans 6.1 cuenta con code templates para recorrer una lista, un iterador, un iterador con un while, poner un try catch, throws, public, private, String, static, if ... y un largo etc, <span style="font-style: italic; font-weight: bold;">pero no cuenta con un code template para recorrer el entry set de un mapa</span>.<br />Después de un rato de trabajo he creado el siguiente code template:<br /><br />1. Vaya al menú tools/Options/click en New/Abbreviation=mape<br /><br />2. En expanded text introduzca lo siguiente:<br /><br />for (${TYPE rightSideType default="Map.Entry"} ${ELEM newVarName default="entry"} : ${MAP mapeable instanceof="java.util.Map" default="entrySet"}.entrySet()) {<br />${TYPES rightSideType default="Object"} ${KEY newVarName default="key"} = ${TYPE_CAST cast default="" editable=false}${ELEM}.getKey();<br />${TYPES rightSideType default="Object"} ${VALUE newVarName default="value"} = ${TYPE_CAST cast default="" editable=false}${ELEM}.getValue();<br />${selection}${cursor}<br />}<br /><br />3. Introduzca la siguiente instrucción:<object,><object,><object, object=""><object, object=""><br /><br /></object,></object,></object,></object,><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_R6s_fzkMMl8/SAv6cC1VaTI/AAAAAAAAAF4/hT4rUVFVLsM/s1600-h/mape.jpg"><img style="cursor: pointer; width: 572px; height: 189px;" src="http://bp2.blogger.com/_R6s_fzkMMl8/SAv6cC1VaTI/AAAAAAAAAF4/hT4rUVFVLsM/s400/mape.jpg" alt="" id="BLOGGER_PHOTO_ID_5191518355178481970" border="0" /></a><br /></div><br />En un artículo anterior creamos una macro que validaba si un objeto era nulo, ahora vamos a crear el code template para validar si un objeto es nulo, sigue los pasos anteriores y pon en <span style="font-style: italic;">abbreviation: ifnn</span><span style="font-style: italic;"> </span>y en <span style="font-style: italic;">expanded text:</span><br /><span style="font-style: italic;">if (${EXP instanceof="Object"} != null) {</span> <span style="font-style: italic;"> ${selection}${cursor}</span> <span style="font-style: italic;">}</span><br /><br />Prueba tu nuevo code template:<br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_R6s_fzkMMl8/SAwAFi1VaUI/AAAAAAAAAGA/gAjzVpbFufw/s1600-h/ifnn2.jpg"><img style="cursor: pointer;" src="http://bp1.blogger.com/_R6s_fzkMMl8/SAwAFi1VaUI/AAAAAAAAAGA/gAjzVpbFufw/s400/ifnn2.jpg" alt="" id="BLOGGER_PHOTO_ID_5191524565701192002" border="0" /></a><br /></div><br /><div style="text-align: center;"><span style="font-weight: bold;">'Dame la llave y yo elijo la puerta'<br /><br /></span></div>iberckhttp://www.blogger.com/profile/01789114762310833879noreply@blogger.com0tag:blogger.com,1999:blog-8319916733216735270.post-1186289938665203942008-04-20T17:24:00.000-07:002008-04-21T01:11:46.590-07:00Corre mas rápido que el viento y llega antes que nadie con Netbeans 6.1 (Parte 7)<div style="text-align: center;"><span style="font-weight: bold;">Asignar el valor de retorno a una nueva variable</span><br /></div><br />Desde las primeras versiones de Netbeans tuve la inquietud de los code templates, shortcuts, code hints y macros, una de las cosas que me decepcionaba es que el editor no tenia forma de generar el código para cachar el retorno de un método dentro de una variable.<br />Me explico con un ejemplo, imagina el siguiente método:<br /><br />public static int metodoRegresaEntero() { return 1;}<br /><br />Ahora imagina que dentro del método main mandas a llamar al método <span style="font-style: italic;">metodoRegresaEntero();</span><br />public static void main(String args[]) {<br />metodoRegresaEntero();<br />}<br /><br />Siempre busqué una forma para que el editor hiciera lo siguiente:<br />public static void main(String args[]) {<br /><span style="font-weight: bold;">int i = </span>metodoRegresaEntero();<br />}<br /><br /><span style="font-style: italic;">Mi sueño se ha hecho realidad con Netbeans 6.1 y me siento en las nubes, ahora lo puedes hacer de una forma muy simple...</span><br /><br />public static void main(String args[]) {<br /><br /><span style="font-weight: bold;"> </span><span style="font-style: italic;"><span style="font-weight: bold;">/* Tipea [alt + enter] y aparecerá un pequeño foco del lado izquierdo, elige assign return value to new variable y por arte de magia el editor inferirá el tipo de dato de retorno y lo pondrá por ti*/</span><br /><br /></span> int metodoRegresaEntero = metodoRegresaEntero();<br />}<br /><br />El editor es capaz de inferir los datos hasta de generics<generics>, presta atención a la siguente imágen en la cual toda la parte subrayada fué generada automaticamente por el editor siguiendo los pasos descritos anteriormente:<br /><br /></generics><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_R6s_fzkMMl8/SAvsPi1VaSI/AAAAAAAAAFw/Mz8PjDFZFh4/s1600-h/retorno2.jpg"><img style="cursor: pointer;" src="http://bp0.blogger.com/_R6s_fzkMMl8/SAvsPi1VaSI/AAAAAAAAAFw/Mz8PjDFZFh4/s400/retorno2.jpg" alt="" id="BLOGGER_PHOTO_ID_5191502747267328290" border="0" /></a><br /><br /></div><br /><img src="file:///C:/Users/erika/AppData/Local/Temp/moz-screenshot.jpg" alt="" /><img src="file:///C:/Users/erika/AppData/Local/Temp/moz-screenshot-1.jpg" alt="" /><div style="text-align: center;"><span style="font-weight: bold;">'Debes voltear atrás para conocer a tu oponente'</span><br /></div>iberckhttp://www.blogger.com/profile/01789114762310833879noreply@blogger.com0tag:blogger.com,1999:blog-8319916733216735270.post-42159322667487624202008-04-20T14:41:00.000-07:002008-04-21T01:15:58.329-07:00Corre mas rápido que el viento y llega antes que nadie con Netbeans 6.1 (Parte 6)Este artículo va dedicado al archi ultra reconocido semicolon (;)<br /><br />¿Cuántos lenguajes de programación han planteado la posibilidad de no repetir el símbolo (;) al final de casi todas las sentencias?<br />Esta característica no va a cambiar nunca en c, c++, java. Lo que sí puedes cambiar es tu IDE, Netbeans 6.1 cuenta con un poderoso editor de código que te hace la vida más fácil.<br /><br />Para entender mejor esta característica, hablemos de la forma tradicional de insertar el semicolon al final de las sentencias:<br /><span style="font-style: italic;"></span><br /><span style="font-weight: bold;">1. Inserta una sentencia de código, por ejemplo</span><br />String s = " | " <span style="font-style: italic;"></span><br /><span style="font-weight: bold;">2. Debes moverte hacia la derecha un par de casillas</span><br /><span style="font-weight: bold;">3. Tipear ;</span><br /><br /><span style="font-style: italic;">Lo veo simple, ¿cómo hacerlo más simple?<br /><br /></span>Ve al menú Tools/Options/[Key map]/Expande la carpeta other/Busca la acción Complete Line/<br /><br /><span style="font-style: italic; font-weight: bold;">Por defecto el shortcut es [ctrl+semicolon] pero en nuestros teclados si queremos el ';' deberiamos presionar [ctrl + shift + ;], al tener [shift] dentro del shortcut cambia y por lo tanto no funciona. Consecuencia de esto los usuarios hispanos de netbeans</span><span style="font-style: italic; font-weight: bold;"> por 'defecto' no podemos hacer uso de esta característica :(.<br /></span>Para habilitarla solo cambia el shortcut de la acción, yo he puesto [ctrl + ñ]<br /><br />Ahora que hemos cambiado el shortcut podemos hacer uso de él.<br />1. Inserta por ejemplo la siguiente instrucción.<br />String s = " | "<br />2. Tipea [ctrl + ñ], automaticamente se pondrá un ';' al final de la sentencia sin tener que recorrerte todo hasta la derecha.<br /><br />Lo mismo puedes hacer para la acción "Complete Line and Create New Line", asignale el shortcut<br />[ctrl + shift + ñ], ahora aparte de agregar el ';' al final de la sentencia, se insertará un newline al final y empezaras en la siguiente línea.<br />Nota que esta característica no solo aplica a sentencias simples, en sentencias complicadas puede ser de gran ayuda...<br /><span style=";font-family:Verdana,Arial;font-size:85%;" ><pre><span style="font-size:85%;"><br />class Nb61 { <br />public static void main(String[] args) {System.out.println("Duke in Netbeans 6.1 blogging contest");}<br />static{} <br />static{} <br />static{} <br />static{} <br />static{} <br />static{} ;;; <br />static{} ;;;;; <br />static{} ;;;;;;; <br />static{} ;;;;;;;;; <br />static{} ;;;;;;;;;;; <br />static{} ;;;;;;;;;;;;; <br />static{} ;;;;;;;;;;;;;;; <br />static{} ;;;;;;;;;;;;;;;;; <br />static{} ;;;;;;;;;;;;;;;;;; <br />static{} ;;;;;;;;;;;;;;;;;;;; <br />static{} ;;;;;;;;;;;;;;;;;;;;;; <br />static{} ;;;;;;;;;;;;;;;;;;;;;;; <br />static{} ;;;;;;;;;;;; ;;;;;;;;;;;; <br />static{} ;;;;;;;;;;;;;;;;;;;;;;;;;; <br />static{} ;;;;; ;;;;;;;;;;;;;;; ;;; <br />static{} ;;;; ;;;;;;;;;;;;;;; ;;; <br />static{} ;;; ;;;;;;;;;;;;;;;;; ;;;<br />static{} ;;;;;;;;;;;;;;;;;;;;;;; ;;;<br />static{} ;;;;;;;;;;;;;;;;;;;;;;; ;;; <br />static{} ;;;;;;;;;;;;;;;;;;;;;;; ;;; <br />static{} ;;;;;;;;;;;;;;;;;;; ;; ;;; <br />static{} ;; ;;;;;;;;;;;;; ;; ;;; <br />static{} ;; ;;;;;; ;;;; ;;; <br />static{} ;;; ;; <br />static{} ;;; ;; <br />static{} ;;; ;;; <br />static{} ;;; ;; <br />static{} ;;; ;; <br />static{} ;;; ;;; <br />static{} ;; ;; <br />static{} ;; ;;; <br />static{} ;; ;; <br />static{} ;; ;; <br />static{} ;;; ;; <br />static{} ;;; ;; <br />static{} ;; ;;; <br />static{} ;; ;; <br />static{} ; ;; <br />static{} ;; ;; <br />static{} ;;; ;;; <br />static{} ;;; ;;;;;;;; ;;; <br />static{} ;;; ;;;;;;;;;;;;;;; ;; <br />static{} ;; ;;;;; ;;;; ;; <br />static{} ;; ;;;; ;;; ;; <br />static{} ;; ;;;; ;;; ;;; <br />static{} ;; ;;; ;;; ;; <br />static{} ;; ;;;; ;;; ;; <br />static{} ;;;;;;;;; ;;; ;; <br />static{} ;;;; ;;;;;;;;; <br />static{} ;;;;; <br />static{} <br />static{} <br />static{}<br />}<br /><br /></span></pre></span><br /><div style="text-align: center;"><span style="font-weight: bold;">'D</span><span style="font-weight: bold;">uke ha aprendido a utilizar el semicolon en Netbeans 6.1, ahora </span><span style="font-weight: bold;">corre más rápido que nunca... ya tiene tenis (;)-(;) y además compila'</span><br /></div>iberckhttp://www.blogger.com/profile/01789114762310833879noreply@blogger.com0tag:blogger.com,1999:blog-8319916733216735270.post-84405838364854022362008-04-20T14:02:00.001-07:002008-04-21T01:19:18.736-07:00Corre mas rápido que el viento y llega antes que nadie con Netbeans 6.1 (Parte 5)La versión 6.1 de Netbeans cuenta con un editor mucho más mejorado que nunca, prueba de ello es el nuevo coloreado de sintaxis.<br />Gracias a este nuevo coloreado se puede distinguir entre variables estáticas (aparecen en cursiva), variables locales o variables a nivel de clase, atributos deprecated (los cuales aparecen <span style="font-style: italic;">subrayados</span>).<br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_R6s_fzkMMl8/SAvk_C1VaQI/AAAAAAAAAFg/xABvqy1yn6g/s1600-h/coloreado.jpg"><img style="cursor: pointer;" src="http://bp2.blogger.com/_R6s_fzkMMl8/SAvk_C1VaQI/AAAAAAAAAFg/xABvqy1yn6g/s400/coloreado.jpg" alt="" id="BLOGGER_PHOTO_ID_5191494767218092290" border="0" /></a><br /></div><br />Además de que cuenta con una interesante característica, si tienes un método con múltiples retornos y pones el puntero en el tipo de dato de retorno del método, puedes saber todas las sentencias de salida.<br /><br /><div style="text-align: center;"><div style="text-align: left;"><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_R6s_fzkMMl8/SAu1oy1VaLI/AAAAAAAAAE4/XS5FaAvgBNg/s1600-h/return.jpg"><img style="cursor: pointer;" src="http://bp1.blogger.com/_R6s_fzkMMl8/SAu1oy1VaLI/AAAAAAAAAE4/XS5FaAvgBNg/s400/return.jpg" alt="" id="BLOGGER_PHOTO_ID_5191442707919497394" border="0" /></a><br /><br /><div style="text-align: left;">También puedes seleccionar una variable y conocer todas las coincidencias en tiempo real.<br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_R6s_fzkMMl8/SAu2jS1VaMI/AAAAAAAAAFA/x_JMG_Eala8/s1600-h/ilumina.jpg"><img style="cursor: pointer;" src="http://bp3.blogger.com/_R6s_fzkMMl8/SAu2jS1VaMI/AAAAAAAAAFA/x_JMG_Eala8/s400/ilumina.jpg" alt="" id="BLOGGER_PHOTO_ID_5191443712941844674" border="0" /></a><br /></div></div></div></div><div style="text-align: left;"><br />Lo mismo sucede con los métodos.<br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_R6s_fzkMMl8/SAu3dC1VaNI/AAAAAAAAAFI/P3xxoDR2V7Y/s1600-h/ilumina2.jpg"><img style="cursor: pointer;" src="http://bp2.blogger.com/_R6s_fzkMMl8/SAu3dC1VaNI/AAAAAAAAAFI/P3xxoDR2V7Y/s400/ilumina2.jpg" alt="" id="BLOGGER_PHOTO_ID_5191444705079290066" border="0" /></a><br /><br /><br /></div></div><span style="font-size:85%;"><span style="font-size:100%;"><span style="font-weight: bold;">'Aprende a correr de noche, <span style="color: rgb(0, 0, 0); font-style: italic;">ilumina las salidas</span>'</span></span></span><br /></div><span style="font-size:85%;"><span style="font-size:100%;"><br /></span></span>iberckhttp://www.blogger.com/profile/01789114762310833879noreply@blogger.com0tag:blogger.com,1999:blog-8319916733216735270.post-67135222727372208942008-04-20T13:48:00.000-07:002008-04-20T21:12:49.165-07:00Corre mas rápido que el viento y llega antes que nadie con Netbeans 6.1 (Parte 4)<div style="text-align: left;">Desde la versión 6 tienes la posibilidad de reemplazar las variables de tu código fuente y ver los cambios en tiempo real, para conseguir este comportamiento posicionate sobre una variable de la clase, tipea [ctrl + r] y escribe ... verás el cambio 'al aire'.<br /></div><br /><span style="font-size:100%;"><span style="font-size:130%;"><br /></span></span><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_R6s_fzkMMl8/SAusqC1VaKI/AAAAAAAAAEw/JvWBqDDL_sc/s1600-h/shortcuts6.jpg"><img style="cursor: pointer;" src="http://bp2.blogger.com/_R6s_fzkMMl8/SAusqC1VaKI/AAAAAAAAAEw/JvWBqDDL_sc/s320/shortcuts6.jpg" alt="" id="BLOGGER_PHOTO_ID_5191432833789683874" border="0" /></a><br /></div><br /><br /><div style="text-align: center;"><span style="font-weight: bold;"></span><span style="font-weight: bold;">'correr más rápido que el viento implica conocer los elementos en el aire'.<br /><br /></span></div>iberckhttp://www.blogger.com/profile/01789114762310833879noreply@blogger.com0tag:blogger.com,1999:blog-8319916733216735270.post-41570925150733552822008-04-20T01:21:00.000-07:002008-04-21T01:27:07.891-07:00Corre mas rápido que el viento y llega antes que nadie con Netbeans 6.1 (Parte 3)<span style="font-size:100%;">En esta ocasion hablare sobre los <span style="font-style: italic;">shortcuts</span> osea los atajos del teclado que trae consigo el IDE para realizar las tareas mas comunes desde el teclado. Hablaremos especificamente de los shortcuts que trae consigo el editor y un top ten de los que más he utilizado.</span><br /><span style="font-size:100%;"><br />Para modificar o agregar un shortcut, puedes ir al menú Tools/Options/[Key Map]<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_R6s_fzkMMl8/SAt66C1VZ_I/AAAAAAAAADc/HCZSgQKKmJM/s1600-h/shortcuts.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 364px; height: 325px;" src="http://bp2.blogger.com/_R6s_fzkMMl8/SAt66C1VZ_I/AAAAAAAAADc/HCZSgQKKmJM/s320/shortcuts.jpg" alt="" id="BLOGGER_PHOTO_ID_5191378133086201842" border="0" /></a>La lista etiquetada como profile sirve para cambiar el perfil de keymap, esto es muy útil para programadores que vienen de eclipse o de emacs, como ya saben todos los atajos fácilmente pueden cambiar el perfil y reutilizar los atajos que ya conocian.<br /><br /></span><span style="font-size:100%;"><span>Un par de reclamos ....<br /><br /></span><span>¿ Qué hay de los programadores que vienen de IntelliJ IDEA ?<br /><br /></span></span><span style="font-size:100%;">¿ Qué hay de los que conocen los shortcuts en JBuilder y quieren migrar a Netbeans 6.1 ?<br /><br /></span><span style="font-size:130%;"><span style="font-size:100%;"><span style="font-size:85%;">¿ Por qué se acordaron del viejo emacs y no de mi querido vi :'( ?<br />No todo esta perdido :), existe un plugin https://sourceforge.net/project/showfiles.php?group_id=3653 )</span><span style="font-weight: bold;"><br /><br /></span></span></span><div style="text-align: center;"><span style="font-size:100%;"><span style="font-weight: bold;">[Shortcuts Top 10]</span></span><br /></div><span style="font-size:130%;"><span style="font-size:100%;"><br /></span></span><span style="font-size:100%;"><span style="font-weight: bold;"><span style="font-style: italic;">1. Duplicar una línea </span></span></span><span style="font-style: italic;font-size:100%;" ><span style="font-weight: bold;">[ctrl + shift + abajo], </span></span><span style="font-style: italic;font-size:100%;" ><span style="font-weight: bold;">[ctrl + shift + arriba]</span></span><span style="font-size:100%;"><span style="font-weight: bold;"><br /></span></span><span style="font-size:100%;">Tradicionalmente ¿ cómo pasas la línea superior a la línea actual ?<br /></span><span style="font-size:100%;"><br /></span><span style="font-size:100%;">Cuando programaba con eclipse ...<br /></span><span style="font-size:100%;"><span style="font-weight: bold;">Movimiento 1.</span></span><span style="font-size:100%;"> </span><span style="font-size:100%;">Ir a la línea que quieres copiar</span><span style="font-size:100%;"><br /></span><span style="font-size:100%;"><span style="font-weight: bold;">Movimiento 2.</span></span><span style="font-size:100%;"> </span><span style="font-size:100%;">Apretaba [shift]</span><span style="font-size:100%;"><br /></span><span style="font-size:100%;"><span style="font-weight: bold;">Movimiento 3.</span> Apretaba [fin]<br /></span><span style="font-size:100%;"><span style="font-weight: bold;">Movimiento 4.</span> Apretaba [ctrl + c]<br /></span><span style="font-size:100%;"><span style="font-weight: bold;">Movimiento 5.</span> Apretaba [fin]<br /></span><span style="font-size:100%;">... empiezo a aburrirme :P<br /></span><span style="font-size:100%;"><span style="font-weight: bold;">Movimiento 6.</span> Apretaba [Enter]<br /></span><span style="font-size:100%;"><span style="font-weight: bold;">Movimiento 7.</span> Apretaba [ctrl + v]<br />... que bueno que termine, empezaba a darme dolor de dedos.<br /></span><span style="font-size:100%;"><span style="font-weight: bold;">Movimiento 8. </span><span>Frotar mis dedos</span><br /></span><span style="font-size:100%;"><br /></span><span style="font-size:100%;">Ahora con Netbeans 6.1 ...</span><span style="font-size:100%;"><br /></span><span style="font-weight: bold;font-size:100%;" >Movimiento 1.</span><span style="font-size:100%;"> Ir a la línea que quieres copiar<br /></span><span style="font-weight: bold;font-size:100%;" >Movimiento 2.</span><span style="font-size:100%;"> Ctrl + Shift + abajo<br /></span><span style="font-weight: bold;font-size:100%;" >Movimiento 3.</span><span style="font-size:100%;"> Poner una carita de felicidad :)<br /><br /></span><div style="text-align: center;"><span style="font-size:100%;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_R6s_fzkMMl8/SAuKVy1VaBI/AAAAAAAAADs/FiAWJRFKWME/s1600-h/shortcuts3.jpg"><img style="cursor: pointer;" src="http://bp1.blogger.com/_R6s_fzkMMl8/SAuKVy1VaBI/AAAAAAAAADs/FiAWJRFKWME/s320/shortcuts3.jpg" alt="" id="BLOGGER_PHOTO_ID_5191395102501988370" border="0" /></a><br /></span></div><span style="font-size:100%;"><br /></span><div style="text-align: center;"><div style="text-align: left;"><div style="text-align: center;"><div style="text-align: left;"><div style="text-align: center;"><div style="text-align: left;"><span style="font-size:100%;"><br /></span><div style="text-align: center;"><div style="text-align: left;"><span style="font-size:100%;"><span style="font-weight: bold;"><span style="font-style: italic;">2. Formatear el código fuente </span></span></span><span style="font-style: italic;font-size:100%;" ><span style="font-weight: bold;">[alt + shift + f]</span></span><span style="font-size:100%;"><span style="font-weight: bold;"><span style="font-style: italic;"><br /></span></span>Para acomodar todo tu código fuente presiona [alt + shift + f], la característica más sobresaliente del reformat code de Netbeans 6.1 es la capacidad de eliminar los espacios en blanco que se encuentran a los costados de las sentencias. Por ejemplo si tienes espacios en blanco después de un System.out.println("");____,<br />al presionar [alt + shift + f] el IDE eliminara esos espacios por ti.<br /></span><span style="font-size:100%;"><span style="font-weight: bold;"><span style="font-style: italic;"><br /></span></span></span><span style="font-size:100%;"><span style="font-weight: bold;"><span style="font-style: italic;">3. Fix all imports </span></span></span><span style="font-style: italic;font-size:100%;" ><span style="font-weight: bold;">[ctrl + shift + i]</span></span><span style="font-size:100%;"><span style="font-weight: bold;"><span style="font-style: italic;"><br /></span></span>Fix all imports es una característica muy útil para reparar todos los imports que no se encuentran en el código fuente. Imagina que copias un trozo de código fuente de algun sitio pero no tienes a la mano los imports. Al presionar [ctrl + shift + i] aparecerá un dialogo para corregir todos los imports faltantes.<br /><br /></span><div style="text-align: center;"><span style="font-size:100%;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_R6s_fzkMMl8/SAuR9i1VaFI/AAAAAAAAAEM/KuAe4NQk9F0/s1600-h/shortcuts7.jpg"><img style="cursor: pointer;" src="http://bp0.blogger.com/_R6s_fzkMMl8/SAuR9i1VaFI/AAAAAAAAAEM/KuAe4NQk9F0/s320/shortcuts7.jpg" alt="" id="BLOGGER_PHOTO_ID_5191403481983182930" border="0" /></a><br /><br /></span><div style="text-align: left;"><span style="font-size:100%;"><span style="font-weight: bold;"><span style="font-style: italic;">4. Insert code </span></span></span><span style="font-style: italic;font-size:100%;" ><span style="font-weight: bold;">[alt + ins]</span></span><span style="font-size:100%;"><span style="font-weight: bold;"><span style="font-style: italic;"><br /></span></span>Esta nueva versión de Netbeans cuenta con una herramienta para crear constructores, sobreescribir métodos, agregar propiedaes, crear get/set de tus propiedades, crear el método hashCode(), equals() ...<br />Para mostrar el cuadro de diálogo presiona [alt + ins] y se feliz.<br /><br /></span><div style="text-align: center;"><div style="text-align: center;"><span style="font-size:100%;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_R6s_fzkMMl8/SAuXFi1VaII/AAAAAAAAAEg/UeXxxVsxkao/s1600-h/shortcuts9.jpg"><img style="cursor: pointer;" src="http://bp0.blogger.com/_R6s_fzkMMl8/SAuXFi1VaII/AAAAAAAAAEg/UeXxxVsxkao/s320/shortcuts9.jpg" alt="" id="BLOGGER_PHOTO_ID_5191409116980275330" border="0" /></a><br /><br /></span><div style="text-align: left;"><span style="font-size:100%;"><span style="font-weight: bold;"><span style="font-style: italic;">5. Seleccionar porciones de código, caminar[alt + shift + .], retroceder </span></span></span><span style="font-size:100%;"><span style="font-weight: bold;"><span style="font-style: italic;">[alt + shift + ,]</span></span></span><span style="font-size:100%;"><br /></span><span style="font-weight: bold; font-style: italic;font-size:100%;" ><span> </span></span><span style="font-size:100%;"><span>En ocaciones es múy útil seleccionar el código fuente por porciones, imagina que necesitas seleccionar todo el for en el que estás trabajando pero es muy grande, lo que debes hacer es ir hacia arriba y buscar donde empieza el for, después ir abajo y buscar la llave de cierre del for.</span><br /></span><span style="font-size:100%;"><span> Lo mismo sucede con los métodos, con los if, while, switch, etc.</span><br /></span><span style="font-size:100%;"><span> Netbeans pone a tu disposición un shortcut para seleccionar porciones de código, si estas dentro de ese enorme for, solo tipea [alt + shift + .] y verás seleccionado todo el cuerpo del for, si lo vuelves a tipear verás seleccionado el for completo.<br /><br /></span></span><span style="font-size:100%;"><span> De esta forma puedes seleccionar mas y mas porciones de código hasta llegar a seleccionar todo el código fuente de tu clase.</span><br /></span></div><span style="font-size:100%;"><span><br /></span></span><div style="text-align: center;"><span style="font-size:100%;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_R6s_fzkMMl8/SAuMUi1VaCI/AAAAAAAAAD0/rGRKpwJDmdg/s1600-h/shortcuts4.jpg"><img style="cursor: pointer;" src="http://bp0.blogger.com/_R6s_fzkMMl8/SAuMUi1VaCI/AAAAAAAAAD0/rGRKpwJDmdg/s320/shortcuts4.jpg" alt="" id="BLOGGER_PHOTO_ID_5191397280050407458" border="0" /></a><br /><br /></span><div style="text-align: left;"><span style="font-size:100%;"><span style="font-weight: bold;"><span style="font-style: italic;">6. Borrar la línea actual </span></span></span><span style="font-style: italic;font-size:100%;" ><span style="font-weight: bold;">[ctrl + e]<br /></span></span><span style="font-size:100%;"><span>Este es uno de mis preferidos, solo presiona [ctrl + e] y se borrará la línea en la que te encuentras actualmente<br /><br /></span></span><span style="font-size:100%;"><span style="font-weight: bold;"><span style="font-style: italic;">7. Agregar o eliminar comentarios </span></span></span><span style="font-style: italic;font-size:100%;" ><span style="font-weight: bold;">[ctrl + shift + c]</span></span><span style="font-size:100%;"><br /></span><span style="font-size:100%;"><span>Con Netbeans 6.1 tienes la posibilidad de comentar porciones de código fuente, lo único que debes hacer es posicionarte sobre la línea o seleccionar una porción de código fuente y tipear el comando [ctrl + shift + c], lo mismo debes hacer para descomentar.<br /><br /></span></span><div style="text-align: center;"><span style="font-size:100%;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_R6s_fzkMMl8/SAuNkS1VaDI/AAAAAAAAAD8/ArzGVvD-8AE/s1600-h/shortcuts5.jpg"><img style="cursor: pointer; width: 364px; height: 137px;" src="http://bp3.blogger.com/_R6s_fzkMMl8/SAuNkS1VaDI/AAAAAAAAAD8/ArzGVvD-8AE/s320/shortcuts5.jpg" alt="" id="BLOGGER_PHOTO_ID_5191398650144974898" border="0" /></a><br /><br /></span></div></div></div><span style="font-size:100%;"><br /></span><div style="text-align: left;"><span style="font-size:100%;"><span style="font-weight: bold;"><span style="font-style: italic;">8. Cerrar la ventana actual </span></span></span><span style="font-style: italic;font-size:100%;" ><span style="font-weight: bold;">[ctrl + w]</span></span><span style="font-size:100%;"><span style="font-weight: bold;"><span style="font-style: italic;"><br /></span></span>Para cerrar la ventana actual, presione [ctrl + w]<br /><br /></span><span style="font-size:100%;"><span style="font-weight: bold;"><span style="font-style: italic;">9. Maximizar la ventana </span></span></span><span style="font-weight: bold; font-style: italic;font-size:100%;" ><span>actual [shift + esc]<br /></span></span><span style="font-size:100%;"><span>Existen varias formas de ampliar el área de trabajo, uno de los más útiles es con el shortcut [shift + esc], el cual </span></span><span style="font-size:100%;"><span>maximiza la ventana actual.<br /><br /></span></span><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_R6s_fzkMMl8/SAvi9y1VaOI/AAAAAAAAAFQ/7YptBjyi9v8/s1600-h/Shortcuts2.jpg"><img style="cursor: pointer;" src="http://bp1.blogger.com/_R6s_fzkMMl8/SAvi9y1VaOI/AAAAAAAAAFQ/7YptBjyi9v8/s400/Shortcuts2.jpg" alt="" id="BLOGGER_PHOTO_ID_5191492546720000226" border="0" /></a></div><span style="font-size:100%;"><span><br />Otra posibilidad es utilizando el modo fullscreen con [ctrl + alt + enter]<br /><br /></span></span><span><span>Y por último, puedes dar click derecho sobre la pestaña de la ventana de trabajo y elegir <span style="font-style: italic;">undock window</span> lo cuál hará que la ventana salga del entorno como si de un programa distinto se tratara.<br /><br /></span></span><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_R6s_fzkMMl8/SAvjei1VaPI/AAAAAAAAAFY/ZPLelxZ7nBE/s1600-h/shortcuts11.jpg"><img style="cursor: pointer;" src="http://bp0.blogger.com/_R6s_fzkMMl8/SAvjei1VaPI/AAAAAAAAAFY/ZPLelxZ7nBE/s400/shortcuts11.jpg" alt="" id="BLOGGER_PHOTO_ID_5191493109360716018" border="0" /></a><br /></div><br /><span style="font-size:100%;"><span style="font-weight: bold;"><span style="font-style: italic;">10. Cambiar de ventana </span></span></span><span style="font-style: italic;font-size:100%;" ><span style="font-weight: bold;">[ctrl + tab]</span></span><span style="font-size:100%;"><br />Puedes cambiar entre ventanas con el simple comando [ctrl + tab]</span><br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_R6s_fzkMMl8/SAuYFi1VaJI/AAAAAAAAAEo/mJJgbDmBfQ4/s1600-h/shortcuts10.jpg"><img style="cursor: pointer; width: 413px; height: 135px;" src="http://bp0.blogger.com/_R6s_fzkMMl8/SAuYFi1VaJI/AAAAAAAAAEo/mJJgbDmBfQ4/s320/shortcuts10.jpg" alt="" id="BLOGGER_PHOTO_ID_5191410216491903122" border="0" /></a><br /><br /><div style="text-align: center;"><span style="font-weight: bold; font-style: italic;font-size:100%;" >'La luz es más rápida que el viento, pero si conoces los atajos del laberinto tu serás el primero ...</span><span style="font-size:100%;">'<br /></span></div><br /></div></div></div></div></div></div></div></div></div></div></div></div></div></div>iberckhttp://www.blogger.com/profile/01789114762310833879noreply@blogger.com0tag:blogger.com,1999:blog-8319916733216735270.post-27639580528221490232008-04-19T23:33:00.000-07:002008-04-21T01:28:38.983-07:00Corre mas rápido que el viento y llega antes que nadie con Netbeans 6.1 (Parte 2)<div style="text-align: left;"><span style="font-weight: bold;">Una de las características por default que hacen falta a Netbeans 6.1 rc2 (hasta hoy) es la posibilidad de tener un code template que valide si un objeto es nulo.</span><br /></div><span style="font-style: italic;"><br /></span><span style="font-style: italic;">Sería fantástico tipear por ejemplo [ifnn + tab] y que buscara el primer objeto hacia arriba e insertara el siguiente código:</span><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_R6s_fzkMMl8/SArwLi1VZ6I/AAAAAAAAACg/SNFFSYpNIa0/s1600-h/macros.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp3.blogger.com/_R6s_fzkMMl8/SArwLi1VZ6I/AAAAAAAAACg/SNFFSYpNIa0/s320/macros.jpg" alt="" id="BLOGGER_PHOTO_ID_5191225601617651618" border="0" /></a><span style="font-size:100%;"><br />Desafortunadamente no se cuenta con el code template por default, podriamos crear un code template para agregar la característica, pero para ilustrar un nuevo tema casi no documentado, haremos uso de las macros...</span><span style="font-weight: bold;"><br /><br /><br />- Start Macro -<br /></span>Las macros, otra de las características de Netbeans que permite un desarrollo más veloz.<br />Es cierto que <span>no son una característica nueva de Netbeans 6.1 y existen desde versiones anteriores pero quiero hablar sobre este tema ya que casi nadie habla de ellas y es una pieza fundamental en el rompecabezas de una serie de artículos llamados <span style="font-style: italic;">'Corre más rápido que el viento con Netbeans 6.1', </span>los cuales he creado con la finalidad de que los usuarios de otros entornos se sientan interesados por Netbeans 6.1<br /></span><br />Una macro es un conjunto de acciones que pueden ser grabadas para reproducirlas posteriormente.<br />Para iniciar la grabación de una macro vaya al menú Edit/Start macro recording<br />Para detener la grabación de una macro vaya al menú Edit/Stop macro recording<br /><br /><span style="font-weight: bold;">Pasos para crear una macro que valide si un objeto es nulo</span><br />1. De acuerdo a la imagen anterior, posicionate sobre la variable obj y seleccionala.<br />2. Inicia la grabación de la macro<br />3. tipea [ctrl + c]<br />4. tipea [fin]<br />5. tipea [enter]<br />6. tipea if ( [ctrl + v] ) { [enter]}<br />7. Deten la grabación de la macro<br />8. Aparece un dialogo para poner el nombre de la macro, llamemosle if-not-null<br />9. Aparecerá un dialogo similar al siguiente:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_R6s_fzkMMl8/SArxuS1VZ7I/AAAAAAAAACo/22hBgdWsxOc/s1600-h/macros2.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp2.blogger.com/_R6s_fzkMMl8/SArxuS1VZ7I/AAAAAAAAACo/22hBgdWsxOc/s320/macros2.jpg" alt="" id="BLOGGER_PHOTO_ID_5191227298129733554" border="0" /></a>Al final de la grabación debería quedarte un Macro Code como este:<br />copy-to-clipboard caret-end-line insert-break "if (" paste-from-clipboard " != null" caret-forward " {" insert-break<br /><br />10. Pon un shortcut para que se ejecute la macro, yo he puesto (ctrl + alt + N)<br /><br />11. Prueba tu macro, posicionate sobre una variable y seleccionala ... tipea (ctrl + alt + N)<span style="font-weight: bold;"><br /><br /><br /><br /><br /><br /><br /><br />Resultado:</span><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_R6s_fzkMMl8/SAryfS1VZ8I/AAAAAAAAACw/Lot8d31W6Zk/s1600-h/macros3.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp2.blogger.com/_R6s_fzkMMl8/SAryfS1VZ8I/AAAAAAAAACw/Lot8d31W6Zk/s320/macros3.jpg" alt="" id="BLOGGER_PHOTO_ID_5191228139943323586" border="0" /></a><br /><br /><br /><br /><br /><br /><span style="font-style: italic;"><br />No mas validaciones manuales para saber si un objeto es nulo<br /><br /></span>Ahora que sabes como crear una macro para validar si un objeto es nulo, ya sabras que puedes crear cualquier tipo de macro para evitar las tareas repetitivas.<br /><br /><div style="text-align: center;"><span style="font-style: italic;"><span style="font-weight: bold;">'Dime como hacerlo y lo haré paso a paso, dame alas y volaré.'</span></span><br /></div><span style="font-style: italic;"><br /></span><span style="font-weight: bold;">- Stop macro -</span>iberckhttp://www.blogger.com/profile/01789114762310833879noreply@blogger.com1tag:blogger.com,1999:blog-8319916733216735270.post-23058835475438511862008-04-19T19:49:00.000-07:002008-04-21T11:56:28.642-07:00Corre mas rápido que el viento y llega antes que nadie con Netbeans 6.1Este blog lo he creado con la intención de participar en el concurso Netbeans IDE 6.1 Beta blogging contest y aportar un granito de arena a la comunidad de desarrolladores de Netbeans hispanos.<br /><div style="text-align: center;"><div style="text-align: left;"><br /></div></div>Quiero inaugurar con el primer artículo de una serie llamada <span style="font-style: italic; font-weight: bold;">'Corre más rápido que el viento y llega antes que nadie con Netbeans 6.1', </span>la serie la estoy<span> creado con la finalidad de que los usuarios de otros entornos se sientan atraidos por Netbeans 6.1 ya que </span>hablo sobre un tema poco conocido. Cómo desarrollar aplicaciones de una forma increiblemente veloz desde Netbeans 6.1 es el tema central ya que ésta característica fué una de las decisivas para que yo migrara a la plataforma y terminara amandola.<br /><br />¿Cuántos programadores se preocupan en medir el desempeño de sus aplicaciones en milisegundos (que mejor si lo haces desde netbeans profiler) ?<br />Para mi, la respuesta es <span style="font-weight: bold; font-style: italic;">pocos</span>...<br /><br /><span style="font-weight: bold;">¿Cuántos programadores se preocupan en medir su rapidez escribiendo código fuente? </span><br />Para mi, la respuesta es <span style="font-style: italic; font-weight: bold;">casi</span><span style="font-weight: bold;"> </span><span style="font-style: italic; font-weight: bold;">nadie</span><br /><br />¿Cuántas veces al día repites la sentencia 'System.out.println("")' para imprimir una variable en tu código fuente ?<br />¿ Cuántas veces al día escribes el tedioso for(int i=0; i < ...), cuantas veces recorres un iterator ? <span style="font-weight: bold;"><br /><span style="font-size:130%;"><br /><span style="font-style: italic;font-size:85%;" >¿ Cuántos milisengundos tardas en escribir código fuente ?</span></span><span style="font-size:100%;"><br /><br /></span><span style="font-style: italic;font-size:100%;" >¿ Se podría considerar este tema como la pieza que hacia falta en el rompecabezas de la programación ágil ?</span><br /></span><span style="font-weight: bold;font-size:130%;" ><br /><span style="font-size:100%;">Code templates</span><br /></span><span>Los code templates es una característica de Netbeans que sirve para insertar pedazos de código fuente por medio de abreviaciones.<br />Una de las características más importantes es que una vez insertados se pueden modificar de acuerdo a la declaración del code template.<br /><br />Por ejemplo:<br />Existe un code template para crear nuevos objetos el cual se ejecuta con el comando [newo + tab]<br /></span><span>Al tipear </span><span>[newo + tab] se insertará:<br /><br /></span><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_R6s_fzkMMl8/SArsRi1VZ4I/AAAAAAAAACQ/pLXdpwmyJFg/s1600-h/codetemplates2.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp3.blogger.com/_R6s_fzkMMl8/SArsRi1VZ4I/AAAAAAAAACQ/pLXdpwmyJFg/s320/codetemplates2.jpg" alt="" id="BLOGGER_PHOTO_ID_5191221306650355586" border="0" /></a><br /></div><span><br /><br /><br />Una vez insertado el code template, se puede modificar ya que el cursor queda sobre la palabra [Object], si al insertarlo tipea String se modificará de la siguiente forma:</span><span style="font-weight: bold;"><br /></span><span>String obj = new </span><span>String</span><span>();<br /><br /><span style="font-weight: bold;">Modificar los code templates<br /></span></span><span>Usted puede modificar o crear nuevos code templates llendo a Tools/Options/[Code templates]<br /><br /></span><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_R6s_fzkMMl8/SArs5C1VZ5I/AAAAAAAAACY/dFBS5FQW0f4/s1600-h/codetemplates3.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp1.blogger.com/_R6s_fzkMMl8/SArs5C1VZ5I/AAAAAAAAACY/dFBS5FQW0f4/s320/codetemplates3.jpg" alt="" id="BLOGGER_PHOTO_ID_5191221985255188370" border="0" /></a><br /></div><span><br /><br /><br /></span><span><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />Tenga en cuenta que no solo existen code templates para java, usted puede cambiar el lenguaje desde la lista etiquetada como <span style="font-style: italic;">languages:<br /><br /></span></span><div style="text-align: center;"><span style="font-size:130%;"><span style="font-weight: bold;">Top 10 de los </span></span><span style="font-size:130%;"><span style="font-weight: bold;">code templates</span>:</span><span></span><br /></div><span><br /></span><span style="font-weight: bold;">1. Imprimir en pantalla [sout + tab]</span><br />/* Tipea [sout + tab] Resultado ... */<br />System.out.println("");<br /><br /><span style="font-weight: bold;">2. Imprimir una variable en pantalla [soutv + tab]</span><br />Busca hacia arriba la primer variable y la imprime.<br />Ejemplo:<br />int variableLargaDeTipoEntero = 9;<br />/* Tipea [soutv + tab] Resultado ... */<br />System.out.println("variableLargaDeTipoEntero = " + variableLargaDeTipoEntero);<br /><br /><span style="font-weight: bold;">3. Recorrer automaticamente un array [fori + tab]</span><br />Busca hacia arriba el primer array y lo recorre.<br />Ejemplo:<br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_R6s_fzkMMl8/SAwIcC1VaVI/AAAAAAAAAGI/JBoRdMmj_fA/s1600-h/fori.jpg"><img style="cursor: pointer;" src="http://bp3.blogger.com/_R6s_fzkMMl8/SAwIcC1VaVI/AAAAAAAAAGI/JBoRdMmj_fA/s400/fori.jpg" alt="" id="BLOGGER_PHOTO_ID_5191533748341270866" border="0" /></a><br /></div><br /><span style="font-weight: bold;">4. Recorrer automaticamente una lista por medio de su iterator [forc + tab]</span><br />Busca hacia arriba la primera coleccion y la recorre<br />List<string> listaStrings = new ArrayList<string>();<br />/* Tipea [forc + tab] Resultado ... */<br />for (Iterator<string> it = listaStrings.iterator(); it.hasNext();) {<br />String string = it.next();<br />}<br /><br /><span style="font-weight: bold;">5. Recorrer automaticamente una lista por medio de foreach [fore + tab]</span><br />List<string><string> listaStrings = new ArrayList<string><string>();<br />/* Tipea [fore + tab] Resultado ... */<br />for (String string : listaStrings) {<br />}<br /><br /><span style="font-weight: bold;">6. Recorrer automaticamente una lista por medio de su indice [forl + tab]<br /><br /></span></string></string></string></string></string></string></string><div style="text-align: center;"><string><string><string><string><string><string><string></string></string></string></string></string></string></string><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_R6s_fzkMMl8/SAwJEC1VaWI/AAAAAAAAAGQ/gliQUYLBmds/s1600-h/forl.jpg"><img style="cursor: pointer;" src="http://bp3.blogger.com/_R6s_fzkMMl8/SAwJEC1VaWI/AAAAAAAAAGQ/gliQUYLBmds/s400/forl.jpg" alt="" id="BLOGGER_PHOTO_ID_5191534435536038242" border="0" /></a><br /></div><string><string><string><string><string><string><string><br /><span style="font-weight: bold;">7. Crear el método main [psvm + tab]</span><br />/* Tipea [psvm + tab] Resultado ... */<br />public static void main(String[] args) {<br />}<br /><br /><span style="font-weight: bold;">8. Poner la palabra reservada public [pu + tab]</span><br />/* Tipea [pu + tab] Resultado ... */<br />public<br /><br /></string></string></string></string></string></string></string><span style="font-weight: bold;">9. Poner la palabra reservada private [pr + tab]</span><br />/* Tipea [pr + tab] Resultado ... */<br />private<br /><br /><string><string><string><string><string><string><string><span style="font-weight: bold;">10.Poner la palabra reservada String [St + tab]</span><br />/* Tipea [St + tab] Resultado ... */<br />String<br /><br />En este artículo traté el tema de code templates pero aquí no termina el aprendizaje de la programacion veloz en Netbeans 6.1, en próximos blogs mostraré cómo puedes crear tus propios code templates, utilizar macros, hints y shortcuts.<br /><br /></string></string></string></string></string></string></string><div style="text-align: center;"><string style="font-weight: bold;"><string><string><string><string><string><string>'Ahora me arrepiento por tanto tiempo perdido en la obscuridad de un eclipse'<br /><br /></string></string></string></string></string></string></string><string><string><string><string><string><string><string></string></string></string></string></string></string></string></div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.netbeans.org/images/banners/netbeans_336x280.gif"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://www.netbeans.org/images/banners/netbeans_336x280.gif" alt="" border="0" /></a>iberckhttp://www.blogger.com/profile/01789114762310833879noreply@blogger.com1