The Actipro Blog

All the latest UI control development news from Actipro

SyntaxEditor - Read-Only Regions

PostBannerSyntaxEditorDevNotes

In today's post I'd like to show a new feature that was added to SyntaxEditor (WPF, Silverlight, and WinRT/XAML platforms) in its latest 2014.2 maintenance release: read-only regions.

Feature Description

SyntaxEditor documents have always had the ability to be fully read-only and developers can also can cancel specific text change events for more fine-grained control. That being said, there are many cases where developers want to have an easy way to tell SyntaxEditor that a certain of text should not be editable by the end user.  That's where read-only regions come into play.

SyntaxEditorReadOnlyRegion

Read-only regions are implemented using our powerful tagging mechanism.  There is a new IReadOnlyRegionTag interface (with related ReadOnlyRegionTag implementation class) that can be used to mark read-only regions.  Getting going is as easy as tagging a text range using an instance of that class.

Best of all, the ReadOnlyRegionTag class also implements IClassificationTag, which associates the tag with a classification type for read-only text and gets styled with a silver background.  Of course this is fully customizable if you wish to have a different appearance, or no appearance difference at all.

When the end user attempts to edit anything that would cross within a read-only range, the text change will realize that it intersects a read-only range and will cancel.  The text range protected by the read-only region remains unchanged.

This is a very handy feature for certain scenarios and was highly requested by our customers.

Summary

The read-only region features described above were added in the latest v2014.2 maintenance releases of our WPF, Silverlight, and WinRT/XAML controls and are available for use.

TaskDownload TaskLiveDemo TaskBuyNow

Filed under: Actipro, WPF, Silverlight, WinRT

WPF, Silverlight, and WinRT/XAML v2014.2 Maintenance Releases

20142MaintReleaseBlogPostBanner

New maintenance of the 2014.2 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 detailed list of enhancements and updates, including many items not listed below:

ProductHeadingGenericEditors

ISO 3166-1 Alpha-3 Codes Added (WPF, WinRT only)

The Country class, which contains ISO country data and is utilized by our CountryComboBox control, now also includes the 3-character alpha code data for each country.

CountryComboBox

This is in addition to the existing data of 2-character alpha code and name.

ProductHeadingGenericPropertyGrid

Handling of Root Objects Improved (WPF only)

We've improved how the PropertyGrid handles properties on the root SelectedObjects that have a custom type converter.

Handling of Immutables Improved (WPF only)

We've also improved support for handling immutable objects and determining how to interact with their properties.

Custom Factory Sample Updated (WPF only)

The Custom Factory sample has been updated to show a property with a non-string type.

PropertyGridCustomFactorySample

This is a great example of showing how to implement a custom data factory and merge properties from various object sources.

ProductHeadingGenericRibbon

Backstage Tab Navigation Improved (WPF only)

We've improved keyboard navigation in the TaskTabControl control, which is generally used within Backstage tabs.

Contextual Tab Layout Refined (WPF only)

The logic for the sizing of contextual tab groups and their tabs always has had some minor issues when resizing the containing window to be thinner.  The issue didn't often manifest itself unless multiple contextual tab groups were displayed.

RibbonContextualTabs

We spent a while tracking these issues down and fixing them so that all layout sizing is now perfect, as seen in the screenshot above.

ProductHeadingGenericSyntaxEditor

Read-Only Regions Added

We've added support for read-only regions of text via the new IReadOnlyRegionTag tag.  This feature has been highly requested by customers, so we're happy to deliver it.

SyntaxEditorReadOnlyRegion

There is a ReadOnlyRegionTag implementation class that supports classification so that read-only regions can be rendered with an alternate background, such as gray in the screenshot above.  A new Read-Only Regions QuickStart that demos the new features is now in the Sample Browser.

Move Selected Lines Up/Down Commands

Another highly-requested set of commands for moving the selected lines up (via Alt+Up) and down (via Alt+Down) have been added.  The SDI Editor demo's menu has been updated to show off the new editor commands.

IntelliPrompt Completion Performance Enhancements

We did a lot of performance profiling related to IntelliPrompt completion lists and we able to make numerous performance enhancements in the areas of item matching and filtering.  These enhancements will really help performance when displaying large completion lists.

Drag and Dropped Text Reselection Option Added (WPF only)

A SyntaxEditor.IsDragDropTextReselectEnabled property has been added that can be set to false to prevent reselection of dropped text.

Data Binding Change Scroll Behavior

Views have been updated so that text changes from a data bound source (such as view model) don't scroll the view back to the first line on each update.

Line Commenter Updated

The line commenter has been updated to improve how line comment and uncomment features affect selection.  The logic that gets activated by the LineBasedLineCommenter.CanCommentEmptyLines property also has been improved.

Bi-Di Text Caret Movement (WPF only)

We've made several improvements to caret movement when editing bi-directional text.

Better Separation of UI/Document Models

All of the event ties between the UI and document models have been changed to use weak events.

.NET Languages Add-on

The ability to resolve references to nested types has been improved.

Web Languages Add-on

A completion item for closing the nearest open ancestor element, if any, has been added.  (WPF only)

SyntaxEditorCloseTagCompletion

Ctrl+Space after an end tag start delimiter will also auto-complete the matching start tag's name.  (WPF only)

We've also improved the editing experience when typing to not affect outlining nodes as much.

ProductHeadingGenericShared

Wave and ZigZag Shapes Added

New primitive shapes have been added that can be used to create some interesting user interface elements in your apps.  The Wave shape renders a wavy line.  The ZigZag shape renders a zig-zag line.ZigZag2The Shapes QuickStart has been updated with examples showing usage of the new shapes.

TaskDownload TaskLiveDemo TaskBuyNow

SyntaxEditor Quote Delimiter Auto-Completion

PostBannerSyntaxEditorDevNotes

In today's post I'd like to show off another new feature that was added to SyntaxEditor (WPF, Silverlight, and WinRT/XAML platforms) in its 2014.2 version: quote delimiter auto-completion.

Quote Delimiter Auto-Completion

SyntaxEditor already had some great delimiter-related features like delimiter highlighting and delimiter auto-completion for curly braces, square braces, and parentheses.  These have been in the product for a while. 

We had a number of customers also request that support for quote auto-completion be added to assist with working with strings, and that's what's been added.  Quote auto-completion support is now built into the DelimiterAutoCompleter class, with double quote completion enabled by default.  Single quote completion can be activated as well but is not enabled by default since some languages use single quotes as single line comment delimiters.

Let's see it in action!  Here we are using our new Python add-on language to start typing an author designation:

QuoteCompletion1

Next I type a double quote character:

QuoteCompletion2

The end double quote is auto-inserted, but after the caret.  This allows me to type the string content directly in without having to use arrow keys.

QuoteCompletion3

Now that I've typed in the string content, I type the double quote again.  SyntaxEditor knows that it's the quote that was recently auto-completed, so it effectively overwrites the existing quote instead of adding another double quote.  The caret ends up after the string, as expected.

QuoteCompletion4

Summary

The quote delimiter auto-completion features were added in the 2014.2 version of our WPF, Silverlight, and WinRT/XAML controls.

They also have been pre-configured to automatically work in these premium SyntaxEditor add-on languages: C#, VB, Python, JavaScript, and JSON.  They can easily be added to your own custom languages as well.

TaskDownload TaskLiveDemo TaskBuyNow

WPF, Silverlight, and WinRT/XAML v2014.2 Released

Major142ReleasesBlogPostBanner

The 2014.4 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:

Note that the 2014.2 version of the WinRT/XAML controls came out last month, introducing our Editors controls, but a new maintenance release is available today adding other new features.

ProductHeadingGenericCharts

We've added six new built-in chart palette options, including Retro and Sand:

ChartPalettes

ProductHeadingWPFDocking

Docking/MDI received numerous updates, including a new option for rafting windows to not hide when in scenario where their owner DockSite is hidden, such as if it's nested in tabs itself.  Many updates to focus handling were made, especially in relation to interop controls like WinForms/ActiveX.

ProductHeadingGenericEditors

Updated the Country and Currency classes with the latest ISO data.

WinRT/XAML Only

As announced in recent blog posts, our WinRT/XAML controls now have some really unique and universal (Windows Store / Windows Phone) controls for accepting input of common data types.

ColorEditBoxOpened
See our Edit Boxes Overview for a summary of the controls and some links to additional posts describing their functionality.

ProductHeadingGenericMicroCharts

A new segment chart has been added that allows for visual display of an integer value within a total..

SegmentChartType

This sort of chart is great for use on dashboards, and also as an indicator of steps or progress achieved.

Another new control is the arrow indicator displayed on the left side of the stock chart below.  It's called a trend indicator and alters its UI to reflect whether a numeric value is greater than, the same as, or less than an origin value.

StockChart

Six new built-in chart palettes have been added as well, including IceCream and Melon.

MicroChartPalettes
ProductHeadingWPFPropertyGrid

We've created a new custom property editor sample that shows how to easily add a custom property editor for a certain Type. 

PropertyGridCustomEditor


Double-clicking a property name has been improved such that if the property doesn't support standard values, it will attempt to focus the related editor instead and select all text.

ProductHeadingGenericSyntaxEditor

Quote auto-completion support has been added to the DelimiterAutoCompleter class, with double quote completion enabled by default.  As the user types a start quote, the related end quote will be auto-entered after the caret.  The C#, VB, Python, JavaScript, and JSON languages in our premium add-ons have been updated to support quote auto-completion.  It can easily be added to any custom languages as well.

We've added some nice new features like a ScrollIntoView method that can ensure that a text position is visible within the view, improved caret/selection movement around and delete/backspace of multi-byte characters, and improved backspace to move to the previous tab stop when auto-convert tabs to spaces is active and the caret is before the first non-whitespace character on the line.

.NET Languages Add-on

We've had a lot of requests for showing how to support ASP-style server tags, where the C# within the tags has automated IntelliPrompt.

SyntaxEditorServerTags
We're happy to deliver a new full source sample (seen above) that shows how to harness our .NET Languages Add-on within server tags.

Python Language Add-on

Today's releases contain the first version of our Python Language Add-on, a new premium add-on that supports both v2.x and v3.x syntax.

PythonIntelliPrompt
We'll blog about the language in more detail soon, but you can download and start using it today.

ProductHeadingGenericShared

A new triangle shape can be used in UI such as breadcrumbs, tabs, etc. 

Triangle
This shape can auto-size to its container and supports strokes and fills.

WPF Only

We've added a ZoomLevelToTextFormattingModeConverter class, which can switch from Display to Ideal text formatting mode when the zoom level is increased, thereby keeping text clear in any scenario.

TaskDownload TaskLiveDemo TaskBuyNow

WinRT/XAML Controls v2014.2 Released

BlogPostBannerWinRT142

The 2014.2 version of our WinRT/XAML controls have been released and are now available for download.

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

ProductHeadingMisc

This version makes all the WinRT/XAML controls compatible with Windows Phone, meaning that licensed controls will work in both Windows Store and Windows Phone apps!

PhoneSampleBrowser

We've even added a nice phone-based Sample Browser app to show off usage of the controls on the phone.

ProductHeadingGenericEditors

Actipro Editors is a brand new product that we've been working on for quite a while now and provides over 30 user input controls for common .NET data types such as dates, times, numbers, colors, enumerations, sizes, and many more.

ColorEditBoxNoAlpha

Each of the controls features unique designs that have been specifically crafted to support input by keyboard, mouse, and touch. Data entry is quick and efficient regardless of the input method utilized by the end user, which is especially ideal for universal applications.

All of the controls fully support Windows Store and Windows Phone apps, with alternate appearances as appropriate for phone usage.

We will be blogging and walking through all of the controls in the next couple weeks so keep an eye on our blog.

ProductHeadingGenericMicroCharts

We've added a new MicroSegmentChart control for use on dashboards, infographics, or as progress indicators.

SegmentChartType

More details on this control soon too.

ProductHeadingGenericSyntaxEditor

Along with various minor enhancements and updates, we have added a brand new premium Python Language Add-on that supports advanced editing for Python v3.x and v2.x.  This first release includes parsing, syntax error reporting, code outlining, smart indent, delimiter highlighting/completion, and more.

CodeOutlining

Look for another update soon featuring automated IntelliPrompt!  See this previous blog post for more details on the new add-on.

ProductHeadingGenericShared

Several other fun new controls and converters are included with this version too.

  • Added the TransitioningContentPresenter control, which uses animated fade, slide, push, and zoom transitions when new content is set.
  • Added the ContentTransitionPreview control, which demonstrates a content transition by continuously cycling two content items.
  • Added the ParallaxConverter that can be used to create a parallax background scrolling effect.
  • Added the BooleanNotConverter that can invert boolean values.

TaskDownload TaskLiveDemo TaskBuyNow

SyntaxEditor Python Language Add-on Coming Soon

PostBannerSyntaxEditorDevNotes

In today's post I'd like to formally announce that a new Python language add-on is coming to SyntaxEditor (WPF, Silverlight, and WinRT/XAML platforms) in its 2014.2 version.

What is Python?

Python is a very popular programming language that uses indenting to create blocks of code (as opposed to curly braces as in languages like C), and attempts to allow users to write code in fewer lines than is possible in other languages.  Python has a standard library of API features that has grown very large over time.

These days, Python code comes in two flavors: v2.x syntax and v3.x syntax.  Unfortunately there are breaking changes between the two syntaxes.  But we've got you covered since you can tell our PythonSyntaxLanguage class which version to use and it will parse things accordingly.

Features

Here's a screenshot of the Python language in action within SyntaxEditor:

Python

The first release of the Python language will have these features:

  • Support for both Python v2.x and v3.x syntaxes.
  • Syntax highlighting.
  • Abstract syntax tree (AST) generation.
  • Automatic code outlining based on AST structure.
  • Reporting and automatic squiggle display of errors for invalid syntax.
  • Mouse hover quick info for syntax errors.
  • Line commenting.
  • Smart indent.
  • Code block selection.
  • Delimiter (bracket) highlighting and auto-completion.

Beta Testers

Since this is a brand new language add-on, we would love to get your help beta testing it.  If you are a SyntaxEditor customer and would like to assist us in testing the Python language add-on, please contact us at our support email address.

Summary

This new Python language add-on will roll out in the 2014.2 version of our WPF, Silverlight, and WinRT/XAML controls.

TaskDownload TaskLiveDemo TaskBuyNow

WPF, Silverlight, and WinRT/XAML Controls v2014.1 Maintenance Releases

20141MaintBlogPostBanner

New maintenance of the 2014.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 detailed list of enhancements and updates, including many items not listed below:

ProductHeadingGenericCharts

Auto-Calculation of Tick Mark Intervals

ChartTickCalculation2

XYDoubleAxis, XYDecimalAxis, and XYDateTimeAxis have been updated to auto-calculate tick mark intervals when they aren't specifically set.  A new Axis Ticks QuickStart has been added that shows off automatic tick mark interval calculation.

Rendering Improvements

We've improved the rendering speed of data point labels, improved the rendering logic of bar charts, and updated data point labels to use a subtle border so that they don't blend in with surrounding chart objects of the same color.

Label Performance Improvements

Data point labels in pointer visibility mode now delay layouts until a pointer event occurs, thereby speeding up initial chart display.

Numeric Type Data Upconversion

XYChart now will automatically upconvert non-Double numeric type data to Double type so it can display.

ProductHeadingGenericDataGrid

Child Control Styles Applied to Some Auto-Generated Columns (WPF only)

ThemedDataGrid has been updated to style the child controls of auto-generated ComboBox and CheckBox columns.

ProductHeadingGenericDocking

Disabling Rafting Window Snap-to-Screen (WPF only)

Added the DockSite.IsRaftingWindowSnapToScreenEnabled, which can be set to false to prevent rafting windows from snapping to the closest screen when being displayed.

More Tabbed MDI Tile Options (WPF only)

Overloads to the TabbedMdiHost.TileHorizontally and TileVertically methods have been added that allow for a maximum number of columns/rows.  This permits additional tile configurations, such as a single row of tiles.

ProductHeadingGenericPropertyGrid

Double-Clicks Cycle Values (WPF only)

PropertyGridDoubleClick2

Updated double-clicks on property names to cycle through standard values if available.

CommitPendingChanges Helper Method (WPF only)

A PropertyGrid.CommitPendingChanges method has been added that forces any pending LostFocus bindings within property editors to update and ensure the data model is current.

ProductHeadingGenericSyntaxEditor

Navigable Symbols Hierarchy Support

Navigable symbols now support hierarchy levels and item indentation.  This feature was added to allow XML element hierarchies to be displayed in the NavigableSymbolSelector.

Numerous Minor Enhancements

Many minor enhancements have been made, which can be seen in the detailed update list.

LL(*) Parser Framework

A Grammar.AddChildFrom overload was added that allows for specification of a desired child index.

Web Languages Add-on

XmlNavigableSymbolProvider2

The XML grammar was reimplemented using type-specific AST nodes, thereby reducing overall AST memory usage by an average of 40%.  A XmlNavigableSymbolProvider service was added to the XML language that provides contextual element and attribute display in a NavigableSymbolSelector control.  The XML and HTML editor demos were updated to showcase the new navigable symbol provider features.

ProductHeadingGenericShared

Horizontal ListBox Control

HorizontalListBoxWinRT

The HorizontalListBox control was added, which allows for selection of items that are arranged horizontally with a uniform width.

UniformGrid Control (WinRT / Silverlight only)

UniformGrid3x3

The UniformGrid control was added, which is a Panel that can arrange content in a grid where all the cells in the grid have the same size.

RadialSlider Improvements

RadialSliderSegmented

The RadialSlider class logic for snapping values has been improved.

DelegateCommand (WinRT only)

The DelegateCommand class has been added, which is an implementation of ICommand that uses delegates.

TaskDownload TaskLiveDemo TaskBuyNow

SyntaxEditor XML Add-on - Navigable Symbols

PostBannerSyntaxEditorDevNotes

Today I'd like announce a great new feature coming to the SyntaxEditor Web Languages Add-on (WPF, Silverlight, and WinRT/XAML versions): a XML navigable symbol provider

Features

If you are new to SyntaxEditor, you may be wondering what is a navigable symbol provider.  Navigable symbol providers allow SyntaxEditor to provide a set of drop-downs above it that indicate the current context of the caret.  They also allow an end user to select items in the drop-downs to move the caret directly to the related definition.

Our .NET Languages Add-on's C# and VB languages already support this feature and the two drop-downs above the editor show the current type and member context.

With the addition of this feature to XML, two drop-downs above the editor can show the current element and attribute context.  Let's see a screenshot:

XmlNavigableSymbolProvider1

In the screen above, the caret is on line 12 in the "id" attribute.  The attribute drop-down (top right) properly shows the "id" attribute as context.  If we would click the "book" element in that drop-down, the caret would move to the "book" tag's name.

XmlNavigableSymbolProvider2

In this screenshot, we have displayed the element drop-down while still on the "book" start tag.  It has selected the current element for us and also shows the hierarchy of elements up to the root element ("catalog").  It also shows us the elements that are direct children of the current element.  In this case, elements like "author", "title", etc. are the direct children of "book".  Any of the items in the drop-down can be clicked and the caret will jump right to that element.  In this sense, it provides somewhat of a mini-document outline.

Summary

This great new feature will roll out in the upcoming 2014.1 WPF, Silverlight, and WinRT/XAML controls maintenance releases.

TaskDownload TaskLiveDemo TaskBuyNow

Windows Workflow Designer SyntaxEditor Integration Updates

WpfControlsTipsBlogPostBanner

Last year, 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. 

We have continued enhancing it and here's what it currently looks like:

WorkflowDesigner

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.

In recent updates, we've:

  • Updated App.OnStartup code to theme native WPF controls using Actipro themes.
  • Added a Menu above the designer with options for closing the window, and toggling the tool window visibility.
  • Added a custom completion ListBox implementation to work around issue where ListBoxItem would steal focus on click and Workflow Designer thought that it then had to close the expression editor.

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.

TaskDownload TaskLiveDemo TaskBuyNow

Filed under: Actipro, New features, WPF

JSON Language Coming to WinForms SyntaxEditor

PostBannerSyntaxEditorDevNotes

We are adding a JSON language implementation to the WinForms SyntaxEditor samples for the next maintenance release.

Features

JSON is a lightweight data-interchange format that is a subset of JavaScript syntax, and is commonly used with many web technologies.  With the new syntax language, you'll be able to provide a great editor/viewer for JSON data.  Here's a screenshot:

JSONWinForms

The JSON syntax language has these features:

  • Syntax highlighting
  • Automatic code outlining
  • Smart indent
  • Delimiter (bracket) highlighting

Summary

This new syntax language example will be included in the next WinForms Controls maintenance release.

TaskDownload TaskLiveDemo TaskBuyNow