Building Software Applications
with
 
JMatter

Eitan Suez

March 2009
©  2009 JMatterSoft LLC. All rights reserved.
This book was typeset and produced using Open Source software. LYX was used for typesetting and layout.
Suez, Eitan

Building Software Applications with JMatter
Bibliography.

 
 

Contents

I   Introduction
1  Overview
    1.1  How?
    1.2  Architecture
    1.3  Seeing is believing
2  Software Installation
    2.1  Prerequisites
        2.1.1  Java SE v5 or later
        2.1.2  Ant
    2.2  Installation
3  A Short Tour
    3.1  Launching ContactMgr
    3.2  The Tour
        3.2.1  A Quick Orientation to the User Interface
        3.2.2  Folders
        3.2.3  Queries
            3.2.3.1  Quick Recap
        3.2.4  Logs
        3.2.5  Multiple Views
            3.2.5.1  Custom Views
        3.2.6  Tour Summary
II   Tutorial Applications
4  A Zero-Code Contact Manager
    4.1  Creating a New Project
    4.2  The Schema
    4.3  The Class Bar
    4.4  Running Your Contact Manager
    4.5  Custom Views Revisited
    4.6  Project Structure
        4.6.1  Files
        4.6.2  Ant Targets
        4.6.3  A Peek at the Source Code
    4.7  Summary
MyTunes in under 200 Lines
    5.1  Creating the Project
    5.2  Setup your Project in an IDE
    5.3  Getting Started
    5.4  The Album Class
    5.5  The Genre Class
    5.6  The Song Class
    5.7  Running our Application
        5.7.1  Configuration
        5.7.2  Finally Running the Application
    5.8  Back To the Code
    5.9  Validation
        5.9.1  A word about the model-metadata.properties File
    5.10  Behaviour
    5.11  Analysis
        5.11.1  FileEO
        5.11.2  Commands
        5.11.3  message()
        5.11.4  Return Type
    5.12  Importing Songs
    5.13  Not Completely Finished
    5.14  Summary
6  A Conference Manager
    6.1  Analysis
    6.2  Setting up the Project
    6.3  The Model
        6.3.1  Type Icons and Config File Setup
        6.3.2  The Symposium Class
        6.3.3  The Speaker Class
        6.3.4  The Talk Class
        6.3.5  The Room Class
        6.3.6  The Session Class
        6.3.7  A First Look
    6.4  Enhancements
        6.4.1  Type Color Coding
        6.4.2  Speaker's Photo for Speaker Icon
        6.4.3  A Second Look
    6.5  Calendaring
        6.5.1  How JMatter Models Calendaring
        6.5.2  Enhancing Sympster to Support Calendaring
            6.5.2.1  Enhancing Session
            6.5.2.2  Enhancing Room
            6.5.2.3  Enhancing Symposium
        6.5.3  A Third Look
        6.5.4  Inheritance vs Interfaces
    6.6  Inheritance-Based Polymorphism
    6.7  Interface-Based Polymorphism
    6.8  Summary
7  Issue Manager
    7.1  Analysis
        7.1.1  Modeling States in Java
    7.2  Getting Started
    7.3  Modeling Issues' Lifecycle
        7.3.1  Defining the State Inner Classes
    7.4  Per-State Icons
    7.5  Additional Metadata
    7.6  A Few Loose Ends
        7.6.1  Default Assigned-To Developer
        7.6.2  Automatically Setting OpenedBy
        7.6.3  Transitioning to AssignedState
    7.7  Issue Categories
    7.8  The Application
    7.9  Summary
III   Framework Reference
8  Dichotomy of a Model Object
    8.1  Types
    8.2  Fields
        8.2.1  Atomic Fields
            8.2.1.1  Build-In Atomics
        8.2.2  Composite Fields
            8.2.2.1  Composite Types Provided with the Framework
            8.2.2.2  Composite Indexed Field
        8.2.3  Associations
            8.2.3.1  To-One Associations
            8.2.3.2  To-Many Associations
            8.2.3.3  Bidirectional Associations
        8.2.4  Choice Types
    8.3  Commands
        8.3.1  Types of Commands
            8.3.1.1  Type Commands
            8.3.1.2  List Commands
    8.4  Metadata
        8.4.1  Overriding Plural Name
        8.4.2  Overriding Natural Name
        8.4.3  Color Coding
        8.4.4  Icons
            8.4.4.1  Per-Instance Icons
        8.4.5  Field Order
        8.4.6  Command Order
        8.4.7  Flatten Into Parent
        8.4.8  Tab Views
        8.4.9  Default Search Path
        8.4.10  Unique Fields
        8.4.11  Read-only Fields
        8.4.12  Calculated Fields
    8.5  Per-Field Metadata
        8.5.1  @Fld Annotation
        8.5.2  The @IdxFld Annotation
    8.6  Per-Command Metadata
        8.6.1  @Cmd Metatada
        8.6.2  @Arg Metadata
        8.6.3  The model-metadata.properties file
    8.7  Persistence Lifecycle and AppEvents
9  Validation
10  Authentication & Authorization
    10.1  Autologin
    10.2  Authorization
    10.3  List Filtering
11  Search
    11.1  Filtering Listings
    11.2  The Find Command
    11.3  Smart Lists
    11.4  Search in Associations
    11.5  Polymorphic queries
    11.6  Code Hints for Search
12  Wizards, CSV Export, and PDFs
    12.1  Subclassing Person
    12.2  Writing the Wizard
    12.3  Running the Application
    12.4  CSV Export
    12.5  PDFs
        12.5.1  JFreeReport Integration
            12.5.1.1  The basics
            12.5.1.2  A Simple Example
        12.5.2  JasperReports
        12.5.3  Launching PDFs and other Files
    12.6  Summary
13  Calendars and Maps
    13.1  Calendars
    13.2  Maps
        13.2.1  Maps: An atlernative to view embedding
14  Customized Views and Editors
    14.1  Complex, or Composite Views
    14.2  A Custom View for Sympster Sessions
    14.3  The Self demo application
    14.4  Customizing Layout
    14.5  Atomic Views
        14.5.1  Specifying the Default Editor and Renderer
15  Localization and Internationalization
    15.1  States
    15.2  Generic UI Localization
    15.3  Right-To-Left
    15.4  Summary
16  Child Projects
    16.1  Creating Child Projects
    16.2  Directory Structure and Files
    16.3  Build File Targets
17  Styling the UI with CSS
    17.1  JMatter's CSS Engine
        17.1.1  Selectors
        17.1.2  Adapting Selectors for Swing
        17.1.3  Assigning Components CSS class names
        17.1.4  Values
        17.1.5  Properties
        17.1.6  CSS Inheritance
    17.2  The JMatter Stylesheet
        17.2.1  The complete stylesheet
    17.3  Using CSS4Swing in Standalone Swing Applications
    17.4  Future Plans
18  Deploying your Application
    18.1  JMatter Applications Architecture
    18.2  Java Web Start
    18.3  Deploying ContactMgr
    18.4  Caveats
    18.5  Security Options
    18.6  More About JWS
    18.7  Summary
19  Deployment, Take II: The Application Browser
    19.1  How it works, by example
    19.2  Dealing with dependencies
    19.3  Looking Ahead
20  Tooling
    20.1  Reverse Engineering an Existing Schema
    20.2  IDEA Productivity Templates
        20.2.1  How it works
    20.3  Ultraviolet and UMLC
21  The Power User
    21.1  Visual Command Interface
        21.1.1  Extending the Index
    21.2  Associations Made Easy
    21.3  Paging
    21.4  Exposé
    21.5  Navigation
        21.5.1  Window Placement
        21.5.2  New View Placement Options
    21.6  Copy and Paste
    21.7  The Restore Desktop Feature
22  Summary
    22.1  Looking Forward
A  Keyboard Shortcuts
B  Database Setup
    B.1  Configuring your own database
        B.1.1  Create a Database
        B.1.2  Specify the Database Connection Information
        B.1.3  Generate the Database Schema
        B.1.4  Browsing the database schema with psql
C  Working from the Subversion Repository
    C.1  Checking out the code
    C.2  Directory Structure, Compiling, Running demo applications
D  Online Articles on JMatter
E  FAQ
F  Contributing to this project
G  A Desktop within a Desktop?
    G.1  Dreaming of a Better Virtual World
    G.2  Collapsing the desktops

Part 1
Introduction



HEAD NEXT