================================================================================
  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 2.0:

** New Feature
    * [PIVOT-28] - Add tick marks to Slider component
    * [PIVOT-74] - Add a "closeable" property to TabPane
    * [PIVOT-239] - Create an Eclipse launcher for org.apache.pivot.wtk.Application and
      ScriptApplication
    * [PIVOT-368] - Provide a means for programmatically detecting current application context
    * [PIVOT-372] - Support undo/redo in TextInput and TextArea
    * [PIVOT-418] - Multiple host windows
    * [PIVOT-458] - Add a "repeatable" property to ListButton
    * [PIVOT-512] - Fire tooltipTriggered() event from Component
    * [PIVOT-553] - Add support for named styles
    * [PIVOT-555] - Re-implement TextArea
    * [PIVOT-556] - Add a <bxml:reference> tag
    * [PIVOT-557] - Pivot javadoc artifacts for Maven
    * [PIVOT-562] - Allow <bxml:include> tag to include arbitrary content
    * [PIVOT-568] - Add support for dynamic data binding
    * [PIVOT-574] - Add support for CSS-like type selectors
    * [PIVOT-579] - Provide additional Color schemes
    * [PIVOT-595] - Add data binding support to Button
    * [PIVOT-607] - Creation of an application wide 'focus decorator' which would be applied to
      the focused Component
    * [PIVOT-621] - BindMapping for ImageView
    * [PIVOT-625] - Enable item deselection in list based controls (ListView, TableView, TreeView)
    * [PIVOT-629] -  Set ApplicationContext origin property in desktop application
    * [PIVOT-639] - Add navigation between words in TextInput
    * [PIVOT-672] - Add a StringSerializer

** Improvement
    * [PIVOT-31] - Add rich text support to TextPane (formerly TextArea)
    * [PIVOT-245] - In Skin json file, add optional coefficients for darkening and brightening
      base colors
    * [PIVOT-287] - Inconsistency between TableView, ListView, and TreeView as to when to consume
      arrow key events
    * [PIVOT-369] - Unable to easily drag multiple selected items in ListView
    * [PIVOT-468] - Update tutorials to use Bindable where applicable
    * [PIVOT-470] - Rename org.apache.pivot.wtkx.WTKXSerializer to
      org.apache.pivot.beans.BXMLSerializer
    * [PIVOT-477] - Window and DesktopApplicationContext should support
      java.awt.Window.setIconImages() to display multi-resolution icons
    * [PIVOT-482] - Eliminate ThreadUtilities?
    * [PIVOT-488] - Add resizing support to Alert etc
    * [PIVOT-502] - Building with Ant 1.8 gives warnings on the javac tasks
    * [PIVOT-514] - Create an annotation to specify the default "child" property of a component
    * [PIVOT-519] - CSVSerializer does not trim values
    * [PIVOT-520] - add a name property to Component
    * [PIVOT-523] - Rename Alert/Prompt getSelectedOption() to getSelectedOptionIndex()
    * [PIVOT-524] - Add default properties to components and other classes as appropriate
    * [PIVOT-534] - Expose transtion durations & rates in Terra theme skins as styles to allow
      them to be configured
    * [PIVOT-537] - Move message processing functionality to pivot-core
    * [PIVOT-541] - Remove "name" properties in Menu.Item and Menu.Section
    * [PIVOT-543] - Rename Limits min and max fields to minimum and maximum, change limit() to
      constrain()
    * [PIVOT-544] - Add a command line argument, "--undecorated", to support removing native Frame
      chrome on a non-fullscreen window
    * [PIVOT-546] - Bindable improvements
    * [PIVOT-548] - Fire selection change events when selection changes indirectly
    * [PIVOT-550] - Optimize org.apache.pivot.wtk.text.TextNode
    * [PIVOT-563] - Configurable Tooltip delay
    * [PIVOT-565] - Use TextArea in default tooltip rather than Label
    * [PIVOT-569] - Make ListView selectedItem, etc. notifying properties
    * [PIVOT-570] - Make tab pane button and accordion header content and renderer configurable
    * [PIVOT-583] - Add parent to TreeNode/TreeBranch
    * [PIVOT-584] - Update BXMLSerializer extensibility
    * [PIVOT-587] - Allow caller to specific table view header renderer on a per-column basis
    * [PIVOT-590] - Make "collapsible" an intrinsic property of TabPane
    * [PIVOT-593] - Rename SuggestionPopup "suggestions" property to "suggestionData"
    * [PIVOT-596] - BXMLSerializer should call bind() on superclasses when appropriate
    * [PIVOT-599] - Move SuggestionPopupListener#selectedIndexChanged() event to
      SuggestionPopupSelectionListener interface
    * [PIVOT-611] - add a method hasListener() in ListenerList object
    * [PIVOT-614] - add a clearFlag() method in Form
    * [PIVOT-615] - Add 'collapsible' utility methods and a closeTab method to TabPane
    * [PIVOT-616] - TextInput API improvements
    * [PIVOT-617] - Optimize performance of ResultList
    * [PIVOT-618] - CSVSerializer API improvements
    * [PIVOT-620] - Allow serializers to fire events as data is read
    * [PIVOT-622] - Add setExpandedIcon() overloads to org.apache.pivot.wtk.content.TreeBranch
    * [PIVOT-626] - Add "userData" member to TreeNode to facilitate right-click menu handling
      (among other things)
    * [PIVOT-627] - Painting RadioButton with null ButtonData
    * [PIVOT-628] - Allow BXMLSerializer to assign null values to bean properties using attributes
    * [PIVOT-632] - Add a source argument to Action#perform()
    * [PIVOT-634] - Provide automated support for setting enum values
    * [PIVOT-640] - Add a Query.Method argument to QueryServlet#createSerializer() and validate()
    * [PIVOT-644] - Improve JSONSerializer and CSVSerializer to ignore a BOM at the beginning of
      file
    * [PIVOT-645] - Remove the keyboardFolderTraversalEnabled style from TerraFileBrowserSkin
    * [PIVOT-650] - Add platform support for SVG images
    * [PIVOT-653] - Eliminate use of field prefix in BeanAdapter
    * [PIVOT-654] - Simplify editor APIs
    * [PIVOT-661] - Standardize on use of leading slash character for resource paths
    * [PIVOT-663] - Provide platform-independent keystroke mapping to "command" key
    * [PIVOT-673] - Pimping Alerts
    * [PIVOT-674] - Add Translations for existing Resources

** Bug
    * [PIVOT-390] - issue for 'ColorChooser' Component
    * [PIVOT-392] - Calendar issue?
    * [PIVOT-399] - DesktopApplicationContext.setFullScreen(true) issue.
    * [PIVOT-487] - Pivot doesn't start in turkish locale (and other locales)
    * [PIVOT-511] - Labels doesn't appear in Print from Browser
    * [PIVOT-545] - Preferred size limits don't take constraints into account
    * [PIVOT-552] - ListButton does not update selected index in response to model changes
    * [PIVOT-554] - org.apache.pivot.beans.BeanAdapter doesn't gracefully handle keys that are
      nulls or empty Strings
    * [PIVOT-561] - The Form.Section Heading is not displaying for the first Section of a Form.
    * [PIVOT-577] - Time.decode() throws NPE when no milliseconds present in input string
    * [PIVOT-586] - Alt+A in Polish locale incorrectly selects all text
    * [PIVOT-597] - StackPane with padding style
    * [PIVOT-598] - Not found url on BUILD file
    * [PIVOT-601] - missing pivot-web-server artefact on local Maven repository
    * [PIVOT-612] - TextInput validator problem when modifying selected text
    * [PIVOT-613] - RadioButton, etc. does not correctly report opaqueness
    * [PIVOT-619] - TableViewHeader does not repaint properly when used in a sheet or dialog
    * [PIVOT-630] - NPE when using ReflectionDecorator on Dialog with TextInput inside
    * [PIVOT-635] - Ficker effect on TextPaneDemo
    * [PIVOT-646] - ListButton focus incorrectly transfers out of selected ListButton back to
      previously selected ListButton
    * [PIVOT-648] - useless ResultList constructors due to ignored argument
    * [PIVOT-651] - unexpected layout in row editor
    * [PIVOT-652] - Missing days in French localization of CalendarButton
    * [PIVOT-657] - FileBrowserSheet not responding
    * [PIVOT-662] - Ctrl-V pastes clipboard two times!
    * [PIVOT-664] - Mouse wheel scrolls ScrollPane AND web page in which the applet is contained

** Task
    * [PIVOT-643] - Create one or more upgrade guides to help users transition between Pivot
      releases

** Test
    * [PIVOT-517] - Not clear that test suite executes all tests in the tests directory
