[{"data":1,"prerenderedAt":810},["ShallowReactive",2],{"navigation":3,"\u002Fblog\u002F2012-02-05-gxt-templates-for-netbeans":406,"\u002Fblog\u002F2012-02-05-gxt-templates-for-netbeans-surround":799},[4,8,39,52,264,310,319,380,397],{"title":5,"path":6,"stem":7},"Notes","\u002Fnotes","1.notes\u002Findex",{"title":9,"path":10,"stem":11,"children":12,"page":30},"Architecture","\u002Fnotes\u002Farchitecture","1.notes\u002Farchitecture",[13,17,31,35],{"title":14,"path":15,"stem":16},"API Management","\u002Fnotes\u002Farchitecture\u002Fapi-management","1.notes\u002Farchitecture\u002Fapi-management",{"title":18,"path":19,"stem":20,"children":21,"page":30},"Data","\u002Fnotes\u002Farchitecture\u002Fdata","1.notes\u002Farchitecture\u002Fdata",[22,26],{"title":23,"path":24,"stem":25},"ERD","\u002Fnotes\u002Farchitecture\u002Fdata\u002Ferd","1.notes\u002Farchitecture\u002Fdata\u002Ferd",{"title":27,"path":28,"stem":29},"SCWD","\u002Fnotes\u002Farchitecture\u002Fdata\u002Fscwd","1.notes\u002Farchitecture\u002Fdata\u002Fscwd",false,{"title":32,"path":33,"stem":34},"Microservices","\u002Fnotes\u002Farchitecture\u002Fmicroservices","1.notes\u002Farchitecture\u002Fmicroservices",{"title":36,"path":37,"stem":38},"OAuth","\u002Fnotes\u002Farchitecture\u002Foauth","1.notes\u002Farchitecture\u002Foauth",{"title":40,"path":41,"stem":42,"children":43,"page":30},"Archive","\u002Fnotes\u002Farchive","1.notes\u002Farchive",[44,48],{"title":45,"path":46,"stem":47},"Google Web Toolkit","\u002Fnotes\u002Farchive\u002Fgwt","1.notes\u002Farchive\u002Fgwt",{"title":49,"path":50,"stem":51},"Jekyll","\u002Fnotes\u002Farchive\u002Fjekyll","1.notes\u002Farchive\u002Fjekyll",{"title":53,"path":54,"stem":55,"children":56,"page":30},"Development","\u002Fnotes\u002Fdevelopment","1.notes\u002Fdevelopment",[57,74,112,149,226,239,260],{"title":58,"icon":30,"path":59,"stem":60,"children":61,"page":30},"IDE","\u002Fnotes\u002Fdevelopment\u002Fide","1.notes\u002Fdevelopment\u002FIDE",[62,66,70],{"title":63,"path":64,"stem":65},"Jetbrains IDE","\u002Fnotes\u002Fdevelopment\u002Fide\u002Fjetbrains","1.notes\u002Fdevelopment\u002FIDE\u002Fjetbrains",{"title":67,"path":68,"stem":69},"NVIM","\u002Fnotes\u002Fdevelopment\u002Fide\u002Fnvim","1.notes\u002Fdevelopment\u002FIDE\u002Fnvim",{"title":71,"path":72,"stem":73},"tmux","\u002Fnotes\u002Fdevelopment\u002Fide\u002Ftmux","1.notes\u002Fdevelopment\u002FIDE\u002Ftmux",{"title":75,"path":76,"stem":77,"children":78,"page":30},"Algo","\u002Fnotes\u002Fdevelopment\u002Falgo","1.notes\u002Fdevelopment\u002Falgo",[79,83,87,91,95],{"title":80,"path":81,"stem":82},"Algorithms","\u002Fnotes\u002Fdevelopment\u002Falgo\u002Falgorithms","1.notes\u002Fdevelopment\u002Falgo\u002Falgorithms",{"title":84,"path":85,"stem":86},"Data Structures","\u002Fnotes\u002Fdevelopment\u002Falgo\u002Fdata_structures","1.notes\u002Fdevelopment\u002Falgo\u002Fdata_structures",{"title":88,"path":89,"stem":90},"Kata","\u002Fnotes\u002Fdevelopment\u002Falgo\u002Fkata","1.notes\u002Fdevelopment\u002Falgo\u002Fkata",{"title":92,"path":93,"stem":94},"O-notation","\u002Fnotes\u002Fdevelopment\u002Falgo\u002Fo-notation","1.notes\u002Fdevelopment\u002Falgo\u002Fo-notation",{"title":96,"path":97,"stem":98,"children":99,"page":30},"Sorting","\u002Fnotes\u002Fdevelopment\u002Falgo\u002Fsorting","1.notes\u002Fdevelopment\u002Falgo\u002Fsorting",[100,104,108],{"title":101,"path":102,"stem":103},"Buble Sort","\u002Fnotes\u002Fdevelopment\u002Falgo\u002Fsorting\u002Fbublesort","1.notes\u002Fdevelopment\u002Falgo\u002Fsorting\u002Fbublesort",{"title":105,"path":106,"stem":107},"Merge Sort","\u002Fnotes\u002Fdevelopment\u002Falgo\u002Fsorting\u002Fmergesort","1.notes\u002Fdevelopment\u002Falgo\u002Fsorting\u002Fmergesort",{"title":109,"path":110,"stem":111},"Quicksort","\u002Fnotes\u002Fdevelopment\u002Falgo\u002Fsorting\u002Fquicksort","1.notes\u002Fdevelopment\u002Falgo\u002Fsorting\u002Fquicksort",{"title":113,"path":114,"stem":115,"children":116,"page":30},"DataStructures","\u002Fnotes\u002Fdevelopment\u002Fdata_structures","1.notes\u002Fdevelopment\u002Fdata_structures",[117,121,125,129,133,137,141,145],{"title":118,"path":119,"stem":120},"ArrayList","\u002Fnotes\u002Fdevelopment\u002Fdata_structures\u002Farray_list","1.notes\u002Fdevelopment\u002Fdata_structures\u002Farray_list",{"title":122,"path":123,"stem":124},"Arrays","\u002Fnotes\u002Fdevelopment\u002Fdata_structures\u002Farrays","1.notes\u002Fdevelopment\u002Fdata_structures\u002Farrays",{"title":126,"path":127,"stem":128},"HashSet","\u002Fnotes\u002Fdevelopment\u002Fdata_structures\u002Fhash_set","1.notes\u002Fdevelopment\u002Fdata_structures\u002Fhash_set",{"title":130,"path":131,"stem":132},"LinkedList","\u002Fnotes\u002Fdevelopment\u002Fdata_structures\u002Flinked_list","1.notes\u002Fdevelopment\u002Fdata_structures\u002Flinked_list",{"title":134,"path":135,"stem":136},"PriorityQueue","\u002Fnotes\u002Fdevelopment\u002Fdata_structures\u002Fpriority_queue","1.notes\u002Fdevelopment\u002Fdata_structures\u002Fpriority_queue",{"title":138,"path":139,"stem":140},"Stack","\u002Fnotes\u002Fdevelopment\u002Fdata_structures\u002Fstack","1.notes\u002Fdevelopment\u002Fdata_structures\u002Fstack",{"title":142,"path":143,"stem":144},"TreeSet","\u002Fnotes\u002Fdevelopment\u002Fdata_structures\u002Ftree_set","1.notes\u002Fdevelopment\u002Fdata_structures\u002Ftree_set",{"title":146,"path":147,"stem":148},"Vector","\u002Fnotes\u002Fdevelopment\u002Fdata_structures\u002Fvector","1.notes\u002Fdevelopment\u002Fdata_structures\u002Fvector",{"title":150,"path":151,"stem":152,"children":153,"page":30},"Java","\u002Fnotes\u002Fdevelopment\u002Fjava","1.notes\u002Fdevelopment\u002Fjava",[154,158,162,166,170,174,178,182,186,190,194,198,202,206,210,214,218,222],{"title":155,"path":156,"stem":157},"Bit Operations","\u002Fnotes\u002Fdevelopment\u002Fjava\u002Fbit-operations","1.notes\u002Fdevelopment\u002Fjava\u002Fbit-operations",{"title":159,"path":160,"stem":161},"Cheatsheet","\u002Fnotes\u002Fdevelopment\u002Fjava\u002Fcheatsheet","1.notes\u002Fdevelopment\u002Fjava\u002Fcheatsheet",{"title":163,"path":164,"stem":165},"Clean Code","\u002Fnotes\u002Fdevelopment\u002Fjava\u002Fclean-code-presentation","1.notes\u002Fdevelopment\u002Fjava\u002Fclean-code-presentation",{"title":167,"path":168,"stem":169},"Java Datasource","\u002Fnotes\u002Fdevelopment\u002Fjava\u002Fdata-sources","1.notes\u002Fdevelopment\u002Fjava\u002Fdata-sources",{"title":171,"path":172,"stem":173},"Dependency Injection","\u002Fnotes\u002Fdevelopment\u002Fjava\u002Fdependency-injection-presentation","1.notes\u002Fdevelopment\u002Fjava\u002Fdependency-injection-presentation",{"title":175,"path":176,"stem":177},"Java SE","\u002Fnotes\u002Fdevelopment\u002Fjava\u002Fjava-standard-edition","1.notes\u002Fdevelopment\u002Fjava\u002Fjava-standard-edition",{"title":179,"path":180,"stem":181},"Java Memory Model","\u002Fnotes\u002Fdevelopment\u002Fjava\u002Fjmm","1.notes\u002Fdevelopment\u002Fjava\u002Fjmm",{"title":183,"path":184,"stem":185},"JPA","\u002Fnotes\u002Fdevelopment\u002Fjava\u002Fjpa","1.notes\u002Fdevelopment\u002Fjava\u002Fjpa",{"title":187,"path":188,"stem":189},"Keywords","\u002Fnotes\u002Fdevelopment\u002Fjava\u002Fkeywords","1.notes\u002Fdevelopment\u002Fjava\u002Fkeywords",{"title":191,"path":192,"stem":193},"Maven","\u002Fnotes\u002Fdevelopment\u002Fjava\u002Fmaven","1.notes\u002Fdevelopment\u002Fjava\u002Fmaven",{"title":195,"path":196,"stem":197},"Spring AOP","\u002Fnotes\u002Fdevelopment\u002Fjava\u002Fspring-aop-presentation","1.notes\u002Fdevelopment\u002Fjava\u002Fspring-aop-presentation",{"title":199,"path":200,"stem":201},"Spring Boot","\u002Fnotes\u002Fdevelopment\u002Fjava\u002Fspring-boot","1.notes\u002Fdevelopment\u002Fjava\u002Fspring-boot",{"title":203,"path":204,"stem":205},"Spring Core","\u002Fnotes\u002Fdevelopment\u002Fjava\u002Fspring-core-presentation","1.notes\u002Fdevelopment\u002Fjava\u002Fspring-core-presentation",{"title":207,"path":208,"stem":209},"Spring Data","\u002Fnotes\u002Fdevelopment\u002Fjava\u002Fspring-data","1.notes\u002Fdevelopment\u002Fjava\u002Fspring-data",{"title":211,"path":212,"stem":213},"Spring JDBC","\u002Fnotes\u002Fdevelopment\u002Fjava\u002Fspring-jdbc","1.notes\u002Fdevelopment\u002Fjava\u002Fspring-jdbc",{"title":215,"path":216,"stem":217},"Spring MVC","\u002Fnotes\u002Fdevelopment\u002Fjava\u002Fspring-mvc-presentation","1.notes\u002Fdevelopment\u002Fjava\u002Fspring-mvc-presentation",{"title":219,"path":220,"stem":221},"Spring Security","\u002Fnotes\u002Fdevelopment\u002Fjava\u002Fspring-security","1.notes\u002Fdevelopment\u002Fjava\u002Fspring-security",{"title":223,"path":224,"stem":225},"Testing","\u002Fnotes\u002Fdevelopment\u002Fjava\u002Ftesting","1.notes\u002Fdevelopment\u002Fjava\u002Ftesting",{"title":227,"path":228,"stem":229,"children":230,"page":30},"Js","\u002Fnotes\u002Fdevelopment\u002Fjs","1.notes\u002Fdevelopment\u002Fjs",[231,235],{"title":232,"path":233,"stem":234},"JavaScript","\u002Fnotes\u002Fdevelopment\u002Fjs\u002Fjava-script","1.notes\u002Fdevelopment\u002Fjs\u002Fjava-script",{"title":236,"path":237,"stem":238},"NodeJS","\u002Fnotes\u002Fdevelopment\u002Fjs\u002Fnode-js","1.notes\u002Fdevelopment\u002Fjs\u002Fnode-js",{"title":240,"path":241,"stem":242,"children":243,"page":30},"PowerPlatform","\u002Fnotes\u002Fdevelopment\u002Fpower_platform","1.notes\u002Fdevelopment\u002Fpower_platform",[244,248,252,256],{"title":245,"path":246,"stem":247},"Power Apps","\u002Fnotes\u002Fdevelopment\u002Fpower_platform\u002Fpower-apps","1.notes\u002Fdevelopment\u002Fpower_platform\u002Fpower-apps",{"title":249,"path":250,"stem":251},"Power Automate","\u002Fnotes\u002Fdevelopment\u002Fpower_platform\u002Fpower-automate","1.notes\u002Fdevelopment\u002Fpower_platform\u002Fpower-automate",{"title":253,"path":254,"stem":255},"Power BI","\u002Fnotes\u002Fdevelopment\u002Fpower_platform\u002Fpower-bi","1.notes\u002Fdevelopment\u002Fpower_platform\u002Fpower-bi",{"title":257,"path":258,"stem":259},"Sharepoint","\u002Fnotes\u002Fdevelopment\u002Fpower_platform\u002Fsharepoint","1.notes\u002Fdevelopment\u002Fpower_platform\u002Fsharepoint",{"title":261,"path":262,"stem":263},"Python","\u002Fnotes\u002Fdevelopment\u002Fpython","1.notes\u002Fdevelopment\u002Fpython",{"title":265,"path":266,"stem":267,"children":268,"page":30},"Devops","\u002Fnotes\u002Fdevops","1.notes\u002Fdevops",[269,273,277,281,285,289,293,297,306],{"title":270,"path":271,"stem":272},"Containers","\u002Fnotes\u002Fdevops\u002Fcontainers","1.notes\u002Fdevops\u002Fcontainers",{"title":274,"path":275,"stem":276},"Curl","\u002Fnotes\u002Fdevops\u002Fcurl","1.notes\u002Fdevops\u002Fcurl",{"title":278,"path":279,"stem":280},"GCP","\u002Fnotes\u002Fdevops\u002Fgcp","1.notes\u002Fdevops\u002Fgcp",{"title":282,"path":283,"stem":284},"GIT","\u002Fnotes\u002Fdevops\u002Fgit","1.notes\u002Fdevops\u002Fgit",{"title":286,"path":287,"stem":288},"Jenkins","\u002Fnotes\u002Fdevops\u002Fjenkins","1.notes\u002Fdevops\u002Fjenkins",{"title":290,"path":291,"stem":292},"Kubernetes","\u002Fnotes\u002Fdevops\u002Fkubernetes","1.notes\u002Fdevops\u002Fkubernetes",{"title":294,"path":295,"stem":296},"Linux","\u002Fnotes\u002Fdevops\u002Flinux","1.notes\u002Fdevops\u002Flinux",{"title":298,"path":299,"stem":300,"children":301,"page":30},"Os","\u002Fnotes\u002Fdevops\u002Fos","1.notes\u002Fdevops\u002Fos",[302],{"title":303,"path":304,"stem":305},"MAC OS","\u002Fnotes\u002Fdevops\u002Fos\u002Fmacos","1.notes\u002Fdevops\u002Fos\u002Fmacos",{"title":307,"path":308,"stem":309},"WSL","\u002Fnotes\u002Fdevops\u002Fwsl","1.notes\u002Fdevops\u002Fwsl",{"title":311,"path":312,"stem":313,"children":314,"page":30},"Hardware","\u002Fnotes\u002Fhardware","1.notes\u002Fhardware",[315],{"title":316,"path":317,"stem":318},"Keyboard","\u002Fnotes\u002Fhardware\u002Fkeyboard","1.notes\u002Fhardware\u002Fkeyboard",{"title":320,"path":321,"stem":322,"children":323,"page":30},"Homelab","\u002Fnotes\u002Fhomelab","1.notes\u002Fhomelab",[324,328,337,350],{"title":325,"path":326,"stem":327},"Proxmox","\u002Fnotes\u002Fhomelab\u002F_-proxmox-1","1.notes\u002Fhomelab\u002F_ proxmox 1",{"title":329,"path":330,"stem":331,"children":332,"page":30},"Cloudflare","\u002Fnotes\u002Fhomelab\u002Fcloudflare","1.notes\u002Fhomelab\u002Fcloudflare",[333],{"title":334,"path":335,"stem":336},"Cloudflare Workers","\u002Fnotes\u002Fhomelab\u002Fcloudflare\u002Fworkers","1.notes\u002Fhomelab\u002Fcloudflare\u002Fworkers",{"title":338,"path":339,"stem":340,"children":341,"page":30},"HomeAssistant","\u002Fnotes\u002Fhomelab\u002Fhome_assistant","1.notes\u002Fhomelab\u002Fhome_assistant",[342,346],{"title":343,"path":344,"stem":345},"EspHome debugger","\u002Fnotes\u002Fhomelab\u002Fhome_assistant\u002Fesphome-debugger","1.notes\u002Fhomelab\u002Fhome_assistant\u002Fesphome-debugger",{"title":347,"path":348,"stem":349},"GIT integration","\u002Fnotes\u002Fhomelab\u002Fhome_assistant\u002Fgit-integration","1.notes\u002Fhomelab\u002Fhome_assistant\u002Fgit-integration",{"title":325,"path":351,"stem":352,"children":353},"\u002Fnotes\u002Fhomelab\u002Fproxmox","1.notes\u002Fhomelab\u002Fproxmox",[354,358,362,365,369,373,377],{"title":355,"path":356,"stem":357},"Issue: TASK ERROR: Device \u002Fdev\u002Fdri\u002Fcard1 does not exist","\u002Fnotes\u002Fhomelab\u002Fproxmox\u002Fissue_task_error_device_dev_dri_card1_does-not-exist","1.notes\u002Fhomelab\u002Fproxmox\u002FIssue_TASK_ERROR_device_dev_dri_card1_does not exist",{"title":359,"path":360,"stem":361},"Mount USB Drive To LXC Container","\u002Fnotes\u002Fhomelab\u002Fproxmox\u002Fmount-usb-drive-to-lxc-container","1.notes\u002Fhomelab\u002Fproxmox\u002FMount USB drive to LXC container",{"title":325,"path":363,"stem":364},"\u002Fnotes\u002Fhomelab\u002Fproxmox\u002F_-proxmox","1.notes\u002Fhomelab\u002Fproxmox\u002F_ proxmox",{"title":366,"path":367,"stem":368},"ARR","\u002Fnotes\u002Fhomelab\u002Fproxmox\u002Farr","1.notes\u002Fhomelab\u002Fproxmox\u002Farr",{"title":370,"path":371,"stem":372},"Auto login via SSH from Proxmox UI","\u002Fnotes\u002Fhomelab\u002Fproxmox\u002Fauto_login_via_ssh_from_proxmox_ui","1.notes\u002Fhomelab\u002Fproxmox\u002Fauto_login_via_ssh_from_proxmox_ui",{"title":374,"path":375,"stem":376},"Installation","\u002Fnotes\u002Fhomelab\u002Fproxmox\u002Fdokploy","1.notes\u002Fhomelab\u002Fproxmox\u002Fdokploy",{"title":290,"path":378,"stem":379},"\u002Fnotes\u002Fhomelab\u002Fproxmox\u002Fkubernetes","1.notes\u002Fhomelab\u002Fproxmox\u002Fkubernetes",{"title":381,"path":382,"stem":383,"children":384,"page":30},"Leadership","\u002Fnotes\u002Fleadership","1.notes\u002Fleadership",[385,389,393],{"title":386,"path":387,"stem":388},"Leader Toolbox","\u002Fnotes\u002Fleadership\u002Fleader-toolbox","1.notes\u002Fleadership\u002Fleader-toolbox",{"title":390,"path":391,"stem":392},"Enterprise Project Structure","\u002Fnotes\u002Fleadership\u002Fproject-doc-structure","1.notes\u002Fleadership\u002Fproject-doc-structure",{"title":394,"path":395,"stem":396},"Scrum template","\u002Fnotes\u002Fleadership\u002Fscrum-template","1.notes\u002Fleadership\u002Fscrum-template",{"title":398,"path":399,"stem":400,"children":401,"page":30},"Products","\u002Fnotes\u002Fproducts","1.notes\u002Fproducts",[402],{"title":403,"path":404,"stem":405},"BigQuery","\u002Fnotes\u002Fproducts\u002Fgcp-big-query","1.notes\u002Fproducts\u002Fgcp-big-query",{"id":407,"title":408,"authors":409,"badge":409,"body":410,"date":790,"description":791,"extension":792,"image":409,"meta":793,"navigation":440,"path":795,"seo":796,"stem":797,"__hash__":798},"posts\u002F2.blog\u002F2012-02-05-gxt-templates-for-netbeans.md","Szablony w Netbeans",null,{"type":411,"value":412,"toc":788},"minimark",[413,417,627,638,684,687,721,724,770,773,784],[414,415,416],"p",{},"Podczas pracy z różnymi bibliotekami bywa, że pewne czynności są powtarzane nader często. Popularne biblioteki posiadają rozszerzenia, bądź natywne wsparcie ze strony IDE jak np. kreatory.\nNiestety nie wszystkie biblioteki posiadają tak ogromne wsparcie jak choćby Spring czy Hibernate, co nie oznacza że są gorsze.\nProgramista jako użytkownik danej biblioteki pomimo braku wsparcia może jednak sam opracować pewne wzorce, które powtarzają się w trakcie pracy i je zautomatyzować poprzez makra czy też szablony. W dzisiejszym wpisie poświęcimy trochę czasu aby zautomatyzować tworzenie getterów i setterów dla modelu wykorzystywanego przez GXT.\nStruktura modelu GXT wygląda nieco inaczej niż zwykłe POJO:",[418,419,424],"pre",{"className":420,"code":421,"language":422,"meta":423,"style":423},"language-java shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","package pl.bnsit.rssreader.shared;\n\nimport com.extjs.gxt.ui.client.data.BeanModel;\n\npublic class ExampleModelModel extends BeanModel{\n    \n    public static final String _NAME = \"name\";\n    public static final String _URL = \"url\";\n    public static final String _PROMOTED = \"promoted\";\n    \n    public String getName() {\n        return get(_NAME);\n    }\n\n    public void setName(String name) {\n        set(_NAME, name);\n    }\n\n    public String getUrl() {\n        return get(_URL);\n    }\n\n    public void setUrl(String url) {\n        set(_URL, url);\n    }\n\n    public Boolean getPromoted() {\n        return get(_PROMOTED);\n    }\n\n    public void setPromoted(Boolean promoted) {\n        set(_PROMOTED, promoted);\n    }\n    \n}\n","java","",[425,426,427,435,442,448,453,459,465,471,477,483,488,494,500,506,511,517,523,528,533,539,545,550,555,561,567,572,577,583,589,594,599,605,611,616,621],"code",{"__ignoreMap":423},[428,429,432],"span",{"class":430,"line":431},"line",1,[428,433,434],{},"package pl.bnsit.rssreader.shared;\n",[428,436,438],{"class":430,"line":437},2,[428,439,441],{"emptyLinePlaceholder":440},true,"\n",[428,443,445],{"class":430,"line":444},3,[428,446,447],{},"import com.extjs.gxt.ui.client.data.BeanModel;\n",[428,449,451],{"class":430,"line":450},4,[428,452,441],{"emptyLinePlaceholder":440},[428,454,456],{"class":430,"line":455},5,[428,457,458],{},"public class ExampleModelModel extends BeanModel{\n",[428,460,462],{"class":430,"line":461},6,[428,463,464],{},"    \n",[428,466,468],{"class":430,"line":467},7,[428,469,470],{},"    public static final String _NAME = \"name\";\n",[428,472,474],{"class":430,"line":473},8,[428,475,476],{},"    public static final String _URL = \"url\";\n",[428,478,480],{"class":430,"line":479},9,[428,481,482],{},"    public static final String _PROMOTED = \"promoted\";\n",[428,484,486],{"class":430,"line":485},10,[428,487,464],{},[428,489,491],{"class":430,"line":490},11,[428,492,493],{},"    public String getName() {\n",[428,495,497],{"class":430,"line":496},12,[428,498,499],{},"        return get(_NAME);\n",[428,501,503],{"class":430,"line":502},13,[428,504,505],{},"    }\n",[428,507,509],{"class":430,"line":508},14,[428,510,441],{"emptyLinePlaceholder":440},[428,512,514],{"class":430,"line":513},15,[428,515,516],{},"    public void setName(String name) {\n",[428,518,520],{"class":430,"line":519},16,[428,521,522],{},"        set(_NAME, name);\n",[428,524,526],{"class":430,"line":525},17,[428,527,505],{},[428,529,531],{"class":430,"line":530},18,[428,532,441],{"emptyLinePlaceholder":440},[428,534,536],{"class":430,"line":535},19,[428,537,538],{},"    public String getUrl() {\n",[428,540,542],{"class":430,"line":541},20,[428,543,544],{},"        return get(_URL);\n",[428,546,548],{"class":430,"line":547},21,[428,549,505],{},[428,551,553],{"class":430,"line":552},22,[428,554,441],{"emptyLinePlaceholder":440},[428,556,558],{"class":430,"line":557},23,[428,559,560],{},"    public void setUrl(String url) {\n",[428,562,564],{"class":430,"line":563},24,[428,565,566],{},"        set(_URL, url);\n",[428,568,570],{"class":430,"line":569},25,[428,571,505],{},[428,573,575],{"class":430,"line":574},26,[428,576,441],{"emptyLinePlaceholder":440},[428,578,580],{"class":430,"line":579},27,[428,581,582],{},"    public Boolean getPromoted() {\n",[428,584,586],{"class":430,"line":585},28,[428,587,588],{},"        return get(_PROMOTED);\n",[428,590,592],{"class":430,"line":591},29,[428,593,505],{},[428,595,597],{"class":430,"line":596},30,[428,598,441],{"emptyLinePlaceholder":440},[428,600,602],{"class":430,"line":601},31,[428,603,604],{},"    public void setPromoted(Boolean promoted) {\n",[428,606,608],{"class":430,"line":607},32,[428,609,610],{},"        set(_PROMOTED, promoted);\n",[428,612,614],{"class":430,"line":613},33,[428,615,505],{},[428,617,619],{"class":430,"line":618},34,[428,620,464],{},[428,622,624],{"class":430,"line":623},35,[428,625,626],{},"}\n",[414,628,629,630,633,634,637],{},"Jak widać model ten posiada gettery i settery, ale różniące się sposobem przetrzymywania zmiennych. aby stworzyć powyższy plik ręcznie zajęłoby to programiście sporo czasu a przecież o to w pracy nie chodzi.\nZ pomocą przychodzą nam szablony, dzięki którym za pomocą pewnej sekwencji znaków można wygenerować szablon, w którym należy uzupełnić elementy, które wyróżniają dany blok kodu.\nSzablon stworzymy dla popularnego IDE – Netbeans, który posiada edytor szablonów w ",[425,631,632],{},"Tools->Options->Editor->Code Templates",".\nUtwórzmy nowy szablon, który wywołamy za pomocą sekwencji ",[425,635,636],{},"gs"," i następującej treści:",[418,639,641],{"className":420,"code":640,"language":422,"meta":423,"style":423},"    public static final String _Property = \"property_id\";\n    \n    public String getProperty() {\n        return get(_Property);\n    }\n\n    public void setProperty(String property_id) {\n        set(_Property, property_id);\n    }\n",[425,642,643,648,652,657,662,666,670,675,680],{"__ignoreMap":423},[428,644,645],{"class":430,"line":431},[428,646,647],{},"    public static final String _Property = \"property_id\";\n",[428,649,650],{"class":430,"line":437},[428,651,464],{},[428,653,654],{"class":430,"line":444},[428,655,656],{},"    public String getProperty() {\n",[428,658,659],{"class":430,"line":450},[428,660,661],{},"        return get(_Property);\n",[428,663,664],{"class":430,"line":455},[428,665,505],{},[428,667,668],{"class":430,"line":461},[428,669,441],{"emptyLinePlaceholder":440},[428,671,672],{"class":430,"line":467},[428,673,674],{},"    public void setProperty(String property_id) {\n",[428,676,677],{"class":430,"line":473},[428,678,679],{},"        set(_Property, property_id);\n",[428,681,682],{"class":430,"line":479},[428,683,505],{},[414,685,686],{},"Po zapisaniu można przetestować działanie wpisując w edytorze klasy gs a następnie wcisnąć klawisz TAB – tekst zapisany automatycznie się generuje. Nie jest to jednak zadowalający nas rezultat ponieważ pomimo wygenerowanego tekstu nazwy oraz typy należy poprawić. Aby mieć wpływ na elementy szablonu należy przedstawić elementy rozszerzające szablony:",[688,689,690,697,703,709,715],"ul",{},[691,692,693,696],"li",{},[425,694,695],{},"${cursor}"," – definiuje pozycję karetki kursora po wygenerowaniu kodu,",[691,698,699,702],{},[425,700,701],{},"${selection}"," – definuje pozycję wklejenia tekstu, który został zaznaczony; użycie tego znacznika spowoduje pojawianie się tego szablonu jedynie po zaznaczeniu pewnego fragmentu tekstu,",[691,704,705,708],{},[425,706,707],{},"${ELEM newVarName default=”Property”}"," – definiuje nową zmienną ELEM o domyślnej wartości Property",[691,710,711,714],{},[425,712,713],{},"${DEFTYPE leftSideType default=”Object”}"," – definiuje nowy zwracany typ danych w zmiennej DEFTYPE o domyślnej klasie Object",[691,716,717,720],{},[425,718,719],{},"${INITTYPE rightSideType default=”Object”}"," – definiuje nowy inicjalizowany typ danych w zmiennej INITTYPE o domyślnej klasie Object\nPowyższe zmienne to tylko dobry początek do tego aby zapoznać się z szerszą gamą typów, które można wykorzystywać w szablonach a w przypadku Netbeans-a jest to wspaniała kolekcja, która pozwala na tworzenie genialnych szablonów.",[414,722,723],{},"Ostatecznie dynamiczny szablon ma postać:",[418,725,727],{"className":420,"code":726,"language":422,"meta":423,"style":423},"    public static final String _${ELEM newVarName default=\"Property\"} = \"${ID newVarName default=\"id\"}\";\n    \n    public ${TYPE lefttSideType default=\"Object\"} get${ELEM}() {\n        return get(_${ELEM});\n    }\n\n    public void set${ELEM}(${TYPE} _input) {\n        set(_${ELEM}, _input);\n    }\n",[425,728,729,734,738,743,748,752,756,761,766],{"__ignoreMap":423},[428,730,731],{"class":430,"line":431},[428,732,733],{},"    public static final String _${ELEM newVarName default=\"Property\"} = \"${ID newVarName default=\"id\"}\";\n",[428,735,736],{"class":430,"line":437},[428,737,464],{},[428,739,740],{"class":430,"line":444},[428,741,742],{},"    public ${TYPE lefttSideType default=\"Object\"} get${ELEM}() {\n",[428,744,745],{"class":430,"line":450},[428,746,747],{},"        return get(_${ELEM});\n",[428,749,750],{"class":430,"line":455},[428,751,505],{},[428,753,754],{"class":430,"line":461},[428,755,441],{"emptyLinePlaceholder":440},[428,757,758],{"class":430,"line":467},[428,759,760],{},"    public void set${ELEM}(${TYPE} _input) {\n",[428,762,763],{"class":430,"line":473},[428,764,765],{},"        set(_${ELEM}, _input);\n",[428,767,768],{"class":430,"line":479},[428,769,505],{},[414,771,772],{},"Szablon wymaga do uzupełnienia:",[688,774,775,778,781],{},[691,776,777],{},"nazwy pseudo pola,",[691,779,780],{},"identyfiakatora pola,",[691,782,783],{},"typu pola, po których można się przełączać za pomocą klawisza TAB.",[785,786,787],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":423,"searchDepth":437,"depth":437,"links":789},[],"2012-02-05","Prezentacja możliwości szablonów w Netbeans na przykładzie tworzenia modyfikatorów dla GXT","md",{"layout":794},"post","\u002Fblog\u002F2012-02-05-gxt-templates-for-netbeans",{"title":408,"description":791},"2.blog\u002F2012-02-05-gxt-templates-for-netbeans","gjjR-fubKvigKYkd4ne-rM_hCeG6i8wThLJM86yd30g",[800,805],{"title":801,"path":802,"stem":803,"description":804,"children":-1},"Aktualizacja web.xml dla Netbeans","\u002Fblog\u002F2012-02-04-update-web-xml-for-netbeans-workflow","2.blog\u002F2012-02-04-update-web-xml-for-netbeans-workflow","Wprowadzenie zmian w deskrypotrze wdrożenia w celu wyeliminowania błędów w Netbeans",{"title":806,"path":807,"stem":808,"description":809,"children":-1},"Instalacja artefaktu w zdalnym repozytorium Mavena","\u002Fblog\u002F2012-02-07-deploy-artifacts-to-the-repository","2.blog\u002F2012-02-07-deploy-artifacts-to-the-repository","Prezentacja sposobu instalacji artefaktu w zdalnym repozytorium z użyciem pluginu wagon",1788257054597]