Version History
Update Log:

July 3, 2008 - 2.0.2

New Features

  • (JDAF) Added ApplicationToolBarsUI.getToolbar(window, name) to return a specific toolbar from a window. See enhancement request here.

Bug Fixes

  • (JDAF) ApplicationToolBarsUI.getToolBars(name) was returning all toolbars, not just the named one. See enhancement request here.
  • (JDAF) Regression in Docking LayoutPersistence support - was not respecting setPreferedWindowSize due to new support of frame bounds. New behavior respects preferred size until layout is persisted. See enhancement request here and here.
  • (JDAF) Regression when adding program arguments - GUIApplication may not open if argument is not a file that exists. See enhancement request here.

June 20, 2008 - 2.0.1

New Features

  • (JDAF) Added getFocusedViews() to the GUIApplication to easily return all focused DataViews (primary and all secondary) from the front-most window.
  • (JDAF) Added getFocusedModels() to the GUIApplication to easily return all focused DataModels (primary and all secondary) from the front-most window.
  • (JDAF) Added getDockingManager(), getDockingManager(DataView), getDataModel(DockableFrame) and getDataView(DockableFrame) to the DockingApplicationFeature for convenience. See enhancement request here.
  • (JDAF) Added reset feature to ProgressFeedback. Now component can be reset to a zero-progress state at progressEnd. Useful for on-screen components if showHide is not desirable.
  • (JDAF) To use the secondary status message in ProgressFeedback, set the client property ProgressFeedback.USE_SECONDARY_STATUS_MESSAGE in your component with Boolean.TRUE.
  • (JDAF) JDAF/Docking Framework auto-persistence now saves/restores window bounds.

API Changes

  • (JDAF) AbstactDataModel no longer exposes the PrpertyChangeSupport. Instead firePropertyChange() methods are provided.
  • (JDAF) Deprications due to spelling of Persistence.

Bug Fixes

  • (JDAF) Explicit Save As from menu continued to save when canceled.
  • (JDAF) JDAF Application Wizard not exiting on Cancel.
  • (JDAF) JDAF Code Generation presenting wrong installActions() signature when subclassing GUIApplication. There should be no arguments.
  • (JDAF) Fixed issue where XP icons revert to classic when swapping out default Actions.
  • (JDAF) BasicDataModel dataChanged not sending correct property name. (Was sending Name instead of Data).
  • (JDAF) DockingApplicationFeature would not reopen DataViews once closed. See enhancement request here.
  • (JDAF) HelpAction causing NPE if name not provided. Added new constructor to provide for name and help topic.
  • (JDAF) Fixed issue where ProgressFeedback was not updating upon reuse when using explicit component. See enhancement request here.

April 15, 2008 - 2.0

New Features

  • (JDAF) Added static DataViewPane.getDataViewPane(Component). This method will climb up the container hierarchy to access a top-level DataViewPane, diffusing the need to pass the DataView reference to nested components.
  • (JDAF) Added EDIT_EDIT_SPECIAL_GROUP MenuGrouping to Mac OS X and Windows XP Edit menu. This was not normally available because it is not Guidelines-specified, but we have added it so that users may use it. This provides two MenuGroups in the Edit menu to customize; use EDIT_EDIT_SPECIAL_GROUP_ID and EDIT_USER_GROUP_ID.
  • (JDAF) Added ConsoleCommand resetToIdle().
  • (JDAF) Improved robustity in Environment capture.
  • (JDAF) Added ApplicationWindowsUI sizeToScreen property. In the past JDAF windows are constrained to fit to screen. This option now allows this to be turned off, for example to allow a window to span multiple screens.
  • (JDAF) DefaultWindowTitleFormat now supports UL-syntax. Simply set the appropriate pattern using ${applicaton.x} where "x" is a property of your application or aggregate extension.
  • (JDAF) ActivityAction now has getters and setters for the Activity as opposed to only accepting an Activity in the constructor. This provides more flexibility both with resource binding and Activity configuration.
  • (JDAF) You may use the new pre-run option setUseRecentDocuments(false) on the FileHandlingFeature to turn off this functionality if desired.

API Changes

  • (JDAF) Completed java 5 syntax refactoring.
  • (JDAF) Removed FileDataViewFactory.removePrintViewClass(). Old and unused artifact.
  • (JDAF) com.jidesoft.app.framework.gui.BasicTransferable refactored to com.jidesoft.utils.BasicTransferable.
  • (JDAF) Single string ExecuteCommand constructor mistakenly used argument as newCommand. Changed to use as the external command.

Bug Fixes

  • (JDAF) NPE when using null as dir argument in FileDialogRequest.showSaveDialog().
  • (JDAF) Opacity setting moving out of bounds on occasion on Mac OS X fade of GlassPaneBlock for Activity ProgresssListener.
  • (JDAF) Fixed ExternalCommand occasional deadlock.
  • (JDAF) Fix extra margin in Wizard generated About box with splash image.
  • (JDAF) Cascade feature now wraps windows to the top when extending past the screen.
  • (JDAF) Fixed intermittent NPE when many windows open on OS X and option-clicked to close all.
  • (JDAF) ObjectFormat was not re-configuring ELFormatTokens when new pattern set.
  • (JDAF) Fixed bug in Activity where Exception in activiyPerformed was not property canceling the Activity as advertised.
  • (JDAF) The MenuGroup method addMenuItem(Action) was adding an empty menu item if the Action was null.
  • (JDAF) BasicDataModel data property change event was firing using PROPERTY_NAME constant. (Regression).
  • (JDAF) BasicDataModelFactory was setting over DataModel name after creation if criteria is null.

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