Lately, we have been ramping up for the release of our newest volume of 12.2 for NetAdvantage for WPF and Silverlight. Let me tell you, this is a going to be a great release. I am so excited, I can’t wait until we actually release it to show you what we have in volume 12.2. This post will cover the new XAML line of business controls and features that we are releasing in NetAdvantage for WPF and Silverlight volume 12.2. The new stuff coming for our data visualization controls will be in a separate post.
Back in June I announced a two new controls. One of those controls was the XamGantt control. Then is was just a CTP, but now it is ready for prime time baby! This control is outright AWESOME! Just imagine taking Microsoft Project, getting rid of all the useless stuff, and cramming it into a beautiful, lightweight, and high performance control that can be dragged into your WPF and Silverlight applications.
We made getting your data into the XamGantt control as easy as possibly. From creating objects in code, to loading your project from a Microsoft Project XAML file. Makes me want to export all my Microsoft Project projects to an XML file, uninstall it from my system, and start loading them into the XamGantt control. For those of you who have your project data stored in a database in a customized format, don’t you worry. We provide you the ability to map your data so that it will work with the XamGantt control. Did I mention that you can declare the mapping in XAML? That rocks!
What about features you ask? Well, features we have. This is a fully functional project scheduling engine and there are too many to list, but I can cover some of the basics.
Manual/Automatically Scheduled Tasks
Creating tasks is as simple as a right click. Add tasks as a sibling task or a subtask. You can even make your project plan more flexible by setting a task as a manually scheduled task, or just set your task as an automatically scheduled task.
Creating task dependencies are as easy as click and drag. Or, if you prefer, you can manually as task dependencies by editing the task directly in the grid.
You can change the units and unit count for the timescale bands in the chart section of the XamGantt control. Not only that, but you can also change the display format of the timescale band.
You can easily highlight critical tasks so that they visually stand out. A project task is assumed to be critical is it has a slack of zero days. Don’t worry, you can configure the critical slack limit. Also some tasks can be considered critical depending on their constraints.
The slack fields Free Slack and Total Slack provide information about available time in case of a task delay. You can show the slack amount in the chart section of the XamGantt using a simple property (ShowSlack).
You can add a deadline date to a project task and if it is not reached in time a red notification icon with an exclamation mark appears in the XamGantt Indicators column. You can also click and drag the deadline on the task chart line to move it.
Custom View Providers
Want to see your project in a different view with a different set of columns or use different colors? Well you can easily create your own custom project views, and change the view out at runtime with out changing the project itself.
Lastly, let’s not forget about theming. Of course our XamGantt will support our available themes. Simply add the theme resource files to the ResourceDictionary.MergDictionaries collection and you are good to go. Here is the XamGantt with our touch friendly “Metro” theme applied.
The second control that I announced was the XamSyntaxEditor control. once again, this was a CTP control, but now it is ready to shine in production. The XamSyntaxEditor is a highly customizable text editing control that provides syntax highlighting and editing behaviors much like the Visual Studio code editor. The XamSyntaxEditor is provided in both WPF and Silverlight versions with an API that is common across both platforms, enabling you to incorporate code editing capabilities into your cross platform applications.
The XamSyntaxEditor has all the advanced editing capabilities you’d expect to find in a code editor. This includes clipboard support, unlimited undo and redo, drag and drop, line numbers, as well as character and line selections.
The XamSyntaxEditor gives visual cues, such as colorization, to the user on how the text is being interpreted so that comments, keywords, and language specific entities can be easily differentiated. This includes support for multiple font styles (i.e. bold, italic etc.) in a single document. The XamSyntaxEditor provides support for syntax highlighting for C# and VB languages out of the box.
Custom Syntax Highlighting
If you don’t like the way we highlight certain language classifications, then you are more than welcome to customize the syntax highlighting to meet your needs.
The XamSyntaxEditor supports end-user as well as programmatic splitting of the editor into two separate views for easier editing. Both horizontal and vertical splits are supported.
Not only can you customize the appearance of the syntax highlighting, but you can also customize the appearance of the XamSyntaxEditor itself. Everything from the editors font family, font size, color, background and style, to the line numbers background, foreground, font family, and style (bold, italic).
We provide you the ability to extend the XamSyntaxEditor to include your own custom margins on all four sides of the editor. Maybe you want to add a bookmarking feature to your editor. Simply create a custom margin and add your functionality.
Error Reporting (CTP)
For the 12.2 release, we couldn’t get everything we wanted as stable as we like to have it. So the error reporting feature will be released in a CTP state. Based on the rules of the language definition, the XamSyntaxEditor will provide a visual queue at the occurrence of an error. You also have access to the collection of errors produced by the document.
Syntax Parsing Engine
The Syntax Parsing Engine is a fully functional text parser engine that can be used standalone or with editor controls like the new xamSyntaxEditor. You probably guess it already, but our very own XamSyntaxEditor is built on top of this syntax parsing engine. The syntax parsing engine can take an EBNF based language and parse it into its language specific tokens, keywords and constructs.
The Syntax Parsing Engine processes text and creates meaningful tokens based on the rules of the grammar provided to the engine. The tokens generated by the lexing process are then used to apply syntax analysis to the document text based on the Language specified. The parser is a high performance engine that works for both deterministic and non-deterministic (i.e. ambiguous) grammars. Once again, this one didn’t meet our quality standards for a full RTM release, so we are leaving this in a CTP state until we can get it to the quality you expect.
The Syntax Parsing Engine provides the ability to search a document for instances of text that match search criteria using methods such as Find, FindReplace, FindAll, and FindReplaceAll. You can specify how to perform the search by providing the direction (forward or backward), case sensitivity, whole word or partial word, the text to find, or a regex pattern.
Syntax Tree/Error Reporting
The Syntax Parsing Engine exposes a syntax tree off the TextDocument which represents the syntactic structure of the text which is created during the parsing process. The structure of the syntax tree reflects the syntax rules of the Language provided to the engine. The syntax tree marks invalid nodes as errors and they can be accessed by using methods exposed by the API down to a given character range.
The Syntax Parsing engine allows you to scan through lines, tokens, and words with a simple API. Go to the start or end of a document, go to a specific line, token, or word. Find where you are in a document and continue to examine the previous or next tokens or words without changing the current position.
Fully supports ISO EBNF notation (ISO-14977:1996(E)). Just feed in a language’s EBNF and the syntax library will be able to parse it through and recognize the keywords, tokens and language construct from it. The Plain Text, C#, and VB languages are supported out of the box.
Note Worthy Features
Besides having two new kick ass controls and a new framework, we made sure to give some love to our other controls.
The XamGrid got support for ICustomTypeProvider. This allows our XamGrid control to data bind to a collection of objects which have a structure that is not known until runtime. Now this feature is only available for the Silverlight version for now. That is because when this feature was implemented, WPF (.NET 4) didn’t have the ICustomTypeProvider interface, and .NET 4.5 was released too late for us to get it in the WPF platform. So look for this in WPF in an up coming service release. We also added better Blend support by exposing more brush properties.
The XamDataGrid had a couple of CTP features go RTM. In NetAdvantage for WPF 12.1 you saw the introduction of the XamCalculationManager integration and the external sorting, grouping, filtering, and aggregation capabilities. I am happy to announce that both of these CTP features are now RTM, and ready to rock and roll in your application.
One last thing I want to mention is not a huge thing, but more of a convenience. When using controls from the NetAdvantage for WPF suite, you would have to declare very verbose namespaces in your XAML views. For example, if I wanted to use the XamDataGrid in my application, I would get the following namespace.
Well now that is no longer the case. From now on I can simply use a much shorter and nicer to look at namespace.
Now that is much better.
Obviously I didn’t list every single feature that will be in the upcoming NetAdvantage for WPF and Silverlight 12.2 release. Don’t forget that not only do we release new controls and features, but numerous bug fixes and performance improvements. Hopefully you guys are just as excited as I am about the upcoming 12.2 release.
Stay tuned for more information regarding what we will be releasing pertaining to our industry leading data visualization controls.
We are constantly improving our products based on your feedback. So be sure to let us know what you think and what controls/features you need. Feel free to ask me directly. You will always find me on Twitter @brianlagunas.