================================================================================ Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ================================================================================ Release notes for Pivot 1.2: New Features ------------ - Drawing (vector image) support. Pivot now supports an API for defining and rendering vector graphics (PIVOT-18). - Add basic movie support. A MovieView component has been added that supports basic movie playback. However, serialization support for common video formats has not yet been implemented (PIVOT-19). - Allow caller to specify a FileFilter in pivot.io.Folder (PIVOT-49). - Create a strictValidation style in TerraTextInputSkin. This style makes text inputs behave as if they have an input mask applied: when this style is set to true, input that would yield an invalid state (as defined by the Validator) is disallowed (PIVOT-62). - Display host scaling. Users can now scale the display host for accessibility purposes or high-resolution displays. Control-Shift-mouse wheel and Control-Shift +/- allows the user to dynamically scale the display in a running Pivot app (PIVOT-83). - A Panel container has been added that performs no layout and supports absolute sizing and positioning of components (PIVOT-92). - Create Component.getGraphics(). This new method returns a graphics context suitable for drawing directly to a component without double-buffering (effectively operating directly on the video RAM) (PIVOT-105). - Provide annotations to map WTKX data to application member variables. @Load and @Bind annotations are now provided that allow a caller to automatically load a WTKX file into a member variable and bind member variables to named objects declared in the WTKX source (PIVOT-111). - Support full-screen mode in DesktopApplicationContext. A key combination (Control-Shift-F) has been added to allow a user to toggle between windowed and full-screen exclusive mode (PIVOT-113). - Add an ActivityIndicator component. This new component allows an application to show the user that a background task is in progress (PIVOT-115). - WTKXSerializer interpreter (TBD) (PIVOT-116). - Provide a means for an application to handle "about" information. Applications often provide an "about box" that displays information about the application including title, version number, etc. Pivot now provides an optional interface for an application to handle "about" presentation such that it can be called by the application itself as well as by the system menu on Mac OSX (PIVOT-117). - Add a ByteArraySerializer for serializing arbitrary content, byte per byte (in a buffered way, if possible) (PIVOT-126). - Added support for encoding basic gradient, stopped linear gradient, and stopped radial gradients via JSON. Encoded paints can be set as the background of a container as well as the fill or stroke of a shape (PIVOT-112). Improvements ------------ - Optimize drop shadow decorator for better performance (PIVOT-36). - Update themes to use "provider" architecture, similar to charts (PIVOT-46). - Use a default comparator in pivot.io.Folder that sorts alphabetically (PIVOT-50). - Add path support for put() and remove() to JSONSerializer (PIVOT-55). - TableView.RowEditor should be initiated based on a double-click gesture (PIVOT-57). - Rollup should differentiate between user-added and skin-added components (PIVOT-63). - Make "bullet" configurable in TerraRollupSkin (PIVOT-64). - Optimize Viewport by only painting the revealed area (PIVOT-66). - Component#userData should allow multiple clients to co-exist (PIVOT-67). - Alignment.JUSTIFY improvements (PIVOT-68). - Create adapter classes for listener interfaces; common listener interfaces now provide an inner Adapter class that implements the interface with default no-op methods (PIVOT-80). - Create Sequence.Tree.Path. The static methods in Sequence.Tree, and pivot.wtk.TreeView can change from using raw Sequence to using Path. This is not only more explicit, but it allows callers to iterate over the path, whereas Sequence is not iterable (PIVOT-84). - Make WTK structure-like classes immutable (including Point, Dimensions, Insets, etc.) (PIVOT-85). - Add drop shadows to list button and calendar button popups (PIVOT-90). - Add a listCleared() event to pivot.collections.ListListener (PIVOT-95). - Java2D performance optimizations (PIVOT-96). - Perform bounds checking on opacity in ImageViewSkin (PIVOT-98). - Move META-INF/services/javax.xml.stream.XMLInputFactory file into rebundled StAX JAR (PIVOT-106). - Eliminate wtkx:include namespace attribute (PIVOT-120). - Clean up CardPaneSkin styles; the previous styles for controlling selection change transitions were unintuitive and inflexible (PIVOT-121). - Disable the tab button/accordion header when the corresponding tab/panel is disabled (PIVOT-123). - Add support for comments to JSONSerializer (PIVOT-127). Bug Fixes --------- - Set ApplicationContext origin property when using Web Start (PIVOT-17). - Border corners are not painted correctly (PIVOT-48). - WTKXSerializer throws on empty string attributes (PIVOT-52). - Folder#refresh() doesn't fire events (PIVOT-54). - TableView.RowEditor does not extend Editor (PIVOT-56). - TerraTreeViewSkin#nodesSorted() is unimplemented (PIVOT-58). - TreeViewNodeEditor and ListViewItemEditor break on sorted lists (PIVOT-59). - TreeView does not appear to handle sorting properly (PIVOT-60). - TreeBranch does not handle comparator completely (PIVOT-61). - Drop shadows in menu and list button popups don't fade when window is closed (PIVOT-65). - Override both equals() and hashCode() (PIVOT-70). - Dash array (focused state) values are incorrect (PIVOT-71). - Threading issues with ApplicationContext$ScheduledCallback (PIVOT-76). - MenuPopup should automatically close when a user clicks outside its bounds (PIVOT-91). - Exception in DropShadowDecorator (PIVOT-94). - Build yields incorrect output in environments whose default encoding in not UTF-8 (PIVOT-97). - Minor repaint issue in TerraSpinnerSkin (PIVOT-100). - Exception thrown upon application startup (PIVOT-101). - Data-driven component skins do not call render() on renderers before calculating preferred size (PIVOT-107). - Calendar weekdays don't line up for French and Spanish (PIVOT-108). - ImageViewSkin does not correctly propagate repaint region (PIVOT-109). - Multiple response headers not handled correctly (PIVOT-125). Additional Notes ---------------- - Although the TextArea component is included in this release, it is not completely functional. It works reliably in read-only mode, but editing support is incomplete. - Although the WTKX Translator and Compiler are included in this release, they are not completely functional and should be considered experimental.