The Actipro Blog

All the latest UI control development news from Actipro

WinForms Controls 2012.1 Build 302 Released

BlogPostBanner

WinForms Studio 2012.1 build 302 has been released and is now available for download. Several enhancements and bug fixes are part of this build, along with improved VS 2012 support.

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

TaskDownload TaskBuyNow

Silverlight Controls 2012.1 Build 132 Released

BlogPostBanner

Silverlight Studio 2012.1 build 132 has been released and is now available for download.  Several very nice new controls and enhancements are part of this build.

This build has the following major new features:

  • Micro Charts: Added new MicroHeatMapPresenter control that facilitates the creation of heat maps where each cell renders color and/or size differences to reflect data values.
  • SyntaxEditor: Added a new NavigableSymbolSelector control, which can be used to provide type/member drop-down support for a language.
  • SyntaxEditor: Added a INavigableSymbolProvider language service, related types and samples.
  • SyntaxEditor .NET Languages Add-on: Implemented an INavigableSymbolProvider service on both the C# and VB languages, allowing for NavigableSymbolSelector support.
  • All: Improved designer support compatibility with VS 2012.

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

TaskDownload TaskLiveDemo TaskBuyNow

SyntaxEditor Navigable Symbol Selector Part 2

BlogPostBanner

In our previous post, we talked about the new NavigableSymbolSelector control being added to the next 2012.1 builds of SyntaxEditor for WPF and Silverlight.

To sum up, the control implements drop-down lists that can be wired up to a SyntaxEditor and will list available symbols within the document.  As the caret moves, the drop-down selection is updated.  The end user can select a symbol from a drop-down and the editor caret will navigate to that symbol.  All of this functionality is very similar to the type/member drop-downs found in Visual Studio. 

Best of all, this functionality can easily be implemented for any custom language.  The last post showed an example of using the control for a custom language.  In this post, we'll take a look at the built-in implementation for the C# and VB languages found in the .NET Languages Add-on.

Screenshots

Here's how the NavigableSymbolSelector control looks when bound to a SyntaxEditor that has the .NET Languages Add-on's C# language loaded:

NavigableSymbolSelector1

There are two drop-downs present.  The one on the left shows the types and the one on the right shows the members within the currently-selected type.  More...

SyntaxEditor Navigable Symbol Selector Part 1

BlogPostBanner

Our next 2012.1 builds of SyntaxEditor for WPF and Silverlight will be adding a new ancillary control to the SyntaxEditor product:  NavigableSymbolSelector.

Navigable Symbols

Navigable symbols are symbols declared within a document to which the end user may wish to move their caret.  For instance in a language such as C#, navigable symbols would be things like type and member declarations.

A new language service has been added that can optionally be implemented.  Its only task is to return navigable symbols for a document that uses the language.  It's implemented in such a way that a multi-level hierarchy of navigable symbols can be created.

This sort of feature can be used to help drive the UI of external controls such as a type/member drop-down or even a document outline treeview.  These sort of external controls can help the end user visualize a document's structure, and the content for each item in the controls can fully utilize rich markup (images, colors, etc.).

NavigableSymbolSelector Control

The new NavigableSymbolSelector control is our implementation of a control similar to Visual Studio's type/member drop-downs.  It attaches to a SyntaxEditor instance and checks to see if the language supports the new INavigableSymbolProvider service.  If so, it uses that service to populate its drop-down(s).

A "Simple" Language Sample

Let's see how this looks in our "Simple" language sample.  We've updated one of our Getting Started series samples to implement this new service and show drop-down UI (via NavigableSymbolSelector) within a toolbar:

NavigableSymbolSelectorSimple

For our "Simple" language, we've told the NavigableSymbolSelector to show a single drop-down, which will render the list of functions declared in the editor.

Run-Time Functionality

Basically if we do these simple tasks:

  • Add a NavigableSymbolSelector control to the UI.
  • Bind it to a SyntaxEditor instance.
  • Implement the INavigableSymbolProvider language service on the current language.

We get all this functionality for free from the NavigableSymbolSelector control:

  • Automatic display of all symbols defined in the current document, that updates as document changes occur.
  • Symbols are sorted alphabetically within the drop-down.
  • As the editor caret moves, the selected symbol in the drop-down is automatically updated to be the closest enclosing or nearby symbol.
  • When the end user clicks on a different symbol in the drop-down, the caret navigates to that symbol declaration.
  • When the caret is not directly within a symbol's declaration but is near one, it will appear grayed out.  This helps the end user visualize whether they are actually in a valid symbol declaration or not.  (WPF only)

We've designed this control to work directly with the new INavigableSymbolProvider language service.  This allows any custom language to fully support the control.

Summary

These new features will be in the next 2012.1 builds of our WPF and Silverlight controls.

By default the control displays two drop-downs, and we'll show this in our next blog post, where we demonstrate the implementation of the INavigableSymbolProvider language service and usage of the new NavigableSymbolSelector control with our .NET Languages Add-on's languages.

TaskDownload TaskLiveDemo TaskBuyNow

WPF Controls 2012.1 Build 561 Released

BlogPostBanner

WPF Studio 2012.1 build 561 has been released and is now available for download.  This build contains the long-awaited automated IntelliPrompt features for C# and VB LINQ statements.

This build has the following major new features:

  • Micro Charts: Updated series to support visibility options and added a new related QuickStart.
  • SyntaxEditor: Improved ITextSnapshotReader performance dramatically in scenarios with a lot of forward/backward token scanning.
  • SyntaxEditor: Updated the RTF export to include backgrounds from highlighting styles where applicable.
  • SyntaxEditor .NET Languages Add-on: Added full automated IntelliPrompt support for LINQ query expressions.
  • SyntaxEditor .NET Languages Add-on: Made some drastic reductions in overall memory usage of cached binary assembly data.
  • SyntaxEditor .NET Languages Add-on: Added ParseExpression static methods to CSharpParser/VBParser, allowing for quick parsing of text expressions into an AST.
  • All: Made additional .NET 4.0 security tweaks.
  • All: Made numerous minor enhancements, tweaks, and bug fixes.

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

A 2011.2 maintenance release was also published today.

TaskDownload TaskLiveDemo TaskBuyNow

Filed under: Actipro, New features, WPF

Silverlight Controls 2012.1 Build 131 Released

BlogPostBannerSL

Silverlight Studio 2012.1 build 131 has been released and is now available for download. This build contains the long-awaited automated IntelliPrompt features for C# and VB LINQ statements.

This build has the following major new features:

  • Micro Charts: Updated series to support visibility options and added a new related QuickStart.
  • SyntaxEditor: Improved ITextSnapshotReader performance dramatically in scenarios with a lot of forward/backward token scanning.
  • SyntaxEditor: Updated the RTF export to include backgrounds from highlighting styles where applicable.
  • SyntaxEditor .NET Languages Add-on: Added full automated IntelliPrompt support for LINQ query expressions.
  • SyntaxEditor .NET Languages Add-on: Made some drastic reductions in overall memory usage of cached binary assembly data.
  • SyntaxEditor .NET Languages Add-on: Added ParseExpression static methods to CSharpParser/VBParser, allowing for quick parsing of text expressions into an AST.
  • All: Made numerous minor enhancements, tweaks, and bug fixes.

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

A 2011.2 maintenance release was also published today.

TaskDownload TaskLiveDemo TaskBuyNow

SyntaxEditor .NET Languages Add-on - Memory Reductions

BlogPostBanner

A couple weeks back, we announced that our next SyntaxEditor .NET Languages Add-on (WPF and Silverlight versions) maintenance releases will contain new LINQ query expression automated IntelliPrompt features.  This upcoming maintenance release will also have another great update: drastic memory usage reductions for cached binary assembly data.

We've retooled a lot of the internal code that loads up binary assembly reflection data (used for automated IntelliPrompt data in the add-on) to reuse instances of many classes where possible.  This helped lead to more than a 25% drop in overall memory usage for our test application.

As mentioned above, these updates will be in the upcoming maintenance release, due later this month.

TaskDownload TaskLiveDemo TaskBuyNow

SyntaxEditor .NET Languages Add-on - LINQ IntelliPrompt

BlogPostBanner

We're very excited to announce a new feature for our SyntaxEditor .NET Languages Add-on (WPF and Silverlight versions) that has been in development for quite a while:  LINQ query expression automated IntelliPrompt!

This feature has been heavily requested by customers and we're close to delivering it, for both C# and VB.  Let's see it in action.

Code Setup

Here is the test code wrapper we'll use for these samples:

using System.Collections.Generic;
using System.Linq;
 
public class Customer {
    public int CustomerID;
    public string Name;
    public IEnumerable<Order> Orders;
}
 
public class Order {
    public int OrderID;
    public string Description;
    public decimal Total;
}
 
public class Linq {
    public void Test(IEnumerable<Customer> customers) {
 
        // LINQ samples here
 
    }
}

All the code in the screenshots below will be inserted into the comment location in the snippet above.

Examples of Automated IntelliPrompt

First, let's start typing a new LINQ query expression:

Linq1

The customers parameter shows up as an IEnumerable<Customer>.  Now we'll start a where clause:

Linq2

The cu range variable shows up properly in the completion list as a Customer.

Linq3

After typing a dot to see the cu variable's members, we see fields like Name and OrdersMore...

Individual Silverlight Control Products Now Available

BlogPostBanner

Silverlight Studio 2012.1 was released a little over a week ago and one thing we wanted to highlight was new purchasing options.  In the past, the only way to get our Silverlight products was via the Silverlight Studio bundle.

As of version 2012.1, all that has changed!  You now can purchase individual products like our Silverlight SyntaxEditor without needing to purchase the bundle option.  The bundle still continues to save money over purchasing all our Silverlight controls together.

Here are the Silverlight controls that are newly available for standalone purchase:

  • Bar Code - Vector-based 2D and linear bar code generation
  • Micro Charts - Small charts, also called sparklines, designed to visualize complex data
  • SyntaxEditor - A syntax-highlighting code editor control and parsing suite
  • Views - Unique Silverlight controls and panels that support fluid animated item layout
  • Wizard - Everything you need to quickly create wizard dialogs

And as before, the two SyntaxEditor add-ons are available for Silverlight too.

Check out our Silverlight products today.

Filed under: Actipro, Silverlight

WPF Controls 2012.1 Released

BlogPostBanner

WPF Controls 2012.1 has been released and is now available for download.

This build has the following major new features:

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

TaskDownload TaskLiveDemo TaskBuyNow