The Actipro Blog

All the latest UI control development news from Actipro

TreeListBox - New Features and Ready for Alpha Testing

PostBannerWPFControlsDevNotes

In the last blog post on our TreeListBox control development, we talked about new features like async loading and inline editing that were added.  In today's post, we'll talk about some more new features and we're also announcing that the alpha test of this control is now ready.

If you would like to start working with the control and provide us with feedback, please write our support address or chat with us on Slack to sign up for testing.  Now is the time to contribute your additional feature ideas and report bugs.  Anyone who has a WPF Studio license is fully licensed to use the control in their apps.

New Features

Since our new post, we've continued to enhance the control and add new features.  First, you now can optionally display the root item in the control.  When you choose not to do so (the default), the root node's children will be the top-level items.

There is now more control over expandability and when children are queried.

A robust drag and drop system supports dragging to external controls, dragging and dropping on the same control, and dropping from external controls.  You have full control over the visual feedback that is provided and what happens when a drop executes.

The control supports data virtualization when virtualized lists of child items are used.  With data virtualization, it's possible to support paged retrieval of items as they are requested for display.

A couple new options determine how far items are indented based on their depth.

Feature Progress

Thus far these features have been completed (New! marks new features since the last post):

  • Fully customize the appearance of each node.
  • UI virtualization, allowing for hundreds of thousands of nodes to be loaded into a tree very quickly.
  • No scrollbar jumpiness as seen in other virtualized tree controls when scrolling vertically.
  • Use your own custom data models as the source for the tree, with no dependencies on UI or our interfaces. An adapter class is used (and can be fully customized to fit your model) to communicate between the UI and the model for things like expansion state, getting children, etc.
  • The adapter can be coded with bindings in XAML (convenient, yet can be slow in very large trees) or via method overrides (slightly more work but lightning fast).
  • New! Optionally show the root item in the control.
  • New! Fine-grained control over expandability and children query triggers.
  • Optional async loading with busy indicator display.
  • Events for expansion.
  • Events for selection.
  • Single or multi-selection, with Ctrl and Shift-based selection options.
  • Filter selection such as only allowing sibling nodes to be multi-selected, or nodes of the same depth.
  • All common tree hotkeys supported including special ones for expanding and collapsing entire branches.
  • Select or ensure nodes are visible by path.
  • Double-click and Return key default action handling.
  • Optional checkboxes within the data templates.
  • Intelligent text searching so when you start typing while the control has focus, it will auto-focus the item that matches the typed text.
  • Inline editing via F2 and single-click on a selected item.
  • Per-item context menus that can be constructed dynamically via an event.
  • New! Drag items to external controls, drop data from external controls, or drag/drop items within the control itself.
  • New! Dragged items can highlight above, on, and below drop areas for each item.
  • New! Single and multiple item dragging is supported.
  • New! Optional data virtualization optimization when using virtualized collections.
  • New! Indentation of top-level and other nodes can be set independently.

Summary

The TreeListBox control is now ready for alpha testing.  Please contact us via our ticket system or in Slack to sign up for testing and send in your feedback.  We will continue to refine the API based on your feedback before a future final release.

TaskWideContactUs TaskWideChatWithUs

WPF, UWP, and Silverlight v2016.1 Maintenance Releases

Maintenance16.1.BlogPostBanner

Maintenance releases of our v2016.1 WPF, Universal Windows, and Silverlight controls have been released and are now available for download.

Docking/MDI for WPF and UWP has several new options that give you more control over UI appearance.  Tab text on tabbed MDI tabs will now trim long text with ellipses in the middle, instead of the end, allowing for filenames to be more readable.

SyntaxEditor's completion and parameter info providers in all language add-ons now allow you to intercept OnSessionOpening, even when no items were pre-populated, so that you can add your own custom items/info.  Cut, copy, paste, drag, and drop all now support the block and full line flags that are compatible with Visual Studio.  The Python Language Add-on added a text range property to all type and function definitions, allowing you to implement features like go to definition easier.

The Shared Library added a new RingSpinner control that is an animated ring where the two ring segment ends chase each other around the circle.  It's great for display while performing a lengthy operation.

All products received numerous other minor enhancements and bug fixes.  See the announcement posts for the detailed list of enhancements and updates:

TaskDownload TaskBuyNow

TreeListBox - Async Expansion, Inline Editing, and More

PostBannerWPFControlsDevNotes

In the last blog post on our TreeListBox control development, we gave a list of features that have been implemented so far and showed a screenshot of sample usage with rendering customization.  In today's post, we'll show some more usage scenarios, will request your immediate input for drag/drop, and will give an updated feature list.

New Features

First, what's new since the last post?  We now have multiple options for governing if and when the determination of expander display is made for a node.  This is handy when you want to do minimal data model access checking for children, or when you know for certain that a node never has child nodes.

We now support optional async loading features where you'll be able to utilize a new RingSpinner control (or any other busy indicator) to relay a loading state to the end user.  Async loading means that potentially lengthy operations such as file or database access won't block the UI thread when expanding a node. 

Here's an example of async loading, where a simulated random delay is invoked when expanding each file folder:

TreeListBoxAsyncLoading

Notice how the UI remains fully responsive even while loading items.

Inline editing is fully supported when enabled.  Press F2 or single click on a node's content to enter edit mode where a new text value can be entered.  Pressing Enter or losing focus commits the value, while pressing Esc cancels the edit.

An event will fire when an item requests a context menu.  Dynamically create the menu for that particular item (or the entire multi-item selection).

Drag/Drop Feature Feedback Requested

Drag and drop is one of the last features we want to get in place before an alpha test version is prepared of the control.  This is a complex topic since it involves single/multi-selected items (that could be at various tree depths) being dragged and dropped at other depths, or even dragged externally.  Likewise, external items could be dragged onto the control.  We want to get your feedback now as we start on drag/drop features to ensure we meet all your needs!

Please either write our support address with your feedback or join our Slack discussion on the topic and chat right with us.  The benefit of the chat option is that we are posting screenshots and asking for feature input right during development.  It gives you an opportunity to give direct feedback and help guide features.

Feature Progress

Thus far these features have been completed (New! marks new features since the last post):

  • Fully customize the appearance of each node.
  • UI virtualization, allowing for hundreds of thousands of nodes to be loaded into a tree very quickly.
  • No scrollbar jumpiness as seen in other virtualized tree controls when scrolling vertically.
  • Use your own custom data models as the source for the tree, with no dependencies on UI or our interfaces.  An adapter class is used (and can be fully customized to fit your model) to communicate between the UI and the model for things like expansion state, getting children, etc.
  • The adapter can be coded with bindings in XAML (convenient, yet can be slow in very large trees) or via method overrides (slightly more work but lightning fast).
  • New! Multiple display modes for node expanders.
  • New! Optional async loading with busy indicator display.
  • Events for expansion.
  • Events for selection.
  • Single or multi-selection, with Ctrl and Shift-based selection options.
  • Filter selection such as only allowing sibling nodes to be multi-selected, or nodes of the same depth.
  • All common tree hotkeys supported including special ones for expanding and collapsing entire branches.
  • Select or ensure nodes are visible by path.
  • Double-click and Return key default action handling.
  • Optional checkboxes within the data templates.
  • Intelligent text searching so when you start typing while the control has focus, it will auto-focus the item that matches the typed text.
  • New! Inline editing via F2 and single-click on a selected item.
  • New! Per-item context menus that can be constructed dynamically via an event.

Summary

The TreeListBox control continues to progress well and its feature set is coming right in line with the VS Solution Explorer's tree control's feature set.  We look forward to discussing drag/drop feature requirements with you via our ticket system or in Slack!

TaskWideContactUs TaskWideChatWithUs

TreeListBox - Progress and Checkable Nodes Sample

PostBannerWPFControlsDevNotes

Last month we posted that we were beginning development of a new TreeView replacement control that addressed the many shortcomings of the native WPF TreeView, and were asking for input at that time.  We've been working on this control for both WPF and UWP and have made very good progress.

Feature Progress

Thus far these features have been completed:

  • Fully customize the appearance of each node.
  • UI virtualization, allowing for hundreds of thousands of nodes to be loaded into a tree very quickly.
  • No scrollbar jumpiness as seen in other virtualized tree controls when scrolling vertically.
  • Use your own custom data models as the source for the tree, with no dependencies on UI or our interfaces.  An adapter class is used (and can be fully customized to fit your model) to communicate between the UI and the model for things like expansion state, getting children, etc.
  • The adapter can be coded with bindings in XAML (convenient, yet can be slow in very large trees) or via method overrides (slightly more work but lightning fast).
  • Events for expansion.
  • Events for selection.
  • Single or multi-selection, with Ctrl and Shift-based selection options.
  • Filter selection such as only allowing sibling nodes to be multi-selected, or nodes of the same depth.
  • All common tree hotkeys supported including special ones for expanding and collapsing entire branches.
  • Select or ensure nodes are visible by path.
  • Double-click and Return key default action handling.
  • Optional checkboxes within the data templates.
  • Intelligent text searching so when you start typing while the control has focus, it will auto-focus the item that matches the typed text.

Sample Usage

Here's a screenshot of a recent sample being put together for the control:

TreeListBoxChecking

In this sample, we have two levels of nodes.  The top-most level is folders (whose icons actually toggle with the expand/collapse state), while the inner level has checkboxes and buttons that allow for a dialog to be displayed when clicked for further configuration.

Double-clicking a folder item will toggle its expansion state, while double-clicking a checkable node will toggle its checked state.  This sample also shows usage of a DataTemplateSelector to pick which DataTemplate to use for each node.

Summary

The control is coming along really nicely and our goal is to match general features found in the VS Solution Explorer.  The features above are implemented for both WPF and UWP.  We still have more features planned before we open up a beta. 

If you have any other suggestions, please either write our support address with your feedback or join our Slack discussion on the topic and chat right with us.  The benefit of the chat option is that we are posting screenshots and asking for feature input right during development.  It gives you an opportunity to give direct feedback and help guide features.

TaskWideContactUs TaskWideChatWithUs

Actipro Blog 2016 Q1 Posting Summary

BlogSummaryBlogPostBanner

What We Accomplished

In this quarter, we completed work on the major rewrite of our popular Docking/MDI product for WPF.  The entire product was rewritten from the ground up to support next generation docking window features, all while maintaining a similar overall public API.  In the new version, floating documents become full-featured secondary dock hosts that even support docked tool windows around them.  This sort of thing is wonderful for end users with multiple monitors.  Fast subtle animations are used throughout the product to give the interface a more vibrant feel.  New layout properties and features are available that govern the size of containers (including min/max sizes), set initial floating window size, etc.  Interop content support is improved even further.  MVVM support is enhanced with many more bindable properties, default location determination for opening windows, and more.  Download the 2016.1 version to take the best WPF docking window framework for a test drive.

And best of all, we didn't just make it for WPF.  The entire product was written to be compatible with Universal Windows too!  Download our Universal Windows controls to see a beta of the same docking window framework there.

The WPF Controls 2016.1 version added the Docking/MDI features described above, along with 14 new Office 2016-like themes that use accent colors, improved window chrome rendering, Metro themes built right into the Shared library, SyntaxEditor light/dark Metro image sets, and much more.

The Universal Windows Controls 2016.1 version was our first release for that platform.  It was a port of our older WinRT/XAML Controls and included everything in those, along with the Docking/MDI beta.

Our Code Writer app also saw a new minor version, which will be the last one before a major new version for Windows 10 is released.

Finally, we have created a Slack team that enables you, our customers, to chat directly with us regarding new products and features.

What’s Coming Next

We're currently working on a custom TreeView control that will support more features than the native WPF TreeView.  Our goal is to support the rich functionality of a control like the TreeView in Visual Studio's Solution Explorer tool window.  It's being written from scratch for both WPF and Universal Windows using virtualization to keep it very speedy, and is capable of multi-selection, easy bring-into-view, etc.  If you'd like to give us feedback on what you'd like to see in a new TreeView control, now is the time to get your feedback in!  Either email our support address with your feedback or join our Slack discussion on the topic.  Slack is preferred because we are sharing screenshots there and frequently ask for comments on feature areas.  After this base control is completed, we'll move into some more new complex data presentation controls like multi-column trees.

We've started on the design of the updates for the Windows 10 version of our Code Writer app.  We've got a UI design that looks promising and is a bit of of a UWP take on popular apps like VS Code and Sublime.  We also have a Slack channel where we're discussing that, so please sign up to see where things are headed and get your feedback in.

Blog Post List

Control Product Development

Control Product Releases

Code Writer

Tags:
Filed under: Actipro, Blog Summary

Universal Controls 2016.1 Build 303 Released

Universal-2016.1.0303-BlogPostBanner

Universal Controls 2016.1 build 303 has been released and is now available for download.  This version adds a beta of our Docking/MDI product, making it possible to include docking tool windows and/or a multiple-document interface in your apps for Universal Windows apps. SyntaxEditor also includes two new Metro-themed image sets that can be used.

UniversalDocking640

The Docking/MDI beta included in this version includes nearly all the docking window functionality found in the WPF version of our Docking/MDI controls.  Be sure to check it out and let us know what you think.

See the announcement post for the detailed list of enhancements and updates in this build.

Do you want to chat with us about what we're working on next?  Register to join our Slack team and help guide our future development efforts!

TaskLearnMore TaskDownload TaskBuyNow

Creating an Improved WPF TreeView Control

PostBannerWPFControlsDevNotes

Anyone who has worked with the native WPF TreeView knows that its API is difficult to use (compared to the WinForms TreeView) and the performance isn't very good when binding to large large data sets.

We have started developing a completely custom implementation of a TreeView control that isn't based on the native TreeView control.  We'd love to get your input now during our design and prototyping phase on the following items:

  • What are the top 5 built-in features you would like to see implemented in a TreeView?
  • What specific pain points have you encountered with the native WPF TreeView?
  • What features/API would help resolve those pain points?
  • Any other features/functionality you think we should consider?

Please either write our support address with your feedback or join our Slack discussion on the topic and chat right with us.  The benefit of the chat option is that you can see what others are saying and throw in your two cents as well.

TaskWideContactUs TaskWideChatWithUs

Tags:

WPF Controls 2016.1 Build 631 Released

WPF-16.1.0631-BlogPostBanner

WPF Controls 2016.1 build 631 has been released and is now available for download.  This build contains numerous minor features, updates, and bug fixes across the various WPF control product range. 

It is highly recommended that v2016.1 customers upgrade to this build since it fixes all issues that have been discovered in the major Docking/MDI control updates that were part of the first 2016.1 release.

The first 2016.1 release added new Metro themes that have accent colors, like in the screenshot below.

RibbonQATButtons

The QAT buttons on the upper left of the window were originally wider in Office 2016, matching the width of the system minimize, maximize, and close title bar buttons.  However in the most recent Office 2016 update, the QAT button width was reduced and we've updated their size in this build to match.

See the announcement post for the detailed list of enhancements and updates in this build.

Do you want to chat with us about what we're working on next?  Register to join our Slack team and help guide our future development efforts!

TaskLearnMore TaskDownload TaskBuyNow

Filed under: Actipro, New features, WPF

Chat With Our Development Team Via Slack

SlackBlogPostBanner

We now offer a way to provide real-time communication between you and our development team, via the free Slack messaging app. The app can be accessed directly in a web browser (https://actipro.slack.com/) or via Slack's excellent desktop and mobile apps.

ChatWindow

The purpose of chat offering is to facilitate interaction with our development team, so that we can collaborate together on new product feature ideas, show screenshots of work-in-progress, and even provide access to preview builds of new features.  This is all designed to allow you to play a larger part in steering our future work.

We currently have Slack channels related to our UI controls, the Code Writer app, and a general tech discussion.

Please note that the Slack channels aren't for technical support or sales-related questions.  Use existing support/sales mechanisms for those.

Requesting Access

Since Slack is geared around private team chats, you must be added to our Actipro team before you can join in the discussion.  All you have to do is click the Request to Join button on our development team chat page and email us the requested info.  We'll add you to our Slack team and you'll receive an invitation in your e-mail.

Whether you are already a licensed customer of our UI controls, just evaluating them, or are a Code Writer user, we'd love to have you get involved in the discussion.

TaskLearnMore

Tags:
Filed under: Actipro, General

Code Writer App Gets Its Own Twitter Feed

CodeWriterDevNotesBlogPostBanner

Many of you are aware that we created a free text and code app named Code Writer that is found in the Windows Store.  It is an excellent tech demo of our commercial SyntaxEditor code editor control (available for all Microsoft UI platforms) and makes a great replacement for Notepad.

We're pleased to announce that we've just created a dedicated @CodeWriterApp Twitter account for the Code Writer app, making it easier to stay on top of the latest app news.

CodeWriterTwitter

Click the View button above to access the app's Twitter feed and be sure to Follow it!

About Code Writer

A bit of history about the app... Code Writer was one of the first high-quality Windows 8 apps in the Windows Store.  Its user interface was originally optimized and designed for full screen usage, making use of app bars, etc.  While the user interface is still clean and minimalistic, its current UI design needs rethinking for windowed usage in Windows 10. Even with a somewhat dated UI paradigm, the app is consistently rated well over 4 stars, which is a testament to the quality of the app.

We have started working on a revamped UI design for a future Windows 10 version and would love to discuss it with you, our users. Please register to join our Slack team and join the #codewriter channel once added so we can throw around ideas for Code Writer v3.0.

Filed under: Actipro, Apps