Criação de Janelas via codificação


#1

Olá pessoal,

Gostaria de saber quais as convenções para a criação de janelas via código, uma vez que o Adempiere não usa as classes do SWING diretamente.

Sei que é possível criar interfaces para usuário através do próprio dicionário da aplicação, o que é bem mais produtivo. Mas a interface do Adempiere segue um padrão e em algumas situações pode ser necessário ter janelas mais customizadas.

Aproveito para perguntar como tem sido a aceitação de seus clientes ao padrão de UI do Adempiere.

Obrigado e grande abraço.

Lúcio Faria


#2

Lúcio, para criar janelas em java, vc deve criar um formulário no adempiere, e apontar para a classe criada.

De uma olha nos formulários no package: org.compiere.apps.form dentro de client/src

Sobre a aceitação, isso depende muito do usuário, porém a maior reclamação é referente ao uso constante do mouse, muitos estão acostumados com programas em delphi, ou dos, e o uso do teclado é constante, porém com a prática e aprendendo as teclas de atalho, os usuário começam a gostar da interface.

Um ponto importante de todas janelas terem a mesma cara, é que fica fácil para os usuário aprenderem novas telas, e funções, pois é tudo muito parecido e com o mesmo comportamento.


#3

Mário, obrigado pelos esclarecimentos. Em relação à interface WEB, pude ver a WEB UI feita sobre o framework ZK Ajax, que se encontra disponível para testes no site testadempiere.com/webui. Nesse caso, o cliente WEB já traz todas as definições do dicionário sem a necessidade de re-programação, incluindo as janelas criadas no AD - mas NÃO traria os forms customizados, para os quais haveria o re-trabalho de serem criados também para a WEB. Este seria mais um ponto em favor de permanecer no padrão de janelas do Adempiere, correto?

Pergunto isso porque me parece interessante a possibilidade de usar o Adempiere com um cliente WEB.


#4

Vc pode ateh utilizar o swing, apesar q adempiere já traz uma padronizacao de grande parte dos componentes do swing.
Como falado acima, existem janelas que precisam ter interface própria e não serão geradas automaticamente a partir do dicionário de aplicação. São os formulários.

Para se criar um formulário novo deve-se criar uma classe que siga alguns padrões. Além disso, como um formulário também é um elemento do dicionário da aplicação, ele também deve ser cadastrado no dicionário. Vamos fazer o seguinte exercício. Acesse o sistema com o usuário System e no menu principal acesse a opção Formulários. Navegando entre os registros vamos até ao registro que define o formulário de criação de empresa.

Olhe o campo classname. Veja que indica perfeitamente aonde o formulário é definido. Por isso, se lhe solicitarem para alterar algum formuário específico e quiser saber a classe para poder alterar, basta acessar o cadastro de formulários e abrir o registro específico. No caso da criação de empresas, o formulário está no pacote org.compiere.apps.form.VSetup.
Esses formulários padrões estão definidos no pacote client do código fonte. Veja no seu projeto no Eclipse e veja as classes que existem lá.
Para se criar um formulário dentro do Compiere/Adempiere deve-se seguir alguns padrões:

  • Primeiro a declaração da classe deve ser a seguinte:
public class <suaclasse> extends CPanel
      implements FormPanel, ActionListener, Runnable
  • Como essa classe vai implementar algumas interfaces então alguns métodos devem ser implementados (o que não quer dizer que os 4 métodos devam ter código):

[code] public void dispose()
}

  public void init(int WindowNo, FormFrame frame) {
  }

  public void actionPerformed(ActionEvent e) {
       }

  public void run() {

}

[/code]


#5

Exatamente Lúcio, se vc criar formulários em java, será necessário também desenvolver para a interface web, já qq janela “padrão”, é criada automáticamente.

sds, Mario