Introdução ao Superwaba

Um projeto 100% brasileiro!!!

 

Prezados leitores da Web Mobile! Estou aqui pela primeira vez, escrevendo um artigo para esta renomada revista do mundo do desenvolvimento Mobile. Pretendo, nas edições que se seguem, elaborar alguns artigos sobre o Superwaba (www.superwaba.com.br) um projeto brasileiro que tomou proporções mundiais no desenvolvimento de aplicações para PDA’s.

 

Um breve histórico

Originalmente concebido com o nome Projeto Waba, da Empresa WabaSoft (www.wabasoft.com). O projeto foi tomado pelos brasileiros em meados de 2000, quando o Brasileiro Guilherme Hazan, com a devida autorização do seu criador, retomou o projeto, nascendo assim o SuperWaba. Inicialmente, ele manteve sua licença pública (GPL), sendo o sustento da Empresa mantido pela criação de bibliotecas adicionais, tais como o famigerado PDBDriver, bibliotecas de imagens, drivers de impressoras, entre outras. Até que, a partir da versão 4.5, o Superwaba passou a operar sobre a lincença LGPL, podendo, então, ser cobrada uma taxa de subscrição para atualização da ferramenta. Existe ainda a versão comunitária, porém com a restrição legal de que não se pode desenvolver código proprietário com esta versão.

 

Superwaba é Java?

Como eu li em outro artigo certa vez, “Superwaba não é Java, mas por uma mera questão proprietária”. A Sun é a proprietária da marca “Java”.

 

Então, porque ele se parece com o Java?

O modelo de desenvolvimento do SuperWaba permite que você desenvolva suas aplicações no desktop, utilizando qualquer ferramenta de desenvolvimento Java, como o Eclipse ou o NetBeans. E, para facilitar o desenvolvimento, ele “emula” através de uma applet Java a tela do equipamento, podendo configurar para o tamanho/resolução que desejar. Sem falar em todas as outras vantagens de desenvolver num desktop para java, como debug, inspect, etc...

 

Os pacotes do superwaba

Pacote waba.lang

Este pacote é o “similar” do pacote java.lang, onde estão as classes base da Virtual Machine, como Object, String, Math, Class, Exception, entre outras. Durante o desenvolvimento nas IDE’s, o pacote utilizado é o java.lang, porém na Vm é utilizado o pacote waba.lang, então, cuidado! Observe sempre a documentação do Superwaba, pois você pode testar algo no emulador Applet e funcionar, e depois colocar a aplicação no PDA e ter problemas.

 

Pacote waba.sys

São classes utilizadas para manipular o Sistema Operacional, bem como mudar suas características, como Data/Hora, Formatos de datas, horas e moedas, configurações do teclado, etc. Possui também as classes Convert (usada para conversão de diversos tipos de dados), Time e Vm (classe que executas as funções da Virtual Machine), entre outras.

 

Pacote waba.ui

É neste pacote que estão os componentes de interface com o usuário. Entre eles, encontramos o Label, o Edit, o CheckBox, o Button, o Grid, e por ai vai. Existem outros componentes nos pacotes de extensão, falaremos deles mais adiante.

 

 

Pacote waba.io

É o pacote que trata de Input/Output de dados. Nele encontramos o Catalog (tipo mais básico de banco de dados no SuperWaba), o File, DataStream, SerialPort (utilizado para comunicações seriais) entre outros.

 

Pacote waba.fx

Contém classes para trabalhar com Imagens (Image), Gráficos (Graphics, usado para desenhar várias formas e imagens), Sons (Sound e SoundClip) entre outros.

 

Pacote waba.util

Como o nome diz, contém classes utilitárias, como Vector(Vetor de Objetos), Date (Objeto de data), HashTable e IntHashTable (Tabelas Hash), Random (Gerador de números randômicos), entre outros.

 

Pacotes superwaba.ext.*

São os pacotes desenvolvidos já pela empresa brasileira do SuperWaba, onde estão os seus componentes adicionais. À medida que formos utilizando os pacotes, estarei colocando uma descrição dos pacotes.

 

Criando uma aplicação: a classe waba.ui.MainWindow

Toda aplicação SuperWaba se inicia com uma classe herdade de waba.ui.MainWindow: essa é a classe onde inicia a sua aplicação Superwaba. Iremos criar um novo projeto no Eclipse com o nome DeveloperMasterClientControl. O foco do projeto é criar um cadastro de clientes com controle de visitas. Na Listagem 01 temos o código inicial da nossa tela principal.

 

package developermaster.ui.forms;

 

import superwaba.ext.xplat.fx.png.PngImage;

import waba.sys.*;

import waba.ui.*;

 

public class MainForm extends MainWindow {

 

      Button btnClientes, btnAgenda;

     

      /**

       * Este método é utilizado na inicialização da tela.

       * Utilizado para instanciar os componentes, entre outras coisas.

       */

      public void onStart()

      {

            // -> Coloca o estilo da borda como Simples

            this.setBorderStyle(Button.BORDER_SIMPLE);

           

            // -> Seta o estilo da aplicação para o estilo do Palm OS.

            //    Em qualquer dispositivo, a aplicação vai ter a aparência

            //    de uma aplicação no Palm OS.

            Settings.setUIStyle(Settings.PalmOS);

           

            // -> Altera o título da tela principal.

            this.setTitle("Dev. Master Client Control");

           

            // -> Pela resolução da tela, escolhe o path das imagens para os botões.

            String PathImages = Settings.screenHeight == 320?"320X320":"160X160";

            PathImages = "developermaster/icons/icons" + PathImages + "/";

           

            // -> Adiciona o botão btnClientes na tela principal, com uma imagem no botão.

            //    Notem que já foi utilizado o primeiro pacote de extensão, o

            //    superwaba.ext.xplat.fx.png.PngImage, classe para manipulação de imagens

            //    do tipo PNG.

            //    A posição do botão é de 60 de topo, e alinhado ao centro na horizontal.

            add(btnClientes = new Button(new PngImage(PathImages + "btnclientes.png")), CENTER, 60);

           

            // -> Remove a borda dos botões, pois já temmos borda nas imagens.

            btnClientes.setBorder(BORDER_NONE);

 

            // -> Desta vez usamos o posicionamento relativo, com o uso do AFTER.

            //    passando esse parâmetro, ele irá colocar este controle logo após o

            //    anterior.

            add(btnAgenda = new Button(new PngImage(PathImages + "btnagendamento.png")), CENTER, AFTER);

            btnAgenda.setBorder(BORDER_NONE);

           

      }

}

 

 

Listagem 01. Código da tela principal.

 

Na Figura 01, temos a nossa aplicação rodando, via emulador em Applet Java.

 

introsuperwabaorlandofig01.JPG

Figura 01. Aplicação rodando via applet Java.

 

Bem, acho que é o suficiente para um primeiro artigo. No próximo artigo, vamos criar uma classe base para manipulação de dados, de forma mais Orientada a Objetos. Até a próxima, e que a força esteja com vocês!