Hi all, As you can see from previous emails, the Pivot project is winding down, and attempting to prepare a final release before archiving to the ASF Attic. We have a build VM up and running, all the extant code changes have been committed, and I have started preparing the final RELEASE notes.
I have been quite busy with personal life in retirement and have been overwhelmed with this “simple” task, so asking for help to convert the attached pre-processed list of changes and issues (“pivot-release-notes.txt”) into some kind of coherent release notes that would be a) Not too verbose, but b) not too terse, considering the breadth and scope of some of these changes. I realize that the mast majority of these changes have been mine, and so I’m the likely candidate for doing all this, but the “lack of progress” tells me that if anyone could help it might go faster…. Once the notes have been prepared, I think we’re just a build and a vote away from the final release, and then retirement, so … Many thanks, ~Roger Whitcomb PMC Chair - Apache Pivot project ASF Member P.S. The attached “logs.calc” script can be run by the “Calc” program, built from the repository at: https://github.com/rlwhitcomb/utilities/
SVN log over {2014-05-20}:{2024-04-12} has 6250 lines Total number of revisions: 782 ==================== Issues Resolved (96) ==================== * [PIVOT-498]: r1817402: Make the default executor service for Task, TaskSequence, and TaskGroup into an "Executors.newCachedThreadPool()", instead of our simple service, which was created as a workaround for some problems seen ~7-8 years ago. Move that "DefaultExecutorService" out to its own "SimpleExecutorService" class, so it can still be used as a workaround if necessary. * [PIVOT-636]: r1817567: Calculate non-zero splitter preferred sizes as the sum of the splitter thickness and the top/left and bottom/right component preferred sizes (if any). * [PIVOT-689]: r1624221: set the same background color used in TextInput even in other text components * [PIVOT-698]: r1613063: use the same palette color of other borders even in tooltips * [PIVOT-734]: r1823532: Several changes necessary to solve this (although all these may be a bit of overkill, at least the problem is solved): * The earlier changes mentioned in the JIRA issue involving when to load the children in the skin. * Two new calls to repaint in the case of "showEmptyBranchControls" is false. * The main thing: update "monitorBranch" to monitor the branch itself when called from "setSelectedPath" (if the node is indeed a branch) so that when updates are made the branch will get repainted, and the other changes will cause the correct branch control to actually get painted. * [PIVOT-799]: r1692064: update LICENSE with reference to Scala license because org.apache.pivot.functional.* classes are derived/inspired from Scala code * [PIVOT-850]: r1818207: One small font placement problem in TextPane (specifically in the "paint()" code for TextPaneSkinTextNodeView: the y position should be the ascent + leading in order to agree with the placement using line height - descent (used with GlyphVector drawing). So, add in the LineMetrics.getLeading() to the y position. * [PIVOT-871]: r1877271: Final touches on the NumberRuler: add a style to show (or not) the number at the zero position. Enable this style on the ComponentExplorer source window. Minor tweak: use a const style string for italic font in the inspector window. * [PIVOT-891]: r1830106: Add some unit tests for the new CharUtils methods. Small tweak to Javadoc in CharSpan. * [PIVOT-915]: r1704223: update release from 1.6 to 1.7 in source files for generated pages/deploy files in web site * [PIVOT-916]: r1624381: Make the default uncaught exception handler available as a separate method in ApplicationContext so that user applications that implement the Application.UncaughtExceptionHandler interface can have access to the default implementation if they need it. * [PIVOT-923]: r1611029: (final part of the patch) merge from 2.0.x * [PIVOT-948]: r1756439: Add an example program that both illustrates how to use data binding (in this case, "selected item binding" with a ListButton), but that also serves as a check on the fix for this issue. Having an unselected item used to cause the bind mapping not to be called during a "store" operation. Now it is called always (if set), and the mapping is responsible for translating between the unselected state/index and the underlying stored value. Merged revision 1756437 from branches/2.0.x to trunk. * [PIVOT-949]: r1690655: second part of the fix (enhancement, add the ability to specify a bxml file to load even as a variable in a script) * [PIVOT-951]: r1602234: Only first click is received by container listeners Sample application provided by user to test this issue. Usage: javac Pivot951.java java Pivot951 Click on the window, and watch the console output for messages. This is a merge of revision 1602233 from branches/2.0.x to trunk. * [PIVOT-953]: r1610563: Update startup positioning code to make sure that the final position for a desktop application is within the current virtual screen area. This is a better fix for earlier code that attempted to make the x and y values never go negative for two reasons: the previous code only worked on the --x and --y values specified on the command line, but not for saved positions, and for multiple monitor configurations where the secondary monitor(s) are left / above the primary monitor, the actual virtual screen coordinates could legitimately be negative and the window is still visible. So, compute the bounds of the whole virtual screen space, by getting the union of all the screen device bounds, then make sure the x and y coordinates (just before using them to set the main window position) are within the virtual screen boundaries. * [PIVOT-954]: r1611829: Resolve "IndexOutOfBoundsException" thrown from TextAreaSkin when you have either an empty document or any document where the first line has nothing (except the line ending), and you double click on the first line (or any line in the case of an empty document). Basically we just need to catch the "start" value being negative before trying to get the character there. * [PIVOT-955]: r1616229: fix draw background when themeIsFlat in TerraSpinnerSkin (width was less than required, so a little artifact was visible but mainly with Calendars). * [PIVOT-956]: r1622265: add documentation (in JavaDoc package file) for the new flag (transitionEnabled). * [PIVOT-957]: r1621280: Remove deprecated classes and methods * [PIVOT-958]: r1678312: updated the new default font (from Verdana to Dialog), but only for trunk * [PIVOT-959]: r1631371: merge from 2.0.x * [PIVOT-960]: r1828778: Update the timing part of BindTest to report time in seconds, not nanoseconds. * [PIVOT-964]: r1712175: Fix another place where the "nashorn.global" object has to be searched in order to find script variables defined when using Java 8. The trick is that now script variables are a part of the Nashorn global space, which is a sub-object of the regular namespace. So, the additional steps which are necessary in the case that a variable is not found would be to then get the "nashorn.global" object, and if it exists transform it into a "Bindings" (if possible) and then search for the value there. Note: this fixes the particular case reported by user, but I'm pretty sure there are other places that needs this same treatment. * [PIVOT-965]: r1817960: Fix the problem introduced by earlier changes that caused two or more listener list callbacks to overwrite earlier ones, causing the wrong callback to be invoked. Solution is to create a new engine for each callback function defined, so they are unique. * [PIVOT-966]: r1678319: add some more info in console (merge from 2.0.x), and fix some warnings * [PIVOT-967]: r1675517: Fix the JSONSerializer to correctly deal with special characters inside string values (especially \r and others). Add the ability to directly support java.util.Map values in an object passed to JSONSerializer.writeObject (by instantiating a MapAdapter around the java.util.Map object). Update the JSONSerializerTest to test these changes (both read and write). Update the "map.json" with test values. * [PIVOT-968]: r1684802: Implement some Java 7 changes to use try-with-resources in various places where it improves code readability and reliability. Some other miscellaneous code cleanup (mostly reformatting of lines that were wrapped from an earlier change). * [PIVOT-969]: r1684960: Fix the broken build because the concrete instances of ApplicationContext don't actually implement the UncaughtExceptionHandler interface. So, fix this by implementing in ApplicationContext itself. Also rearrange the exception handling there. Make an override of "handleUncaughtException" to handle either with or without the thread. Then modify the "catch" statements in the ApplicationContext subclasses to catch "Throwable" instead of "Exception". Make a "finally" clause in a couple of places to remove the application at the end, no matter if an exception is thrown. Note: this still doesn't address how to set the uncaught exception handler in threads we create (such as for Task). Still working that out. * [PIVOT-971]: r1817316: Update the CheckedListViewTest program to test/demo the tri-state checkbox feature. Add an Adapter class to ListViewItemStateListener since it now has two methods in the interface. * [PIVOT-972]: r1688484: Fix some more bugs with the calculator tutorial: * Implement the difference between "Clear" and "All Clear". * Highlight the current operator button (by changing border color). * When two operators are pressed in a row, just change operators, don't do the prior operation. * Fix backspace not to do it twice, and to work properly when clearing the last digit. * [PIVOT-974]: r1691618: Fix BXMLSerializer to correctly deal with the new Java 8 Nashorn script engine by doing two things: 1) Accessing global variables needs to be done through the "nashorn.global" object. 2) The "nashorn:mozilla_compat.js" script needs to be loaded first before any other scripts are executed. This change implements these two fixes. * [PIVOT-975]: r1692159: Build problems with Java 1.8.0_45 First, enable Java 1.8 as a valid Java version number. Then, there are errors related to LocalManifestAdapter being a second class within the LocalManifest.java file. It should be moved to its own source file. This is a merge of revision 1692157 from branches/2.0.x to trunk. * [PIVOT-976]: r1745405: More Javadoc fixes for the warnings from Java 8. This is the LAST! All the remaining warnings have been removed. NOTE: this does NOT mean that all the Javadoc is correct, complete, informative, helpful, or otherwise as good as it could be. All this means is that the Javadoc processor no longer complains about it when you run "ant doc". * [PIVOT-977]: r1694284: Correct a typo in one of the test programs. * [PIVOT-978]: r1817805: PIVOT-999: The change to TerraCalendarSkin to use NumericSpinnerData with the proper date range results in a potentially infinite loop resetting the year value, because the "index" is no longer the year value (the "item" is). So, we need to change all the year spinner interactions to use the selected ITEM instead of the INDEX. Also correct a calculation error in the TerraCalendarButtonSkin painting code that was chopping off the right side of the date display, caused by the changes around padding widths. Add a diagnostic message to one of the exceptions in BXMLSerializer so we could actually track down this problem. * [PIVOT-982]: r1727872: Any file name typed into the Save As mode file name input for a VFS Browser Sheet would reject it with the field flagged as an error. This was bascially because code ported from the regular file browser didn't do the right thing to resolve the file and ended up with a "file://" URL (for a local file) rather than a URL on the remote host. Using the current base directory to resolve the name results in correct behavior for at least the normal cases. This hasn't really been tested yet with other edge cases. * [PIVOT-983]: r1727931: A similar bug was fixed in the VFS File Browser. The issue is that the "getRowAt" method of TableView returns -1 if the given y position is past the end of the data length. Trying to get row -1 from an ArrayList gives this IllegalArgumentException. The solution implemented in the previous fix was simply to check for the -1 row value and exit early in that case. So, port that fix to the regular File Browser. * [PIVOT-984]: r1818163: Actually use one of the CSSColor values for the tutorial "Ruler" class -- its background color is CSSColor.LightYellow, so specify that. * [PIVOT-985]: r1814125: PIVOT-985 (addendum): Add tests to ColorUtilitiesTest to specifically test the light/dark gray colors as being valid and usable. * [PIVOT-986]: r1735288: One more minor correction (that probably doesn't even make a difference), but for consistency's sake: use the "isFileHidden" method in the other place that was just calling "isHidden" in the VFS Browser code. * [PIVOT-987]: r1740570: Address the different handling of script return values from attributes versus elements. The script return value was being ignored in AttributeInvocationHandler and the default values were always being used. But in the similar code in ElementInvocationHandler the script result was being used and the defaults only used if the script method returns nothing. Bring the code for attributes in line with that for elements. * [PIVOT-988]: r1747431: Fix the inclusion check in TextPaneSkinElementView.getCharacterBounds(). It was using >= offset && <= offset + length, when it should be just: >= offset && < offset + length Thus the previous element was used to get the paragraph bounds, which results in the position being on the previous line. This fixes a variety of problems having to do with selections in TextPane! * [PIVOT-989]: r1747445: Use the correct Charset in StringSerializer.writeObject(). The "getBytes()" call was not specifying any Charset, thus getting the platform default (which on Windows is usually Win-1252), which is usually not the same as the UTF-8 default which is used in this class. So, use the given Charset. Also, in "trunk", use the StandardCharsets.UTF_8 value, instead of searching by name. Note: this part of the change will not be propagated to "2.0.x" because it still needs to compile under Java 6. Update the StringSerializerTest with a specific test of this, and include a byte dump so we can actually examine the bytes to make sure (the console output, especially on Windows, is not helpful). * [PIVOT-990]: r1810561: There was still a problem in the second code path: x/y + width/height greater than display width/height. So, set the x/y to the display width/height minus the menu size, max with 0 so we don't go off the top/left. This seems to work very well with all sizes of menu/display. * [PIVOT-992]: r1783447: Change the "getSelectedText" method of TextPane to just use the equivalent call to "getText(start, finish)" instead of doing a "getSelectedRange()" and serializing that. The results will be different in that if the selection doesn't actually encompass an end of line, then the result will not contain a spurious newline. The difference affects find/replace operations (for instance) that would be calling "getSelectedText" and doing a find operation on a piece of text that doesn't actually appear in the document (like "abc\n"). I suspect that this new method is actually a bit faster than the old way, although that probably makes little to no difference in actual use. * [PIVOT-993]: r1792531: Update Version.java to correctly calculate the long "getNumber()" value. Update IllegalArgumentException messages to indicate up to 7FFF inclusive. Add a core "VersionTest.java" to test the new Version parsing and "getNumber" calculations. * [PIVOT-995]: r1792559: Need to reload the "typeImageView" after an Alert or Prompt window close event has cleared it, when the window is re-opened. Otherwise the message type icon will not be shown. * [PIVOT-996]: r1792807: Yet more safety measures: Parse the version strings inside a new "safelyDecodeVersion()" method that traps all exceptions and provides an "empty" version (that is, "0.0.0_00") in case of any errors. This is what the Pivot version already did, so use the same technique for the JVM and Java versions. Change the Javadoc for the three accessor methods to note this change of behavior in case of errors. Note: This should make application startup possible no matter what might happen to version strings in the future. We don't want these types of urgent issues to come up ever again, to where the user application won't start just because of a JVM update/change. * [PIVOT-997]: r1795444: Remove premature references to TextInputMethodListener which were inadvertently added in addition to the changes for WTKListenerList. * [PIVOT-998]: r1796667: Update build requirements for "trunk" to Java 8. First step is to change the compiler source and target to 1.8 in the "build.properties". * [PIVOT-999]: r1888966: PIVOT-1032,PIVOT-1047: Clean up WindowSkin: * Implement focusTraversalPolicy as a static lambda * Remove methods that are the same as the default interface methods * Fix checkstyle problems * Add @FunctionalInterface to FocusTraversalPolicy * [PIVOT-1001]: r1801111: Fix problem where a TextInput without text and with an empty prompt (not null, but empty) can cause an IllegalArgumentException from an empty text iterator passed to TextLayout. * [PIVOT-1005]: r1808126: Fix the deletion of paragraph terminator simply by checking if remove count is <= 1. This fixes the basic issue that you can't delete the terminator, but there are still other problems that need fixing. * [PIVOT-1006]: r1809109: Fix the calculations on when to include the composed text at the end of a paragraph to ignore any parent TextSpan nodes if necessary. This would be the case when the hierarchy is Paragraph->TextSpan->TextNode. * [PIVOT-1007]: r1810613: Several changes to get Ctrl-Tab and Ctrl-Shift-Tab to cycle among the current tabs in a TabPane container. 1. Implement the logic in TerraTabPaneSkin.java. 2. Add methods to EnumSet to create enum sets ("of", "addAll", "noneOf") that are similar to the methods in Java's EnumSet. 3. Add an "areAnyPressed" method to Keyboard to check a set of modifiers. 4. Change ComponentSkin to only do the "Tab" logic there is none of the modifiers except SHIFT are pressed. This allows Tab to cycle through components in a container while Ctrl-Tab moves around the tabs (each of which is a container). 5. These other changes use the new EnumSet methods for convenience. * [PIVOT-1008]: r1811245: Add support for Enum values for automation IDs in two places: * Automation.java - support these values in all the basic methods (get, add, and remove). * Component.java - add another flavor of "setAutomationID" that accepts an enum value as the ID parameter. Note: the values are still stored as strings for backward compatibility, but enum values are accepted as a convenience, and so enums can be easily used for compile-time checking of ID values. * [PIVOT-1009]: r1811271: Add a field to Task to record (as a WeakReference) what the thread was that executed the task. Add an accessor to get the value. Add a new class WTKTaskListener that implements a default piece of code for the "executeFailed" callback that calls the ApplicationContext.uncaughtExceptionHandler with the Task fault value, along with the thread context the Task was run under. * [PIVOT-1010]: r1813048: Add LocalDate and LocalTime support to our CalendarDate and Time classes to facilitate interaction with the new Java 8 time classes. Also make some other changes: * Add a CalendarDateTest class to test these things. * Beef up the TimeTest class to actually do some asserts, and to test the LocalTime conversions. * Add more supported formats in CalendarDate.Range and Time.Range "decode" methods: JSON array/list format, and simple CSV list (similar to other changes to Bounds, Span, etc.) * Add "equals" and "hashCode" methods to these Range classes. * Use Utils methods to check parameters. * [PIVOT-1011]: r1822906: Remove duplicate import from previous changes. * [PIVOT-1012]: r1822921: Fix the remaining calls to GraphicsUtilities.decodeColor that did not previously have the color name for the error message. There are a couple of calls that do not have it (ColorItem, for instance), and that should be okay. * [PIVOT-1013]: r1815159: Implement the button press action queuing for MenuButton. PIVOT-1012: Implement parameter validation using "Utils" methods in TerraMenuButtonSkin. * [PIVOT-1014]: r1888682: PIVOT-1032,PIVOT-1056: Changes to NumberRuler: * Reduce skin "setter" methods * Move default settings to theme defaults file * Fix "checkstyle" messages * [PIVOT-1016]: r1817938: Add tests of all the other potential new Java version strings found in the JEP-223 paper, just as a final check. * [PIVOT-1017]: r1818707: PIVOT-1019, Tweak the positioning of horizontal ruler text, and clean up some code. Copy a bunch of the code and concepts from RulerSkin to NumberRulerSkin for drawing the horizontal ruler and text. * [PIVOT-1018]: r1818230: Propagate the scroll pane background color to the default corner components when they get made visible so the correct background is painted. * [PIVOT-1019]: r1819087: Several updates to NumberRulerSkin: * Add a new "rowPadding" style so this ruler can be used nicely with TableView. * Fix the drawing because with long lists (large scroll pane size) we exceed the usable precision for "float" (which is somewhere around 800,000 lines in the LargeData demo). Do this by creating a translated graphics using "int" coordinates to draw in and then drawing with "float" values inside the translated one. This is essentially what TableView and ListView do with their renderers. Note: there are now so many styles with NumberRuler it would be good to consolidate them somehow (internal "padding", "markerInsets", and now "rowPadding"). * [PIVOT-1020]: r1875864: Add some more predefined styles to the Style enum; things that are used by third-party applications, and so could be useful. * [PIVOT-1021]: r1822661: Fix a problem with the updated selection after undo at the end of the document. * [PIVOT-1022]: r1820931: Make similar changes to Queue and all its implementations: add a "maxLength" property and implement checking this length before queuing a new item. Add a test in QueueTest.java. Update Javadoc in Queue.java and Stack.java about what the max length/depth means for the enqueue/push process. * [PIVOT-1023]: r1820938: Implement Ctrl/Cmd-U to unselect everything in TableView skin. Update one test program to allow testing of the multi-select features. * [PIVOT-1025]: r1821520: Fix the Decimal and Formatted Validators to allow a leading "+" sign in the "isValid" and "parseNumber" methods. * [PIVOT-1027]: r1855341: Finish adding the annotation to the rest of the places where it applies. * [PIVOT-1028]: r1823598: In TerraListViewSkin when the underlying data list has items removed or is cleared, and the "highlightIndex" is within the affected range, then reset it so we don't get the IndexOutOfBounds when leaving the now differently-sized window. * [PIVOT-1029]: r1824382: Updates to Meter code, including adding the first ever test of a "wtk" Component here: * Meter.setText was firing the listener every time, not only when the text actually changes. * TerraMeterSkin had no methods to set the colors via int indexes into the Theme colors. * Introduce "MeterTest" which basically only test for the listeners being fired at the proper times (that is, when things actually change). * Had to fix the "test" macro in the "build.xml" so that the built .jar files are included in the classpath so that this new Component test will work (otherwise the Theme doesn't get loaded). * [PIVOT-1030]: r1824532: Update FileSizeFormat to allow for just byte values. Change the formatting to put one fraction digit for scaled values less than 10, and otherwise to use none. Code is simpler and shows small file sizes as exact number of bytes, which was the point here. Also changed the file browser skin to show blank size for directories (as was already done in the VFS Browser skin). * [PIVOT-1031]: r1825599: Fix Javadoc from last change. * [PIVOT-1032]: r1913476: Last set of changes to reduce "checkstyle" violations, plus some code enhancements. * [PIVOT-1033]: r1829940: Update the parsing of command line options in BrowserApplicationContext and DesktopApplicationContext to allow the "--option" form, which sets the value in the "properties" map to "TRUE". Syntax error if there is "key=" (i.e., with no value after the "=") or there is more than one "=", or the key itself is empty. * [PIVOT-1034]: r1833140: Several things related to theme initialization: * Allow ThemeNotFoundException to have a custom message. * Change several other exceptions in Theme and TerraTheme to use ThemeNotFoundException with a custom message. * Simplify the theme classes by using the existing "set" method instead of accessing the "componentSkinMap" directly, and make it private. * Add checks in that "set" method so that if and override is made that the second class is a subclass of the existing one. Just a safety check. * Make a bunch of style cleanups in this files (PIVOT-1032). * [PIVOT-1035]: r1837729: Change build number to the "Last Changed Rev" reported by SVN so that: * The contents of the build is traceable to SVN revisions. * The build number does not change unless the build content changes. * The build number increases for every change, and is a "global" value (so that anyone who does a build with the same contents will have the same build number). * [PIVOT-1036]: r1834042: Add the Japanese resource files. * [PIVOT-1037]: r1833950: Add checks for this specific condition, namely that the count of nodes to be removed (from the visible nodes list) is out of range of what is currently in the children list, and just ignore the request. * [PIVOT-1039]: r1840595: Address the remaining deprecation warnings (about Class.newInstance) in all the source. The remaining warnings are about the deprecation of JApplet, which is another WHOLE issues entirely. * [PIVOT-1040]: r1840591: Add the (simple) renderer that allows these vertical buttons. Add a test program to illustrate/test the renderer. * [PIVOT-1041]: r1838770: Add a "Constants" class and put a few common values into it. I have looked for other things, but nothing else stands out as being a "common" constant... PIVOT-1032: Also fixed some style errors in these files along the way. * [PIVOT-1044]: r1861203: Fix BXMLExplorerDocument to use the new Files methods to avoid instantiating a FileInputStream. * [PIVOT-1045]: r1864990: Start refactoring the read-only collections to use a common base class: * Implement ReadOnlySequence which just throws the exception for the applicable methods. * Redo ArrayAdapter, EnumList, ImmutableList, and NumericSpinnerData as the first fruits. * Misc. changes to ArrayList to spiff it up, including removing the now redundant "addAll" method, adding a constructor with capacity and comparator and redoing binarySearch to use the default comparator from Arrays.binarySearch. Add a test of that to ArrayListTest. * Correct some small style errors as well (mostly Javadoc and final parameters). * [PIVOT-1046]: r1864994: Implement the new ColorUtilities methods, deprecate the old one and refactor all callers to use the new methods. * [PIVOT-1047]: r1889346: PIVOT-1032: Make TextInputSelectionListener back into a FunctionalInterface by removing default implementation; fix "checkstyle" problems. * [PIVOT-1051]: r1885491: Update some documentation around "decodeFont". * [PIVOT-1053]: r1887560: Convert the remaining code (demos, etc.) to using new "putStyle", "getStyle", and "copyStyle" methods in Component. * [PIVOT-1054]: r1887788: Fix the drawing problem with border titles at larger font sizes. * [PIVOT-1056]: r1888682: PIVOT-1014,PIVOT-1032,Changes to NumberRuler: * Reduce skin "setter" methods * Move default settings to theme defaults file * Fix "checkstyle" messages * [PIVOT-1057]: r1888683: Add "thick" focus rectangle support to TerraTheme. * Add the new property to theme description files. * Add code and property to TerraTheme. * Add new method and constants to GraphicsUtilities to select a nice "thick" stroke. * Consolidate the determination of the focus rectangle stroke to a new method in ComponentSkin, which everyone calls. * Tweak drawing in a couple of places to make the thicker focus rectangle play nicer with the other drawing code. * [PIVOT-1058]: r1888842: PIVOT-1032: When dealing with files in FileBrowser, use the canonical version in order to tell if the file really belongs to the root directory (necessary if the root is "." or "..", for instance). Fix "checkstyle" problems. ================================ Other Changes/Enhancements (318) ================================ * Revision r1600603: clarified TablePane Column and Row sizing, as written here: http://apache-pivot-users.399431.n3.nabble.com/TablePane-td2037782.html * Revision r1600878: clarified TablePane Column and Row sizing, and add a sample inside text * Revision r1602469: update trunk with latest changes in 2.0.x * Revision r1603530: Not part of a specific issue, but this change is a further attempt to make TextArea and TextPane more compatible (i.e., useful as drop-in replacements) for text-only processing. Specifically, this change basically converts the existing "insert" and "delete" methods in TextPane into "insertText" and "removeText" interfaces, which mimic what is in TextArea, while leaving "insert" and "delete" there to call the new methods. * Revision r1603751: update forms tutorial with ListButton, to better show a Form containing different kind of component (and in Component Explorer for example disable the form and see what happens) - merge from 2.0.x * Revision r1605125: trim-whitespace * Revision r1610980: source cleanup in latest eclipse, using Pivot profile * Revision r1614462: Corrected a misspelling in an error message. * Revision r1615517: cleanup and fix some eclipse warnings * Revision r1615519: cleanup and fix some eclipse warnings * Revision r1615963: fix some eclipse warnings, but in a better (should be more performant) way; trim-whitespace * Revision r1622192: cleanup: clarified/commented unused code (real, or false positive and there add SuppressWarnings annotation) * Revision r1623361: small refactor: define/use a constant to clarify its usage * Revision r1624277: trim-whitespace, and fix some eclipse warnings * Revision r1635654: Update the build.xml to use the ${permissions} setting from the build.properties to set the .jar attribute "Permissions". Change the default from "sandbox" to "all-permissions" in order to get an all-privileged applet. * Revision r1642790: Change the code in ChartView.java "setValueMarkers" method to not create a new list listener every time. The listener is notifying the skin (basically) when changes in the value markers list happen, so it only needs to be created once and then assigned to the new list every time the list changes. And it must be removed from the old list at that time. Change the logic to look like all other such occurrences. Basically, heap monitoring showed the large number of these listener objects being created, which are unnecessary. * Revision r1675204: Code cleanup: Fix the Javadoc for Container.requestFocus to correctly document the return value (it actually returns a boolean, not a Component reference, just like the Component base class method). * Revision r1678311: fix comment, from multiple to single line * Revision r1681231: Code enhancement: Add two new convenience methods to CalendarDate: * addMonths(int months) * addYears(int years) to allow quick navigation and arithmetic using CalendarDate values. * Revision r1684539: Clean up some of the line wrapping that was done that has left a number of comments looking very strange. * Revision r1684544: Minor cleanup of the Pivot859 test program: * Change the status message from the "Clear" button. * Measure the elapsed time more closely to the actual read from the URL input stream, and measure using "System.nanoTime" for more precision. * Revision r1684545: Code cleanup: Use try-with-resources in the Image loading code to simplify. * Revision r1684760: Code cleanup: Add an "addAll(Collection<T>)" method to ArrayList as a convenience for adding all of any other collection to an array list. I plan to use this in other places, but adding it as a general method to the List<T> interface was too disruptive. * Revision r1684798: Add some Javadoc to TerraTableViewSkin to explain the new "editOnMouseDown" property (both on the "get" and the "set" methods). * Revision r1687873: Adding a new calculator directory to Pivot tutorials. * Revision r1688781: trim-whitespace * Revision r1688783: update Servlet API to that provided with latest Tomcat-7.0.x (7.0.62), or Servlet-3.0, not a specific requirement but useful to refresh this dependency * Revision r1694583: Code cleanup: Don't package up "*.bak" files (editor artifacts). Add some new security-related attributes to the .jar file manifests. * Revision r1694754: Code cleanup: this should eventually go into a JIRA issue... Small changes to allow ComponentNode and ImageNode to actually work inside a TextPane. Not sure of the reasons, but it was very difficult to get this to work without turning both into subclasses of Block instead of Node. Now, at least, one can insert either straight into a Document and then into a TextPane and they will work. Update the HyperlinkButtonTest program to illustrate this. * Revision r1694851: Code cleanup: Allow ComponentNode inside a TextPane to contribute its text to the overall text of the component. Do this by extracting whatever text I can get from whatever component is being used. The only exceptions are ListView, TableView, etc. which have lists of data. Otherwise Containers search their children, and Label, Button, TextInput, TextArea and TextPane all contribute their text. * Revision r1701059: Correct an oversight in "TerraTheme" where the new FillPane class did not have its TerraFillPaneSkin registered in the skin map. The only difference this might make is the default background color for a FillPane, since this is the only thing implemented in this file (i.e., all the other skin functionality is in FillPaneSkin). * Revision r1703277: Code cleanup: Reorganize the "build.xml" so that the tests are compiled after everything else, in case there are new methods that the tests depend on that won't compile until the core/wtk .jar files are built. Add a copy of .bxml, .json and .png files in both the tests and tutorials directories, so you can just change to the xxxx/ant-bin directory and run tests with "java org.apache.pivot....." (that is the class name of the test or tutorial). All the resources will be in place to do that now. This is a merge of revision 1703276 from branches/2.0.x to trunk. * Revision r1703293: Code cleanup: After the last change to copy some more of the resources into place so tutorials and tests can run directly, that broke the .jar packaging (caught by the Jenkins jar signing task) because there are now lots of duplicate files. So, exclude these files in the "ant-bin" subdirectories from the .jar packaging (they come from the source directories instead). This is a merge of revision 1703292 from branches/2.0.x to trunk. * Revision r1712160: trim-whitespace * Revision r1712423: Code cleanup: Make a new method in the org.apache.pivot.utils.Utils class which does the common operation of checking an argument for null and throwing "IllegalArgumentException" if it is. This will simplify and standardize a lot of code, since this pattern appears so often, whenever objects are passed as arguments. And it will simplify getting an understandable message thrown out in every case. Before, there were many places that just threw the plain exception without a detail message, but this change will simplify the checking so there can always be a meaningful message. Change just a few files in the "wtk" area that do a lot of this checking already. Of course, there are many more places that could use this treatment... * Revision r1717360: Add a demo program to illustrate how to use ScaleDecorator for zooming in and out of an image. * Revision r1729480: Clean up the DataBindingTest so that it actually works now. This actually only involved simplifying the renderers to only implement the "toString(Object)" methods. But, make the values more interesting, and add explanatory stuff to the GUI so it is more understandable what is actually happening. Note: this uses the HyperlinkButton class that is not available in the 2.0.x branch, so this will need to be changed in order to backport it. * Revision r1729493: Further refinement of the DataBindingTest program: implement the "store" via a new button in the GUI, and update the "context" display of the values after the store operation. * Revision r1734986: Code cleanup: Make an enhancment to Utils.checkNull() to allow an empty descriptiont string to also count for throwing a "plain" IllegalArgumentDescription (i.e., without a message). This will eliminate weird messages in this case. * Revision r1734988: Code cleanup: Add Javadoc to the "Span" class. Retrofit all the null parameter checks to use the new Utils.checkNull() method for consistency. Note: there is NO change in functionality with this, except that all the IllegalArgumentExceptions will now have a message instead of none. * Revision r1735007: Misc. TextPane improvements: * Add some Javadoc, mostly pertaining to the offsets and whether they are document-relative or block-relative. * Notably add the "getText(start, end)" method so TextPane can (almost completely) be used as a drop-in replacement with added functionality for a TextArea control. * Add some error messages to the IllegalStateExceptions that are thrown everywhere. * Revision r1735008: Misc. TextPane changes (more): * Add the supporting methods in ComponentNode, Node, and TextNode to support the "getText(start, end)" method just added to TextPane. * Add some Javadoc (mostly about offsets being document-relative or node-relative). * Correct some weird Javadoc line breaks. * Revision r1743220: Two small fixes in the Query class: * Use the "getContentLengthLong()" method to get the complete content length (instead of the possibly truncated 32-bit length). * Call the "QueryListener.failed()" method before we throw the QueryException if the server itself returned a "not OK" status. This seemed to be an oversight in the original code since every other place we throw we also call this listener method. * Revision r1747375: Code cleanup: some time ago, the whole source in "trunk" was reformatted automatically to wrap at a certain width. Unfortunately this made some code pretty ugly by making a bunch of short comment lines with the leftover stuff. So, correct some of that. * Revision r1747376: Code cleanup: Add some explanatory Javadoc to some of the TextPane code because it is not clear sometimes what offsets mean and what methods do to the novice user. * Revision r1747377: Enhancement: Add a "userData" property to the TextPane "Node" class so that applications building a document can attach their own data structures to the various nodes of the document for cross-referencing or other uses (such as syntax coloring). * Revision r1747378: Code cleanup: some time ago, the whole source in "trunk" was reformatted automatically to wrap at a certain width. Unfortunately this made some code pretty ugly by making a bunch of short comment lines with the leftover stuff. So, correct some of that. * Revision r1747379: Code cleanup: One more line wrapping change. Plus there is a bug (looks like copy/paste error) where the wrong node view is used for the character count. I don't know what symptoms it would cause, but it is clearly wrong, based on all the other times similar logic is used. * Revision r1747382: Code cleanup: Various changes to TextPane: * Use the new Utils.checkNull method in a lot of places. * Add a "checkDocumentExists()" method and use that for a common check. * Add some explanatory text to several IllegalArgumentExceptions. * Deal with all the various types of line endings when reading text from a stream or file, and construct a canonical form of paragraph. * Revision r1747383: Code cleanup: Fix more comments that were wrapped in an ugly manner. * Revision r1747386: Add a convenience method to TextPane's Element class to get the whole text of the element, including all children, paragraph line endings, etc. Note: this parallels the more comprehensive code already in TextPane to get subsets of the text. We should probably move that code into Element so there is only one copy of the logic. * Revision r1747438: Code cleanup: Add some Javadoc to ListView.java to explain some things better. * Revision r1747458: Code cleanup: Add an RGB display of each theme color to the ColorPaletteTest so we can visualize/inspect the current theme color values. * Revision r1748459: Code cleanup: Add Javadoc to the existing Bounds class. Also add null argument checks in several places that lacked it (for consistency with all the other checks that were there). A little reformatting of the code to make it a bit more readable. * Revision r1749542: Wrong positioning of cursor in TextPane when using the END key. * Revision r1756438: Add Javadoc plugin to Maven configuration. * Revision r1759036: Code cleanup: Add two more argument checking methods to Utils.java and use them in a couple of places to test their utility. Also, put some "TODO:" comments into HyperlinkButton where it might make more sense to throw an exception early on rather than much, much later failing silently. * Revision r1759042: Code cleanup: Add a convenience "getString" method to Resources.java for the (very) common case that the resource object will be a string. Use it as an example in the Alert.java code for the message type strings. BTW, change some of the null argument checks in Resources.java to use the new Utils.checkNull() method. * Revision r1759043: Code cleanup: Use the Utils.checkNull() method in a bunch of places where we check for null arguments and throw IllegalArgumentException. This gives us cleaner code, cleaner and more consistent error messages and gives an opportunity for internationalization of these messages since they will be in one place. * Revision r1779123: Update mergeinfo for r1703029 into trunk * Revision r1791190: Add a convenience method to TreeView to expand all the parents of a particular path so that the node at the path is fully exposed. I needed this in our application, and it seemed both useful and easy to implement. Method is "expandToBranch(Path)". * Revision r1792496: update SVGSalamander to latest stable * Revision r1792556: Code cleanup: Initialize "message" parameter in Alert's no-arg constructor to an empty string to avoid IllegalArgumentException when Label text would be set to null initializing the Alert skin. * Revision r1792629: Code cleanup: Just some tiny changes to the XMLViewer application, suggested as I was getting it to work again with Nashorn scripting engine. * Revision r1792630: More work on using the Utils.checkNull utility method and his brothers in more key places. Also moved some of the index checking methods into Utils as well, so they can be used outside of ArrayList (for instance). * Revision r1792636: More work on using the Utils.checkNull utility method and his brothers in other places. * Revision r1793399: Add some new convenience methods for the Alert class -- a new "error" alert that sets MessageType.ERROR, and overrides to set the preferred width of the window also. * Revision r1793523: Fix use of Java 8 method that is not supported by Java 7 (recent changes to BXMLSerializer.java). * Revision r1794420: Add functionality to ScriptApplication such that it will look for the "src=" file as a local file if it can't find it in the classpath as a resource. Add a "script" executable script that instantiates ScriptApplication with the argument as the "--src=" parameter, for convenience in running this app with various of the test "bxml" files. * Revision r1794425: Add a "script.bat" as a shortcut way of running ScriptApplication conveniently from the command line on Windows. The *nix script has already been added. * Revision r1794915: Code cleanup: do some internal refactoring of the keyboard handling in TerraTextInputSkin just for clarity. * Revision r1795128: Trying to debug why unit tests are failing on Jenkins: * Halt and fail the build if the unit tests fail. * Turn on "verbose" for the tests to see exactly what's wrong (note: this should be reverted once the cause is pinpointed). * Revision r1795130: Remove "haltonfailure" for unit tests to allow all tests to complete. * Revision r1795135: Tweak some line wrapping and do a static import to reduce line length. * Revision r1795236: Reset test verbosity to "false" now that we have identified and resolved the cause of the Jenkins test failures. * Revision r1795242: Extend the ScriptApplication program to be able to display BXML files that don't have a Window (or a subclass of it) as the outermost component by creating a default Window in that case and making the BXML component its content. Update one of the TextInput tests with one other example for testing. * Revision r1795246: Use some Utils methods in ListenerList to simplify / regularize some of the parameter validation checks. Make a new "checkZeroBasedIndex" method in Utils (and use it in ListenerList) to simplify the oft-used case of checking an array/list/whatever index against 0..size-1. * Revision r1796076: Add two convenience classes for ListView and Spinner that implement the respective ItemBindMapping interfaces in terms of an Integer value that represents just the index value for the selected item. * Revision r1796077: Correct misplaced opening braces, according to the existing Pivot style guidelines. * Revision r1796188: Add a new flavor of Utils.checkNull that only requires the one argument, which will throw an IllegalArgumentException with no message. * Revision r1796226: More work on using the Utils.checkNull utility method and his brothers in other places. * Revision r1796229: More work on using the Utils.checkNull utility method and his brothers in other places. * Revision r1796337: In preparation for switching to Java 8 for "trunk" builds, fix a couple of the core tests that were failing in this configuration due to stricter type checking with the JUnit methods. In particular, use "(Integer)" casts where there was a conflict between the (Object, Object) and (long, long) "assertEquals" methods. Also add casts on a couple other tests that were in conflict in other ways. * Revision r1796681: More work on using the Utils.checkNull utility method and his brothers in other places. * Revision r1796682: Add additional flavor of "decodeColor" method in GraphicsUtilities so that the IllegalArgumentException thrown can identify the argument that is in error (instead of the default "color" description). Use the "Utils.checkNull" method to do the checking. * Revision r1796689: Check for null font dictionary input to "deriveFont" in Theme.java; Use class name to derive Theme PROVIDER_NAME. * Revision r1796711: Using "Utils.checkNull" in Theme. Also make a private "checkColorIndex" method to consolidate common code and give a consistent error message. * Revision r1796712: More work on using the Utils.checkNull utility method and his brothers in other places. * Revision r1796883: Add Javadoc to the Vote.tally() method to explain the algorithm. Use Utils.checkNull() in there also. * Revision r1797271: Code cleanup: Request focus on the window content in ScriptApplication to eliminate the need to click on the window to begin interacting with it. Add batch files to set the classpath to include the "lib" and "wtk/lib" directories, to allow testing, and another to restore it to the previous state. Adjust "script.bat" to call these if the original "java" invocation results in an error (presumably because the main class can't be loaded). * Revision r1798415: Code cleanup: Make debugging simpler (less verbose) by using the simple class name for Dimensions.toString() resulting in just "Dimensions[WxH]". Same thing for Point, resulting in "Point[X,Y]". Note: we did this for Bounds earlier. * Revision r1798611: Code cleanup: Update PlainTextSerializer (used by TextPane) to have a larger interal buffer for reading and writing, and make the size configurable. Make use of the Utils class to better check for null parameters. * Revision r1798631: Code enhancement: Use the new ApplicationContext.runAndScheduleRecurringCallback() in several places where it is applicable: spinner, scrolling, etc. This new method simplifies this common pattern where an immediate effect is needed, while also scheduling a recurring callback to repeat the effect. * Revision r1798697: Code cleanup: Use "switch" on string arguments to make the startup code cleaner in DesktopApplicationContext for getting the startup properties. * Revision r1798734: Code enhancement: Add some methods to Span: * normalStart() -> returns the lesser of start,end * normalEnd() -> returns greater of start,end * normalEquals() -> uses normal values to compute equality * adjacentTo() -> tests whether spans are exactly adjacent to each other * before() -> whether this span ends before the other * after() -> whether this span starts after the other Then use the new normal int value methods in other places to avoid the overhead of a new object from "normalize()". Add the first "wtk" test to test all these Span methods, as well as the existing ones. * Revision r1798735: Code enhancement: Add two new methods to Utils: * defaultToString() -> returns string description of object just as Object.toString() would. * simpleDefaultToString() -> same as above, except only the simple class name is used. * Revision r1798736: Code enhancement: Add a "toHexString()" method to StringUtils for debugging purposes: formats the characters of a string as hex values. * Revision r1798737: Code enhancement: Add and new "ClassUtils" class and two new methods to Console (for debugging purposes): ClassUtils is meant to hold static methods for dealing with "classes" (mostly by reflection). The only method (so far) examines the call stack hierarchy to get the identity/description of one of the callers of a method. Useful for debugging "who gets called from where". Then add two new methods to Console that will use this ClassUtils method to describe the calling method and log the message along with it: * logMethod(String, args) -> get the calling method name and format a message from the format string and optional arguments. * logMethod(String, String, args) -> same as above, but with an optional prefix to the rest of the message so particular debug printouts can be easily spotted in a log file. * Revision r1799028: Update dependencies on needed tools for the build, and related documentation, for trunk * Revision r1799029: Small updates in build.xml files, to have more info. * Revision r1799030: Do an 'ant trim-whitespace', to ensure consistency of formatting in all our sources. * Revision r1799725: Code cleanup: Rename "xxxArgument" to "xxxValue" in parameter names. Add an "expand()" method to Bounds. Add BoundsTest that tests a lot of things about Bounds, including the new JSON parsing and "translate" / "expand". * Revision r1799726: Code enhancement: Add JSON parsing for a point to include a list format: [ x, y ] Add Javadoc to Point.decode() to explain it all. * Revision r1801182: Remove incorrect comment in TextPaneSkinTextNodeView. * Revision r1801184: Update the BUILD file to say we now require JUnit 4.11 or greater (with separate "hamcrest-core"), and check for the "assertNotEquals" method availability in the "org.junit.Assert" class. This method is used in "BoundsTest", and so must be available. Also add a reference (from "build.properties") to the bootstrap classpath when compiling. This allows full checking in the case of back-level Java (actually not used now, but for reference). * Revision r1801285: update Year in NOTICE files * Revision r1801287: update links for JavaDoc * Revision r1801518: Try using "ignoreSystemClasses" to check JUnit availability. * Revision r1801545: Update the JUnit test conditions so that they work either with the Jenkins build or without. * Revision r1801548: Set a special flag for Jenkins jobs so we can dynamically tell whether to use the system classpath for JUnit or not. * Revision r1801661: Add some new methods to Limits to extend its capabilities. Add a "LimitsTest" class to test the Limits operation. Add two new default methods to the Dictionary interface to allow default values for "getInt" and "getBoolean" in case the key is not present (instead of using the pre-assigned default). * Revision r1801662: Do some variable/parameter renaming from "_Argument" to "_Value" which is shorter and more descriptive. Also, "_Local" to "_Value" just to be more clear. * Revision r1803581: Add a new constructor for Insets based on Number. Add InsetsTest class to do some basic testing of Insets (mainly decoding and the shortcut constructors, plus "toString()"). * Revision r1803582: Add a new version of "setTransparencyInColor" that takes a Theme color index as a parameter and calls the regular version with that theme color value. * Revision r1803584: Calling Utils.checkNull (and friend) in a couple more places in GraphicsUtilities. * Revision r1803586: Cleanup of ContainerSkin: * Move the almost ubiquitous "setBackgroundColor(int)" method into the superclass instead of having it in many places. * Use Utils.checkNull (or friends) in several places. * Add some messages to plain IllegalArgumentException constructors. Note: there will be collateral changes due to the "setBackgroundColor" change shortly (because things don't compile). * Revision r1803587: Cleanup of TextPaneSkin: * Add a small accessor method "getTextPane" to do the cast of "getComponent()", and use that everywhere it is appropriate. * Use the "Utils.checkNull" method in a number of places to simplify and standardize the null parameter checking. Also remove the checks in places where it is done by "decodeColor" or similar. * Revision r1803588: Clean up Theme class: * Use the "getBoolean" methods of Dictionary where possible. * Minor code cleanup to the "getDefaultBackgroundColor" and "getDefaultForegroundColor" methods. * Revision r1803590: Terra Theme skin cleanup: * Remove "setBackgroundColor(int)" from all the containers that had the code now that the generic version is in ContainerSkin. * Remove altogether several skin classes whose only content was a "setBackgroundColor(int)" method which is no longer needed. * Adjust the component to skin map in TerraTheme to remove these deleted classes. * Use Utils.checkNull for uniform null parameter checking where possible. * Some code cleanup (such as using some small accessor methods for 2-3 line code snippets that are repeated in several places and possibly sources of copy/paste errors). * Also remove some parameter checking when things like "decodeColor" are called because these utility methods do their own checks. * Revision r1803598: Simplified and cleaned up CornerRadii as with other "wtk" utility classes: * Use common parameter and value checking methods (such as Utils.checkNull). * Allow "decode" method to use JSON arrays (as well as maps). * Take advantage of new Dictionary default methods (Java 8). * Use simple class name for "toString()". * Revision r1803599: Add another "Bounds" constructor from a Dimensions value. Add tests to BoundsTest for this new constructor. * Revision r1803600: Simplify and cleanup Decorator classes: * Add new default implementations (in "Decorator.java") for "getBounds()" and "getTransform()" methods, and remove these methods in subclasses that just did the default operation. * Same for the "update()" method. * Use the new Bounds(Dimensions) constructor where possible. * Do parameter checking using "Utils.checkNull()" (and maybe its friends). * Rename some parameters from "xxxArgument" to "xxxValue" as was done in other places (seems less artificial to me). * Revision r1803601: Add missing "import" to ShadeDecorator; needed for previous change to many "xxxDecorator" classes. * Revision r1803602: Add "wtk" tests for CornerRadii constructors and "decode" method. * Revision r1804168: Add "getWidth()" and "getHeight()" in Insets because it is fairly common to do this math in many places, and it makes the code cleaner with these helpers. Other submissions will take advantage of these new methods. But, add some tests in InsetsTest. * Revision r1810151: Code enhancement: Add some methods and features to Dimensions: * expand(int) -> increase/decrease both width and height by same amount * expant(int, int) -> increase/decrease width/height by different amounts * enhancements to "decode(String)": - allow [n, n] (JSON list form) - allow "w x h" or "w, h" (non-JSON forms, just formatted strings) Add a DimensionsTest class to test all these changes. * Revision r1810620: Added a new "expand(Insets)" method to Dimensions, as this is a fairly common thing to do. Added tests to DimensionsTest also. Some cleaning up in TerraTooltipSkin both to use this new method but also to simplify the fact that there were a bunch of +2 and +1 to the padding values, which seems silly. So just increased the original (only) padding values, and make more room on left/right so the text is more uniformly padded all around. * Revision r1811250: Implement a new format for Insets.decode, namely just a comma-separated list of values (can also be semi-colon separated) in the order of: top, left, bottom, right (same order as the JSON list form). Add more tests in InsetsTest to check the parsing. * Revision r1811265: Implement new allowed formats for Bounds, CornerRadii, Limits and Span along with tests. The new formats are basically simple lists of integers separated by commas or semicolons. Same order for the list as the JSON list formats. Some other formats are accepted in some cases (as in "start-end" for Limits). These cases basically match the format presented in the "toString()" methods for each class. Tweak some "toString()" formats (use "getSimpleName" and add/remove some spaces). * Revision r1811267: Add error message text and Javadoc to ImmutableList to make things clearer. Also use Utils method to check null parameter. Update one message for Utils.checkNonNegative to be the same wording as other exception messages in that class. * Revision r1811269: Updates to ApplicationContext to catch Throwable everywhere instead of Exception (this is a bit more general). Also use the "handleUncaughtException" method to deal with exceptions in callbacks (this method is a bit more general than the similar inline code it replaces). * Revision r1811278: More work with Dimensions: * Use Dimensions.ZERO in more places. * Add new default methods to Visual and ConstrainedVisual to get/set size in terms of Dimensions. * Remove the "public" modifiers from the methods in these two interfaces since they are not necessary. * Update "getClientArea" in WindowSkin to use this new interface (that is, construct Bounds from Dimensions). * Correct typo in Bounds. * Implement "getSize()" in ComponentSkin directly using the width and height saved values (instead of "getWidth()" and "getHeight()"). * Revision r1811907: More cleanup on the use of Dimensions: * Remove now obsolete "getSize()" method in Image (now implemented in Visual instead. * Check for null Dimensions in ConstrainedVisual.setSize(). * Revision r1812302: A collection of related, unrelated changes in a number of the "skin" files, including: * Use "Utils.checkNull" for parameter validation where appropriate. * Or just eliminate duplicate null checks where "decode" methods or constructors (as in Insets, CornerRadii, etc.) already do the null checking. * Remove some null checking (esp. for backgroundColor) where a null color is supported and appropriate. * Also added some inline comments when null background color is actually supported. * Some reflowing of code where it makes sense for readability. * Use of the new "Insets.getWidth()"" and "getHeight()" methods. * Use the new "currentTheme()" method in ComponentSkin to make the code more concise where the skin needs access to the Theme. * Use just "Theme" instead of "TerraTheme" where the methods called are available in the Theme interface and don't need the specific theme to be invoked (which is most of the time with colors and fonts). * Use the new "Dimensions.ZERO" object where appropriate. * Also use the new default "getSize()" method in Visual to simplify the code. * Make the hierarchy at TextPaneSkinNodeView more orthogonal in the "size" methods with respect to the ComponentSkin hierarchy. * Some reworking of some constructors, esp. around setting of auxiliary colors -- in some places there was duplicate code in these constructors that was in a "set" method, so it is better to have the code in only one place. * A little bit of cleanup as far as common code (as in Alert where the calculation of the style name was moved to a constant). Also note: I'm not done with all the places where such changes should/could be made. * Revision r1812761: Some enhancements to Insets and Dimensions: * Create a "square" Dimensions from a single integer that has that as both the width and height. * Create an Insets from a total width and height; divide the total into left/right and top/bottom, leaving any (odd) extra value on the right or bottom. * Create an Insets, then, from a Dimensions (using the new width/height constructor). * Create a "getSize()" method for Insets that returns the Dimensions value containing both width and height. Test all these changes in the DimensionsTest and InsetsTest classes. * Revision r1812764: Make some new variations on the "prepareForText" methods in GraphicsUtilities for use in other places in the code. Also add a method to set the font rendering hints. And methods to set anti-aliasing on and off. All these are common operations during drawing that deserve common code treatment for consistency and brevity. * Revision r1812765: Add some more parameter checking methods in Utils: * Check for non-negative float values (parallel to the "int" value method already there). * Check for "positive" integer value (that is, it throws if the value is <= 0). * Update/correct some of the Javadoc. * Revision r1812782: Update BooleanResult to add a "clear()" method that sets the value to "false". Add tests of this in the BooleanResultTest class. * Revision r1812783: Use of "Utils" methods for parameter checking in ImageViewSkin.java. Some code beautification for clarity. Note that null background is acceptable. * Revision r1813052: Update some exception messages to be clearer as to what the problem is. * Revision r1813055: Add another "checking" method to Utils, this time to check arguments for being in the range of a Short (0-0x7fff). Use this new method to simplify the code in Version that does this checking. * Revision r1814126: Code cleanup: Javadoc tweak in FileSerializer.java; give the IllegalArgumentException in the constructor a nice message. * Revision r1814127: Use "Utils" methods for checking parameters in more of the "core" code. Some code layout cleanup. * Revision r1814129: Code cleanup: Use "Utils" methods in the various Serializer classes for parameter checks; some code layout cleanup; increase buffer sizes for reading files in bigger chunks. * Revision r1814244: Updated the external link to the Java 8 API Javadoc. * Revision r1814428: Code cleanup: Make some error messages from Utils methods read more nicely by capitalizing the first word of the sentence. * Revision r1814534: Code cleanup: Made some private methods in QueryDictionary to remove duplicated code all through this class. Fixed what looked like a bug in "remove(String,int)" where the return value was correct, but nothing was actually removed from the ArrayList referenced by the key. * Revision r1814877: Code cleanup: Use "Utils" methods for parameter validation in one more class in the "web" package. * Revision r1815136: Clean up the code in TextInputValidatorTest.java. * Revision r1815152: Allow "IntRangeValidator" limits to be set by Limits value. * Revision r1815167: Use some new common methods in GraphicsUtilities to simplify code. Speed up the drawing inside BorderSkin by doing the measurements only when things change, and not every time it is drawn. * Revision r1816667: Code cleanup: Allow ScriptApplication to deal with several other types of main components: Sheet and Palette, which both require an owner window in order to work. So, create a window to fill the frame and open the content on top of this window. * Revision r1816732: Code cleanup: There was a "TODO:" item in IOTask about using an AtomicLong for counting the bytes sent and received (so that access from different threads was always accurate). So, make this change, and concomitant changes in Query.java that use these fields. * Revision r1816755: Noticed that Jenkins builds that sign the built .jar files were getting a warning: "No -tsa or -tsacert is provided and this jar is not timestamped." So, add a "tsaurl" to the "signjar" task for this purpose. * Revision r1817385: Tweak of ListViewIndexBindMapping to fix indents and to more generally support "Number" in the "indexOf" method (more than just "Integer"). * Revision r1817549: Explicitly add a "Sequence<?>" constructor for Insets, Bounds, Dimensions, etc. (basically all the "wtk" classes where we updated the "decode" methods to accept a JSON list). So, update all these decode methods to use the new constructor. Then, add a "Sequence<?>" setter method for Insets (padding) in all the places we had already cleaned up the padding code. Also similarly fix up CalendarDate.Range and Time.Range. Tidy up some comments in JSONSerializer. * Revision r1817955: Some of the cleanup done to BeanMonitor actually broke the functionality of script bind mapping from one attribute to another, because there was a "break;" added after the first "ListenerList" "get" was found, instead of going through every listener list as is really required. * Revision r1818208: Add a static "allOf" method to EnumSet that constructs a fully-populated set containing all the values of the backing enum. * Revision r1818351: Trim whitespace. * Revision r1819862: Refactor some of the "wtk.content" classes to consolidate duplicated code into base classes: "BaseContent.java" and "UserContent.java". The base content has an icon and text, while user content contains that plus an arbitrary (default null) user object that can be used for context in various situations. Redo ButtonData, ListItem, TreeNode, and TableViewHeaderData to use these base classes as appropriate. * Revision r1820002: Fix the background color for tooltips in the file browsers. With earlier changes to TextArea the default background was white instead of null leading to tooltips that weren't drawn right. * Revision r1820008: Remove the duplicated code in tutorials.../bxmlexplorer/tools package in favor of the original code in tutorials.../explorer/tools. Make appropriate package import changes in the BXMLExplorer code. * Revision r1820327: Move the "defaultToString" and "simpleDefaultToString" methods out of Utils and into ClassUtils (because they make more sense there). Rename the longer method to just "simpleToString". Change the references to these methods. Add a new "checkTwoIndexBounds" method to Utils for use in several places (such as the "set selection" methods in the text controls). * Revision r1820338: Changes to TextAreaSkin to use the new "getWidth" and "getHeight" methods of Insets to simplify the code. * Revision r1820356: Create two new classes: "wtk.FontUtilities" and "util.ImageUtils" to consolidate common code. * Revision r1820359: Use the new "wtk.FontUtilities" class to move the common code to one place. * Revision r1820362: Use the new "wtk.FontUtilities" and "utils.class to move the common code to one place. * Revision r1820933: Cleanup some duplicated code in Frame.java around building a linked list of ancestor components. * Revision r1822709: Copy over more files from tutorials/src and tests/src directories to the "ant-bin" directories so the programs will run correctly (with all their supporting files) from there. * Revision r1822710: Rearrange the order of constructors and add a bit of Javadoc to the VoteResult class. * Revision r1822725: There is a problem with the way tutorials are packaged in the .war file versus how the work offline, so that copying the extra files "works" to run them standalone, but results in duplicate .zip file entries doing a "deploy". So, rather than break the build, revert to the original file copy list and try to figure out what's really going on later. * Revision r1822840: Update the build.xml correctly so that both the "deploy" task and running the tutorials from the offline directories will work correctly. This entails copying more files to the "tutorials/ant-bin" directory, but also excluding these newly copied files from the "deploy" task (because they are .jar'd from the "src" locations). * Revision r1822989: Some cleanup in the build: * Add "examples" as a target, which compiles and copies the relevant source files. * Include "examples" in the "clean", "compile" and "test" targets. * Add some more source files types to "trim-whitespace", namely: + css, csv, js, xsl, sql * And fix some smart quotes in CSS files that wouldn't actually work. Then, check in the files that had whitespace trimmed, or other changes found by these build fixes. * Revision r1823399: Add an image name parameter to ImageUtils.findByName to make error message more explicit. So, change all the callers. In addition, change some places that could use this method that were not previously using it. * Revision r1823400: Add an image name parameter to ImageUtils.findByName to make error message more explicit. So, change all the callers. In addition, change some places that could use this method that were not previously using it. * Revision r1823527: Add a static final EMPTY as a default value for Bounds(0, 0, 0, 0) Add a test for it in BoundsTest. * Revision r1823726: Code cleanup: Make one of the exception messages in Utils read better. * Revision r1824559: Code cleanup: Call the GraphicsUtilities.setAntialiasingOn instead of the inline code in all the remaining places. Plus some other cleanup: * Use lambdas in a few places for callbacks. * Call "set" methods to set colors from the theme. * Revision r1825173: Code cleanup: Remove some unused constants. * Revision r1825947: Allow test / demo / example applications that just load a BXML file to easily subclass ScriptApplication by providing an override there for the "--src=" command line argument, such that the test application can be run on the desktop with just a few lines of code. Modify SplitPaneTest to demonstrate the potential. Cleanup a little messy code in DesktopApplicationContext along the way. * Revision r1827323: Allow more forms than "true" or "false" to be used for application startup items, namely "Y", "N", etc. (introduced in StringUtils.toBoolean). Call this new method inside DesktopApplicationContext. * Revision r1828188: It was noticed that SuggestionPopup (or rather the skin) was always setting the ListView it creates to be variable item height, which is rarely the case. This causes extra processing for no reason. But it may, in fact, be required for some renderers, so leave it the default, but add a new style to set it to false. * Revision r1829099: Update the Javaodoc in ListViewSelectionListener to better explain how and when the various listener methods are called. * Revision r1829100: Move some of the methods and the comparators out of RangeSelection and into Span where they more properly should be. Add several new methods to Span for convenience. Update RangeSelection to use some of the new Span methods. Add tests of the new Span stuff in SpanTest. * Revision r1829113: Make the ListViewItemRenderer and TreeViewNodeRenderer able to understand and use something of BaseContent to get both the string and icon to render. This allows interchangeable use of ListItem, ButtonData or TreeNode/TreeBranch in many places because they all inherit (now) from BaseContent. * Revision r1829301: Take out already done "TODO" item in ListButtonDataRenderer Javadoc. * Revision r1830002: Code cleanup: Allow ScriptApplication to deal with several other types of main components: Sheet and Palette, which both require an owner window in order to work. Update class Javadoc about this. * Revision r1830377: Tweak some Javadoc (mostly cleanup of lists). * Revision r1830786: Add a new demo program to display all the CSSColor values in a "nice" way, with tooltips showing the RGB color values of each. * Revision r1830787: Update the tooltip in the new Colors demo to show the color name as well as the RGB value. * Revision r1830842: Somehow ScriptApplication lost the no-arg constructor, which is necessary for use with DesktopApplicationContext.main... So, add it in again so the program actually works! * Revision r1830844: Add Javadoc to the Easing interface to explain the methods and parameters. * Revision r1832859: Improvements to "Console" debugging package: * Allow override of output streams (defaults to System.out and .err). * Make Console into a non-static class, but with a default that always logs to the system console. * Make a TextAreaOutputStream that can make itself into a PrintStream for use with Console. * Make a test program (TextAreaConsoleTest) that uses a small text area to demonstrate logging using the Console class inside a window. * Revision r1832862: Fix the one usage of Console in the existing code to use the new conventions. * Revision r1833931: PIVOT_1035: Change the build number to a date stamp of the form: YYYYDDDHHmm which is "20181711037" right now. * Revision r1837329: Properly check for JDK 9 or (now) JDK 10 for use in building Pivot. * Revision r1838997: Change ComponentNode back to a subclass of Node (instead of Block), but then allow Document to accept ComponentNode as a child, in addition to a Block. The reason for making it a Block was to allow direct insertion into a document, but clicking on one of them that way resulted in an exception trying to find children of that node. So, rather than figure that out, just make the special case exception inside a Document. This appears to work everywhere without problems. * Revision r1839358: Several fixes to TextPane: * Fix previous changes that made ImageNode (and ComponentNode) into subclasses of Block so that they could be inserted directly into a document. This was shown to be a flawed strategy, and ComponentNode was fixed by a previous change. Make ImageNode back into a direct subclass of Node. * Add an implementation of "getCharacters" to ImageNode to satisfy the abstract declaration of Node (this is relatively new). * Change Document to allow ImageNode (and previously ComponentNode) as possible direct inserts into a Document * Add a method to ClassUtils to check any number of possible classes for an "instanceOf" check, and use this in Document. * Unrelated, but discovered in the same test program: fix CharUtils.selectWord to gracefully handle a null input sequence. * Revision r1840589: Add/update Javadoc in the Image class (to better explain the methods available). Address some style errors also. * Revision r1859103: Add some explanatory Javadoc to the EnumList class to explain how to use it. * Revision r1870920: Update JSONViewer demo application to: 1) Fix "check-style" errors. 2) Use some Java 8+ features (i.e., lambdas) 3) Tweak the tree display to make things a bit more readable. 4) Don't use FileInputStream, to avoid GC issues with "close()". 5) Add new values to "Style" enum to support TreeView styles. * Revision r1870930: Cleanup of some calendar-related classes: 1) Adjust time zone usage in CalendarDate to move to the constructor(s) and use constructed time zone for GregorianCalendar conversions. 2) Simplify CalendarDateSpinnerData to use CalendarDate only for its values instead of converting to GregorianCalendar on its own. 3) Fix a lot of "check-style" errors in both classes. 4) Add more tests in CalendarDateTest.java for the new stuff in CalendarDate. * Revision r1870935: Update Ant version requirement to 1.10.2 so that we can use the "<javaversion...>" check to allow Java versions greater or equal to 9 also (builds are failing on OpenJDK 11 because we didn't have the right version checks). * Revision r1875319: Change / simplify the way we initialize the CSSColor values by using a private static class for the lookup maps, and using an alternate constructor that creates the Color value itself. Add a method to ColorUtilities to translate a CSSColor to a string value. * Revision r1875320: Add a CSSColorTest to thoroughly test all the round-trip paths. * Revision r1875321: Refine the testing in CSSColorTest because of avoidable failures. * Revision r1875334: Major rework of the CSSColor scheme: * Some of the Java standard colors don't have the same RGB values as their similarly named CSS colors (common things like "pink", "orange", "green", and the grays, for instance). * So, make a convention that "green" or "GREEN" (i.e., all lower- or all upper-case) yields the Java version, while mixed-case (i.e., "Green") yields the CSS version. * This means the reverse lookup table is now case-sensitive. * BUT, if there is no conflict (e.g., "AliceBlue") then the lower-case or upper-case versions will come up with the same value. Confusing enough?! * The color list now has all the Java variants with their Java values. * This includes ugly ones like "lightGray" and "LIGHT_GRAY" (but not "lightGrey" and "LIGHT_GREY" because Java didn't name them like that). * The CSS-only colors all have strictly RGB values. * The test programs had to be tweaked and beefed up to test all this stuff. * Javadoc (particularly inside CSSColor and GraphicsUtilities.decodeColor) had to get longer. * Revision r1875336: Add a new method to CSSColor to return a set of all the values matching the given RGB value. Add tests to CSSColorTest for this new method. * Revision r1875337: Build changes to add the javax.activation module for Java 11, and the implementing .jar file. * Revision r1875338: Show the "java_modules" flag in the environment info for a build. Helps to debug current problems with java.activation missing for javadoc. * Revision r1875830: Rearranged the build.xml file and cleaned up the "environment-info" messages with the build number and newly-introduced build date/time. Added "compiler.release" to "build.properties" as well as "min.ant.version" and load this file right up front, then do the min Ant version check next. Make some of the other checks more dependent on these build.properties values. Use "--release" flag for newer Java compilers. * Revision r1875831: Add "setenv" and "unsetenv" bash scripts for *nix/OSX to match the Windows versions to enable easy running of demos and tutorials. * Revision r1875833: Using "--release 8" to build with Java 11 seems to not find JSObject anymore, so go back to using "-source" and "-target". And, take out the module stuff added for the Javadoc calls -- they aren't needed either with the javax-activation.jar file in the classpath now. Everything seems to build and test cleanly from scratch on OpenJDK 11 (with OSX at least). * Revision r1875897: Correct a wrong @throws value. * Revision r1876576: Add new "add(index, listener)" method to ListenerList just in case just adding a listener at the end of the list doesn't quite work. Add ListenerListTest class to test some of these methods. * Revision r1876577: Refactor code in Service to use "try-with-resources". * Revision r1877132: Add a "normal" build task to simplify my daily / hourly build / test procedure. * Revision r1877133: Cleanup some style errors introduced with recent changes. * Revision r1877269: Cleanup some style errors introduced with recent changes. * Revision r1877270: Make some style-related changes to RangeSelection, as well as adding some (presumably) useful methods. Add a RangeSelectionTest class to do some unit testing. * Revision r1877273: Trim whitespace. * Revision r1877274: The "Style" enum was introduced to make setting component styles more foolproof by defining the style names in terms of an enum that can be checked at compile-time. So, go through all the uses of "getStyles" and correct anything that is still being set via a string constant (if possible, some things are just custom JSON, for instance). Add a few Style values that were being set via strings. Make some "check-style" changes in the files that were changed, as well as convert some callbacks to lambdas as appropriate. A bunch of changes to TextPaneDemo suggested some improvements to Span, which then required new tests in SpanTest as well. And a new method added to Node: "getParagraph". * Revision r1877516: Add a "StringUtilsTest" class to test "StringUtils" methods. * Revision r1877611: Do a better job encapsulating the correspondence between our Cursor values and the AWT equivalents by moving the code into the Cursor enum itself. * Revision r1878782: Update one error message in BeanAdapter to add the type name. * Revision r1878783: Update TextAreaOutputStream to add charset to the mix and allow non-default buffer size. Update TextAreaConsoleTest and the associated console_text.bxml to display longer messages to test the buffer size change. Fix some style errors. * Revision r1881960: Fixed a TODO item in Keyboard related to checking the correct modifiers for each platform to determine the drop action. To that end, add methods to Platform to determine the current platform for testing. * Revision r1883769: Add a new "fix-line-endings" target that uses the same list of files as "trim-whitespace". * Revision r1884216: Fix compile errors in Keyboard. * Revision r1884960: Added convenience methods for setting text in TextInput, TextArea, and TextPane. * Revision r1884963: Fix build file for issues with Java 14+. * Revision r1884964: Make "ifNull" in Utils generic for any type. * Revision r1884965: Add more alternate flavors of DesktopApplicationContext.main for other situations. * Revision r1884967: Add "ourVersion" to Version class, and test of it. * Revision r1884968: Fix compile errors from last (untested) commit. * Revision r1884969: Fix compile errors from last (untested) commit. * Revision r1884970: New methods in Keyboard class. * Revision r1884971: Enhance StringUtils.toString and use more places. * Revision r1884972: Add ExceptionUtils class to help with formatting exception messages. * Revision r1884973: Correct style problems in Platform. * Revision r1884975: Update links to online Oracle Javadoc. * Revision r1884977: Fix obsolete Javadoc constructs. * Revision r1884991: Fix obsolete Javadoc constructs. * Revision r1884992: Fixup small Javadoc problems from last submission. * Revision r1884993: More "checkstyle" fixes to "core" classes, plus misc. cleanup. * Revision r1884994: Rename "StyleErrors" to StyleChecks, as well as the log files, and code. * Revision r1884995: Fix obsolete Javadoc constructs. * Revision r1884996: Use a property to compute the build number, not a file. * Revision r1885210: Fix TextAreaOutputStream to correctly handle empty lines (as in "println()"). * Revision r1885216: Improve the maximum length checking for TextArea. * Revision r1885217: Fix the EDT-ness of TextAreaOutputStream. * Revision r1885218: Rename "Version.ourVersion()" to "Version.implementationVersion()". * Revision r1885232: Fix Java 11 javadoc problems (including extra CSS stylesheet). * Revision r1885469: Enhancements to the CSSColor demo. * Revision r1885470: Add a little text to the wtk-terra package doc. * Revision r1885490: Fix the use of StringUtils.toString(List) in several places. * Revision r1885494: Improve the parsing of font names inside FontUtilities.decode(). * Revision r1885499: Corrected a bug in FontUtilities; corrected style violations there. * Revision r1885500: Fix a tab character. * Revision r1886132: Add styles to Form for "labelFont" and "messageFont". * Revision r1886138: Finish code in TerraFormSkin to implement message and label fonts. Fix some style errors. * Revision r1886543: Allow Dictionary.getInt and getBoolean to parse Strings to get the values. * Revision r1886546: Compile Javadoc to "private" level for debug builds. * Revision r1886548: Two new methods in Utils. * Revision r1886549: Tweak the Javadoc comments in Span. * Revision r1886550: Do some code cleanup in CharSpan; add functionality there; add a test module for it. * Revision r1886551: Use new Utils methods for error checking in TextArea. * Revision r1886554: Tweak Javadoc comments. * Revision r1886556: Tweak Javadoc comments. * Revision r1886557: Changes to reduce "checkstyle" violations. * Revision r1886667: Tweak the "selectWord" method in CharUtils. * Revision r1886805: Changes to fix RAT errors (missing licenses). * Revision r1886850: Add a "performAction" static method to Action to simplify performing a named action. * Revision r1886907: Update an error message in Component. * Revision r1886926: Refactor Keyboard a little bit and add "arePressed" methods. * Revision r1886970: Add styles to set font, colors, and text decoration of the Prompt message. * Revision r1886971: Add "enlarge" methods to Bounds and upgrade BoundsTest. * Revision r1887070: Tweak some Javadoc in Component. * Revision r1887073: Tweak some Javadoc in TablePane. * Revision r1887074: Changes to reduce "checkstyle" violations. * Revision r1887075: Changes to reduce "checkstyle" violations. * Revision r1887117: Fix typo in last change to Keyboard. * Revision r1887121: Changes to reduce "checkstyle" violations. * Revision r1887545: Updates to ExceptionUtils to recognize more classes that need this treatment, and to make the exception names more readable. * Revision r1887551: Add new "putStyle" methods in Component to make setting styles less verbose. Named "putStyle" as reminiscent of the "getStyles().put(...)" code it replaces, and to avoid confusion with "putStyles" which is a different beast. * Revision r1887553: Improvements to code that needs to get info from the theme: - methods in Component to get the theme font and colors - add some "getxxx" methods in the skins to reduce code to do the casting - this change involves a bunch of "checkstyle" fixes also - move more of the initial theme value settings to the JSON file * Revision r1887830: Simplification to Bounds. * Revision r1887832: Spiff up the output of StyleChecks a little bit. * Revision r1887833: Some tweaks to BeanAdapter. * Revision r1888038: Clear up one more obsolete Javadoc construct. * Revision r1888092: Remove empty code from MacroReader (after last change). * Revision r1888187: Allow Insets as valid source for Insets.fromObject. * Revision r1888250: Tweak some doc and an error message in Component. * Revision r1888684: Add a convenience method to Action for adding items to the dictionary. * Revision r1888774: Enhancements to Keyboard to recognize the OSX modifier key symbols. * Revision r1888779: Fix and expand keystroke decoding in Keyboard (generalized to also include OSX Unicode symbols). * Revision r1888797: Implement extended Unicode escapes in JSON parsing: \u{xxxxx}. * Revision r1889182: Add another variation of Point.decode ("x, y"); fix checkstyle problems. * Revision r1889254: Add "safelyDecode" into Version itself (from ApplicationContext). * Revision r1889344: Tweak some error messages and comments. * Revision r1891156: Reduce the number of files to do a "checkstyle" on (basically just the "core" classes and not demos, tutorials, etc.). * Revision r1892457: Add new "decodeCapable" method to FontUtilities to select the first font from the list (if any) that is capable of displaying the desired characters. This supports the new capability of specifying a list of fonts for use, where some may not be suitable because of their limited number of glyphs. * Revision r1892549: Tweaks to TextAreaOutputStream, including fixing scrolling problems for wrapped lines. * Revision r1892625: Add another shortcut method to Alert. * Revision r1892626: Update FontUtilities.decodeCapable to default to a monospaced font if the list was for monospaced. Update the list of monospaced fonts to be more comprehensive for all platforms. * Revision r1892828: Add two new methods to FontUtilities to register a new font for use, either from a file or an input stream. * Revision r1897109: Enhance "Action" to add overrides to facilitate actions that are Enum values. * Revision r1897111: Further changes to Action to refine the Enum support and regularize the parameter names. * Revision r1897168: Spruce up the output of StyleChecks using single box drawing characters everywhere. * Revision r1898141: Window.remove is unsupported to remove the content - add message to exception. * Revision r1907119: update security info in classes potentially exposed to the Java deserialization of arbitrary objects vulnerability * Revision r1913449: Update documentation in two functional/monad classes. * Revision r1913470: update properties of files, as required by checks for release * Revision r1913889: Set svn props * Revision r1914462: fixed failing test * Revision r1914463: fix line endings, from our ant task * Revision r1914465: fixed failing test * Revision r1914466: fixed failing test