Version History
Update Log:

February 27, 2008 - 1.2.2 beta

New Features

  • 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().
  • Added DataModel isPrimary(), getCriteria(), setCriteria(), dataChanged(), setSemanticName().
  • 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().
  • Depricated FileBasedApplication addFileMapping(FileFormat). Misnamed.
  • 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.

Bug Fixes

Update Log:

September 27, 2007 - 1.0.04 beta

New Features

  • 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 static helper method DialogButtonsPanel.getDialogButtons(DialogEvent).
  • 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

 

Update Log:

July 23, 2007 - 1.0 beta

New Product

  • Introduced JIDE Desktop Application Framework