This document turns into a presentation when pressing [F11] in Opera7.
Workshop: Rich User Interfaces with Java
 

Rich User Interfaces with Java
Workshop organised by BeJUG on 22/3/05

Rich User Interfaces with Thinlet

by Koen Roevens

#whoami

Rich Client >< Thin Client


Source of illustration: Building Smart Client using .NET
  • Thinlet -> Smart client?
    • Characteristics
    • API
  • Ready for real world app's or just a toy?
    • Missing features?
    • Extensibility
    • Risc
    • Maintainability

Thin Client - Poor User Experience

Thinlet's Charateristics

Midp

  • Patched version of Thinlet for MIDP
  • http://vehera.
    symbiandevelopersjournal.com/

    • Thinlet Midlet Demo Jad/Jar
    • Thinlet Midlet Eclipse Workspace
      (Eclipse 3.01/EclipseME 0.75)

Thinlet - Usage poll

Thinlet's Demo Application

Thinlet's Drafts Application

Resizable columns, images

The Calculator - Thinlet's Hello World

  • calculator.xml
    <panel gap="4" top="4" left="4">
      <textfield name="number1" columns="4"/>
      <label text="+"/>
      <textfield name="number2" columns="4"/>
      <button text="=" action="calculate(number1.text, number2.text, result)"/>
      <textfield name="result" editable="false"/>
    </panel>

The Calculator - Thinlet's Hello World

The Calculator - Thinlet's Hello World

  • XCalculator.java - The listener method

    ...
    public class XCalculator {
      ...
      public void calculate(String number1, String number2, Object result) {
        try {
          int i1 = Integer.parseInt(number1);
          int i2 = Integer.parseInt(number2);
          x.setString(result, "text", String.valueOf(i1 + i2));
        catch (NumberFormatException nfe) {
          x.setString(result, "text""error");
        }
      }
      ...
    }

  • Widget Tree

    • Object[]
    • Thinlet's missing Classes

    API - Getters/Setters for Widget Properties

    API - Getters/Setters for Widget Properties

    The Calculator - Thinlet's Hello World

    The Calculator - Thinlet's Hello World

    The Calculator - Thinlet's Hello World

    The Tab Creator - Dynamic Thinlet

    • tabs.xml
      <panel columns="1">
        <panel gap="4" top="4" left="4" bottom="4" right="4">
          <textfield name="tab" columns="4"/>
          <button name="add" icon="/icon/add.gif" tooltip="Add new item"
                  action="addTab(tab.text,tabs,status)"/>
          <button name="delete" icon="/icon/delete.gif" tooltip="Delete item"
                  action="deleteTab(tabs,status)"/>
        </panel>
        <tabbedpane name="tabs" placement="top" weightx="1" weighty="1">
        </tabbedpane>
        <label name="status"/>
      </panel>

    The Tab Creator - Dynamic Thinlet

    The Tab Creator - Dynamic Thinlet

    The Tab Creator - Dynamic Thinlet

    The Tab Creator - Dynamic Thinlet

    API - Managing the tree of Widgets

    API - Managing the tree of Widgets

    API - Parsing

    The Form - Extensible Thinlet

    The Form - Extensible Thinlet

    The Task Form - Extensible Thinlet

    The Task Form - Extensible Thinlet

    The Task Form - Extensible Thinlet

    The Task Form - Extensible Thinlet

    The Task Form - Extensible Thinlet

    The Task Form - Extensible Thinlet

    The Task Form - Extensible Thinlet

    The Form Mini Framework

    The Form Mini Framework

    The Form Mini Framework

    The Form Mini Framework

    The Form Mini Framework

    The Form Mini Framework -Serverside

    The Form Mini Framework -Serverside

    Thinlet's strengths

    Thinlet's flaws

    Thinlet - Ready for prime time

    Q & A

    Copyright © 2005 Koen Roevens - All rights reserved.

    Links