CODE Framework Changelog

What's new in CODE Framework 4.0.61203.0

Apr 14, 2017
  • The ServiceHostController (used to host WebApi based services) has been improved in various ways:
  • It now has new methods: BeforeInvokeMethod(), BeforeCreatingResponse(), and BeforeReturningResults(). These methods can be used to fine tune how requests and responses are handled.
  • It now supports CORS out of the box (and has CORS enabled by default for all origins). (See also: CORS Support in ServiceHostController)
  • Added UserHostAddress and UserHostName properties to ServiceHostController.
  • The URL pattern (route pattern) usable for hosting services has been improved (especially as related to hosting on legacy URLs).
  • Views now have new convenience properties:
  • StandardIcon allows setting of a view icon (brush resource) using a strongly typed enum that lists all default icons available in the framework.
  • Views now have a StandardLayout property that allows guided and strongly typed setting of the appropriate style.
  • ViewAction now has a new StandardIcon property (and a matching constructor parameter). This allows setting the action's brush resource key using the strongly typed StandardIcons enum.
  • Automatic drag support for windows in the WindowEx class has been re-written to now also supports snapping.
  • Multi-column lists now support drag-rearranging of columns. (This can be turned off on the columns collection).
  • All the visuals associated with the drag operation are stylable.
  • Each theme has default styles for the column drag operations.
  • JSON improvements (see also: JSON Features)
  • JsonHelper has been enhanced with a few convenience methods.
  • JsonBuilder class has been added
  • A new SettingsManager class has been added that can be used to manage settings such as window positions or most recently used file lists, and more.
  • The Shell object now makes sure that all the close-events are called on view-models whenever the Shell is terminated (as opposed to controlled closing of all models for some other reason).
  • PasswordBoxEx.Value attached property now triggers source update on PropertyChanged by default.
  • Added CapsLockWarning control (as well as appropriate templates for all themes). (See also: Caps-Lock Warning and Global Key Handlers)
  • Added GlobalKeyboardHookHelper class, to make it easier to listen to global keyboard events in an app. (See also: Caps-Lock Warning and Global Key Handlers)
  • ServiceClient now raises static events that fire every time before and after a service method/operation is called, allowing for generic interception and manipulation of service input and output. (See also: ServiceClient Events)
  • The framework now has a new masked-textbox feature that can be applied by means of an attached property to any textbox. (See also: TextBox Input Masks)
  • The framework now supports a ServiceSecurityMode setting for TCP/IP settings, to allow for simple declarative configuration of this setting. (See also: WCF Service Configuration)
  • The Shell object now fires a static event that allows impacting which style gets applied to top-level

New in CODE Framework 4.0.40304.0 (Apr 25, 2014)

  • The View Visualizer has been enhanced to show significantly more information about each opened view and its view model, ranging from actual view model data to properties and styles and resources of each element in the view and sophisticated visualization for items. (see also: Using the View-Visualizer)
  • Column-based standard views (as used by many themes such as Workplace, Geek, Vapor,...) can now be used outside of lists as well.
  • Fixed some behavior details with the BidirectionalStackPanel. (Scrollbars now respect their proper z-index, and resizing works in some fringe cases where the panel gets too small).
  • The FocusHelper class received some minor enhancements, such as setting focus to a hierarchy of controls.
  • Buttons in all default theme have received a more obvious keyboard selection indicator.
  • All default themes had their message box styles tweaked to make the keyboard focus behave more natural when message boxes are shown.
  • ActionGrid instances now automatically pick up input bindings from the actions collection of the object they are bound to.
  • MessageBoxes now support shortcut keys. (See also: MessageBoxes in WPF MVVM/MVC)
  • The default layout panel approach for all complex listboxes in all themes is now a simple StackPanel without virtualization, since that simply turned out to be MUCH faster in most scenarios.
  • ListBox column definitions now support width definitions based on star notation in addition to the existing pixel notation. (See also: Multi-Column Lists).
  • There now is a new ColumnPanel layout control, which is a handy (and high performance) mixture of a column-only Grid and a StackPanel
  • Default message box view action captions are now pulled from a localizable resource file.
  • Added a "View action and view selector" control that combines view actions and open views into a single items control (used, for instance, in the Wildcat theme).
  • A BorderEx control has been added which provides some attached properties that are helpful on Border objects.
  • There now is a new SimpleView.ViewThemeColor attached property that can be used to define color themes for views which can in turn be utilized by (some) themes.
  • A first draft version of the new Wildcat theme has been added to this build.

New in CODE Framework 4.0.31028.0 (Oct 28, 2013)

  • Multi-column lists have been drastically improved to support more grid-like capabilities without needing custom templates (this is by far the biggest change in this build)
  • There now is a ControllerEx class for use in the CODE Framework ASP.NET MVC components
  • The ASP.NET MVC ControllerEx class now features a RedirectToActionWithData() method.
  • Added an ObservableCollectionHelper class to the WPF MVVM components with an AddRange extension method for ObservableCollection.
  • The AsyncWorker object now allows setting a thread priority explicitly for continuous background threads.
  • Enhanced the AsyncWorker to automatically handle status objects in a thread-safe fashion. (see also: CODE Framework AsyncWorker)
  • The AsyncWorker.Execute() method now has several overloads that allow passing multiple background operations. The result of all those are then passed to a single complete delegate whenever all background operations have completed.
  • The Workplace theme now includes a new default Calendar control style to make calendard appear more like Office's calendars.
  • Added ascending and descending sort icons to the Standard Icon Resources (supported by all themes)
  • There now is a new SortOrderIndicator control in the WPF namespace which is a useful helper control whenever one needs a quick way to indicate a sort order.
  • The TextBoxEx class now has a WatermarkText attached property.
  • More work has been done to strip source control information from the source code deployment.

New in CODE Framework 4.0.30923.0 (Sep 24, 2013)

  • The BidirectionalStackPanel class now has a ScrollBarStyle property, which can be used to set the style of the scroll bars the control uses.
  • The Workplace theme seems to have had some incorrect standard icons. Those have been replaced with a correct set.
  • The Metro theme incorrectly used the icons that were meant for Workplace in the previous build. This has been fixed and the original Metro icons are back.
  • Fixed a bug that caused the Vapor theme to not show standard data templates that used multi-column lists properly.
  • Added a Controller.LoadView() overload that allows specifying the controller by name (string)
  • Fixed a problem in the FlowForm layout element that caused full-row-span controls to sometimes be made too wide.
  • Added a SetCanExecuteDelegate() method to view actions.
  • Controllers now throw a detailed exception message when an action was not found.
  • Multi-column listboxes now support column header templates to support any type of content/UI in column headers.
  • Multi-column listboxes now support a header click command
  • The SizeAwareContentContentControl class is now set to not receive focus by default.
  • The ServiceClient.Call() method can now more easily make calls to services hosted at arbitrary URLs.
  • Fixed a typo in the Workplace scrollbar control template that caused a non-existing color to be referenced.
  • Fixed a binding problem in the Workplace textbox control template.
  • The build packager for the automated framework build process has been enhanced to remove unnecessary files from the source code deployment file.

New in CODE Framework 4.0.30618.0 (Sep 24, 2013)

  • Added 2 new WPF themes: Geek (looks a lot like Visual Studio) and Vapor (an homage to Valve's Steam)
  • Added a standardized approach to launch multiple shell windows and automatically force new views to be loaded in separate shells. (See also: Tuning the Appearance of the Shell)
  • The Workplace theme now supports disabling tab "headers" (they are actually more "footers" since they show at the bottom) for views opened individually. This is done by setting the ShowHeaders property to false on the normal views host in the shell style. (Without headers, the style looks more like Word, while with headers, it looks more like Excel). (See also: Tuning the Appearance of the Shell)
  • The view action Ribbon control now has a new HighlightLocalCategories property that indicates whether pages in the Ribbon that are populated from individual views should be highlighted using the special colors. (See also: Tuning the Appearance of the Shell)
  • The Shell now has a TitleMode property, which can be used to define whether only the application title or also the view title (and in what order) should be displayed as the shell window title. (See also: Tuning the Appearance of the Shell)
  • Added some specific features to make it easier to override and enhance specific aspects of the EditForm layout panel class.
  • In addition to WidthEx, the View class now defines MinWidthEx and MaxWidthEx properties. Same for MinHeightEx and MaxHeightEx.
  • The View class now has several new attached properties, such as View.Label and View.LineBreak (which can be attached to controls within views).
  • There now is a new FlowForm layout panel which is a different way to do automatic layout (along the same lines as EditForm, but with a slightly different approach to arranging elements). There also is a new CODE.Framework-Layout-FlowFormLayout style that can be used to automatically use this layout approach in views.
  • The LoggingMediator.Log() method now has one more overload that allows passing an exception as well as some text (the exception information is added after the text parameter) - (see also: Logging Framework)
  • All the ServiceGarden.TryAddXxx() methods now use the new overload in the LoggingMediator.Log() to log more exception detail when something goes wrong.
  • IViewAction now defines an IsDefaultSelection property, which is used by different themes in different ways. (Example: The Worlplace/Office theme uses this property to pre-select the tab in the ribbon the view action is in, if the property is set to true).
  • There was a bug with automatically populated view action menus and menu items with multiple categories which didn't correctly create sub-menus. This has been fixed.
  • The standard view action toolbar class (as used by the Battleship theme, for instance) now has another property to define which actions from the individual views will be displayed in the toolbar. Current defaults are: All view actions from the start view model with Significance = Highest, and all view actions from the individual view with Significance >= BelowNormal will be displayed in the toolbar.
  • View actions now support defining access keys and shortcut keys.
  • All themes that use standard menus for view actions support the access and shortcut keys.
  • All themes that use standard ribbons for view actions support the access and shortcut keys.
  • The start screen of Metro themed apps now supports view action shortcut keys.
  • The ViewActionMenu class now supports a property to force all top level menu items to upper case text.
  • The constructor of the ViewAction class now supports several additional optional parameters for convenience.
  • The Workplace theme now uses the same icon set as the Geek theme, which is a slightly more colorful version of the Metro theme.
  • There now is a TextBoxEx class which provides a InputMaskRegEx property to define input masks for all text boxes. (see also: TextBox Input Masks)

New in CODE Framework 4.0.30403.0 (Sep 24, 2013)

  • Changed the LoggingMediator class so when exceptions are logged, the log type actually defaults to "Exception" (rather than "Information" as it did before).
  • Added a StringHelper.SubstringSafe() method (and also an extension method) which is really the same as StringHelper.SubStr() but should be more discoverable.
  • When individual views expose view actions that are part of the "File" category, these actions now show up in the Workplace theme file menu ("special file button")
  • View actions now have an Order property, which can be used to specify the order actions are displayed by themes (typically, that order applies within a group, but each theme is free to interpret this information differently).
  • Added change notification for ViewTitle property on ViewResult objects (WPF framework)
  • Added MoveFocusToDefaultOnActivate property to views.
  • Added IUserInterfaceActivation interface to the framework and implemented it on all views (most important result: views can raise Activated events)
  • The ServiceClient class now allows to only aut-retry failed calls for specific exception types through the AutoRetryFailedCallsForExceptions collection (this collection contains a list of all the types auto-retries may be attempted for)
  • The ServiceClient class now has a AutoRetryDelay property so second calls to services can be delayed by a certain number of milliseconds.
  • There now is a static Shell.Current property that always allows access to the current shell object (see also Accessing the Shell object).
  • Round Metro buttons now have a visual indicator for keyboard focus.
  • The Battleship theme has been completely overhauled to be not just a sample but a complete theme.

New in CODE Framework 4.0.30220.0 (Sep 24, 2013)

  • Fixed a problem with sequential service host port assignments for TCP/IP service with auto-assigned ports. This problem only occurred in the development host (but was nevertheless annoying).
  • Added an optimization for WPF Metro tile start screens and changes of action availability. This fix improves performance and also fixes a rare redraw issue.

New in CODE Framework 4.0.30219.0 (Sep 24, 2013)

  • The EditForm class has been enhanced (and thus by association so have all the styles that use that class, such as the automatic edit form layout style)
  • Edit forms now support multiple controls that flow inline with the "edit" part of controls, thus allowing (for instance) a single label with multiple textboxes. This is used by means of a View.FlowsWithPrevious attached property that can be set on any UI element
  • A bug with dynamically re-flowing edit forms has been fixed, where group breaks were ignored when a column re-flowed.
  • The service garden class (root class used for all self-hosted services) now handles more exceptions and logs more detailed errors to make it easier to diagnose service hosting problems.
  • The test service host (development service host) now displays more information about services with hosting problems and also has some additional exception handling for scenarios it used to bubble up unhandled to the environment before.
  • The ServiceClient class has received a significant overhaul to improve performance and memory consumption (including a fix for a run-away memory use problem).
  • The ServiceClient class now has a HandleChannelExceptions property (if set to false, channel exceptions bubble up to the caller more than before) and a ChannelException event (which can be used to get channel exception indications, independent of whether exceptions bubble up or not).
  • Framework hosted services now automatically respect the Namespace attribute specified in service contracts and service implementations (see also: WCF Service Namespaces).
  • Self-hosted services now default to supporting "multi-threaded service hosting" (services now by default use ConcurrencyMode.Multiple unless configured otherwise) (See also: WCF Self-Hosted Service Concurrency)
  • The development test host environment now hosts all services on a background thread to provide better concurrency support in test environments. (See also: WCF Self-Hosted Service Concurrency)
  • The ServiceGarden class had many of its overloaded methods replaced with fewer equivalent methods with optional parameters.
  • The TestServiceHost class had many of its overloaded methods replaced with fewer equivalent methods with optional parameters. Formerly unsupported additional parameters have been added.
  • The ServiceClient class had many of its overloaded methods replaced with fewer equivalent methods with optional parameters.
  • All HTTP related service hosting and service calling options now optionally support simplified hosting/calling using the HTTPS protocol (all related methods support a useHttps parameter) (see also WCF HTTPS Service Hosting)
  • The service test harness now supports more data types, including enums and dates.
  • The Mapper class (or more accurately, the MappingOptions class) now includes a list of excluded properties which can be used to define the exclusion of certain properties from mapping.
  • Added the ability to call REST services through the ServiceClient class. (See also: Calling REST Services through ServiceClient)
  • Increased the maximum object graph size to int.MaxValue for those environments where this isn't already the default
  • Improved the Mapper class to allow mapping of nullable fields from/to non-nullable ones.

New in CODE Framework 4.0.20301 (Mar 3, 2012)

  • The latest version adds a number of new features to the WPF system (such as stylable and testable messagebox support) as well as various new features throughout the system (especially in the Utilities namespace).