Top Banner
Swing Data Validation Karsten Lentzsch www.JGoodies.com
39

Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

Apr 10, 2018

Download

Documents

vongoc
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

Swing Data Validation

Karsten Lentzsch www.JGoodies.com

Page 2: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Presentation Goals

Learn how to validate data

in a Swing application

Page 3: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Speaker Qualifications

Karsten builds elegant Swing apps

works with Objects since 1990

helps others with UI and architectures

provides libraries that complement Swing

provides examples for Swing architectures

writes about Java desktop issues

Page 4: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Agenda

Introduction

A Validation Framework

Who can validate?

When and how to validate?

How to display validation results?

Findings

Page 5: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

I - Introduction

Page 6: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Swing Building Blocks

JRE / Swing

Panels

Foundation

Basic Libraries

Application Frame

Helper Code/Libs

Validation

Applications

BindingLayout

Application 1

Appearance

Components, Application Management, etc.

Utils Help Printing

Application 2

Page 7: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Swing Building Blocks

JRE / Swing

Panels

Foundation

Basic Libraries

Application Frame

Helper Code/Libs

Validation

Applications

BindingLayout

Application 1

Appearance

Components, Application Management, etc.

Utils Help Printing

Application 2

Page 8: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Questions

Who can and who shall validate?

When shall I validate and present results?

How can I specify validation rules?

Where do I display validation results?

How can I mark invalid data?

How can I assist in typing valid data?

Page 9: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

II – Validation Basics

A general purpose validation framework

Page 10: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Structure

Someone validates – Validator

He returns a result – ValidationResult

That consists of ValidationMessages

These have a Severity

ValidationResultModel reports changes

ValidationComponentUtils marks componets

ValidationResultViewFactory vends views

Page 11: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Validation Framework

Validatorcreates

holds

ValidationResultModelView

ValidationResult

Severity

ValidationMessage

consists of

has

observes

Page 12: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Design Goals

Works with standard Swing components

Works with custom Swing components

Requires no special components

Requires no special panels

Integrates well with binding

Works with different validation styles

Is extensible

Page 13: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

What offers JGoodies Validation?

Implements the approach mentioned before

Is a general purpose solution, highly flexible

Does not require any other library

Can be used as-is

Can be used as foundation for higher-level validation frameworks

Page 14: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

III – Who?

Who validates what?

Page 15: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Client and Server

State

State modifications

Presentation code

Client

Server

Page 16: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

PresentationModel

3-Tier Client Architecture

DO

Presentation

Domain Layer

ListModelModel Layer

DO

Domain Object

ValueModelAction

JList JButton JTextField

Page 17: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

BookModel

Domain Object Validates

aBook

Presentation

Domain layer

ValueModelModel layer

ListModelAction

JTextField JButton JTable

Validationcode

Validatorimplements

Page 18: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

BookModel

Validator for Domain Object

aBook

Presentation

ValueModelModel layer

ListModelAction

JTextField JButton JTable

BookValidator Validatorimplements

This is my favorite approach

Page 19: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

BookModel

PresentationModel Validates

aBook

Presentation

Domain layer

ValueModel ListModelAction

JTextField JButton JTable

Validation code Validator

implements

Page 20: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

BookModel

Validator for PresentationModel

aBook

Presentation

ValueModel ListModelAction

JTextField JButton JTable

BookModel-Validator

Validator

implements

Page 21: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

BookPanel

BookModel

Presentation Validates

aBook

Model layer

Domain layer

ValueModel ListModelAction

JTextField JButton JTable

Validation codeValidator

implements

Page 22: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

BookModel

View Filters Invalid Data

aBook

Model layer

Domain layer

ValueModel ListModelAction

JFormattedTextField JTable

Formatter

Presentation

Page 23: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

IV – When?

When to validate? What initiates validation?

Page 24: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Validation Times/Events

Key typed

Focus lost

Form committed (OK/Apply)

Save/print/send data

Find examples in the Validation Demo

Page 25: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Example Application:

JGoodies Validation DemoTasks and Approaches for Data Validation

www.JGoodies.com/freeware/validationdemo

Page 26: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface DesignValidation cons overlay Swing components

Page 27: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

V – How to display?

How to present validation resultsand how to mark invalid input?

Page 28: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Validation Result Views

Single label with validation text and -icon

Text area for multiple validation result texts

JList/JTable for multiple results

Overlayes, translucent text

Find examples in the Validation Demo

Page 29: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Validation Markers

Text field background

Component border

Icon overlays component

Translucent text overlays component

Find examples in the Validation Demo

Page 30: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

VI - Findings

How does the Validation work in projects?

Page 31: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

General

Use Jakarta Commons

Favor validating unbuffered values

Favor validators over self-validating objects

Favor domain validators over model validators

Avoid presentation validation, but use view filters (JFormattedTextField)

Page 32: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Where does Validation stand?

Architecture is stable since December 2003.

No known bugs or problems.

Comes with a tutorial and demo.

Only a few predefined validation rules

Page 33: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

End

Summary and References

Page 34: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Summary

We've seen a general validation architecture

We've learned who can validate data

We've learned when to validate data

We've seen approaches to mark invalid data

Page 35: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

JGoodies Swing Suite

JRE / Swing

Convenience Sources

Foundation

Basic Libraries

Framework

Helper Code

Validation

Applications

BindingForms

Example 1

Looks

User Interface Framework (UIF)

Example 2 Example n

Page 36: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

References I

JGoodies Validation validation.dev.java.net

JGoodies Articles www.JGoodies.com/articles/

JGoodies Demos www.JGoodies.com/freeware/

JGoodies Binding binding.dev.java.net

Page 37: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

References II

Oracle's JClient and ADF otn.oracle.com/, search for 'JClient'

Spring Rich Client Project www.springframework.org/spring-rcp.html

JDNC (Java Desktop Network Components) jdnc.dev.java.net

Page 38: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Questions and Answers

Page 39: Swing Data Validation - JGoodies – We make Java look ... · Swing Data Validation Karsten Lentzsch :: JGOODIES :: Java User Interface Design ... JTextField JButton JTable Validation

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

End

Good Luck!

Karsten Lentzsch