Building Software Applications
with
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
5
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