Griffon: O Grails para Aplicacoes Swing/JavaFx

A pouco tempo decidir aprender mais sobre desenvolvimento ágil e comecei meus estudos a linguagem da moda mais falada atualmente, a Ruby on Rails.

Fiquei bastante impressionado com a facilidade e a agilidade no desenvolvimento de aplicações utilizado esta linguagem. No entanto, achei bastante diferente do que estou habituado como programador Java. Muita coisa nova para aprender.

Foi aí que em minhas pesquisas para o aprendizado do Ruby on Rails que cheguei ao Grails. Achei bastante parecido com o Ruby on Rails e muito mais próximo do Java – que é a minha praia. Então pensei, um Java com a agilidade do Ruby on Rails, fechou!

Deste momento em diante foquei minhas pesquisas para o grails e até evolui bem, entendi o funcionamento, instalei plugins, criei exemplos e estava cada vez mais apaixonado por ele. Em paralelo descobri o Griffon, um Grails para aplicações Swing e como estava começando a desenvolver uma nova aplicação para um cliente da minha empresa (softag) em Swing, pensei logo em desenvolver essa aplicação usando o Griffon. Estava eu mudando o rumo de meus estudos novamente, agora para oGriffon.

 

A Grails-like Rich Internet Framework

 

Como falei anteriormente, o Griffon é um framework parecido com o Grails para desenvolvimento de aplicações Desktop em Groovy. (Groovy é uma linguagem de script interpretada pela JVM).  Ou  seja, aplicações Swing/JavaFX.

 

Como o Grails, o Griffon segue o mesmo conceito de MVC (model-view-controller) e tudo é bem organizado e separado nas seguintes pastas:

griffon-app (pasta rais aplicação Griffon)
- controllers  (pasta dos controladores)
- i18n  (pastas dos arquivos de internacionalização)
- lifecycle (pasta onde fica os arquivos de configuração do ciclo de vida da aplicação)
- models (pasta dos modelos)
- resources (pasta para outros arquivos como imagens)
- views (pasta dos arquivos de visão)

 

Apesar de ele ser um projeto novo esta e suas primeiras versões (0.1.1), já dá para ver o seu potencial e o que ele é capaz de fazer de forma bem ágil. Já conta com alguns plugins que permite que você adicione funcionalidade como Tray Icon, Splash Screen, CSS, Wizards ou incluir componentes Jide, SwingX, Flamingo, usar formulários do tipo AbeilleForm e até mesmo colocar suporte a linguagens como Scala e criar um instalador multiplataforma para sua aplicação de maneira bem simples e rápida.

 

Para ilustrar o funcionamento, vou mostrar como instalar o Griffon e criar uma pequena aplicação não muito funcional.

 

Instalando o Griffon

Veja o passo a passo de como instalar o Griffon aqui. Mas segue um resumo com os principais passos:

  • Faca o download do Griffon aqui
  • Extraia o arquivo para C:\Griffon, ~\Griffon ou outra pasta e o defina como GRIFFON_HOME
  • Defina o JAVA_HOME caso não esteja definido
  • Adicione o GRIFFON_HOME\bin ao PATH

 

Criando uma aplicação Griffon

 

Após instalado, para criar uma aplicação Griffon e toda a sua estrutura basta digitar em um console o seguinte comando:

griffon create-app AplicacaoExemplo

O comando acima cria também um MVC padrão com o nome da aplicação. Que em nosso exemplo serão criados os aquivos  AplicacaoExemploModel, AplicacaoExemploView e AplicacaoExemploController em suas devidas pastas.

Essa aplicação consiste em apenas um formulário com um label escrito “Content Goes Here” e pode ser vista executando o seguinte comando:

griffon run-app

Agora vamos modificar o view criando um formulário sem ação alguma apenas para demostração.

  • Abra o arquivo AplicacaoExemplo\griffon-app\view\AplicacaoExemploView.groovy e substitua o seu código por:
  1. application(title:’AplicacaoExemplo’,
  2. preferredSize: [400,400],
  3. pack:true,
  4. locationByPlatform:true,
  5. iconImage: imageIcon(‘/griffon-icon-48×48.png’).image,
  6. iconImages: [imageIcon('/griffon-icon-48x48.png').image,
  7. imageIcon('/griffon-icon-32x32.png').image,
  8. imageIcon('/griffon-icon-16x16.png').image]
  9. ) {
  10. panel(id: ‘enderecoDetailPanel’, border: emptyBorder(3), opaque: false) {
  11. gridBagLayout()
  12. label(‘Bairro:’, insets: [3, 3, 3, 3], anchor: WEST)
  13. textField(
  14. gridwidth: REMAINDER, insets: [3, 3, 3, 3], fill: HORIZONTAL, weightx: 1.0
  15. )
  16. label(‘Cidade:’, insets: [3, 3, 3, 3], anchor: WEST)
  17. textField(
  18. gridwidth: REMAINDER, insets: [3, 3, 3, 3], fill: HORIZONTAL, weightx: 1.0
  19. )
  20. label(‘Logradouro:’, insets: [3, 3, 3, 3], anchor: WEST)
  21. textField(
  22. gridwidth: REMAINDER, insets: [3, 3, 3, 3], fill: HORIZONTAL, weightx: 1.0
  23. )
  24. label(‘Estado:’, insets: [3, 3, 3, 3], anchor: WEST)
  25. comboBox(
  26. gridwidth: REMAINDER, insets: [3, 3, 3, 3], fill: HORIZONTAL, weightx: 1.0
  27. )
  28. label(‘Complemento:’, insets: [3, 3, 3, 3], anchor: WEST)
  29. textField(
  30. gridwidth: REMAINDER, insets: [3, 3, 3, 3], fill: HORIZONTAL, weightx: 1.0
  31. )
  32. label(‘Numero:’, insets: [3, 3, 3, 3], anchor: WEST)
  33. textField(
  34. insets: [3, 3, 3, 3], fill: HORIZONTAL, weightx: 1.0
  35. )
  36. label(‘Cep:’, insets: [3, 3, 3, 3], anchor: WEST)
  37. textField(
  38. gridwidth: REMAINDER, insets: [3, 3, 3, 3], fill: HORIZONTAL, weightx: 1.0
  39. )
  40. panel(opaque: false, gridwidth: REMAINDER) {
  41. button(‘Gravar’)
  42. button(‘Excluir’)
  43. }
  44. }
  45. }

 

Apos isso execute a aplicação novamente.

griffon run-app

 

Você verá a seguinte tela:

 

Para criar um novo MVC digite o seguinte código:

griffon create-mvc br.com.softag.adourado.griffon.Exemplo

 

Um outro exemplo pode ser visto no Quick Start na página do projeto.

 

Bem, este e apena um primeiro post sobre o Griffon de vários que já estão em desenvolvimento irei publicar-los em breve. Onde registrarei todas as minhas experiencias com o Griffon, desde a criação da primeira aplicação até a criação de um plugin para o Griffon.

 

Até o próximo post..

Novidades do Griffon 0.3

Foi lancado uma nova versao do griffon
e que
conta com grandes novidades como:

 

The Griffon team is happy to announce the release of Griffon 0.3!

Griffon
is a Grails inspired framework for writing RIAs on the JVM using
Groovy.
For a list of features and fixes see the Griffon 0.3 Release
Notes http://griffon.codehaus.org/Griffon+0.3.

Here’s a list of new features available in this release

*
Upgraded to Groovy 1.7.1
* Enhancements to packaging options for
applet and webstart modes.
* Native libraries support — applications
can now bundle platform specific jars and libraries. Supports 32bit
versions only.
* Addon improvements — more configurable options like events and
FactoryBuilderSupport delegates.
* New Artifact inspection API –
adds the ability to inspect artifacts at runtime and apply
meta-programming.
* New threading options — UIThreadHelper mirrors
SwingBuilder’s threading facilities and expands them.
* Service support and auto-injection. See Guice and Spring plugins for
more powerful and comprehensive DI options.
* New plugins: i18n,
artifacts, db4o, berkleleydb, erlang, flyingsaucer, p6spy, jmx and more!
*
Updated plugins: Spring, GSQL, builder plugins and more!

Release Notes of the previous betas can be found at
http://griffon.codehaus.org/Griffon+0.3-BETA-1
http://griffon.codehaus.org/Griffon+0.3-BETA-2

A list of bugs fixed in this release is at http://jira.codehaus.org/browse/GRIFFON/fixforversion/15881.
The
release notes pages contain links to sample applications. You can
download the Griffon distribution at the downloads page [http://griffon.codehaus.org/Download]

Thanks to all those who contributed to this release!

–The
Griffon Team

Distribuindo sua aplicacao Griffon de maneira rapida e facil

mostrar o instalardo zpack e outros

Twitando com o Griffon

Mostrar aplicacao twitter e fazer uma parte de uma funcionalidade;

Criando uma aplicacao MVC Swing em poucos minutos com Griffon-CRUD

aaa

Conheca o Griffon-GRUD: O meu plugin para o Griffon

ssss

Criando o Primeiro Plugin para o Griffon

Criando o primeiro plugin para o griffon

Criando a Primeira Aplicacao CRUD com Griffon

crud

Criando a Primeira Aplicacao com Griffon

Pegando uma carona no meu primeiro post sobre o Griffon (Griffon: O Grails para Aplicacoes Swing/JavaFx) onde criei uma pequena aplicação exemplo, hoje vou mostrar um passo a passo ensinado a criar uma aplicação um pouco mais funcional que a anterior.

 

Como mostrado no post Utilizando o Netbeans para Desenvolver com Griffon, com a ajuda de um plugin para Griffon o Netbeans 6.7 se torna uma ótima ferramenta de desenvolvimento para aplicações Griffon. Então utilizarei o Netbeans 6.7 para desenvolver a aplicação exemplo.

 

 

1) mostrar splash

2) Criar uma aplicação funcional mas sem acesso ao banco.. com dados na sessão.