sábado, 30 de enero de 2010

Apache Pivot


Apache Pivot es un proyecto que hace poco fue promovido a top level en la organización apache.








Apache Pivot es un framework de presentación para hacer RIAS a simple vista, me hizo acordar a bindows (otro framework de presenteción) . La idea es generar un xml (WTKX) que contenga los componentes y el layout de tu RIA y vos programas en java, pare sido a la filosofía Flex o Silverligh.












Apache Pivot se ejecuta como un applet embebido y esta basado en Java2D y además implementa el patrón MVC. Obviamente esta bajo licencia apache.





Veamos un ejemplo:


public class HelloJava implements Application {
private Window window = null;



@Override

public void startup(Display display, Map properties) {

Label label = new Label();

label.setText("Hello World!");

label.getStyles().put("font", new Font("Arial", Font.BOLD, 24));

label.getStyles().put("color", Color.RED);

label.getStyles().put("horizontalAlignment",

HorizontalAlignment.CENTER);

label.getStyles().put("verticalAlignment",

VerticalAlignment.CENTER);



window = new Window();

window.setContent(label);

window.setTitle("Hello World!");

window.setMaximized(true);

window.open(display);

}



@Override

public boolean shutdown(boolean optional) {

if (window != null) {

window.close();

}



return false;

}



@Override

public void suspend() {

}



@Override

public void resume() {

}



public static void main(String[] args) {

DesktopApplicationContext.main(HelloJava.class, args);

}

}

Luego de hacer esta clase podemos configurar el applet:

<applet code="org.apache.pivot.wtk.BrowserApplicationContext$HostApplet"

archive="lib/pivot-core-[version].jar,lib/pivot-wtk-[version].jar,lib/pivot-wtk-terra-[version].jar,lib/pivot-tutorials-[version].jar"

width="160" height="80">

<param name="applicationClassName" value="org.apache.pivot.tutorials.HelloJava">

</applet>

En este caso no necesitamos definir el xml que contiene la estructura.

Veamos un ejemplo con este xml armado:

public class HelloWTKX implements Application {
     private Window window = null;
      @Override
    public void startup(Display display, Map properties)         throws Exception {
        WTKXSerializer wtkxSerializer = new WTKXSerializer();
        window = (Window)wtkxSerializer.readObject(this, "hello.wtkx");
        window.open(display);
 }
     @Override
    public boolean shutdown(boolean optional) {
      if (window != null) {
         window.close();
    }
     return false;
    }
        @Override
    public void suspend() {
    }
     @Override
    public void resume() {
    }
     public static void main(String[] args) {
     DesktopApplicationContext.main(HelloWTKX.class, args);
    }
  
}

      
Definimos el xml que tiene la estructura:
<Window title="Hello WTKX!" maximized="true"     xmlns:wtkx="http://pivot.apache.org/wtkx"     xmlns="org.apache.pivot.wtk">
    <content>
        <Label text="Hello WTKX!"
            styles="{font:'Arial bold 24', color:'#ff0000',                 horizontalAlignment:'center', verticalAlignment:'center'}"/>
    </content>
</Window> 

Ahora ya tenemos un pantallaso de un ejemplo de Pivot.
     

Para ver lo que se puede hacer aquí dejo el link de demos: http://pivot.apache.org/demos/