The Actipro Blog

All the latest UI control development news from Actipro

Universal Windows Controls 2016.1 Released

BlogPostBannerUniversal.2016.1.0302

We're pleased to announce that our Universal Windows controls have officially been released and are ready for use in your Windows 10 apps!  Download a free evaluation today and start building your apps with them.

Let's take a quick glimpse at some of the samples that ship with the product and show off the controls:

ChartsBaseballStatsThumbnail   EditorsColorEditBoxThumbnail

MicroChartsCallCenterThumbnail   SyntaxEditorHtmlEditorThumbnail

EditorsDateTimeEditBoxThumbnail   MicroChartsStockReportThumbnail

ViewsTaskPlanningThumbnail   ChartsFinancialDashboardThumbnail

The focus of this first release was to port our older WinRT XAML controls up to the Universal Windows platform.  Look for plenty more updates and controls added in the future.

TaskLearnMore TaskDownload TaskBuyNow

WinRT XAML Controls 2015.1 Build 164 Released

BlogPostBannerWinRT.2015.1.0164

The final 2015.1 version's maintenance release of our WinRT XAML controls has been released and is now available for download.  This build remains on the 2015.1 version since beginning in the 2016.1 version, our new Universal Windows controls set that targets Windows 10 replaces the older WinRT XAML controls.

This version contains several updates to SyntaxEditor and its add-ons.  See the announcement post for details.

 TaskDownload TaskBuyNow

Filed under: Actipro, New features, WinRT, XAML

Silverlight Controls 2016.1 Released

BlogPostBannerSilverlight.2016.1.0200

The 2016.1 version of our Silverlight controls has been released and is now available for download.

This version contains several updates to SyntaxEditor and its add-ons.  See the announcement post for details.

TaskLearnMore TaskDownload TaskBuyNow

SyntaxEditor Windows Workflow Designer Sample Updated

WpfControlsTipsBlogPostBanner

A while back, we created a sample for showing how a hosted Windows Workflow Designer instance could be integrated with Actipro WPF controls within a custom WPF application to provide a very elegant interface for end users.

With the release of the 2016.1 version of our WPF controls, we've updated the sample again.  Note how it now takes advantage of one of our new Office-like themes announced in yesterday's post:

WindowsWorkflowMetro

Our Docking/MDI product is used to provide the tool window and multiple document interface.  Our SyntaxEditor code editor control, in single line edit mode, is injected as a custom expression editor.  When you combine SyntaxEditor with our .NET Languages Add-on, you are able to have it support powerful IntelliPrompt completion lists.  For instance, in the screenshot above, you can see the itemCount variable is showing up in the completion list since it was declared below.  Our Themes product is used to provide a modern Metro style for all Actipro and native WPF controls.

When you put it all together, it's very easy to integrate Actipro WPF controls with rehosted Windows Workflow Designer instances in your applications.  It only takes a few minutes to get up and running, and once you do, the result is well worth the time.

Summary

If you rehost the Windows Workflow Designer in your WPF apps and would like our example, please contact us and we'll be happy to share it with you!

For those customers who downloaded either of the prior versions, this update is at the same URL as before.

TaskLearnMore TaskDownload TaskBuyNow

Filed under: Actipro, New features, WPF

WPF Controls 2016.1 Released

BlogPostBanner.WPF.2016.1.0630

The 2016.1 version of our WPF Controls is now here and it's a whopper.  It contains all of the extensive new feature development work we've done on Docking/MDI over the past several months and have blogged about under the codename Docking/MDI vNext.  It also has 14 new Office-like themes that match the Colorful and White themes found in the various Office suite applications.  Now you can make your own apps look just like Office 2016!  SyntaxEditor adds new Metro light and dark image sets that can be used within IntelliPrompt for a more modern appearance.  Many other minor tweaks and improvements have been made across the product range as well.

See the entire lengthy detailed update list in our announcement post.

Please note that 2016.1 does have several breaking changes to support better API design and features, so be sure to read the "Converting to 2016.1" topic in the documentation that comes with the controls.  It walks through everything in detail.

ProductHeadingGenericDocking

We've been blogging about some of the major new features coming to Docking/MDI vNext, and those are now here, along with many others.  We'll dig in deeper in future blog posts but here's a taste of what's new.

Completely Rebuilt

The Docking/MDI product has completely rebuilt product internals, which are optimized and now support next generation features found in Visual Studio 2015.  All UI control styles/templates have been rebuilt from scratch to be simpler and easier to customize.  All UI now works with all forms of pointer input: mouse, touch, and pen.  We've refactored and centralized focus handling and setting logic. We've refactored magnetism handling.  We rewrote UIA to ensure better compatibility with Coded UI Test.  All samples have been updated/improved, and new samples added to concisely show features.

Even though much of the product internals have been rewritten, most of the public API remains the same as before other than some type member renamings.  The "Converting to 2016.1" topic walks through any breaking changes you encounter.

We also include the "old" 2015.1 variation of Docking/MDI in the WPF Controls download as "ActiproSoftware.Docking.Legacy.dll".  This 2016.1 version of the old assembly can be used while you transition to the newer API.

Subtle Animations

Quick subtle animations have been updated and added throughout the product to give it a more vibrant feel.  Dragging tabs uses smooth animations, dock guides and drop targets pop into place, and auto-hide popups slide in and out.  All of these animations are designed to be fast and pleasing.

DockingDockGuides

AdvancedTabControl

We've created a new AdvancedTabControl control that extends the native TabControl while adding many new features (appearance customization, animation, multiple tab kinds, new tab buttons, etc.), and is used as the primary UI mechanism within the ToolWindowContainer and TabbedMdiContainer templates.  It can be used independently of docking windows too, in your own normal windows.

Desired, Minimum, and Maximum Container Sizes

Layout logic has been updated to try to adhere to optional new desired, minimum, and maximum docked size hints on docking windows when space is available. For instance, you can say that you prefer to not let a tool window's container get smaller than 200px high.  As long as space is available, the layout logic will do its best to adhere to that request.  You can set minimum/maximum size hints the same to suggest a fixed size.

DockedSizeConstraints

Also related to container sizes, when a layout is sized very small, then grows larger again, the original docking window sizes are restored.

Splitters Can Render Above Interop Content

A problem in the old version was the dragged splitter highlights didn't render above interop (WinForms, etc.) content due to WPF's airspace issue.  This scenario now works as expected when interop support is enabled.

Default Locations

Several DockingWindow members have been added to designate preferences for initial dock location when opened, such as with other windows in a group, on a specific side, or at a dynamic location based on an event handler's logic.  Best of all, the properties can all be bound to view-models, allowing you to fully designate initial locations for docking windows purely via MVVM.

Docking Window Tabs

A new optional property lets you specify alternate text to render on tabs, generally shorter than the Title text.  This is useful in scenarios where your tool window titlebar might have contextual information "Error List - 7 Errors" but your tab should only show "Error List".

Flash effects were supported in the old version via an attached behavior found in the samples, but now tinting and flash effects are first-class citizens via easy-to-use properties right on DockingWindow.  Strobe and smoothly animated flash options are both available.

A new property is available for setting a docking window's tab tooltip content.  Tabs can now be set to display on any side of a container, not just top and bottom.  All tabs can now be middle-clicked to close them.

Contextual Content

New properties have been added that allow custom content like buttons or status indicators to be easily injected into title bars and tabs.

ToolWindowTitleBars

Layout Serialization

A new property has been added that can uniquely identify a docking window with any string value, instead of using the Name property as before, which was limited to identifier syntax.  A new properly can prevent a docking window from being included in layout serialization.

Floating Windows

Floating windows now support Aero snap when dragging, meaning you can drag to the top of the screen to maximize the window, etc.  When dragging a tab to float, as long as the docking window can float, it will instantly detach and track in a floating window with the mouse.  A new option allows you to indicate you want to only use float previews instead of live-dragging windows.

When documents are floated, they now enter a full-fidelity secondary MDI area where other documents can be attached, and even tool windows can be docked around.  This is great for use with multiple monitors.  Properties are available for setting the icon and title of these floating windows.

FloatingMdi2

A new property has been added that determines what minimum amount a floating window must be visible to avoid being snapped to screen. Partially-visible floating windows will now snap to this minimum threshold as appropriate.

A new event allows you to later and limit a floating window's initial size.

Tabbed MDI

Tabbed MDI has three modes of tab display (normal, pinned, preview), which are similar to those found in Visual Studio 2015.  New context menu options are availble such as "Close Others", "Close All Documents", "Pin Tab", etc.

TabbedMdiTabKinds

A new tab button can optionally be shown and an event handled in response to add a new document.  This allows for UIs like Google Chrome.

ChromeBrowser

TabbedMdiHost now has a property for setting a DataTemplate that displays when there are no documents open.

Standard MDI

Dock guides now show over standard MDI so that dragged windows can be dropped into it. A context menu is now available when clicking a standard MDI window's icon or right-clicking its title bar.

StandardMdiDocking

An option is available to perform automatic size-to-content when adding a docking window to standard MDI.

All docking window standard MDI layout properties have been refactored and made more straightforward to access.

MVVM

Many improvements in the area of MVVM have been made.  Properties like IsOpen, IsActive, IsSelected, and State are now fully settable and can be bound to view models.  Default locations (see above) can be specified via new properties designed for MVVM compatibility.

MVVM implementation has been improved to be more straightforward since docking windows are now the actual container of their content, instead of being represented in UI as a tab.

In MVVM usage, unregistered windows will now automatically attempt to remove themselves from the appropriate DockSite items source property if a new related option property remains true.

Docking windows can be defined in XAML and have their IsOpen property set (or bound to a view model property) to false to close them on initial dock site load, but leave behind a breadcrumb for future restoration.

Switchers

The standard switcher UI has been improved to a new, more modern user interface that animates on display and supports scrolling when there is overflow.

StandardSwitcher

Multiple new standard switcher properties have been added to allow for full customization of its appearance.

Prism 6.1 Support

The Prism sample has been updated to use Prism 6.1 and includes all source for Prism integration right in the sample instead of in a separate interop assembly.

ProductHeadingGenericThemes

14 New Office 2016-Like Themes

Seven new accent color variations of the MetroLight theme have been added that render similar to the Office 2016 Colorful theme. Seven new accent color variations of the MetroWhite theme have also been added that render similar to the Office 2016 White theme

RibbonWindowAccentedThemes

Now your WPF apps can render exactly like Office 2016 apps.

Updated Metro Theme Title Bar Button Rendering

WindowChrome title bar buttons in Metro themes have been updated to use the larger, crisper Windows 10 style.

TitleBarButtons1

Metro and Luna (XP) Themes Swap Assemblies

In previous versions, Metro themes were shipped in their own assembly that required referencing and registration during app startup.  In 2016.1, the Metro themes are built directly into the Shared library and no longer require registration.  Further, MetroLight will be the default theme on Windows 8.x/10 systems.

Since Windows XP is past its support lifetime, we moved all Luna themes out of the Shared library and into their own separate library, similar to how Metro themes used to be.  That library must be referenced and those themes specifically activated if you wish to continue using them.

The changes mentioned above are minor breaking changes (see our documentation for upgrade steps) but better support newer Windows versions and also reduce the overall size of the Shared library.

ProductHeadingGenericRibbon

Automatic White Monochrome Image Conversion

The new accent color MetroLight themes that render similar to Office 2016 require the use of white monochrome icons in certain locations such as the upper QAT, tab panel, and status bar.  Features have been built into the ribbon button themes to automatically do this conversion for you. 

WhiteMonochromeImages

Simply use standard color Metro-styled icons and they should be automatically converted to pure white when appropriate for you without you needing to do anything.  Note how this has occurred for the QAT buttons in the screenshot to the right.

ProductHeadingGenericSyntaxEditor

New Metro Light and Dark Image Sets

New MetroLight and MetroDark image sets have been added for use with IntelliPrompt. The current set can be selected via the new static CommonImageSourceProvider.DefaultImageSet property. 

SyntaxEditorIconSets

Use the appropriate image set based on the current application theme.  The screenshot above shows the Classic, MetroLight, and MetroDark image sets within a completion list.

TaskLearnMore TaskDownload TaskBuyNow

Filed under: Actipro, New features, WPF

SyntaxEditor - Find All Using EditorSearchView

PostBannerSyntaxEditorDevNotes

In today's post, we'll show the optional Find All button that was recently added to the SyntaxEditor (WPF, Silverlight, and WinRT/XAML platforms) EditorSearchView control.

Feature Description

SyntaxEditor has always had the ability to perform "find all" searches programmatically, however we received feedback from numerous customers looking to add this to our EditorSearchView control so that their end users could also access it.

EditorSearchView

The EditorSearchView control seen above shows the new Find All button visible.  Note that it is not visible by default (the new EditorSearchView.IsFindAllButtonVisible property defaults to false) since unlike the other find and replace operations, there is no automatic UI change in the editor itself for a find all operation.  Instead, you need to display the results somehow, such as in a find results list.

FindResults

This screenshot shows an example find results list.  The full source code for this sort of setup is included in the samples that come with SyntaxEditor.

Summary

Providing the ability for your app's end users to find all instances of search text is certainly a handy addition.

The features described above are available in our latest WPF, Silverlight, and WinRT/XAML control versions and are available for use.

TaskDownload TaskLiveDemo TaskBuyNow

SyntaxEditor - Move Selected Lines Up/Down

PostBannerSyntaxEditorDevNotes

In today's post I'd like to show a new feature that was recently added to SyntaxEditor (WPF, Silverlight, and WinRT/XAML platforms): move selected lines up or down.

Feature Description

Moving a range of selected lines from one place to another is a very common task in any text editor.  Of course this can be accomplished by cutting and pasting the selection around.  But for small adjustments to the location of several lines, the ability to simply move the lines is a valued feature.

We've added the ability to move selected lines up and down via the Alt+Up and Alt+Down keys respectively.  Let's see a couple examples of it in action.

MoveSelectedLinesUpDown

In this sample, I selected the lines that contain the AnotherMethod method.  Then I pressed Alt+Up several times to move the method above the Bar method.  I then pressed Alt+Down to move the lines back down to their original position.

MoveSelectedLinesUpDown2

In this second sample, I had a comment that wasn't in the right place and I wanted to move it up.  I just put the caret on the line and pressed Alt+Up a couple times to move it back to the right spot above the color property declaration.

Summary

The ability to move selected lines up and down is a real productivity enhancer when doing text editing.

The features described above are available in our latest WPF, Silverlight, and WinRT/XAML control versions and are available for use.

TaskDownload TaskLiveDemo TaskBuyNow

WPF, Silverlight, and WinRT/XAML v2015.1 Released

BlogPostBanner20151

The 2015.1 versions of our WPF, Silverlight, and WinRT/XAML controls have been released and are now available for download.

Major new features are described below.  See the announcement posts for the large detailed list of enhancements and updates, including many items not listed below:

ProductHeadingWinRTBarCodes

Our Bar Codes product has been ported to the WinRT XAML platform.  This product, which already exists on WPF and Silverlight, allows your apps to render vector-based bar codes using many common 2D and linear bar code symbologies.

BarCodes

A full set of demos and QuickStarts are included to help you get going.

ProductHeadingWPFDocking

The interop assembly that makes it easy to use Docking/MDI with the Prism framework has been updated to reference the latest Prism v5.0.

DockingMetro

We've made numerous layout and performance updates to further improve the product. 

We also have been working hard on building a completely new internal engine for the Docking/MDI product, which will be available sometime later this year.  Keep an eye on our blog for posts detailing the advanced features that are coming with those updates.

ProductHeadingWinRTEditors

All of our edit box controls in the WinRT Editors now have an IsEditable property.  When set to false, the edit box behaves more like a ComboBox, while still retaining the rich popups that make the editors unique.  This is an ideal option for apps whose primary mode of interaction is expected to be touch.

ColorEditBoxNoAlpha

The CornerRadiusEditBox, PointEditBox, RectEditBox, SizeEditBox, and ThicknessEditBox controls have been updated to support text parsing one and/or two number entries where appropriate, which is useful for easy uniform value entry.

ThicknessEditBox

In the above ThicknessEditBox, a 2 is typed and then Enter is pressed.  The value is converted to a uniform thickness of 2.

A ValueChanged event has been added to all edit boxes, which fires when a value change is committed.

Finally, edit box padding has been adjusted so that more content is visible in the same amount of space.

ProductHeadingWPFGauge

A new DigitalGauge.CharacterSegmentThickness property allows for segment thickness adjustments.  This gives you even finer control over the presentation of your digital characters.

DigitGaugeSegmentThickness

We've enhanced the 'Linear Gauge Rolling Scale' QuickStart with a new infinite rolling scale example for navigation headings.

HeadingGauge

ProductHeadingGenericSyntaxEditor

The EditorSearchView control now supports an optional "Find All" button.

EditorSearchView

The RTF export logic has been updated to support extended ASCII characters.

The free CSS language definition now supports the syntax highlighting of media queries.

We've dramatically improved the speed of large completion list display.

Several other performance improvements have been made, such as optimized the scenarios for which the TokenTagger raises its TagsChanged event, and refining of the automatic outlining update logic.

In the WinRT version, we added the SyntaxEditor.AreSelectionGrippersEnabled property, which determines whether the selection grippers show after touch within a view.

.NET Languages Add-on

The C# parser has been improved to recover better when encountering open block statements so that its AST node structure remains better in tact.

DotNetPropertyAccessor

The IntelliPrompt quick info for properties now includes accessors, making it possible to see whether a property is read-only.

Python Language Add-on

The Python language has received an enormous amount of updates, that in sum really improve the entire automated IntelliPrompt feature set.

PythonAddon

Check out all these enhancements:

  • Added IntelliPrompt for private members and updated the completion list to have Public and All filter tabs.
  • Added reflection data for private methods/fields of built-in primitive types.
  • Added IntelliPrompt for built-in exception types.
  • Improved IntelliPrompt for numerous built-in modules.
  • Greatly improved IntelliPrompt for package and module imports.
  • Improved IntelliPrompt for function parameters by examining available assert statement isinstance calls.
  • Added IntelliPrompt for static fields on classes.
  • Improved the resolution of base types for classes.
  • Added the optional IResolver.UnknownReturnTypeReferenceCallback callback that can be used to provide return type references for unknown types.
  • Updated the resolver to recognize where 'cls()' in a class method can create a new instance of the related class.
  • Updated the IntelliPrompt completion list to filter unmatched items.
  • Updated the IntelliPrompt docstring display to retain presentation of line feeds.

ProductHeadingGenericViews

The Views product has a new TaskBoard control added, available in all three (WPF, Silverlight, and WinRT) platforms.  TaskBoard can be used to create a board of reorderable columns and cards.  All of the drags use smooth animations to give you the feel that you are really interacting with the object.

RepairShopScheduling

The first full-source sample that comes with the control is a Repair Shop Scheduling demo, which shows how a TaskBoard can be used to interactively schedule work to resources, such as employees. TaskBoard excels at providing a visual way of representing work/tasks (displayed as cards) within a queue of some sort (displayed as a column).

PageBannerDefault

The second sample is a Task Planning demo, which shows how a TaskBoard can visually organize a project's tasks.

ProductHeadingGenericShared

We've added another new primitive SemiEllipse shape, which renders half of an ellipse.

SemiEllipseShape

The existing Triangle shape has a new IsClosed property that when set to false will create a triangle with only two of the sides rendered.

TriangleShape

Finally, in the WPF Shared Library, we added GradientBrushSlider.CanAddStops and CanRemoveStops properties that determine whether stops can be added and removed from a GradientBrushSlider.

TaskDownload TaskLiveDemo TaskBuyNow

SyntaxEditor - ASP-Style Server Tags with IntelliPrompt

PostBannerSyntaxEditorDevNotes

We've had a lot of customers throughout the years ask us for a sample that could show how to harness our SyntaxEditor .NET Languages Add-on and its automated IntelliPrompt within an ASP-style server tag context.  This is especially useful for any sort of template generating scenario.

We had an internal sample that we would send customers upon request, but several months back, we cleaned it up, enhanced it, and added it as a new QuickStart sample.  In this post, let's have a look at the QuickStart sample that was added to the SyntaxEditor for (WPF, Silverlight, and WinRT/XAML platforms) in the 2014.2 version showing how to achieve automated IntelliPrompt within ASP-style server tags.

Usage Example

In the animated presentation below, you can see how there is a basic parent language whose lexer only knows to tokenize and color the word "date" as a keyword.  In real-world usage, the lexer could be made to fully colorize the text like normal.  The lexer has hooks that cause a transition to the C# language found in our .NET Languages Add-on when ASP-style delimiters are encountered.

SyntaxEditorServerTags

Both <% %> and <%= %> style tags are shown in this example.  What happens behind the scenes is that the parent language's parser will code generate C# code.  It will make a C# class named "__Generated" and a method named "__WriteOutput".  All the text of the parent language is output within "Response.Write" method calls.  C# code in the server tags is injected directly.  The resulting full C# code is placed in a separate in-memory document and parsed.  Finally the resulting parse data is returned, along with mapping data to know how offsets between the server tag range in the source document and those in the parsed C# document align.

Then there are several customized C# IntelliPrompt providers that know how to use that mapping data and translate offsets so that automated IntelliPrompt is fully functional within the server tag regions of the main source document, yet based on the generated C# code.

Tricky stuff, but it works great!

Summary

The full source sample described above was added in the first v2014.2 release of our WPF, Silverlight, and WinRT/XAML controls and is available for you to check out.

TaskDownload TaskLiveDemo TaskBuyNow

Filed under: Actipro, WPF, Silverlight, WinRT

SyntaxEditor - XML End Tag Completion

PostBannerSyntaxEditorDevNotes

Let's have a look at a new feature that came to the advanced XML language for SyntaxEditor for WPF (via its Web Languages Add-on) in the latest 2014.2 maintenance release: the ability to auto-complete XML end tags.

Feature Description

The advanced XML language already has auto-end tag insertion features that occur as you type the > character at the end of a start tag.  In that scenario, the end tag is inserted immediately after the caret.  There are other times where you have deleted some text that may include an end tag that you wish to type back in again.

Say that you are editing a block of XML and start to type an end tag.  After typing the < character, the completion list will contain an item for closing the nearest open ancestor element (if any):

SyntaxEditorEndTagAutoComplete1

In the example above, you can see the "/colors" item in the completion list and how selecting it auto-completes the end tag.

End tag auto-completion also works if you put the caret after a </ and press Ctrl+Space, as in this example:

SyntaxEditorEndTagAutoComplete2

In the example above, Ctrl+Space is pressed at the caret's location to auto-complete the "colors>" text.

Summary

The features described above were added in the latest v2014.2 maintenance releases of our WPF Controls and are available for use.

TaskDownload TaskLiveDemo TaskBuyNow

Filed under: Actipro, WPF