JGoodies Framework Release Notes CHANGES IN 1.45.2 ---------------------------------------------------- o Fixed, added, and clarified some JavaDocs. CHANGES IN 1.45.1 ---------------------------------------------------- o Improved sources: removed redundant type information. CHANGES IN 1.45.0 ---------------------------------------------------- o Removed references to Windows Aero code that has been removed. o Added PopupMenuBuilder#show(ActionEvent). CHANGES IN 1.44.0 ---------------------------------------------------- o FIX: FrameBuilder screen dimension scaling broken with Java 8 on high DPI display. o The deprecated handlers package has been removed. o Removed references to the PlasticXPLookAndFeel. CHANGES IN 1.43.0 ---------------------------------------------------- o Added class RowSelectionUtils that can register row selection keyboard actions for both JTable and JList. o Marked TableSelectionUtils as deprecated. o In AbstractRowSelectionManager the signature for method #registerKeyboardAction has been changed from (JComponent c) to (JComponent... components). o Marked classes Handlers, ObjectHandler, ActionObjectHandler, and ActionBuilder as deprecated. These classes can be used to write event handling code that is similar for Swing and JavaFX. Use pure Swing event handling code instead. CHANGES IN 1.42.2 ---------------------------------------------------- o FrameBuilder code cleanup. CHANGES IN 1.42.1 ---------------------------------------------------- o FIX: FrameBuilder screen dimensions do not scale on high DPI. CHANGES IN 1.42.0 ---------------------------------------------------- o The sandbox class Background has been moved to the library core. o Fixed JavaDocs. CHANGES IN 1.41.0 ---------------------------------------------------- o Adopted to the new method Application#getResourceMap(). o Removed the quit listener from OSXApplicationMenu#register. CHANGES IN 1.40.0 ---------------------------------------------------- o ExpandableViews can expand/collapse the view, if the user clicks on the panel. See the property "panelExpansionEnabled". o Replaced refs to AccessControlException by SecurityException. CHANGES IN 1.39.0 ---------------------------------------------------- o Adapted the changes in the VetoableEvent and ExitListener APIs. o Added package infos. CHANGES IN 1.38.1 ---------------------------------------------------- o Source cleanup. CHANGES IN 1.38.0 ---------------------------------------------------- FIX: Double-click on text field bound to an object search (with a FieldSearchModel) starts the search process, although the text represents the object value. o Compiled against JGoodies Common 1.24. o Improved implementation of ActionGroupBuilders. o Improved WindowUtils docs. CHANGES IN 1.37.0 ---------------------------------------------------- o Added the FrameBuilder(JFrame) constructor. CHANGES IN 1.36.1 ---------------------------------------------------- o Source cleanup. CHANGES IN 1.36.0 ---------------------------------------------------- o CHANGE: Renamed FrameBuilder#onApplicationExiting to #onApplicationExited. o FIX: Possibly wrong execution order of CompletionManager's and FieldSearchModel's focus lost behavior, and background processes for value lookup and value search. This can lead to values marked as invalid in the associated text field. o Added experimental support for asynchronous operations using the SecondaryLoop mechanism. It allows to perform something in the background while blocking the Event-Dispatch-Thread (EDT) that remains responsive (handles repaint events, etc.). Examples: result1 = aSupplier.get(); // EDT result2 = Background.get(aSupplier); // background result3 = aFunction.apply(anArgument); // EDT result4 = Background.apply(aFunction, anArgument); // background result5 = aPredicate.test(anArgument); // EDT result6 = Background.test(aPredicate, anArgument); // background aCallable.call(anArgument); // EDT Background.call(aCallable, anArgument); // background aConsumer.accept(anArgument); // EDT Background.accept(aConsumer, anArgument); // background See class com.jgoodies.sandbox.util.Background for details. CHANGES IN 1.35.1 ---------------------------------------------------- o Fixed the OSXApplicationHandler8/9's quit handling: added a missing call to Application#exit. CHANGES IN 1.35.0 ---------------------------------------------------- o Moved the new application exit process to the Application lib and the Application class. CHANGES IN 1.34.0 ---------------------------------------------------- o Added an extended application exit mechanism to JGApplication that is based on VetoableEvent and can accept or reject the application exit "later", for example after a background save operation has completed. See ExitListener2 and JGApplication#addExitListener. This mechanism will be moved to the Application class and the JGoodies Application library (JSR 296) in version 8.8 of the JGoodies Smart Client. o Added tests for the application exit process. CHANGES IN 1.33.0 ---------------------------------------------------- o ToolBarBuilder can register keyboard actions with the toolbar buttons. By default the builder keeps the old behavior. To register keyboard actions, you must explicitly call the new method ToolBarBuilder#registerKeyboardActions. o ToolBarBuilder rejects duplicate calls to #border and #padding. o DefaultToolBarBuilder registers keyboard actions. o Improved JavaDocs. CHANGES IN 1.32.1 ---------------------------------------------------- o Implementation improvement in QuickSearchView. o Source cleanup. CHANGES IN 1.32.0 ---------------------------------------------------- o Removed the @Action method lookup via method references from: MenuBuilder, PopupMenuBuilder, ToolbarBuilder, and ActionObjectHandler. CHANGES IN 1.31.1 ---------------------------------------------------- o All menu builders avoid leading and trailing separators: MenuBuilder, DefaultMenuBuilder, PopupMenuBuilder, DefaultPopupMenuBuilder. CHANGES IN 1.31.0 ---------------------------------------------------- o Removed unsupported features from AbstractUISetup: #forceWindowsDecorationOnNonWindows(boolean), #tracing(boolean), #installTracing(), #isXPLunaStyle. o Removed unsupported drafts from the Sandbox: - tracing, - ArrayTableModel. CHANGES IN 1.30.0 ---------------------------------------------------- o Removed deprecated methods from PopupMenuBuilder that have been replaced by other methods before. CHANGES IN 1.29.0 ---------------------------------------------------- o Overhauled the user interface setup regarding body text sizes: - AbstractUISetup has body text mode (classic vs. larger) see AbstractUISetup#bodyTextMode, - BasicApplicationPreferences manages this mode as a persistent bound bean property. o The following sandbox classes are now part of the official API: - framework.completion.Suggest - framework.util.MVPUtils - framework.setup.AbstractUISetup and its inner class BasicUISetup - framework.setup.BasicApplicationPreferences o Added AbstractUISetup#muteAuditoryFeedback(). o Removed TableBuilder#addColumn, #addColumn(boolean), and #done. o Overhauled the Suggest API: - added a Builder - added convenience code - can be shared by multiple search fields CHANGES IN 1.28.1 ---------------------------------------------------- o FIX: BasicAppUISetup without explicit scaling does not invoke HTMLUtils#defaultStyleSheetRuleToSharedStyleSheet. CHANGES IN 1.28.0 ---------------------------------------------------- o FrameBuilder specifies font sizes as int not float. o FrameBuilder checks a sequence of initial sizes. o HTMLUtils#defaultStyleSheetRuleToSharedStyleSheet is called by BasicAppUISetup. o New History constructor with ResourceMap for the actions (back, next, home). o AbstractOpenMonthViewPopupAction#commitAndClose is protected. o Improved JavaDocs. CHANGES IN 1.27.0 ---------------------------------------------------- o JGApplication#getArgs() returns the program launch arguments. o Adjusted imports for the internal superclass IActionObject. CHANGES IN 1.26.0 ---------------------------------------------------- o FIX: Broken TableBuilder column class if a formatter is provided other than Function. o Replaced TableBuilder API method pairs (addColumn/done) by (beginColumn/endColumn). Marked the old API as deprecated. o Renamed the ModuleResourceManager to PackageResourceManager. This ResourceManager implementation maps package name prefixes to ResourceMaps. A module based ResourceManager shall ship with a modularized version of this library. CHANGES IN 1.25.0 ---------------------------------------------------- o Added MenuBuilder#lightWeightPopupEnabled. o Marked PopupMenuBuilder methods as deprecated that have been replaced by the fluent-style method set before. o Fixed a regression in WindowUtils.PersistencyHandler that rejected JDialog and JWindow. o ActionObjectHandler#action returns an ActionBuilder, not its superclass BasicActionBuilder. o Fixed JavaDocs. CHANGES IN 1.24.0 ---------------------------------------------------- o Removed the deprecated TitledPanel. A copy of this class is now contained in the Skeleton example application. o Extended the TableBuilder API: - #addColumn(boolean) for conditionally adding a column - #getLong for directly adding columns with Long values o Improved AbstractOpenMonthViewPopupAction API and docs. o Improved TableBuilder support for LocalDate and LocalDateTime. o FrameBuilder title, name, and text accept formats arguments. o Added WindowUtils#clearBounds(Preferences, Window). o Added WindowUtils#clearState(Preferences, JFrame). o Fixed a regression in WindowUtils.PersistencyHandler where frame bounds where stored even in maximized state. CHANGES IN 1.23.0 ---------------------------------------------------- o The WindowUtils.SizeChangeHandler is now PersistencyHandler and it stores bounds for JWindows and JDialogs too. o Simplified trace resources. CHANGES IN 1.22.1 ---------------------------------------------------- o Fixed NPE in AbstractOpenMonthViewPopupAction#commitAndClose. CHANGES IN 1.22.0 ---------------------------------------------------- o Handles OS X application events on both Java 8 and Java 9. CHANGES IN 1.21.0 ---------------------------------------------------- o Removed the deprecated ScreenUtils#has1024x768Screen and #has800x600Screen. These have been replaced by the ScreenScaling API and the AppBuilder fluent API. o Removed the FontSizeUtils FontSizes enum that has been replaced by ScreenScaling's ScaleFactor enum. CHANGES IN 1.20.0 ---------------------------------------------------- o Fixed and added JavaDocs. o Added MVPUtils methods for JTables. o Changed FontSizeUtils.FontSize values to 1.0, 1.25, and 1.5. o AbstractUISetup scales before the L&f is chosen. CHANGES IN 1.19.0 ---------------------------------------------------- o Added a whole bunch of methods to MVPUtils regarding JLists. o Added TableBuilder#sortable and #headerReorderingAllowed. o Added TableBuilder docs. CHANGES IN 1.18.0 ---------------------------------------------------- o Added BasicApplicationPreferences#from and #fromUserPreferences. CHANGES IN 1.17.1 ---------------------------------------------------- o An optimized initialization process in JGApplication reduces the resources accessed during the application startup. CHANGES IN 1.17.0 ---------------------------------------------------- o Improved support for high dpi displays. o Compiled against the latest Common lib version. o ExpandableView ensures that UIManager icons have been set. CHANGES IN 1.16.0 ---------------------------------------------------- o Removed deprecated methods in MenuBuilder and ToolBarBuilder. o Removed the AbstractFrame class that has been replaced by the FrameBuilder. o ToolBarBuilder configures split buttons opaque property. o Improved ToolBarBuilder implementation. o TableBuilder rejects invalid duplicate calls. CHANGES IN 1.15.0 ---------------------------------------------------- o Removed all previously deprecated methods: - the builder #create methods that have been replaced by public constructors, - ScreenUtils#locateOn* that have been replaced by #locateAt(Component, ScreenPosition) o Marked classes as deprecated: - TitledPanel with its outdated visual style. If you cannot replace its easily, copy it in source form to your code base. - AbstractFrame that has been replaced by the FrameBuilder that provides more features and an easier setup API. o Fixed a bug on OS X where the registration of ActionListeners with the application menu failed. o Fixed MenuBuilder bug regarding the icon visibility on OS X. o Adjusted the OS X about name registration to modern OS X. o JGApplication#configureUI enables the screen menu on OS X. o Added OSXUtils with #setUseScreenMenuBar(boolean). o MenuBarFactory vends a menu bar that is visible always on OS X if the screen menu bar is enabled. o OSXApplicationHandler creates ActionEvents with the root frame as event source instead of the handler itself. o Marked MenuBuilder constructors and some methods as deprecated. These have been replaced by the fluent builder style. o Marked ToolBarBuilder constructors and methods as deprecated. These have been replaced by the fluent builder style. o Replaced the AbstractShowingHandler by Listeners#hierarchyShown. o Removed the icon package and icon resources. CHANGES IN 1.14.0 ---------------------------------------------------- o All builder constructors are now public. o All static methods *builder#create() have been marked as deprecated. Use the public constructor instead. o Overhauled the TableBuilder API. o Implementation uses more Java 8 features. o Improved FrameBuilder's foreground color. CHANGES IN 1.13.1 ---------------------------------------------------- o Internal Actions use the ActionBuilder or I18nActionBuilder. o Fixed MVPUtils#getSelectedItem. CHANGES IN 1.13.0 (Java 8) ------------------------------------------- o Moved to Java 8. o Renamed UIFApplication to JGApplication. o Uses the new event handling APIs. o Removed the printing classes PrintableDocument and PrintManager. o Moved the action builders from Sandbox to the library core. CHANGES IN 1.12.1 --------------------------------------------------- o Added Windows10Icon constants. CHANGES IN 1.12.0 --------------------------------------------------- o Extended the FrameBuilder API. o Fixed and improved the ScreenUtils logical screen locations. o Fixed Suggest on instant search fields. o Added text filter and text converter to Suggest. o Added MVPUtils to the sandbox utils. o Removed the GradientSeparator; use plain separators instead. o Marked TitledPanel as deprecated; it supports an outdated visual style. You should consider replacing it by a plain panel with header. If that is inappropriate, you may copy the class' sources to your project code. CHANGES IN 1.11.0 --------------------------------------------------- o Renamed packages from *.uif2.* to *.framework.* o Replaced CardPanel by JGCardPanel from JGoodies Components. o New package name for the Windows and FontAwesome icons support. o Moved stable classes from the sand box to the framework core: - handlers - AbstractUISetup - FontSizeUtils o Removed UIFStringUtils. CHANGES IN 1.10.0 --------------------------------------------------- o Removed the SplashWindow. Use the app startup sequence instead. o Added a UI setup feature: AbstractUISetup and DefaultUISetup. o Added glyph icons: Windows 10 and FontAwesome. o Replaced JGoodies Forms by JGoodies Layout. CHANGES IN 1.9.0 ---------------------------------------------------- o "UIF2" + "JSDL-Sandbox" -> "JGoodies Framework". o Removed the legacy classes that had been added in version 1.8. o Synchronized the History API with the Desktop's History class. o Added progress views. o Added ExpandableView. o Removed ResourceIDs. o Removed back, next, home icons. o Removed ToolBarBuilder's #headerStyle and #borderStyle methods that have been replaced by the general method #clientProperty. o Removed the Resizer class. o Removed AbstractFrame#resizeHook(). o Removed WindowUtils#getParent that has been replaced by JSDLUtils#getParent. o Code cleanup in WindowUtils. o Added JavaDocs to several public methods. o Fixed many JavaDoc issues. Sandbox: o Removed the MetaDesign and MetaDesignBuilder classes. o Removed deprecated methods from Single/MultiSelectionPaneBuilder. o Uses the new hyper link API. o Moved ListViewModel and FilteredListViewModel to JSDL Common. o Moved choice and login dialogs to JGoodies Dialogs. CHANGES IN 1.8.0 ---------------------------------------------------- o Added legacy classes from the UIF to legacy packages. These classes are marked as deprecated and will be removed in a future release. o Added the FieldSearchBindable that replaces FieldSearchBindings. Sandbox: o Added mouse entered/exited support to the Handlers feature. o Moved the basic object handlers to JGoodies Application. CHANGES IN 1.7.0 (Java 7) -------------------------------------------- o Moved to Java 7. Sandbox: o Moved to Java 7. o Removed the IconFeedbackPanel that is now part of the binary JGoodies Validation library. o Added generics to Swing types and list builder classes. o Moved the backport of the Java 8 functional interface to JSDL Common. o Moved the internationalization feature to JSDL Common. o Added resource field annotations @Key, @Description, and @Meaning that provide a custom resource key, description, and translation information for fields in a class annotated with @ResourceProvider. o Fixed a co-modification bug in Suggest. CHANGES IN 1.6.0 ---------------------------------------------------- o Removed deprecated code. Sandbox: o Updated references to FormBuilder and ListViewBuilder. o Replaced #show by #showDialog in SingleSelectionPaneBuilder and MultipleSelectionPaneBuilder. CHANGES IN 1.5.0 ---------------------------------------------------- o Removed Look&Feel choice mechanism. o Removed the internationalization API from the MenuBuilder, i.e. MenuBuilder#labelKey(String key, Object... args). o Renamed the #target method in MenuBuilder, PopupMenuBuilder, and ToolBarBuilder to #actionProvider. #target is deprecated; it'll be removed from a future version. CHANGES IN 1.4.0 ---------------------------------------------------- o Overhauled MenuBuilder, PopupMenuBuilder, ToolBarBuilder. These builders now follow the new creation pattern. And they provide methods to set the title/label, menu/toolbar they operate on, the factory, and a default action provider. o Added MenuBuilder#action(boolean, ...) and #separator(boolean) that allow to add items and separators if an expression is true. o Better fallback in AbstractFrame#configureWindowIcon(). o ExtUIManager compares Look&Feel names with a locale-independent uppercase transformation. CHANGES IN 1.3.5 ---------------------------------------------------- o Actions in History are directly accessible. CHANGES IN 1.3.4 ---------------------------------------------------- o Improved Escape handling in field search. Does not consume Escape if the revert operation does actually nothing. CHANGES IN 1.3.3 ---------------------------------------------------- o Fixed the Escape handling in field search that could close a dialog when cancelling the auto-completion feature. o Fixed the Mac application termination process; avoids style report regarding a missing event source, and avoids duplicate exit allowed checks. CHANGES IN 1.3.2 ---------------------------------------------------- o Overhauled the QuickSearchView API: - Resources and the ResourceMap must be provided by the API user - The open action is performed by the API user - The QuickSearchView#getPopupMenu is now public - The search panel background image has a color as fallback CHANGES IN 1.3.1 ---------------------------------------------------- o Added ToolBarBuilder#opaque. CHANGES IN 1.3.0 ---------------------------------------------------- o Removed UIFApplication#configureOSXMenu. o Removed deprecated methods in MenuBuilder and PopupMenuBuilder. o Added #action(IActionProvider actionProvider, String actionName) to MenuBuilder, PopupMenuBuilder, and ToolBarBuilder. o Compiled against the JGoodies Common 1.5. o Source code cleanup. o Fixed and extended the pom.xml: - added schema - fixed scope for dependencies - added build data CHANGES IN 1.2.0 ---------------------------------------------------- o Removed the deprecated classes AbstractDialog and AbstractView. o Renamed the SimpleInternalFrame to TitledPanel. o Removed the I15dPanelBuilder2 class that has been replaced by the I15dPanelBuilder in the JGoodies Forms. o Added PopupMenuBuilder#show(EventObject). CHANGES IN 1.1.0 ---------------------------------------------------- o Removed the deprecated WindowUtils#setIconImages. Use Frame#setIconImages instead. o Removed class UIFLabel that has been replaced by the header labels created by the JGComponentFactory. o Marked AbstractView as deprecated. o Marked AbstractDialog as deprecated; use JSDL panes instead. o Marked UIFStringUtils as deprecated. o The javadocs, main and test sources are delivered as JARs. CHANGES IN 1.0.0 ---------------------------------------------------- o Requires Java 6. o Removed deprecated component classes that have been replaced by the JSDL Component classes before: - StripedTable - ToolBarButton - ToolBarToggleButton - UIFCheckBoxMenuItem - UIFFormattedTextField - UIFMenuItem - UIFPasswordField - UIFRadioButtonMenuItem - UIFSearchField - UIFSplitPane - UIFTable - UIFTextArea - UIFTextField o Removed UIFactory that has been replaced by the JGComponentFactory. o Removed deprecated model superclasses: - UIFModel (replaced by ActionObject, ActionBean) - UIFPresentationModel (replaced by ActionPresentationModel) o Removed the PopupAdapter utility class that has been replaced by the @PopupListener mechanism. o Marked WindowUtils#setIconImage as deprecated. Use Frame#setIconImages instead. CHANGES IN 0.11.4 ---------------------------------------------------- o Declared methods as static. CHANGES IN 0.11.3 o Marked UIFModel and UIFPresentationModel as deprecated. o Declared methods as static. CHANGES IN 0.11.1, 0.11.2 o Recompiled against updated libs JSDL Common, JSDL Component, and JSDL Core. CHANGES IN 0.11.0 o Fixed UIFSearchField#resetText missing icon change. o StripedTable extends JGStripedTable. o Removed SystemUtils that has been replaced by Common SystemUtils. o Removed ToggleAction. o Removed support for ToggleAction from MenuBarBuilder, PopupMenuBuilder, ToolBarBuilder. o Moved utility classes to JSDL Component. CHANGES IN 0.10.3 o Moved QuickSearchView from the QuickSearch library to the new UIF2 "quicksearch" package. o Added ThreadUtils that has a #sleep method. o Added UIFSearchField(int) and UIFSearchField(int, Mode). o UIFModel and UIFPresentationModel implement ActionProvider. CHANGES IN 0.10.2 o Marked ComponentUtils#registerDoubleClickAction as deprecated. It has been replaced by Handlers#addDoubleClickHandler. o Removed ComponentUtils#registerPopupAction. It has been replaced by Handlers.addPopupHandler. o UIFSearchField search text can be reset with #resetSearchText allowing to search again after other search parameters have been changed. CHANGES IN 0.10.1 o Moved MetaDesign and MetaDesignBuilder to the JSDL Sandbox. CHANGES IN 0.10.0 INCOMPATIBLE CHANGE: AbstractFieldSearchProcessor#searchValue has been removed. The old default implementation was a poor fall back that is typically unnecessarily slow, and I had recommended to override it with custom code, which is often quite easy. I've found that most API users are not aware of this situation. It's so easy to not find bold warnings in JavaDocs. The new AbstractFieldSearchProcessor makes it a requirement to implement #searchValue in subclasses. The old code is now available as #poorMansSearchValue. That shall make it obvious that there are potential problems with this implementation. If you want to use the poor fall back use: @Override public Object searchValue(String text) { return poorMansSearchValue(text); } BUG FIXES: o Fixes a potential NPE in ToolBarButton and ToolBarToggleButton #configurePropertiesFromAction. CHANGES IN 0.9.25 o PopupAdapter#popupMenuIfTriggered is protected, #mousePressed and #mouseReleased are final. o LookConfiguration lazily initializes the Plastic themes. CHANGES IN 0.9.24 o Moved UIFApplication resources to individual classes: - AbstractDialog resources ("button.ok.text", etc.) to the AbstractDialog. - Help icons and Action resources to the Help library package resources. These can be overridden by providing class-level resources. - FeedbackDialog resources to the FeedbackDialog. CHANGES IN 0.9.23 o Removed GroupUtils, UIFLayoutFocusTraversalPolicy and UIFContainerOrderFocusTraversalPolicy that have been replaced before by FocusTraversalUtils and the new focus traversal policies in the JSDL Basics library. o UIFStringUtils does no longer extend Strings. Use Common Strings instead. o All UIF* text fields use the prompt as fallback for the accessible description, if it is not the accessible name. o Removed classes ActionSet and ActionLabel. o Replaced Look&Feel change handlers in classes PopupAdapter and Modes. o UIFApplication installs a default Forms ComponentFactory in the AbstractBuilder that creates JGButtons to honor the accessible information provided by the Actions created by the JGoodies Application framework. CHANGES IN 0.9.22 o Removed duplicate resources from the JAR. o Uses and required the JGoodies Common library. o Removed class UIFButon and its unused references in AbstractDialog. o Removed the UIFFocusTraversalPolicy. o Removed CompoundIcon(Icon, Icon). o SystemUtils is now based on Common SystemUtils. o Removed UIFStringUtils#equals(Object, Object) that has been replaced by Common Objects#equals(Object, Object). o Marked UIFContainerOrderFocusTraversalPolicy and UIFLayoutFocusTraversalPolicy as deprecated. They have been replaced by the JSDL-Basics JG*FocusTraversalPolicy classes. The static methods #get/setAcceptNonEditableTextComponents and #is/setFocusTraversable have been moved to the JSDL-Basics class FocusTraversalUtils. o GroupUtils is now deprecated; it has been replaced by the FocusTraversalUtils from JSDL-Basics. CHANGES IN 0.9.21 o FieldSearchModel#updateValue (was #updateValueOnFocusLost) is now public. It is useful to get the searched value for a pending edit, for example when the user clicks OK or chooses Ctrl+S to save an editor contents that may need to search before the dialog can be closed, or editor contents can be saved. o FieldSearchModel#updateValue updates the text even if the text represents the value set to get a uniform display string after search, focus lost, or updating the value. o AbstractFieldSearchProcessor#represents(String, Object) now ignores the case, and trims the display string. o Improved the [Abstract]FieldSearchProcessor documentation. o Generified [Abstract]FieldSearchProcessor. o ScreenUtils#screenConfigurationNode avoids node names that are too long to be stored, if there are more than 4 screens. CHANGES IN 0.9.20 o Fixed the GlassPaneBlocker's BlockingGlassPane key event blocking. o Fixed broken GroupUtils group population. o UIF2 group ids use own key to not overlap with JSDL group ids. o Added a UIFTextArea with optional support for a multi-line prompt. o Added ComponentUtils#clearFocusTraversalKeys(JComponent); CHANGES IN 0.9.19 o The UIF text components automatically register the icon action and link action with the component for the action's accelerator key - if any - under the WHEN_FOCUSED condition. The popup menu - if any - can be opened by alt shift DOWN when the component is focused. o ComponentUtils#registerKeyboardAction does nothing if the given KeyStroke (or Action's accelerator) is null. o Added ComponentUtils#unregisterKeyboardAction methods. CHANGES IN 0.9.18 o Fixed NPE in UIFApplication#lookupApplicationDataBaseDirectory for Windows envs that haven't bound the %APPDATA% variable. o Fixed missing updates in error and link underline support when the text changed without a key typed, as is the case if a model updates the text while an underline is visible. o Added an empty constructor to UIFSearchField. o Fixed UIFSearchField's initial buttonPaintedAlways state. o UIFSearchField consumes the ENTER event, if and only if search is regular and the search text differs from the current text, i.e. a search is pending. the search is performed, where it fired only once before. o UIFSearchField consumes the ESCAPE key event, if and only if the field's text is not empty. o Added tests for the UIFSearchField. o TableUtils sets column alignment hints for all JTables. CHANGES IN 0.9.17 o Added UIFPresentationModel, and UIFModel that lazily load an ActionMap and provides named access to contained Actions. o Added MenuBuilder#add(ActionMap, String...) and added ToolBarBuilder#add(ActionMap, String...). o FieldSearchModel changes the searching state back to false, AFTER the search value has been committed. o Replaced UIFApplication#configureLoggingFromProperties(String) by #configureLoggingFromProperties(URL). o #configureLoggingFromProperties(URL) closes its InputStream. CHANGES IN 0.9.16 o UIFContainerOrderFocusTraversalPolicy uses the #accept test that is already used in UIFLayoutFocusTraversalPolicy. o UIFTable changes the renderer's horizontal alignment only if an optional column alignment hint is available. o TableUtils set the column alignment hint to leading, if the encoded column specification is fill. o Tests can run during the build process. CHANGES IN 0.9.15 o UIFSearchField shares and reuses the search Action. o UIFTable checks for valid column alignment hints. o Improved exception message if the UIFTable column alignment hints array doesn't match the table column count. CHANGES IN 0.9.14 o Added UIFTable that provides a Java 5 backport of the Java 6 feature "fillsViewportHeight" and column alignments hints. o Overhauled the StripedTable API and implementation. o Removed the StripedTableCellRenderer. If you have extended this class, extend DefaultTableCellRenderer now. o Added a draft for new TableUtils that configure JTable column sizes and alignments from a comma separated list of column specification strings. See TableUtils#configureColumns for the syntax and examples. CHANGES IN 0.9.13 o Fixed UIFSearchField regular-mode search enablement on text change. o Added UIFSearchField bound properties "promptStyle" and "promptVisibleWhenFocused". o The TextComponentDemo demonstrates the new UIFSearchField features. o Added tests to check that UIF text component accessible name honors the prompt. CHANGES IN 0.9.12 o The accessible name for UIF text components honors the prompt. CHANGES IN 0.9.11 o Added behavior to group buttons, see the method GroupUtils#group. Grouped buttons can be cycled through with the arrow keys. The focus traversal policies UIFContainerOrderFocusTraversalPolicy and UIFLayoutFocusTraversalPolicy have been extended to accept only the selected radio button in a group of radios with selection. o Added a test application that demonstrates the new behavior. CHANGES IN 0.9.10 o Moved support for label-component association to the Forms 1.3. o Updated to the Forms 1.3.0 Preview1. o Added UIFLayoutFocusTraversalPolicy that can tweak globally and per component, whether non-editable JTextComponent shall be accepted or rejected by the focus traversal. o Added UIFContainerOrderFocusTraversalPolicy. o UIFApplication#configureUI installs UIFLayoutFocusTraversalPolicy as the default focus traversal policy. o UIFApplication#configureUI enables the PanelBuilder's new labelFor feature globally. o Fixed broken ExtUIManager recovery when missing a stored L&f. If the stored L&f can't be created, it falls back to the LookChoiceStrategy's default L&f and stores it in the prefs, so the ExtUIManager won't complain about it again. o ActionLabel was broken with NimbusLookAndFeel. o Fixed broken ToggleAction mnemonics due to shared ButtonModel. o Replaced ToggleAction#getButtonModel by #createButtonModel. The ToggleAction now creates a ButtonModel per component, where it shared the ButtonModel before, leading to potential problems with missing mnemonics. o Extended the focus demo. CHANGES IN 0.9.9 o Added PanelBuilder2 that associates focusable components to the previously added label if it has a mnemonic. o Added the support for auto label-component association to the I15dPanelBuilder2. o Updated to the Forms version 1.2.1. o Added a demo application for the UIF text component features. o Started a demo application for the upcoming grouping feature that'll group radio buttons, and sets of related check boxes and command buttons. CHANGES IN 0.9.8 o Fixed bug with link exceeding text in UIF text components. o FieldSearchBindings#bind(UIFTextField, FieldSearchModel) installs the search model's CompletionManager on the field, and add the Bindings' component property handler to the field. CHANGES IN 0.9.7 o TextFieldSupport uses wide border only if icons are visible. Hence UIFTextField, UIFFormattedTextField, and UIFPasswordField can display more content if icons are invisible. o TextFieldSupport displays menu icon, if the field is focused or the mouse is over the text component. CHANGES IN 0.9.6 o Updated to work with Application 0.9.4. CHANGES IN 0.9.5 o Added FieldSearchBindings#bind(UIFTextField, FieldSearchModel). CHANGES IN 0.9.4 o FieldSearchModel allows a search if the field text is blank. CHANGES IN 0.9.3 o UIFSearchField in regular mode binds the ENTER to the search action. o UIFApplication enables the modern DLU conversion. o UIFPasswordField has the same additions as UIFTextField. o FieldSearchModel updates invalid state when reverting values. o Added FieldSearchProcessor#represents(String text, Object value). o FieldSearchModel prevents unnecessary search operations if the text already represents the stored value. o AbstractFieldSearchProcessor indicates that a search can be canceled after the first result - if any - being published. o Updated the Completion and Binding library versions. CHANGES IN 0.9.2 o Fixed NPE in AbstractFieldSearchProcessor. o Removed AbstractFieldSearchProcessor#search (without caretPosition) argument. Subclasses now directly implement the #search method as described by the CompletionProcessor interface. o UIFSearchField has a bound read-only property "searchText" instead of a search Action. o Added missing repaint when closing a popup menu in UIF text fields. CHANGES IN 0.9.1 o Fixed broken FieldSearchModel completion registration. o Improved old value handling when changing invalid text. o Faster busy animation. CHANGES IN 0.9.0 o Added package com.jgoodies.uif2.search for an advanced text field search. See class FieldSearchBindings. CHANGES IN 0.8.7 o Fixed typos in UIFTextField and UIFFormattedTextField. o UIFSearchField#setSearchMode rejects null values. o Added UIFSearchField JavaDocs. CHANGES IN 0.8.6 o Added package com.jgoodies.uif2.component.text: UIFFormattedTextField, UIFPasswordField, UIFSearchField, UIFTextField. o Moved UIFPasswordField to the new text package. o Renamed PromptUtils to PromptSupport. o Added UIFStringUtils. o Added methods to the AbstractUIFApplication class: #getApplicationDataDirectory() #lookupApplicationDataDirectory() #lookupApplicationDataBaseDirectory() #configureLoggingFromProperties(String) #addLogFileHandler(File, String) o The UIFApplication logging configuration adds a FileHandler that uses the application data directory as computed byUIFApplication. This improves the default log file location on Windows and Mac. See UIFApplication#getApplicationDataDirectory(). o Fixed OSXApplicationMenu reference to OSXApplicationHandler. CHANGES IN 0.8.5 o Added UIFPasswordField and PromptUtils. o Updated the Application and Forms libraries. CHANGES IN 0.8.4 o Uses the Application 0.9 API. CHANGES IN 0.8.3 o GlassPaneBlocker restores the old glass pane's visibility. This way the cursor behavior is restored properly. o Overhauled the ComponentUtils: - removed #removeAction - renamed #addAction to #registerKeyboardAction - renamed #addMouseAction to #registerMouseAction - added #registerKeyboardAction(JComponent, Action) - added #registerKeyboardAction(JComponent, Action, int condition) o SizeChangeHandler requires the Preferences node where data is stored CHANGES IN 0.8.2 o New ComponentUtils methods to bind mouse event types to Actions: #addMouseAction, #addDoubleClickAction, #addPopupAction. o Removed the UIFApplication bound property "milestone". o Missing logging configurations throw an exception in UIFApplication#configureLogging. o Added a GlassPaneBlocker that uses a GlassPane with wait cursor that blocks key and mouse events. Extends AbstractInputBlocker from the Application 0.8.14. CHANGES IN 0.8.1 o Uses new Action resource keys. o Added MenuBuilder(String textWithMnemonic). CHANGES IN 0.8.0 o Added HistoryList and History. o ScreenUtils#encodedScreenConfiguration now includes the location and size of subsequent screen devices - if any. CHANGES IN 0.7.17 o Uses Formatter instead of MessageFormat. CHANGES IN 0.7.16 o Added the sandbox package with MetaDesign classes. CHANGES IN 0.7.15 o Overhauled the ToggleAction to work with ResourceMaps. CHANGES IN 0.7.14 o Source code cleanup: enhanced for loop, annotations, marked private fields as final, removed trailing blanks. CHANGES IN 0.7.13 o Source code improvements. CHANGES IN 0.7.12 o Uses the JGoodies Forms 1.1.0. CHANGES IN 0.7.11 o UIFactory#createMultiLineLabel returns a component that keeps the default cursor on mouse over. The same for #createWrappedMultiLineLabel. o CompoundIcon uses an enum for the anchor. o SystemUtils avoid HeadlessException in headless envs. CHANGES IN 0.7.10 o Uses Application 0.8.4 and the Binding 1.3.2. CHANGES IN 0.7.9 o Uses Application 0.8.3. CHANGES IN 0.7.8 o Added I15dPanelBuilder2#setBackground and #setOpaque. CHANGES IN 0.7.7 o Based on Application 0.8.0 o I15dPanelBuilder2: can debug missing resources. o WindowUtils#getWindowID uses the window name as fallback. o Removed AbstractFrame#getWindowID. o Removed AbstractFrame#getWindowMinimumSize. CHANGES IN 0.7.6 o Based on Application 0.7.12. o Overhauled AbstractDialog: resources use a ResourceMap. o Added standard resources as UIFApplication.properties. o Moved "milestone" property from Application to UIFApplication. CHANGES IN 0.7.5 o Added NullIcon(int, int). CHANGES IN 0.7.4 o Added the I15dPanelBuilder2 that uses a ResourceMap, not a ResourceBundle. CHANGES IN 0.7.3 o WindowUtils stores bounds on resize. CHANGES IN 0.7.2 o ToolBarButton fills the content area. o TextComponentUtils#commit renamed to #commitImmediately; uses Bindings#commitImmediately of the Binding 1.2. o Uses Application 0.7.6. CHANGES IN 0.7.1 o ToolBarButton doesn't fill content area o Uses Application 0.7.5.