JGoodies Smart Client Release Notes CHANGES IN 8.12.2 ----------------------------------------------------- This maintenance update ships minor fixes, source code improvements, and a few updated JavaDocs. Most changes are binary compatible with the previous versions. The Enterprise edition brings customizations for Fluent-style applications. Other Changes: o Fluent: Fixed a NavigationView.Builder issue. TabBar colors can be customized. o Framework: Fixed a high dpi scaling issue. o Looks: Fixed an issue with Plastic text field focus. o Design: Improved support for dark themes. o Common-App: Improved fonts on Windows 11. o Slightly improved some Showcase examples. CHANGES IN 8.12.1 ----------------------------------------------------- This maintenance update ships a few implementation and source code improvements, as well as more and better JavaDocs. The Enterprise edition brings minor improvements for Fluent-style applications. CHANGES IN 8.12.0 ----------------------------------------------------- This release focuses on improved appearance on modern desktops. The JGoodies Fluent and Design libraries now follow MS WinUI 3 and Material Design 3 instead of WinUI 2 and Material 2 resp. Special code for Windows XP, Vista, and 7 has been dropped. However, these platforms are still supported and just get the modern visuals from Windows 10/11. Incompatible Changes: o Common: Removed all deprecated constants SystemUtils#IS_WINDOWS_XX. o Dialogs: Removed the deprecated login classes. o Fluent: Overhauled to adapt the WinUI 3 API and implementation. See the release notes for many details. o Design: ListReport, ObjectPage, and InitialPage now mimic WinUI 3. New Form rendering features for groups with single table, list, text area, or button/link combo. Other Changes: o Looks: Larger body text now uses 14pt instead of 15pt. The default Plastic theme on Windows is now LightBlue. o The Showcase App has been removed from all distributions, because it is frequently updated on the JGoodies web pages. o The Tiny App has been added to the Professional edition. CHANGES IN 8.11.0 ----------------------------------------------------- This maintenance release brings a bunch of visual improvements and a few visual fixes. Code for Windows XP has been removed, while the support for Windows 11 has been improved. Also, the published API has been reduced. The toolkit independent event handling code has been removed. Incompatible changes: o Application: Removed the deprecated toolkit independent handler classes. o Common: Removed SystemUtils constants IS_JAVA_XX. o Looks: Overhauled tree Options, removed the PlasticXPLookAndFeel. Other changes: o Application: Fix for escaped variables in ResourceMaps. o Dialogs: Fixes and improvements for Windows 10 & 11. o Framework: Fix and updated references. o Looks: Fixed Plastic combo boxes; updated icons. Improved visuals for Windows 10 & 11. CHANGES IN 8.10.3 ----------------------------------------------------- o The event handling code in all libraries and examples now uses pure Swing event handling. Toolkit independent event handling using the now deprecated classes Handlers, ActionObjectHandler and ObjectHandler has been replaced. o Components: Added JGComponentFactory#createScrollPane and #configure(JScrollPane). o Framework: Added ComponentUtils#registerEnterAction(Action, JComponent...) and class RowSelectionUtils. o Slightly improved the example apps. o Fixed minor issues. o Improved JavaDocs. CHANGES IN 8.10.2 ----------------------------------------------------- o Common: Extended the FocusTraversalUtils API. o Components: TextComponentUtils#commitImmediately does no longer try to make JFormattedTextField#isEdited() accessible. Hence, apps using this feature do not need to "add-opens" the javax.swing package from the java.desktop module to all unnamed. o Forms: Improved docs. o Framework: Code improvements. o Showcase: More Content>Form examples. CHANGES IN 8.10.1 ----------------------------------------------------- o Common: Extended an internal API, required for Looks 3.11. o Forms: Improved JavaDocs. o Dialogs: Removed obsolete code. Improved docs. o Looks: No illegal access when using Plastic L&fs only. o Fluent: FIX - CommandBar ... button may overlap content. o Fluent: CommandBar API clarification. o Framework: FIX - FrameBuilder screen dimensions do not scale on high DPI. o Design: The Form framework now supports responsive layouts. o Showcase: Overhauled the Content>Form examples. CHANGES IN 8.10.0 ----------------------------------------------------- o The Fluent library (formerly UWP) has been added to the Enterprise edition. It helps you implement the MS Fluent Design style. o Common: Added SystemUtils test for Windows 11. o Fluent: FIX - broken layout if dynamic overflow is disabled. o Fluent: FIX - NavigationBar ignores displayString changes. o Framework: Updated OSXApplicationMenu#register. o Search: FIX - CompletionManager fires CompletionApplicationEvent before the text is changed. o Reorganized internal code. o Added and improved JavaDocs. o Fixed HTML docs. CHANGES IN 8.9.1 ------------------------------------------------------ o Application: Detects invalid accelerator annotations. o Binding: Added SelectionInList#setListWithoutClearingSelection that has the #setList behavior before a fix in Binding 2.29.2. o Dialogs: New style check for simple and direct main instructions. o UWP: Tabs can be dragged to reposition them. o UWP: CommandBar replaces AppBar; overhauled API. o UWP: Improved access to internationalized resources. o Minor API extensions in the Navigation and UWP libraries. o Moved internal code to Common JSDL. o Improved JavaDocs. o Source code improvements. o Updated the example applications. CHANGES IN 8.9.0 ------------------------------------------------------ All APIs for deferred computations have been changed from callback (VetoableEvent, NavigatingEvent) to Promise. Promise chaining can significantly reduce the effort to implement follow-up actions on the deferred results. Affected methods are: o com.jgoodies.application.Application Promise exit() Promise exit(EventObject) o com.jgoodies.application.ExitListener Promise applicationExitAllowed(EventObject) o com.jgoodies.navigation.Page Promise onNavigatingFrom(NavigationEventArgs) o com.jgoodies.uwp.Tab Promise onTabClosing(EventObject) o com.jgoodies.uwp.TabModel Promise closeTab(EventObject, T) com.jgoodies.application.ExitListener#applicationExitCancelled has been removed. Instead use for example: application.exit(evt).thenAccept(exitAllowed -> {}). Several selection dialog examples have been added to the Showcase, and JAR manifest add-exports and add-opens entries have been fixed in all example apps. This version also ships a bunch of source code improvements, many additions to the JavaDocs, and fixes in the HTML docs. CHANGES IN 8.8.2 ------------------------------------------------------ This is a bug fix release that also ships a few minor improvements. The VetoableEvent API has seen binary incompatible changes towards a Promise; these changes should not affect your implementations. CHANGES IN 8.8.1 ------------------------------------------------------ This version ships bug fixes for the Application and Validation libraries. And it brings improvements in the Dialogs, Framework and Navigation libraries; the latter is required for the updated JGoodies UWP lib. Examples for style guide-compliant runtime error dialogs have been added to the Showcase (see Dialogs>Messages>Errors). Two of them use a new feature of the Dialogs library that makes it easy to grow and shrink a Task dialog, if the expanded state changes: TaskPaneBuilder#onExpandedChangeWindowSizeBy These dialogs are blueprints for your custom runtime error dialogs that you may invoke from an UncaughtExceptionHandler. CHANGES IN 8.8.0 ------------------------------------------------------ This version moves the temporary classes and mechanisms introduced in version 8.7.3 to the JGoodies Common and Application libraries. It also comes with a slightly changed library layout: "common-jsdl" has been renamed to "jgoodies-common-jsdl". A few library pom.xmls have been fixed or updated. The Showcase's Form framework examples have been updated to reflect the recent additions and changes in the JGoodies Design library. The Application exit process (JSR 296) has been overhauled in a binary incompatible way. Find migration information in the JGoodies Application release notes. The Framework lib fixes a bug in field search where in some cases, object values are marked as invalid in the text field. The bug is caused by a non-guaranteed execution order of focus listeners, a non-guaranteed execution order and the unknown finish time of two internal SwingWorkers. The fix makes use of a new approach for asynchronous background operations based on class SecondaryLoop; it guarantees the execution order and is significantly easier to read and understand. SecondaryLoop offers roughly what happens when a dialog opens: the event queue seems to stop while still handling repaint events, a second event queue becomes active for the dialog. A few examples using com.jgoodies.sandbox.util.Background: result1 = aSupplier.get(); // in EDT result2 = Background.get(aSupplier); // blocks EDT result3 = aFunction.apply(anArgument); // in EDT result4 = Background.apply(aFunction, anArgument); // blocks EDT aConsumer.accept(anArgument); // in EDT Background.accept(aConsumer, anArgument); // blocks EDT CHANGES IN 8.7.3 ------------------------------------------------------- This version comes with updated, improved, and clarified JavaDocs, and fixes a bunch of problems with the Java 15 doclet. A few tiny issues have been fixed. It also introduces a versatile mechanism for APIs where something must be decided (accept/reject), but the answer cannot be provided immediately. For example, if the user requests to close a document, tab, or window, and the system needs to wait until a background save operation has completed - without blocking the user interface. For details see class VetoableEvent. This class is used by the now finished Navigation and UWP APIs, and for the application exit request. For the latter, we have temporarily added an ExitListener2 interface and a registration in class JGApplication. This will be moved to the Application library (JSR 296) in the next version. The Navigation and UWP libs are marked as beta, just because class VetoableEvent shall be moved to JGoodies Common in the upcoming Smart Client 8.8. The Completion interface JavaDocs clarify that 'category' and 'rank' are not used by the library defaults but may be used by custom code, see the docs in interface Completion and its builder. The Showcase now demonstrates three object search implementations that complement the existing text search examples. CHANGES IN 8.7.2 ------------------------------------------------------- This version fixes a bug in JGComponentFactory and comes with a slightly updated Binding library where the fast property access provider has left the draft status. The ToolBarBuilder and Page APIs have been slightly extended. In the Showcase two examples have been fixed, and several demos have been added for text components and for hubs/tiles. CHANGES IN 8.7.1 ------------------------------------------------------- This version fixes broken library dependencies in the pom.xmls and a minor issue in JGoodies Layout. It also ships performance and space optimizations in the Layout and Forms libraries. The new Showcase has been updated to show more topics. CHANGES IN 8.7.0 ------------------------------------------------------- This version is primarily an API cleanup. It removes a few deprecated methods in the Layout, Components, and Framework libs that have been replaced by other methods before. It removes unsupported features from the Looks (self decoration), and Framework (tracing). It also removes an unused feature from the Application library (Action lookup with method reference via tricky byte code instrumentation). The StyleChecker API intended for internal use has been overhauled. Class JSDLCoreStyleChecks has been moved to a new package and two style check constants have been renamed. JGoodies Animation has been removed from the Enterprise edition, and JGoodies Navigation has been added. The latter shall replace the Desktop library that will be removed in a future version. The master pom.xml has been updated. This version also fixes a minor issue in JGoodies Search and improves menu building in JGoodies Framework and JSDL Common. Updated the JUnit version in all library pom.xmls to 5.6. CHANGES IN 8.6.1 ------------------------------------------------------- This version fixes bugs in JGoodies Search 1.19.3 and JGoodies Dialogs 1.19.1. The new Showcase has been updated to show more topics and the dialog examples can be opened as dialog or source view. CHANGES IN 8.6.0 ------------------------------------------------------- This versions focuses on improved font lookup, scaling, and support for high dpi devices. It aims to minimize differences between Java 8 and Java 9ff. Therefore it ships a few binary incompatible changes, mostly additions, that will affect only a few API users. The font choice in the JGoodies Looks has been overhauled so it can use larger body text (100% vs. 125%). Fonts are now scaled *before* a Look&feel is installed, where the old behavior scaled fonts after the Look&feel installation. This scaling is now integrated with the JGoodies Looks, see Options.setLargerBodyTextEnabled(boolean). A bunch of minor issues around fonts have been fixed. Also, more properties in the UIDefaults as well as UI delegates have been tweaked for high dpi support. Some components and framework classes (Abstract- and BasicUISetup) have been adjusted to benefit from the font scaling. The (internal) custom scaling in class ScreenScalings has been removed. User interfaces may provide a user option for choosing the classic or larger fonts. See for example the font size combo box in the Options of the JGoodies LooksDemo. We've started a new Showcase that shall make it easier to find and understand the examples and their accompanying sources. However, the transition is not yet complete, and this version lacks several of the old examples. You can download or web start the old Showcase from the JGoodies Demo Download pages. All test cases have been migrated to JUnit 5. CHANGES IN 8.5.3 ------------------------------------------------------- This is a bug fix release that fixes a few issues. CHANGES IN 8.5.2 ------------------------------------------------------- This version focuses on internal improvements and a few additions required by the Components lib and the new JGoodies Design library. It also fixes a problem with Java 11 and a few minor issues. CHANGES IN 8.5.1 ------------------------------------------------------- This version brings minor improvements and a few small additions - especially in the Layout library. Otherwise, it mainly contains internal changes in preparation for the new Design library. CHANGES IN 8.5.0 ------------------------------------------------------- This is primarily an API cleanup release where almost all deprecated code has been removed; a few methods have been marked as deprecated. It also brings improvements for Java 9/10 and high DPI devices and contains a few minor bug fixes. This version comes with initial support for LocalDate/LocalDateTime: - Binding provides LocalDate[Time]ToDateConverter, - JGComponentfactory configures tables with default renderers. - InputPaneBuilder got #showLocalDateInputDialog. If used with Java 9/10/11, we recommend to put the JGoodies libs into the class path. If used in the module path the libraries get reasonable implicit module names (such as jgoodies-binding). Almost all APIs work in the module path too, but access to resource bundles and resources (icons, etc.) requires to open your modules for the JGoodies module that loads it, e.g. jgoodies-application. See the Application release notes for details. CHANGES IN 8.4.0 ------------------------------------------------------- This version is the first step towards improved compatibility with Java 9. The goal is that the code compiled against Java 8 runs in Java 9 runtime environments. Access to internal classes has been reduced and library dependencies have been simplified for a smooth transition to Java 9 modules. Also, the screen scaling mechanism, font lookup, and L&f setup have been tweaked for Java 9, especially on high dpi devices. As a consequence, the Enterprise edition's focus traversal features are now available in the Basic and Professional editions too. Enterprise edition users should use the BasicAppUISetup API for the setup of the Look&feel, fonts, scaling, etc. It checks for Java 9, the platform, and native desktop settings. See the Looks' notes for more information on how to setup the Windows system L&f in Java 9/10 environments. The JGoodies Dialogs library has been localized for French too. API users that have custom localizations must reorganize their resource bundles according to the migration information given in the Dialogs' release notes. Basically, the many different resource bundles have been merged to two bundles only. CHANGES IN 8.3.2 ------------------------------------------------------- This bug fix update just ships a fixed version of the Search lib. CHANGES IN 8.3.1 ------------------------------------------------------- This maintenance release ships a few fixes and improvements. Since version 1.13 the Dialogs library uses shorter message texts. If you have localized these texts, you may want to adjust them. The screen scaling mechanism has been extended to support an application-wide custom scaling that is multiplied with the "raw" scaling as computed from the screen resolution. The JGoodies Showcase application demonstrates this feature, see the new text size combo box in its ... -> Options. CHANGES IN 8.3.0 ------------------------------------------------------- All libraries now require Java 8. Common, Binding, Layout, Forms, Looks, and Validation have been moved to Java 8. This version ships a bunch of fixes for minor issues and comes with better support for Java 8. Some previously abstract classes now accept a functional interface that then implements the abstract behavior, see for example JGDefaultTableCellRenderer or DelayedPropertyChangeHandler. We've started to improve support for high dpi displays. See class ScreenScaling in the JGoodies Common library. The Layout library supports effective pixels (epx), and the Application library supports resources scaling via variables, e.g. ${$scale}. The Showcase application's "Architectural Patterns" section now uses the new Context and Dependency Injection (CDI) 2.0 to create and inject instances and its event mechanism for handling application-wide events. CHANGES IN 8.2.1 ------------------------------------------------------- This maintenance release ships a few fixes and improvements. Several builders now prevent invalid duplicate calls. Also, some builders now provide the JavaDocs from their associated classes, e.g. TaskPaneBuilder got the JavaDocs from TaskPane. CHANGES IN 8.2.0 ------------------------------------------------------- This is primarily an API cleanup release where almost all deprecated methods and classes have been removed. It also brings a few fixes and improvements. The appearance on the Mac has been improved. For the migration we recommend that you obey the deprecated markers of the previous version to identify and replace the now removed code with the code mentioned in the deprecation documentation. Several builders now prevent invalid duplicate calls. Also, some builders now provide the JavaDocs from their associated classes, e.g. TaskPaneBuilder got the JavaDocs from TaskPane. CHANGES IN 8.1.1 ------------------------------------------------------ This release fixes the JGCardPanel API and it brings back the now deprecated feature that @Action annotated methods may return Task. The latter will be removed from the next version. CHANGES IN 8.1.0 ------------------------------------------------------ Besides a bunch of fixes, this version comes with better support for Java 8, and it further improves the appearance on Windows 10. Several APIs have been enhanced for lambdas and method references that can be used instead of Actions/ActionListeners. All builder constructors are now public; the static #create methods have been marked as deprecated in all builder classes. Old: TaskPaneBuilder.create() FormBuilder.create() PopupMenuBuilder.create() ... New: new TaskPaneBuilder() new FormBuilder() new PopupMenuBuilder() ... Also, builders now offer a consistent way to add child items, for example tabs in TabbedPropertyPaneBuilder. The example sources have been updated to use and demonstrate the JGoodies Universal Desktop API, that is Swing code but quite easy to port to JavaFX (or GWT, AngularJS, ReactJS, etc.): o all JTables are built with the TableBuilder API, o all Tasks are configured with the TaskBuilder API Last but not least, the implementations and examples use Java 8 streams where possible. CHANGES IN 8.0.0 ------------------------------------------------------ In this release most libraries have been moved to Java 8. Migration from version 7.4 should be easy, because most libraries are binary backward compatible with previous versions. The event handling mechanism provided by the Application library has been overhauled to benefit from the Java 8 method references. See the Application release notes for details. Basically, you can now refer an @Action annotated method by name or by a method reference, e.g. model.getAction(model::onEditPerformed). All other event handling annotations are now obsolete and have been replaced by a pure Java 8 mechanism. The example applications have been moved to Java 8 and use and demonstrate the new event handling programming style but still use the name references for @Action methods. Many example views and models have been transformed: 1) ListViewModels are now used by composition not inheritance, 2) AbstractTableAdapters have been replaced by TableBuilder code, 3) Task subclasses have been replaced by TaskBuilder code. Code has been cleaned up to use lambdas and method references, some style violations have been removed, there are more JavaDocs, and more generally, the code uses Java 8 features in many places. CHANGES IN 7.4.2 ------------------------------------------------------ This release fixes a bug with the JGoodies focus traversal policies. Fixed minor color issues when using non-JGoodies L&fs. Plastic Metro/Aero text fields change the border color if focused. Also, the Looks Demo's user interface has been overhauled. CHANGES IN 7.4.1 ------------------------------------------------------ This release brings a bunch of minor corrections and improvements. The example applications have been signed with a valid certificate. CHANGES IN 7.4.0 ------------------------------------------------------ This release provides the same API behavior as version 7.3.x but is binary incompatible, because packages have been renamed to be synchronized with the names of their associated libraries: - Components com.jgoodies.components.* - Dialogs com.jgoodies.dialogs.* - Layout com.jgoodies.layout.* - Framework com.jgoodies.framework.*, com.jgoodies.sandbox.* - Search com.jgoodies.search.*, com.jgoodies.quicksearch.* - Common (JSDL) com.jgoodies.common.jsdl.* The last 6 deprecated methods in version 7.3 have been removed. These are hyperlink factory methods that have been replaced by a new set of JGComponentFactory#create*link methods before. For documentation purposes JGTables and JGStripedTable can now specify the type of their row elements. The Showcase has been updated to use the new package layout and the new generics where possible. CHANGES IN 7.3.1 ------------------------------------------------------ This release brings minor changes and corrections. o Fixed a bunch of artifact ids in the library POMs. o Fixed broken text field icon fallback in some environments. o Fixed check box and radio button icon position for new L&fs. o Fixed hyperlink style check. o Fixed FrameModel's Page change check. o Fixed FrameModel's back stack notifications. o Improved AppBar button implementations. o Improved TaskPane layout if commands are absent. o Changed the Windows 10 kernel version to 10.0. o Compiled the example apps against the latest libraries. o Fixed broken Showcase source code links. CHANGES IN 7.3.0 ------------------------------------------------------ This release reduces the published API and brings more features for modern user interfaces. Many APIs have seen clarifications in the API or docs, and we added more argument and style checks. The JGoodies Components, JGoodies Dialogs, JGoodies Looks, and JGoodies Framework libs have been extended and further improved to let you write Swing apps that can look like a Windows 10 Universal Windows Platform (UWP) application. The JGoodies Forms library has been split into JGoodies Layout and a reduced JGoodies Forms lib. All recommended and current types are in JGoodies Layout, and all deprecated but widely used code is in JGoodies Forms that now requires JGoodies Layout. Before: JGoodies Forms - current and deprecated code After: JGoodies Forms - deprecated code (requires JGoodies Layout) JGoodies Layout - current code Besides that, almost every library has seen slight improvements regarding more informative exception messages, docs, or code improvements. CHANGES IN 7.2.0 ------------------------------------------------------ This release focuses on API and library cleanup and it brings a wealth of improvements for modern Windows 10 (and 8/8.1). The design of the Showcase and Skeleton apps has been overhauled for a better appearance on Windows 10. But they look better on all previous Windows versions, too. The app startup sequence has been simplified and optimized for speed. The Plastic cross-platform look has been overhauled and modernized. It is now closer to modern Windows. The 3D effects look more natural and many details have been tweaked to reduce visual clutter. Also a bunch of bugs have been fixed, see the library release notes. Several features from the Sandbox packages are now considered stable enough, so they could be moved to other target libraries. For migration, just reorganize your imports. As part of the cleanup process a few deprecated methods and classes have been removed from the libraries. We recommend to check the deprecated messages with your current release before you migrate. For details see the library release notes. The library layout has been simplified; libraries have been merged and renamed to better describe their purpose: o JGoodies Completion + QuickSearch -> JGoodies Search o JSDL-Component -> JGoodies Components o JSDL-Core + JSDL-Basics -> JGoodies Dialogs o JSDL-Sandbox + UIF2 -> JGoodies Framework CHANGES IN 7.1.0 ------------------------------------------------------ This release focuses on an API cleanup where deprecated code has been removed, and example code has been updated to follow our current vendor recommendations. A bunch of minor bugs have been fixed, and we've improved the support for recent Windows versions such as 8/8.1/10. By default, custom names in annotated methods are now prohibited. To switch back to the old behavior, call: Listeners.setAllowsCustomNamingConventions(true); As of the version 7.1, Mnemonics can now be marked in texts with the underline character ('_') where the ampersand ('&') has been used before. Use the MnemonicUtils for setting up the underline, or ampersand, or both as your mnemonic marker. CHANGES IN 7.0.0 ------------------------------------------------------ In this release all libraries have been moved to Java 7. Migration from version 6.7 should be easy, because APIs are almost unchanged. A few fields in class SystemUtils that are specific to Java 6 have been removed. And method com.jgodies.common.base.Objects#equals has been removed that is in the Java 7 core class java.util.Objects. See the JGoodies Common release notes for details. Generics have been added to types and methods that refer to JList, ListModel, JComboBox, and ComboBoxModel. It is recommended that you generify the references to these classes in your projects too. Some classes from the JSDL Sandbox have been moved to other libraries and packages. To migrate just organize your import statements. The following Java 7 features have been used to clean up code: Strings in switch statements, try-with-resources, and catching multiple exception types. Also, the library versions of the JGoodies Smart Client 7.0 are now the same as in the JGoodies Swing Suite 7.0. Binding: New combo box binding. Common: SystemUtils changes, removed Objects#equals. Completion: Added CompletionManager#reactivate. Forms: Introduced some enumerations. Looks: Introduced enumerations, removed obsolete code. Validation: Added IconFeedbackPanel to library core. JSDL Common: Added I18n feature from Sandbox; added @Description and @Meaning. JSDL Component: New convenience code for combo box creation and Looks options. JSDL Sandbox: Improved Suggest behavior. Examples: Overhauled services and persistency implementations. Showcase: Started to overhaul the Forms tutorial. CHANGES IN 6.7.0 ------------------------------------------------------ This release focuses on removing deprecated APIs and significantly improved documentation. The JavaDocs for all builders introduced in previous versions have been completed, corrected, and extended by providing more examples and background information. Find below the major API changes ordered by library. Find the full change information in the library-specific release notes. It is recommended that you read at least the Forms release notes. Forms: Added FormBuilder and ListViewBuilder. Forms: Introduced paddings. JSDL Common: Moved FormBuilder and ListViewBuilder to Forms. JSDL Core: Removed deprecated rarely used TaskPane methods that have been replaced in a previous release. JSDL Basics: Removed MessagePanes, InputPanes, StandardPanes. Your custom StandardPanes localizations shall now be moved over to StandardPaneBuilder. JSDL Basics: Significantly improved the JavaDocs for MessagePaneBuilder, InputPaneBuilder, StandardPaneBuilder. Examples: Adjusted and recompiled against the latest library versions. Showcase: Started to overhaul the Forms tutorial. CHANGES IN 6.6.0 ------------------------------------------------------ This release focuses on an overhauled internationalization support. It also brings the usual improvements and ships a few API extensions and significantly more JavaDocs for the new builder classes. All *TextKey methods have been removed from the builder classes. Therefore this version is binary incompatible with version 6.5. However, these changes affect only API users that have used these methods that had been introduced in version 6.5. The Invoice and and Showcase examples have been updated to benefit from and use the new internationalization features (Resources class and @ResourceProvider annotation). Find below the major changes ordered by library. Find the full change information in the library-specific release notes. Looks: Removed deprecated code. API bug fix. Completion: Added completion support for multiple-line text. JSDL Common: Bug fixes. JSDL Common: Removed *TextKey methods from all builders. JSDL Component: Some methods accept optional String format args. JSDL Core: Removed *TextKey methods from all builders. JSDL Basics: Removed *TextKey methods from all builders. JSDL Sandbox: Fixed ListViewModel and FilteredListViewModel. JSDL Sandbox: Added a new approach for internationalization. UIF2: Removed Look&Feel choice mechanism. Validation: Rejects blank validation message texts. Examples: Demonstrate the new internationalization support. CHANGES IN 6.5.0 ------------------------------------------------------ This release brings major improvements, new features, tiny changes, and introduces a builder style for forms, JSDL panes and dialogs. Existing builders have been extended to enable a consistent programming style for all builders. Also, deprecated sandbox code has been removed. All example applications and Showcase examples have been updated to benefit from the new features and use the new builder style. Although the Smart Client libraries require Java 6, the examples are written in the Java 7 source code style and therefore require Java 7 or later. Find below the major changes ordered by library. Find the full change information in the library-specific release notes. Application: Added the @DocumentListener annotation. Application: Task fires a new state value if #doInBackground is done, but #done is still executed. Common: Overhauled internal interfaces. Forms: New builder code in the Forms class. Forms: Global default values have been moved to FormsSetup JSDL Common: Added the FormBuilder. JSDL Common: Added an improved ListViewBuilder that replaces the open source version in the Forms lib. JSDL Component: Removed the deprecated mouse registration methods from class ComponentUtils. These have been replaced by JGoodies Application mouse listener annotations. JSDL Component: Several new convenience factory methods. JSDL Component: Fixed Mac Java 7 issues. Table column utils don't set an alignment hint if specified as "none". JSDL Core: TaskPane has been moved to a sub-package. To migrate just reorganize imports. JSDL Core: Added builder classes for TaskPane, PropertyPane, WizardPane, etc. They use a simple, guided, and rich API for building panes and showing dialogs. JSDL Core: Moved rarely used pane configuration features to a visual configuration bean that is referenced by the pane. Marked the old methods as deprecated. JSDL Basics: Added MessagePaneBuilder. JSDL Basics: Added InputPaneBuilder. JSDL Basics: Added InputPanes#showDateInputDialog. JSDL Basics: Added InputPanes#showSingleLineTextInputDialog. JSDL Basics: Added InputPanes#showMultiLineTextInputDialog. JSDL Basics: Double-click chooses value in list option dialog. JSDL Desktop: DesktopFrames support identifiers to reduce the effort required to to open existing frames. JSDL Desktop: Added DesktopFrameBuilder. JSDL Sandbox: Continued the fluent interface for event handling. JSDL Sandbox: Removed deprecated code. JSDL Sandbox: Rearranged packages. JSDL Sandbox: Overhauled the list builder classes. JSDL Sandbox: Extended the handler fluent interface. UIF2: Added methods to the builder classes. Examples: Show the new builder classes: FormBuilder, MenuBuilder, PopupMenuBuilder, ToolBarBuilder, TaskPaneBuilder, MessagePaneBuilder, and StandardPaneBuilder. Use the Java 7 source code style. CHANGES IN 6.4.0 ------------------------------------------------------ This release brings a new mechanism for setting up event handling where all sorts of event listeners including Actions can be described with a fluent interface. It also fixes minor bugs and adds a bunch of standardized views. Common: Added Displayable, ListDisplayable, TableDisplayable Forms: Doesn't group rows in button stacks. JSDL-Component: Added list and table renderers for Displayables. Added JGCheckBoxList. JSDL-Core: New common labels. JSDL-Basics: Minor additions. JSDL-Sandbox: Added a fluent interface for event handling setup. Fixed and extended the ListViewModel. Removed the deprecated AbstractFilteredListModel. Added model and view for a list builder feature. Showcase: Added check box list and list builder demos. All examples have been updated to use and demonstrate the new fluent interface for setting up the event handling. CHANGES IN 6.3.1 ------------------------------------------------------ This release fixed a regression in the Completion library that has been introduced in 6.3.0. It also brings a bug fix and extensions for the Application library as well as improved list view models for use in home views/models. Application: Fixed bug with block/unblock order in Tasks created in a thread other than the EDT. A whole bunch of new listener annotations. Completion: Fixed a major bug with broken standard keys. JSDL-Component: Fixed a bug in ComponentUtils#registerMouseAction. UIF2: Improved field search escape handling. Sandbox: Overhauled the list view models: turned abstract classes into configurable concrete classes; added a whole bunch of convenience methods. Overhauled the row selection management classes. Invoicing: Uses and demonstrates the new list view models. All libraries and examples have been updated to use the new listener method annotations introduced by the Application 1.4. CHANGES IN 6.3.0 ------------------------------------------------------ This release brings a bunch of fixes and improvements as well as a major change in the Desktop library where Appliances have been removed from the library classes. For the latter see the Desktop release notes for details. Application: Listeners#addPropertyChangeHandler accepts general beans. New annotations for focus handling. Improved exception messages. Binding: Adds support for binding sorted JTables. Improved exception messages. Common: Added an internal class. Forms: ListViewBuilder components get names. Completion: Overhauled and fixed the key event handling. Improved the interaction with search fields, Suggest, and TableSelectionUtils. Desktop: Removed Appliances from the library. JSDL-Component: Improved customization of factory methods. Fixed split/menu button keyboard handling. New default renderers. Minor improvements. JSDL-Core: Added style checks. JSDL-Basics: Tiny improvements and doc fixes. JSDL-Sandbox: Model for sorting, filtering, multi-selection. Fluent interface for customizing table columns. Suggest feature. UIF2: Fixed the Mac application termination; added ToolBarBuilder#opaque, overhauled QuickSearchView. Help: Just recompiled against the new Application API. Invoicing: Customized the project's Desktop subclasses to use Appliances. Improved keyboard navigation. Showcase: Demonstrates table sorting. All example applications use a common project and package layout. And they have been updated to use the new renderer classes and table sorting features. CHANGES IN 6.2.1 ------------------------------------------------------ This release just fixes build errors in version 6.2.0. Completion: The build is now labeled 1.6.3. JSDL-Basics: Fixed build problem with duplicate resources. Showcase: Fixed broken links for ListViewBuilder demo sources. Added sources for the demo itself. CHANGES IN 6.2.0 ------------------------------------------------------ This release focuses on removing deprecated classes, methods, and constants. It brings a few incompatible changes and improvements. The migration from version 6.1 is easy; most API users just need to recompile the code against the new library versions. The Application library has the strict checks enabled by default: annotated methods must have a parameter, no return type, and @Action methods use ActionEvent as parameter type. You can revert to the old behavior by disabling checks with the methods Listeners#setAllows*. The sources for all libraries and examples have seen a cleanup to follow Oracle's source code conventions and recommendations. Application: Strict checks for annotated methods by default. Binding: Removed the deprecated class AbstractConverter and deprecated property name constants. Common: Removed AbstractBean. No Bean listener serialization. Forms: Overhauled builder API, fixes, simplifications. Validation: Removed a deprecated property name constant. Desktop: The *Spec have been removed. These have been replaced by the ActionGroup feature before. JSDL Common: Fixed default style sheet for JEditorPane in Java 7. JSDL Component: Removed deprecated classes. JSDL Core: Fixed and improved default focus handling and in turn the keyboard handling of styled panes. JSDL Basics: Improved InputPanes keyboard handling. JSDL Sandbox: Added DefaultToolBarBuilder that builds JToolBars for ActionGroups. UIF2: Removed deprecated methods. The Smart Client Showcase can now show sources for its examples. Several examples have been added, extended, or simplified. The Skeleton example application has been overhauled. It now uses and demonstrates binding and domain validation, and it follows the new coding style and naming conventions. The editor views have been separated from their decoration; this TitledPanel decoration is now configured and updated by the DesktopView class. Also, the MainModel has been separated into an ApplicationModel for application-global models and logic, and a DesktopModel for the per-desktop models and presentation logic. CHANGES IN 6.1.0 ------------------------------------------------------ This release focuses on an API cleanup, where features and classes from the SandBox and UIF2 have been moved to underlying libraries. The builder classes of the JGoodies Forms have been overhauled to provide a more consistent API with several new features and simplifications that can shrink your layout code. It is recommended to read the Forms RELEASE NOTES and to consider using the new ListViewBuilder. The example applications have been updated to use the new APIs and all annotated methods (@Action, etc.) now follow the strict checks that you can enable with the methods Listeners#setAllows*. Application: Minor changes, more sanity checks. Binding: Added binder classes from Sandbox. Forms: Overhauled builder API, several simplifications. Fixed pom.xml Looks: Fixed pom.xml Desktop: The *Spec classes are now deprecated. Replaced by the overhauled ActionGroup feature. JSDL Component: New components; renamed some component classes. JSDL Basics: Added panes from Sandbox. JSDL Sandbox: Fixed TableStateUtils, moved classes to basic libs. UIF2: Overhauled builders. Moved classes to component lib. AbstractDialog and AbstractView have been removed. CHANGES IN 6.0.1 ------------------------------------------------------ This version makes it easier to share library updates in a team. Therefore it ships the libraries with compressed sources and JavaDocs as well as a pom.xml for use with Maven. The example apps have been updated to use a pair of ListModel plus ListSelectionModel instead of the SelectionInList. Application: New DefaultApplicationContext constructor. Binding: Added an empty PresentationModel constructor. JSDL Basics: Removed deprecated code. JSDL Sandbox: Added ListViewBuilder. UIF2: Removed deprecated code; more deprecated classes. CHANGES IN 6.0.0 ------------------------------------------------------ This version requires Java 6. All libraries and applications use the Java 6 source code style. The backports of Java 6 features and fixes for Java 5 bugs are now obsolete and have been removed. Also, most deprecated methods and classes have been removed. Animation: Generified, restructured, cleanup. Application: New TaskService constructor, removed Basic* classes. Common: Added preconditions. Desktop: Added DesktopManager#getDesktopFrames. Forms: Removed the ButtonBarBuilder. JSDL Component: JGComponentFactory fixed and extended. JSDL Core: Supports the Java 6 Dialog.ModalityType. JSDL Basics: Significantly extended the docs; clarified API. UIF2: Removed deprecated and outdated classes. Validation: Added Severity.INFO. Examples: Recompiled against the new library versions. Added many Showcase topics. CHANGES IN 5.10.1 ------------------------------------------------------ This is a bug fix release. Application: Fixed doc typos. Binding: Improved implementation. Completion: Fixed cursor position value in #search calls. JSDL Common: Fixed infinite focus traversal lookup loop. JSDL Component: Fixed component setup. JSDL Basics: Fixed InputPanes#showRadioChoice return value. JSDL Sandbox: Fixed and improved ControlList. Validation: Minor fix. Examples: Recompiled against the new library versions. CHANGES IN 5.10.0 ------------------------------------------------------ This version focuses on reshaped JSDL libraries and standardization of methods annotated with @Action, @PropertyChangeListener, etc. All atomic JSDL Core components have been moved to JSDL Component. Hence, all components can now be created via the JGComponentFactory. Application: Strict parameter type checks for annotated methods. Added a setup for optional vs. mandatory parameters. Added a setup for strict parameter type checks for @Action annotated methods. Binding: Added interfaces for Action name binding. JSDL Component: Added link components and CommandLink. JSDL Core: Moved components to JSDL Component. Changed parameter types for Action-like interface methods such as WizardPageModel#onBackPerformed from EventObject to ActionEvent. JSDL Basics: Minor fixes. JSDL Sandbox: Moved Action binder interfaces to the Binding lib. Validation: Minor fix. Libs, examples: Reflect the API changes. CHANGES IN 5.9.3 ------------------------------------------------------ This update fixes bugs and brings an extended and generalized binding. Binding: Conversions retain the ComponentValueModel feature. Generalized check box and radio button binding. Common: Fixed a platform-dependent bug in ArrayListModel and LinkedListModel. Looks: Fixed potential NPE. JSDL Component: Fixed JGTextArea background color. Multi-line text components wrap lines. JSDL Core: Implicitly created actions commit a pending edit. UIF: UIFModel and UIFPresentationModel are deprecated. All libraries: Source code improvements. All examples: Uses modern binding style. Replaced the old BasicComponentFactory by the JGComponentFactory. Source code improvements. CHANGES IN 5.9.2 ------------------------------------------------------ This update fixes minor bugs, adds component factory methods, extends the binder mechanism, and ships a Completion lib change. Binding: Added and extended the binder mechanism from Sandbox. Added JavaDocs for all binders and binding builders and their methods. Completion: Fires ApplicationEvents only on enter and focus lost. Completion selection sets the replacement text, not the popup display string. JSDL Component: Fixed static text focus traversal in screen reader mode. Added JGComponentFactory methods for combos, password fields, and lists. JSDL Core: Improved accessibility for wizard pages. JSDL Basics: Minor change. JSDL Sandbox: Moved the binder mechanism for to Binding. All examples: Use and demonstrate the new features. CHANGES IN 5.9.1 ------------------------------------------------------ This is primarily a bug fix release. It also contains changes for the new binder mechanism that has now been extended for the ActionObject class. JSDL Common: Added ActionObject. JSDL Core: Fixes a regression that has been introduced by an accessibility improvement. JSDL Basics: Added StandardPanes#showExitingInformation. JSDL Sandbox: Refined, changed, and extended the binders. [Action]PresentationModelBinder#bindProperty has been renamed to #bindBeanProperty. Added [Action]BeanBinder#bindProperty. Added [Action]PresentationModelBinder#bindProperty. All examples: Use and demonstrate the most recent binding style. CHANGES IN 5.9.0 ------------------------------------------------------ This version focuses on reshaped JSDL libraries. JSDL Core classes have been moved to JSDL Common or JSDL Component where appropriate. Most migration steps are done if you organize imports in API users. However, some classes have been renamed or split, and some features have been relocated. Binding: Tiny bug fix. Forms: Bug fix. Validation: Minor extensions. JSDL Common: Added the Callback interface from the Desktop lib. Added ActionBean (replaces UIFModel) and ActionPresentationModel (replaced UIFPresentationModel). JSDL Component: Added features for static text; shared customizable 'current' instance of the JGComponentFactory. JSDL Core: Accepts buttons as commit objects. Useful to preview views without model/presenter. Moved style checker infrastructure to JSDL Common. Moved setup to JSDL Common or JSDL Component resp. Uses the static text features in JSDL Component. JSDL Basics: Relaxed checks for object names in StandardPanes. Improved accessibility. JSDL Sandbox: Fixed, refined, changed, and extended the binders. Renamed Binder classes, added PresentationModelBinder. CHANGES IN 5.8.1 ------------------------------------------------------ This version fixes bugs and comes with slightly improved HTML docs. JSDL Component: Fixed JGTextArea construction with non-empty text. JSDL Basics: Relaxed checks for object names in StandardPanes. JSDL Sandbox: Fixed broken feature in the new binder mechanism that automatically sets validation message keys. CHANGES IN 5.8.0 ------------------------------------------------------ This version focuses on a new layout of the JSDL libraries that reduces dependencies and shall be easier to understand. It also demonstrates a new client pattern where the component creation and initialization has been separated from the component binding. The new JSDL Component library contains the components formerly located in the UIF2, e.g. UIFTextField, UIFSearchField, etc. with a new class name prefix, e.g JGTextField, JGSearchField. For backward compatibility, the UIF* components remain in the UIF2; these will be removed from the Smart Client 6.0. Several components from the JSDL Sandbox that have a stable class name, stable package name, and stable documentation have been moved to the new JSDL Basics library. The JGoodies Desktop allows to instantiate DesktopManager where it was a singleton before. That in turn enables you to manage multiple desktops in a multi-frame application. o Common: Removed Java 1.4 props; added display properties o Application: No change. o Binding: Minor fix, based on JGoodies Common 1.2.0 o Forms: No change. o Looks: Based on JGoodies Common 1.2.0 o Validation: No change. o Completion: No change. o QuickSearch: No change. o JSDL Common: New; formerly named JSDL Basics. o JSDL Component: New; JGoodies components + factory. o JSDL Core: Minor improvements; reorganized imports. o JSDL Basics: Extracted from JSDL Sandbox. o Desktop: Instantiable DesktopManager, generified. o UIF2: Moved components to JSDL-Components lib. Removed obsolete code. o JSDL Sandbox: Improved binder support. Moved parts to Basic. Improvements. o All examples: Adjusted imports for changed package/class names. Client source code style uses the new factory and binders. CHANGES IN 0.9.28 ------------------------------------------------------ This version ships new features, improvements, minor corrections, some incompatible changes. The Invoicing example application demonstrates the most recent state of a client architecture and client source code style. The UIF2 now depends on the QuickSearch library where it was the other way round before. o Application: Added listener methods support. Improved exceptions. o Binding: New table binding support. o Desktop: Extended API. Incompatible changes. o JSDL Core: Minor fixes. o JSDL Sandbox: Minor improvements. Started binder support. o QuickSearch: Moved views to the UIF2. o UIF2: Added quick search views, ThreadUtils, UIFSearchField constructors. o All examples: Adjusted imports for new listener method package. Updated client source code style. o Invoicing: Extracted services from presentation models. Removed unnecessary desktop frame elements: side bar contributions, status pane. CHANGES IN 0.9.27 ------------------------------------------------------ This version comes with an overhauled event handling style. It also ships minor corrections and improvements. o Application: Supports the naming conventions for the new @Action method names "onXzyPerformed". o Binding: Minor change. o Completion: No change. o Forms: Minor extension. o JSDL Core: All models use the new event handling style. Therefore several methods have been renamed. See below for migration information. o JSDL Sandbox: Bug fixes. Introduced a simple event bus. Introduced the Handlers class for simple event wiring using the new annotations: @PropertyChangeHandler, @DoubleClickHandler, @PopupHandler. More will follow. o Validation: Minor extension. o All examples: Use the new event handling style in presentation models and views. o Invoicing: Uses the new Sandbox event bus for improved communication between different models, for example if the customer editor *and* the country home table shall be notified when a country has been inserted. MIGRATION INFO If you just replace the JSDL Core 0.9.16 with version 0.9.17 you may experience a bunch of compiler errors due to renamed event handling API methods in the model interfaces such as WizardPageModel. For example, WizardPageModel#performBack is now #onBackPerformed. If you have only a few compiler errors, fix them manually and your are done. As an alternative, you may migrate automatically using the following approach: 1) add the JSDL 0.9.16 classes in source form to your workspace, 2) rename the methods as described in the JSDL Core RELEASE NOTES, 3) remove the source classes, 4) integrate the JSDL Core 0.9.17 in binary form. CHANGES IN 0.9.26 ------------------------------------------------------ This version ships minor corrections and improvements. o Application: Introduced AbstractResourceMap. o Completion: Overhauled keyboard and focus handling. o JSDL Core: Overhauled the style checking feature; IconType.QUESTION is deprecated, added new style checks. o JSDL Sandbox: New package structure, started tracing feature, new classes InputPanes and AboutPanes started. Factory customization via subclassing and custom resources. Many improvements. Added ValidationSupport. o All examples: Replaced application dialogs by standard dialogs from the Sandbox library. o Invoicing: Overhauled country and charge code editing. The faked entity management and client code is closer to the JPA. o Skeleton Pro: Replaced AbstractDialogs by JSDL panes. o JSDL Demo: More examples, reorganized, more docs. CHANGES IN 0.9.25 ------------------------------------------------------ This version ships minor corrections and improvements. It comes with an incompatible change in the UIF2 regarding AbstractFieldSearchProcessor. o Application: Fixes and improvements. o Binding: Moved FastPropertyAccessorProviderDraft to Extras. o Completion: Adds optional accessibility support. o Looks: Bug fixes. o JSDL Core: Fixed broken resources, removed deprecated code. o JSDL Sandbox: Overhauled MessagePanes, StandardPanes, started ValidationPane, improved docs. o Desktop: Fixes to ActionGroup and TopLevelGroup. o UIF2: Renamed AbstractFieldSearchProcessor#searchValue to #poorMansSearchValue. o Invoicing: Uses more Sandbox features, improved accessiblity. o JSDL Showcase: More samples, restructured items. o Skeleton Pro: Fixed application preferences. CHANGES IN 0.9.24 This version comes with several smaller improvements, extensions, and API simplifications. It also ships a draft of the upcoming showcase applications. o Application: Removed deprecated @Action.name, easier customization. Overhauled exceptions. o Binding: Optional fast bean lookup if you don't use BeanInfos. o Common: Improved Formats. o Completion: Unchanged. o Desktop: Fixed DefaultMenuBarBuilder and DefaultMenuBuilder. o Forms: Unchanged. o JSDL Basics: Minor change. o JSDL Core: Easier WizardPageModel construction. New Verification interface and TaskPane#setVerification. Renamings. Added TaskPane#setMainInstructionLabelsContent. Incompatible change for deprecated IconTypes. o Looks: Minor Plastic icon change. o JSDL Sandbox: New. Recommended classes: MessagePanes, StandardPanes, TableStateUtils, MenuBarFactory, BasicFormFactory, BasicApplicationPreferences. o UIF2: Minor improvements. o Validation: Added IconFeedbackPanel. o Examples: Added or improved application preferences. Use and benefit from the JSDL Sandbox classes. CHANGES IN 0.9.9 o Application: Tasks unblock as soon as #done is called. Bug fix.