JDAF now automatically sets the ModalityType on 1.6 JVMs based on DialogRequest parenting mode setting. You may manually access Modality API in a JDK version-resiliant manner using ApplicationDialogsUI.setModaltyType(). Use a DialogListener to call this method.
New Split UI demo called "SplitCodeEditor" featuring a navigation tree.
Added convenience getSDIWindowsUI() and getMDIWindowsUI() to ApplicationUIManager. These methods return null if the application style is mismatched with the ApplicationWindowsUI implementation.
Added reuseWindow feature for SDI (Non-TDI) style applications. In this mode the front-most window will always host a new DataView as opposed to being hosted in a new Window. If a DataView is currently hosted, it is first closed. To use, set application.getApplicationUIManager().getSDIWindowsUI().setReuseWindow(true).
Improved SplitApplicationUI behavior - Border panes now remain at their fixed size and only the center DataView content resizes when the window resizes. Before this change, all content resized proportionately.
API Changes
Deprecated Code Removed.
Bug Fixes
Fixed some issues related to conversion from J4 to J5 syntax in FileDataModelFactory. (24337)
OSXProperties tweaked to remove deprecated OS X constants.
DialogPane was not calling initializeComponents() (Regression)
Fixed NPE on Mac OS X when setNewDataOnRun(false) and SplitAppliationUI and TabbedApplicationUI.
TabbedUI failing to keep application alive when last tab closed even when setExitApplicationOnLastDataView(false). (Regression)
Version string not successfully getting initialized to "1.0" if resources where not being used.
JDAF Application Wizard was not exiting System on finish on Mac OS X.
JDAF Application Wizard was generating openHelp() method of HelpSource even if Help option was turned off.
JDAF Application Wizard SplashScreen generation was tweaked to remove the 1.6 case logic and set the splash time to 2 seconds.
Update Log:
February 1, 2008 - 1.2.1 beta
New Features
You can now easily set the New and Open criteria using the application methods setNewCriteria() and setOpenCriteria().
API Changes
DataModel getData(), setData(), dataChanged() have moved to BasicDataModel and removed from the DataModel interface. This allows a clean data implementation without the presumption of a data property.
DataViewPane initComponents() changed to initializeComponents() to be compatible with NetBeans GUI Builder.
DialogPane initComponents() changed to initializeComponents().
Bug Fixes
Docking and/or Action Framework not saving state when setNewOnRun(false) and last windowClose.
Docking and/or Action Framework not saving state ExitAction used.
Criteria was overriding data in BasicDataModel if data set in the constructor. Besides the fact that data should be set using newData(), we now check for non-null value before setting criteria.
DataModel.dataChanged() was sending PropertyChangeEvent on PROPERTY_NAME instead of PROPERTY_DATA. (See API Changes: data property is implementation detail for BasicDataModel and is no longer in he DataModel interface.)
ApplicationWindowsUI.setPreferredWindowSize() was not working on Mac OS X.
Update Log:
December 17, 2007 - 1.2 beta
New Features
Introduced the notion of Primary and Secondary DataModels. This is a broad feature change that enhances the MVC architecture to permit secondary DataModel/DataViews that are under developer control.
Introduced DataViewHandler to allow developer-installation of DataViews for Secondary DataModels. See documentation for details.
Introduced SplitAppplicationUI (SPLIT_APPLICATION_STYLE) to support applications requiring a split pane UI (outside of docking behavior).
Introduced WindowCustomizer (Add to ApplicationWindowsUI). This is called whenever a new window is opened or disposed.
Introduced MappedDataModelFactory - Map criteria classes to DataModel classes.
Introduced HashedDataModelFactory - Map criteria values to DataModel classes.
Introduced DockingApplicationFeature - Integrate JIDE Docking Framework into the JDAF MVC architecture.
Added default layout behavior when using Docking and/or Action Framework.
Introduced PreferencesPane to enforce some general guidelines. Subclass and use in a PreferencesDialogRequest.
Added ApplicationWindowsUI.setPreferredWindowSize(). Setting will override JDAF sizing behavior for all new windows.
Added DataModel.dataChanged() to force a property change when the state of the object in a DataModel's data property changes. This is useful when the data value is a bean.
DataModel now stores the criteria which generated it as a member variable. This is a bound property.
BasicDataModel now sets the data property to the input criteria by default.
Added constants for bound DataModel properties.
All JDAF-supplied DataModelFactory implementations now allow a Map of properties to be used for initializing a DataModel's properties. If no Map is defined, the DataModel instance of bound to resources based on the BeanResourceBinding rules (ClassName.propertyName).
FileDataModelFactory can now specify a FileDataModel class per FileFormat.
Added DataViewPane.setDefaultFocusComponent() to allow definition of the focused component upon DataView open.
DataViewPane initComponents() is no longer abstract since it conflicted with NetBeans GUI builder.
Now JDAF will always place a primary DataView in a generic JPanel parent. So it is safe to simply use getParent().
Each window and dialog now references the Application instance that created it. You can use the static ApplicationWindowsUI.getApplicationFromWindow(window) method to access the GUIApplication instance.
GUIApplication ApplicationFeatures is now a bound property.
Better HelpSource trigger integration using HelpSource.HELP_HINT_PROPERTY_NAME for hint. Put in DialogOptions for Help button or in JRootPane or DataView component as a Client Property to define the help topic.
StandardDialogRequest now contains signatures and method behaviors to automatically register the content component as a DialogListener automatically, since this it the most common and recommended use.
FileHandlingFeature useSemanticNameInMenus() is now true by default. If no semantic name is set, this behavior should not effect existing codebases.
ApplicationFeature now additionally implements GUIApplicationLifecycleListener and WindowCustomizer.
FileBasedApplication now provides a factory method called defaultFileHandlingfeature() to allow a feature subclass to be defined implicitly.
Some refactoring in the file handling area has allowed the new FileHandlingFeature methods openDataFiles() and saveDataAs() to reflect certain scenarios in FileHandlingFeature/FileBasedApplication. These are called internally by Actions but we thought we mention the new availability.
A DataModelFactory may now return a reference to an existing DataModel without error. It will be set as the focused model.
Added FileSystemResponseHandler.handleFileNotFound(). Was handled by just handleError().
DialogPane has been refactored. IT now has an interface more convenient to the dialog lifecycle.
Help button on Mac OS X, now shows as just the help icon as per guidelines.
DialogEvent.isListening() allows Component implementations of DialogListener to determine whether the DialogEvent is intended for itself in the event of secondary dialogs.
Added convenience DialogResponse isOption(buttonName) to check for other button selections.
NewAction, NewFileAction, OpenAction and OpenFileAction now support setting a queued dialog request key. This allows custom dialogs to derive the criteria for the action. (by virtue of the DataAction derision).
Activity API now supports a way to suppress canceling of the Activity. Call Activity.setCanCancel(false).
Activity API now supports secondary status message. Call setSecondaryStatusMessage(String).
Improved guidelines when using DialogBlock (progress Dialog) on Mac OS and Linux-Gnome.
You can now set an ErrorHandler in the XMLFileFormat.
Since we have rearranged the licensing logic, it is no longer necessary to specify the special Mac OS System properties at the beginning of the program. JDAF does this automatically.
Addition of Vendor property in DesktopApplication. This shows in the default About dialog as well.
Added DesktopApplication empty constructors to facilitate name, version, and vendor loaded from resources file using "{classname}.property" syntax. (If using instance place "resources.properties" file in scr root, otherwise place file in subclass package.)
Added setManageLayoutPersistance() to keep ApplicationUIManager from loading the default layout when using Docking or Action Framework.
Added getLayoutPersistance() to provide access to the correct LayoutPersistance object when using one or more JIDE libraries.
Added getPreferredMaximumWindowSize() in ApplicationWindowsUI. This returns an appropriate maximum window size that is more intelligent than simply the screen size.
Added ApplicationMenuBarsUI.setUsesMenuBars() to turn off installation of menubars for the entire application.
Added ApplicationMenuBarsUI.getMenuBar(window).
Added high-level addMenuItem() and removeMenuItem() to ApplicationMenusUI for convenience.
Now MenuGroup and MenuGrouping implement MenuConstants for more readable code.
Bug Fixes
DesktopApplication setNewDataOnRun(false) still opened a DataView for sizing and other purposes. While not technically a bug, it now truely does nothing. Warning: this can keep an application's UI from starting.
If you used a DataViewListener to install DockableFrames and are using setNewDataOnRun(false), this will no longer work. Please migrate your code to use the WindowCustomizer. Here is a migration guide
TextComponent edit menu binding stopped working in Java 6.x due to Java regressions in property changes. We've done an internal fix. Enabling is working again.
Fixed multiple-undo bug in text editor EditUtils binding.
FileDataViewFactory was throwing Exception if null criteria presented. This was causing issues mixing DataViewFactories.
FileHandlingFeature useSemanticNameInMenus was not working properly.
FileBasedApplication addFileMapping(FileFormat) was removing the file mapping. Renamed to removeFileMapping().
APPLICATION_CLOSED event was not firing properly.
DATAVIEW_CLOSED event was not firing properly.
DATAMODEL_OPENING event was not firing properly.
Standard File menu (non-file handling) was missing the "user" MenuGrouping (FILE_USER_GROUP_ID).
DialogButtonsPanel.getButtonAction() was not returning some button Actions.
Windows OS titling logic appending DataModel count unnecessarily to uniquely named models.
GlassPaneBlock was not correctly blocking when multiple Activity objects are running on same DataView.
Icon detection in dialog buttons on Linux-Gnome was not functioning properly for custom button icons.
API Changes
DesktopApplication openModel() and newModel() now return the instantiated DataModel.
Depricated DesktopApplication getVersionString() and setVersionString() changed to getVersion() and setVersion().
Various refactorings in GUIApplication, ApplicationUIManager, ApplicationUIWindows to support DataViewHandlers and DataModel primary mode.
Depricated MappedDataViewFactory.addViewMapping() changed to addDataViewMapping() for consistancy.
Depricated ApplicationWindowsUI.getMainContainer(DataView). It will not be replaced. There are entirely too many configurations possible in the framework for this method to be meaningful. For decorating the corners of a DataView component, JDAF will always place a DataView in a generic JPanel parent with a BorderLayout. So it is safe to use getParent(). Otherwise, getPrimaryContainer() may be of use.
Depricated HelpSource.COMPONENT_HELP_PROPERTY_NAME changed to HelpSource.HELP_HINT_PROPERTY_NAME.
ApplicationFeature.getApplication() is now public.
Depricated FileHandlingFeature.isUseSemanticNameForNewMenus() to isUseSemanticNameInMenus().
Depricated GUIApplicationAction.checkIconLock() moved to IconTheme.GUIApplicationAction.checkIconLock().
ApplicationFeature now implements GUIApplicationLifecycleListener. The net effect being the extra support method guiOpening().
ToolBarsUI getTooBarContainer now returns Container instead of Object
Inner StandardDialog constructors in StandardDialogRequest now take StandardDialogRequest as opposed to individual arguments from the request.
DEFAULT_BUNDLE_NAME_PROPERTY System property name changed from "JDAFBundleName" to "jdaf.bundle.name".
More Java 1.5 syntax integration.
Update Log:
October 12, 2007 - 1.1 beta
New Features
Initial Release of Activity Framework (Included in JDAF standard)
Added DialogPane as a simple starter/adapter for creating content for a dialog using StandardDialogRequest. It is a JPanel that implements DialogListener.
Added STOP_COMPONENT_PROPERTY to ComponentVisitor to control Container traversal by using a client property in a given Container
Bug Fixes
MappedDataViewFactory incorrectly validating arguments in addDataViewMapping. (21720#21720)
Update Log:
October 3, 2007 - 1.0.05 beta
New Features
Added XPath helper methods to XMLFileFormat
DesktopApplication.getDataPath() now creates the directory if it doesn't exist.
New accelerators added to Windows OS Application UI to facilitate traditional hotkeys
DataView is now hosted in a DataViewLayeredPane (a JLayeredPane) for added flexibility such as overpainting, overlaying, or glass pane type functionality.
Added DesktopApplication method getDataDirectory() as an alternative to Preferences node where this location can be used to store properties, preferences, or other application data.
Added new DialogButtonsPanel methods setButtonEnabled(String) and executeButtonAction(String).
Cascade and Arrange Actions are now disabled when only one window is open. (Where supported)
Bug Fixes
License detection now checks later in the classloading cycle. Was making it inconvenient to apply license.
MenuItem mnemonics where not showing due to bug in ActionResourceBinding.
Eval example DockedTextEditor could not be run from the ant script.
Resources API was improperly degrading to en_US in non en_US Locales causing various UI anomalies.
JDAF Application Wizard generated some source files with missing package statements.
Removed accidental dependancy on DocumentPane in last release. DocumentPane is lazy-loaded as needed.
Update Log:
August 28, 2007 - 1.0.03 beta
New Features
It is now safe to fire DialogRequests from any thread. JDAF ensures that ApplicationDialogsUI always shows dialog on the Event thread.
Created a utility Map called ClassMap that maps Classes to Objects polymorphically. Refactored various code to use it.
Added MenuBarsUI.defaultMenuItem(String actionName) as a productivity method. This will fetch the action from the applications ActionMap.
Bug Fixes
Improper setting of DialogResponse value when using Escape or Enter. Causes NPE in DialogEvent.getResponseCode(). (See topic 20724)
Update Log:
August 20, 2007 - 1.0.02 beta
New Features
BasicDataViewFactory will now create an empty DataViewPane if no class is specified. This makes it consistant with the behavior of the BasicDataModelFactory.
Added GUIApplication.setExitApplicationOnLastDataView() convenience method. Only works on SDI/TDI/Docking. Ignored otherwise.
DesktopApplication.setNewDataOnRun(false)now works if TDI or Docking Framework is used. Use in conjunction with setExitApplicationOnLastDataView(false).
Bug Fixes
Fixed XMLFileFormat.documentToString(). Not operating correctly in 1.5.
Fixed PrintAction not disabling if no valid DataView
Fixed ActiveStateAction. Was basing disable state on dataModel count as opposed to DataView count. Not very noticable accept in particular application styles.
Fixed TDI Style bug when using DocumentPane where closing last tab closes application always.
Fixed TDI Style bug when using DocumentPane where it takes two exit commands/close clicks to terminate the application.
Changed API
Changed setExitApplicationOnLastWindow() to setExitApplicationOnLastDataView(). Was inconsistant with isExitApplicationOnLastDataView().
Moved openTabInNewWindow property to TDIApplicationUI from SDIApplicationWindowsUI.
Update Log:
August 6, 2007 - 1.0.01 beta
New Features
Added DocumentPaneFactory for custom DocumentPane implementations
Added DesktopApplication.executeAction() method as a preferred interface for accessing application built-in functionality
Added GUIApplicationLifecycleListener and supporting classes to notify when the gui is created but not shown
Added DataViewPane.installEditables() to auto-register components compatible with EditUtils
Introduced ComponentVisitor utility class
Bug Fixes
Fixed ComponentAction enable state syncing. Had stopped working. This would have effected enable states of edit menu Actions.
Windows OS Tab Style was mistakenly being set when using DocumentPane option on Cross-Platform Application UI
Fixed NPE with Preferences node and an empty Application name
Fixed CCE concerning the use of Jide Action Framework when in Windows MDI mode
Fixed Windows MDI full-expansion remote window controls positioning issues
Fixed NPE when setting dirty flag from DataViewPane.initComponents() on Mac OS X
Fixed NPE When adding an FileHandlingFeature subclass to GUIApplication