...
This
...
document
...
discusses
...
some
...
of
...
the
...
major
...
functional
...
changes
...
between
...
Pivot
...
1.5.x
...
and
...
Pivot
...
2.0.
...
Core
...
- Rename
...
- org.apache.pivot.wtkx.WTKXSerializer
...
- to
...
- org.apache.pivot.beans.
...
- BXMLSerializer
Despite
...
- its
...
- name
...
- and
...
- inclusion
...
- in
...
- the
...
- WTK
...
- library,
...
WTKXSerializer
...
- never
...
- had
...
- any
...
- actual
...
- dependency
...
- on
...
- WTK.
...
- In
...
- Pivot
...
- 2.0,
...
- this
...
- class
...
- has
...
- been
...
- renamed
...
- to
...
BXMLSerializer
...
- and
...
- moved
...
- to
...
- the
...
- Core
...
- library
...
- to
...
- reflect
...
- its
...
- more
...
- general
...
- nature.
...
- It
...
- has
...
- also
...
- recieved
...
- a
...
- number
...
- of
...
- updates
...
- and
...
- improvements,
...
- discussed
...
- below.
...
...
- Create
...
- an
...
- annotation
...
- to
...
- specify
...
- the
...
- default
...
- "child"
...
- property
...
- of
...
- a
...
- component
...
Classes
...
- can
...
- now
...
- specifiy
...
- a
...
- default
...
- property
...
- using
...
- the
...
- new
...
@DefaultProperty
...
- annotation.
...
- For
...
- example,
...
- the
...
org.apache.pivot.wtk.Window
...
- class
...
- declares
...
- a
...
- default
...
- property
...
- of
...
- "content",
...
- making
...
- the
...
<content>
...
- element
...
- in
...
- markup
...
- optional.
...
- Taking
...
- advantage
...
- of
...
- default
...
- properties
...
- can
...
- significantly
...
- reduce
...
- the
...
- verbosity
...
- (and
...
- indent
...
- depth)
...
- of
...
- BXML
...
- markup.
...
...
- Add
...
- support
...
- for
...
- dynamic
...
- data
...
- binding
...
Pivot
...
- 1.5
...
- and
...
- earlier
...
- supported
...
- data
...
- binding
...
- via
...
- a
...
- load/store
...
- model
...
- that
...
- maps
...
- well
...
- to
...
- client/server
...
- applications
...
- such
...
- as
...
- REST
...
- clients.
...
- However,
...
- a
...
- more
...
- dynamic
...
- model,
...
- where
...
- a
...
- property
...
- of
...
- a
...
- target
...
- element
...
- is
...
- automatically
...
- updated
...
- whenever
...
- a
...
- source
...
- value
...
- changes,
...
- is
...
- also
...
- useful
...
- in
...
- many
...
- circumstances.
...
Pivot
...
- 2.0
...
- adds
...
- support
...
- for
...
- declaratively
...
- creating
...
- such
...
- dynamic
...
- binding
...
- relationships
...
- as
...
- well
...
- as
...
- the
...
- ability
...
- to
...
- define
...
- them
...
- in
...
- code.
...
- For
...
- example,
...
- the
...
- following
...
- markup
...
- creates
...
- a
...
- binding
...
- association
...
- between
...
- a
...
- page
...
- variable
...
- named
...
- "myText"
...
- and
...
- the
...
- "text"
...
- property
...
- of
...
- a
...
Label
...
- instance. Any time the value of "myText"
...
- changes,
...
- the
...
- value
...
- of
...
- the
...
- label's
...
- "text"
...
- property
...
- is
...
- also
...
- updated:
Code Block | ||||
---|---|---|---|---|
| ||||
<Label text="${myText}"/> |
- PIVOT-546 Bindable improvements
TheBindable
interface allows a caller to easily associate Java code with markup defined in BXML. It defines a single method,initialize()
, that is called on the root element of a BXML document once the document has been completely loaded.
ThoughBindable
was actually introduced in Pivot 1.5, it did not provide all of the information an implementing class might need. Pivot 2.0 adds arguments containing the serializer's namespace, resources, and location, to theinitialize()
method. Any@BXML
annotations defined on theBindable
class are also processed prior to the call toinitialize()
. This allows the implementing class to get access to the document's namespace (i.e. page variables), the resources that were used to load it, and the location it was loaded from, to perform any necessary post-processing (for example, registering event listeners).
- PIVOT-537 Move message processing functionality to pivot-core
Pivot 1.5 included a pub/sub messaging API as part of theorg.apache.pivot.wtk.ApplicationContext
...
- class.
...
- However,
...
- like
...
- WTKXSerializer,
...
- this
...
- API
...
- didn't
...
- actually
...
- have
...
- a
...
- dependency
...
- on
...
- WTK.
...
- It
...
- has
...
- been
...
- moved
...
- to
...
org.apache.pivot.util.MessageBus
...
- to
...
- reflect
...
- this.
...
...
- Allow
...
- serializers
...
- to
...
- fire
...
- events
...
- as
...
- data
...
- is
...
- read
...
The
...
org.apache.pivot.json.JSONSerializer
...
- ,
...
org.apache.pivot.serialization.CSVSerializer
...
- ,
...
- and
...
org.apache.pivot.xml.XMLSerializer
...
- classes
...
- allow
...
- an
...
- application
...
- to
...
- read
...
- structured
...
- content
...
- from
...
- an
...
- input
...
- stream.
...
- In
...
- Pivot
...
- 1.5
...
- and
...
- earlier,
...
- callers
...
- had
...
- to
...
- wait
...
- until
...
- the
...
Serializer#readObject()
...
- method
...
- returned
...
- in
...
- order
...
- to
...
- access
...
- the
...
- deserialized
...
- data.
...
- Pivot
...
- 2.0
...
- allows
...
- developers
...
- to
...
- hook
...
- into
...
- the
...
- serialization
...
- process
...
- and
...
- be
...
- notified
...
- as
...
- data
...
- is
...
- read.
...
- For
...
- example,
...
JSONSerializer
...
- now
...
- fires
...
- events
...
- whenever
...
- a
...
- string,
...
- number,
...
- boolean,
...
- list,
...
- or
...
- map
...
- is
...
- read,
...
- and
...
XMLSerializer
...
- fires
...
- events
...
- as
...
- elements
...
- and
...
- text
...
- nodes
...
- are
...
- read.
...
- This
...
- allows
...
- a
...
- caller
...
- to
...
- update
...
- the
...
- UI
...
- incrementally
...
- rather
...
- than
...
- waiting
...
- until
...
- the
...
- entire
...
- stream
...
- is
...
- read,
...
- making
...
- an
...
- application
...
- seem
...
- considerably
...
- more
...
- responsive.
...
WTK
...
- Add
...
- support
...
- for
...
- named
...
- styles
...
While
...
- Pivot
...
- has
...
- always
...
- provided
...
- support
...
- for
...
- modifying
...
- the
...
- appearance
...
- and
...
- behavior
...
- of
...
- components
...
- via
...
- CSS-like
...
- styles,
...
- it
...
- did
...
- not
...
- include
...
- support
...
- for
...
- "named
...
- styles"
...
- (aka
...
- "style
...
- classes").
...
- Pivot
...
- 2.0
...
- adds
...
- this
...
- capability,
...
- including
...
- support
...
- for
...
- both
...
- typed
...
- and
...
- untyped
...
- style
...
- selectors.
...
...
- Add
...
- platform
...
- support
...
- for
...
- SVG
...
- images
...
Pivot
...
- 1.5
...
- and
...
- earlier
...
- included
...
- a
...
- set
...
- of
...
- classes
...
- for
...
- declaratively
...
- constructing
...
- drawings
...
- using
...
- a
...
- "shape
...
- DOM"
...
- or
...
- "scene
...
- graph",
...
- which
...
- mirrored
...
- the
...
- equivalent
...
- drawing
...
- primitives
...
- in
...
- the
...
java.awt.geom
...
package
...
- .
...
- While
...
- these
...
- classes
...
- provided
...
- a
...
- convenient
...
- way
...
- to
...
- implement
...
- retained
...
- mode
...
- drawing,
...
- they
...
- were
...
- of
...
- little
...
- practical
...
- use,
...
- since
...
- such
...
- drawings
...
- had
...
- to
...
- be
...
- constructed
...
- by
...
- hand
...
- -
...
- no
...
- support
...
- was
...
- provided
...
- for
...
- reading
...
- standard
...
- image
...
- formats
...
- such
...
- as
...
- SVG
...
- or
...
- Adobe
...
- Illustrator
...
- documents.
...
In
...
- Pivot
...
- 2.0,
...
- the
...
- "shape
...
- DOM"
...
- classes
...
- have
...
- been
...
- eliminated
...
- and
...
- replaced
...
- with
...
- a
...
- new
...
- SVG-based
...
Drawing
...
- class.
...
- This
...
- allows
...
- developers
...
- to
...
- freely
...
- interchange
...
- bitmap-based
...
- images
...
- (such
...
- as
...
- JPEG,
...
- PNG,
...
- or
...
- GIF)
...
- and
...
- scalable
...
- vector
...
- images
...
- in
...
- a
...
- Pivot
...
- application.
...
- SVG
...
- support
...
- in
...
- Pivot
...
- 2.0
...
- is
...
- provided
...
- by
...
- the
...
...
...
- project.
...
- Re-implement
...
- TextArea
...
The
...
TextArea
...
- component
...
- was
...
- completely
...
- overhauled
...
- in
...
- Pivot
...
- 2.0.
...
- It
...
- now
...
- supports
...
- common
...
- text
...
- editing
...
- features
...
- including
...
- word
...
- navigation
...
- and
...
- undo/redo,
...
- and
...
- cut/paste
...
- behavior
...
- has
...
- been
...
- improved.
...
- Word
...
- navigation
...
- and
...
- undo/redo
...
- has
...
- also
...
- been
...
- added
...
- to
...
TextInput
...
- (PIVOT-372
...
- and
...
- PIVOT-639).
...
...
- Add
...
- rich
...
- text
...
- support
...
- to
...
- TextPane
...
- (formerly
...
- TextArea)
...
The
...
- previous
...
TextArea
...
- component
...
- has
...
- been
...
- renamed
...
- to
...
TextPane
...
- and
...
- has
...
- recieved
...
- improvements
...
- that
...
- allow
...
- it
...
- to
...
- be
...
- used
...
- to
...
- present
...
- and
...
- author
...
- rich
...
- text.
...
- It
...
- can
...
- also
...
- now
...
- host
...
- sub-components
...
- and
...
- can
...
- be
...
- used
...
- as
...
- a
...
- generic
...
- text-based
...
- layout
...
- container.
...
- However,
...
- it
...
- has
...
- not
...
- been
...
- fully
...
- tested
...
- and
...
- is
...
- considered
...
- experimental
...
- in
...
- Pivot
...
- 2.0.
...
...
- Add
...
- a
...
- "repeatable"
...
- property
...
- to
...
- ListButton
...
A
...
- "repeatable"
...
- flag
...
- has
...
- been
...
- added
...
- to
...
ListButton
...
- to
...
- support
...
- "split
...
- button"-type
...
- behavior.
...
- When
...
- enabled,
...
- a
...
- mouse
...
- click
...
- on
...
- the
...
- trigger
...
- area
...
- of
...
- the
...
- button
...
- will
...
- show
...
- the
...
- drop
...
- down,
...
- but
...
- a
...
- click
...
- on
...
- the
...
- content
...
- area
...
- will
...
- not
...
- and
...
- will
...
- instead
...
- simply
...
- "press"
...
- the
...
- button.
...
...
- Simplify
...
- editor
...
- APIs
...
The
...
- editor
...
- APIs
...
- for
...
ListView
...
- ,
...
TableView
...
- ,
...
- and
...
TreeView
...
- were
...
- significantly
...
- simplified
...
- for
...
- Pivot
...
- 2.0
...
- ,
...
- making
...
- it
...
- much
...
- easier
...
- to
...
- implement
...
- custom
...
- editors
...
- in
...
- a
...
- Pivot
...
- application.
...
...
- Make
...
- ListView
...
- selectedItem,
...
- etc.
...
- notifying
...
- properties
...
In
...
- previous
...
- versions,
...
- changes
...
- to
...
ListView
...
- 's
...
- "selectedItem"
...
- property,
...
TableView
...
- 's
...
- "selectedRow"
...
- property,
...
- and
...
TreeView
...
- 's
...
- "selectedNode"
...
- property
...
- did
...
- not
...
- fire
...
- events.
...
- This
...
- was
...
- by
...
- design,
...
- since
...
- the
...
- getters
...
- for
...
- these
...
- properties
...
- are
...
- simply
...
- convenience
...
- methods.
...
- However,
...
- the
...
- lack
...
- of
...
- event
...
- notification
...
- made
...
- it
...
- impossible
...
- to
...
- use
...
- the
...
- new
...
- dynamic
...
- data
...
- binding
...
- feature
...
- to
...
- bind
...
- to
...
- these
...
- properties.
...
- As
...
- a
...
- result,
...
- events
...
- are
...
- now
...
- fired
...
- when
...
- these
...
- values
...
- change.
...
...
- Fire
...
- selection
...
- change
...
- events
...
- when
...
- selection
...
- changes
...
- indirectly
...
In
...
- previous
...
- versions,
...
- selection
...
- change
...
- events
...
- in
...
- data-driven
...
- components
...
- such
...
- as
...
ListView
...
- were
...
- not
...
- fired
...
- when
...
- a
...
- component's
...
- selection
...
- state
...
- changed
...
- indirectly
...
- (i.e.
...
- as
...
- a
...
- result
...
- of
...
- a
...
- model
...
- change,
...
- rather
...
- than
...
- a
...
- direct
...
- call
...
- to
...
- a
...
- selection
...
- setter
...
- method).
...
- It
...
- was
...
- the
...
- caller's
...
- responsibility
...
- to
...
- listen
...
- for
...
- both
...
- model
...
- and
...
- selection
...
- change
...
- events.
...
In
...
- Pivot
...
- 2.0,
...
- selection
...
- change
...
- events
...
- are
...
- fired
...
- both
...
- when
...
- the
...
- selection
...
- changes
...
- directly
...
- as
...
- well
...
- as
...
- when
...
- it
...
- is
...
- changed
...
- indirectly.
...
...
- Add
...
- a
...
- "closeable"
...
- property
...
- to
...
- TabPane
...
The
...
TabPane
...
- component
...
- now
...
- supports
...
- user-closeable
...
- tabs.
...
...
- Fire
...
- tooltipTriggered()
...
- event
...
- from
...
- Component
...
In
...
- prior
...
- Pivot
...
- versions,
...
- it
...
- was
...
- difficult
...
- to
...
- create
...
- tooltips
...
- containing
...
- custom
...
- content.
...
- The
...
Component
...
- class
...
- now
...
- fires
...
- a
...
tooltipTriggered()
...
- event
...
- that
...
- applications
...
- can
...
- hook
...
- into
...
- to
...
- show
...
- a
...
- custom
...
- tooltip.
...
- The
...
- tooltip
...
- delay
...
- is
...
- now
...
- also
...
- configurable
...
- (PIVOT-563).
...
...
- Multiple
...
- host
...
- windows
...
Though
...
- Pivot
...
- provides
...
- a
...
- rich
...
- set
...
- of
...
- window
...
- types,
...
- they
...
- are
...
- all
...
- internal
...
- to
...
- the
...
- host
...
- frame
...
- (or
...
- applet).
...
- A
...
- common
...
- request
...
- from
...
- developers
...
- was
...
- for
...
- improved
...
- support
...
- for
...
- multiple
...
- native
...
- frames.
...
- Such
...
- support
...
- has
...
- been
...
- added
...
- to
...
- Pivot
...
- 2.0:
...
- applications
...
- launched
...
- via
...
DesktopApplicationContext
...
- can
...
- now
...
- easily
...
- create
...
- multiple
...
- top-level
...
- host
...
- frames,
...
- providing
...
- a
...
- much
...
- more
...
- seamless
...
- desktop
...
- experience.
...
...
- Provide
...
- additional
...
- Color
...
- schemes
...
Though
...
- Pivot
...
- has
...
- always
...
- provided
...
- the
...
- ability
...
- to
...
- create
...
- custom
...
- color
...
- schemes,
...
- previous
...
- versions
...
- have
...
- included
...
- only
...
- a
...
- single
...
- default
...
- scheme.
...
- Pivot
...
- 2.0
...
- includes
...
- a
...
- collection
...
- of
...
- color
...
- schemes
...
- which
...
- are
...
- optimized
...
- for
...
- a
...
- variety
...
- of
...
- popular
...
- desktop
...
- environments.
...
...
- Create
...
- an
...
- Eclipse
...
- launcher
...
- for
...
- org.apache.pivot.wtk.Application
...
- and
...
- ScriptApplication
...
Pivot
...
- now
...
- includes
...
- an
...
- Eclipse
...
- plugin
...
- to
...
- help
...
- simplify
...
- the
...
- task
...
- of
...
- creating
...
- launch
...
- configurations
...
- for
...
- Pivot
...
- applications.
...
- When
...
- the
...
- plugin
...
- is
...
- installed,
...
- any
...
- class
...
- that
...
- implements
...
- the
...
- Application
...
- interface
...
- can
...
- be
...
- automatically
...
- launched
...
- via
...
- a
...
- right-click
...
- context
...
- menu.
...
- Additionally,
...
- any
...
- BXML
...
- file
...
- that
...
- has
...
- a
...
- root
...
- element
...
- that
...
- is
...
- a
...
- subclass
...
- of
...
- Window
...
- can
...
- also
...
- be
...
- launched
...
- via
...
- right-click
...
- using
...
- the
...
- ScriptApplication
...
- launcher
...
- class
...
- included
...
- in
...
- the
...
- platform.
...
Complete release notes are available here.