NetAdvantage for WPF RTM

NetAdvantage for WPF has gone gold and is now available for download.  The teams have been extremely hard at work fine-tuning the product and enabling an extended community of beta testers to ensure the excellence of the finished product.  This second release of the product rounds out our WPF offering to bring you the most comprehensive WPF component toolset available. So, the question is, what are we shipping this time around?  For those of you who don’t know, a picture is worth a thousand words…

WPF Application

XamTrader

This release adds more chart types than I’ve taken the time to count and a built-to-spec implementation of the Microsoft Office Ribbon (on top of the DataGrid, Editors, and Carousel).  I think you can look at what we’ve done in this release and the previous release and realize that we didn’t create a bunch of random tools for people doing rotating buttons (certainly, you can still do that), but we’ve enabled a class of applications that most people see on a day-to-day basis.  Essentially, I’d rather not just call this release “NetAdvantage for WPF”, but rather NetAdvantage WPF for the LOB.

Just wait and see what’s coming up next…  Stay tuned… 

Infragistics NetAdvantage for WPF Express (aka free grid)
So WPF has been shipping for almost a year but there is no Microsoft DataGrid for WPF; you have to purchase one.  Infragistics is in the component business and we've delivered on providing a DataGrid and a host of other controls for WPF. When we shipped our WPF product in April, we created a separate SKU that we gave to MSDN subscribers, many of whom may not have been Infragistics customers and called it an Express SKU.  This Express SKU is a fully functional version of our XamDataGrid and the expectation was set that we would do bug fixes and you could use our forums to ask questions about it, but we would not be adding any additional functionality. It was a gesture of good will to the MSDN subscriber to give them a DataGrid in WPF that had a stable feature set and could achieve the basic needs achievable by a simple datagrid.  (Of course, we also threw in the rest of the Grid features in the V1 release including: Outlook Group-By and the support of Hierarchical Data).

And It's now September, we're gearing up to ship our next iteration of the WPF product (download the XamChart CTP) and the Express Grid rises up again and we were faced with the question of what Product Management plans to do with it.  And the end result, is that we've decided to give it away for free to everyone and recompile/test it with the latest hotfix already installed.  It's available now and you can grab it here.

Lastly, let me mention that the latest hotfix has some really cool work added to it.  The WPF team basically spent a lot of time looking at performance and I'm pleased with the latest results.  So, if you're using our WPF product; I'd greatly urge you to grab the latest hotfix and experience some notable performance gains.

Posted: 13 Sep 2007, 16:57 | 3 Comments
Filed under:
Excel I/O

As many of you know, I pledged to write a blog post on Excel import in the last blog post and then I seemed to have lost the code somewhere between WindowsApplication45 and WindowsApplication75.  With a hectic travel schedule, some upcoming releases and strategies needing to be managed, and a large number of miscellaneous tasks, I didn’t get a chance to write that post.  Interestingly enough, there have been a lot of questions and a lot of demand for how to do some sort of import into the grid; so I decided to go ahead and write a quick how-to.

Excel Export (From UltraGrid)
This is fairly simple, simply drop the UltraGridExcelExporter component onto the form and call the export method and you’re done.
 

private void btnExport_Click(object sender, EventArgs e)
{
     //Use the UltraGridExcelExporter to Export Grid Data to a File
     this.ugExcelExport.Export(this.ugGrid, fileLocation);
}

 
Excel Import (To UltraGrid)
This is a little bit more involved, as there is no helper method to just import an Excel file to the Grid.  The reason there is no helper method is that Excel is a freeform structure and we didn’t want to take the responsibility of taking a freeform or cell-based structure and build a row/column based datatable out of it.  If we did that, we’d be forced to make some assumptions (like this sample that I’ve written will do) and that may lose some data.  For instance, if you have cells (with data) that are just randomly scattered throughout the excel worksheet.
The following code will walk you through creating a workbook, getting a column count and row count, building a DataTable and binding that table to the grid.
First, we’ll declare the variables that we need:

string fileLocation;
Infragistics.Excel.Workbook internalWorkBook;

//These will be used to build a DataTable from an Excel File.  If we know the mapping of the DataStructure, we could add Rows to the existing table. i.e.
//AdventureWorksDataSet awDataSet = new AdventureWorksDataSet();         
//awDataSet.vSalesPerson.AddvSalesPersonRow(myWorkBook.Worksheets[0].Rows[ i ].Cells[0].Value, ..., ..., ..., );

//However, in this example, we will just build the DataTable as if we had limited knowledge of the datastructure.

DataTable myDataTable = new DataTable();
DataColumn myDataColumn;
DataRow myDataRow;

//MIN/MAX Values used to frame the working size of the Excel data to be imported.
int minCellRow = Int32.MaxValue;
int maxCellRow = Int32.MinValue;
int minCellColumn = Int32.MaxValue;
int maxCellColumn = Int32.MinValue;


Then, we’ll use the file location to populate the Infragistics Excel Libraries:


try
{
     fileLocation = FileLocation;
     internalWorkBook = Infragistics.Excel.Workbook.Load(fileLocation);
}
catch (FileNotFoundException ex)
{
     MessageBox.Show(ex.Message);
}

Next,  we’ll determine the bounds for the rectangle that will translate the cell-based excel datasource into a column-based structure and we’ll also check to make sure the excel datasource has values in it.

foreach (Infragistics.Excel.WorksheetRow row in internalWorkBook.Worksheets[0].Rows)
{
     foreach (Infragistics.Excel.WorksheetCell cell in row.Cells)
     {
          if (cell.Value != null)
          {
               //Logic For Determining the Range of Rows/Columns in the Excel File.
               minCellRow = Math.Min(minCellRow, cell.RowIndex);
               maxCellRow = Math.Max(maxCellRow, cell.RowIndex);
               minCellColumn = Math.Min(minCellColumn, cell.ColumnIndex);
               maxCellColumn = Math.Max(maxCellColumn, cell.ColumnIndex);
          }
     }
}

//Insert a Check to ensure data has been exported
if (maxCellRow < 0 && maxCellColumn < 0)
{
     return null;
}

Next, we’ll create the columns for the datasource and in the case of this sample assign the first row as the value for the column header.

for (int i = minCellColumn; i <= maxCellColumn; i++)
{
     //The export that was demonstrated earlier utilizes the first row
     //for the column header.  We can now use that to give column names.
     myDataColumn = new DataColumn(internalWorkBook.Worksheets[0].Rows[minCellRow].Cells[ i ].Value.ToString());
 
     //Add the columns to the datatable.
     myDataTable.Columns.Add(myDataColumn);
}

Finally, we’ll populate the cells with data.

//Start at row 1 to ignore the header information that was used in the previous section.
for (int rowIndex = minCellRow + 1; rowIndex <= maxCellRow; rowIndex++)
{
     //Create a new DataRow
     myDataRow = myDataTable.NewRow();

     //Loop through the columns and associate the value to each cell
     for (int columnIndex = minCellColumn; columnIndex <= maxCellColumn; columnIndex++)
     {
          myDataRow[columnIndex] = internalWorkBook.Worksheets[0].Rows[rowIndex].Cells[columnIndex].Value;
     }

     //Add The Row to a DataTable
     myDataTable.Rows.Add(myDataRow);
}

Lastly, we’ll associate the datatable that we created to the grid and our import is complete!
    

this.ugGrid.DataSource = myDataTable;

Most of the above code is comments to describe what I’m doing, so doing a basic import is really not that challenging.  These Excel Libraries are extremely powerful and doing what I’m showing here is only scratching the surface of their capabilities.


You can download the .cs file (saved as txt) with all of the code here.

 

HP Universe :: Las Vegas
Are you or members of your test team in Las Vegas for HP Universe?  If so, feel free to stop by the booth over the next few days. We will be here talking about and demonstrating TestAdvantage for Windows Forms(QTP).  We will be exhibiting tonight for the reception between the hours of 5:30 - 8:00 P.M. at the Venetian in the exhibitors hall.
NetAdvantage 2007 Volume 2 Beta

The next release of NetAdvantage has quite the lineup of functionality and features for you to take advantage of.  The goal of this release was to solve more business application development problems and in fact save you a lot of time.  As for this release, to be honest, I don’t even know what piece of functionality to talk about first because we’ve got a lot of things stuffed into this release.  Here’s a sampling of what we did…

GAUGE
Let’s start with the long expected Gauge.  It’s got both digital gauges and radial gauges and a whole lot of styles for you to choose from.  This as many of you have beta tested is no small control.  It’s got a lot of power to it.

PDF/XPS DOCUMENT EXPORTING
This one has been a long time coming and is finally hitting the market.  You can now export our WinGrid to PDF…but wait…there’s more.  The document exporting api’s are so robust that you can drive the creation of PDF/XPS documents in any way you like.  Since there is no visual design surface on the API’s, I’ll stop short of calling them reporting, but that being said you can use them to create reports if you’re so inclined and unflinching at jumping into the code.
 

DESKTOP ALERT
The WinDesktopAlert mimics both Outlook and Live Messenger granting you the capability to notify your users on some piece of information by a simple method call.
 

EXCEL EXPORT ENHANCEMENTS
Headlining with three new controls, I normally wouldn’t jump into any enhancements to other existing controls, but we did do a lot of work on the Excel Exporting Engine.  One piece of functionality in these enhancements that I felt obligated to mention was the capability to import from Excel into into our Excel object model.  *Note, I did not say directly into our grid, b/c Excel is a cell-based structure and since our grid is column/row based we didn’t want to make any assumptions about what the data might look like.  That being said…I did write a simple sample that allows you to export to Excel then call a method (and I only looked at a flat data structure), build a datasource, and essentially import the Excel data back into the grid.  I plan on writing a blog post on that sample in the near future!
 

CALL TO ACTION
If you’re a subscriber, download the beta!  If you’re not...what are you waiting for…become a subscriber and download the beta!  You can find the bits here.

Announcing TestAdvantage for IBM Rational Functional Tester (CTP) – RSDC – Orlando, FL

As the Product Manager for Rich Client at Infragistics, I’m pleased to be one of the first to announce what has been a tremendous effort by a superb development team and a model for cooperation between Infragistics and IBM: TestAdvantage for Windows Form (for Rational Functional Tester).  Due to customer demand, we will begin by offering TestAdvantage targeting version 6.1 of NetAdvantage with targets to hit later versions of NetAdvantage in the future.

If you would like more information or be a part of the beta program you can either contact Infragistics Sales or send me a message off this blog.

To ensure the quality of an application/plugin and ensure that solutions fully integrate into the IBM environment; IBM suggests that solutions vendors go through a rigorous certification process.  The CTP bits of TestAdvantage have already gone through this rigorous process and I am pleased to inform you that TestAdvantage for Windows Forms is Ready For Rational Certified!  

These are two great announcements that will allow our customers to confidently test in a new environment and be a part of a strategic solution to enable the delivery of rock solid, high fidelity, and high quality UX’s in a short period of time.

On a side note, if anyone decided to stay in beautiful…hot…humid…Orlando, FL after TechEd or decided to visit specifically for the Rational Software Developers Conference feel free to stop by the Infragistics booth and say hello to myself and a few other Infragistics' staff.

NetAdvantage for WPF Released!!!
Today marks the world-premier launch of NetAdvantage for WPF 2007 Volume 1.  This toolset provides one of the most business critical controls on the market, a DataGrid.  It also provides controls like the DataPresenter that epitomize the capabilities of WPF.  We have been hard at work for the past many years researching the internals of what WPF is from styling capabilities to the new deployment scenario (XBAP).  Through this research it is our hope that we provide you with the tools you need to create the next generation user experience.

If you have Windows Vista or .NET 3.0 installed on your machine and want to see amazing usage scenarios for our controls check out our XamShowcase.  These Xamples not only demonstrate the high-powered styling finesse of the controls, but also their infinite flexibility.  You'll notice a single control that with a little bit of styling work can be made into a treeview or help visualize data in completely new ways.

You can get access to all of our bits/help from here.  You'll notice that to decrease the download size we did not include the help in the install.  We have learned that our online help is where our customers generally go to browse the help files (http://help.infragistics.com/).  However, we do make the help available to download separately and you'll notice there are two versions.  The first version will be for users who have Visual Studio installed and the second will be a stand alone version.  That being said, check out the XamShowcase and Download the bits!

WPF Showcase

 WPF Showcase

Posted: 23 Apr 2007, 10:06 | 9 Comments
Filed under:
Conditional Formatting (aka ValueBasedAppearance)

If you've ever wanted to highlight cells based on some condition or compare columns and notify the user of their result.  You're familiar with conditional formatting.  Traditionally, you'd have to handle the InitializeRow event.  Things are changing in 2007.1 that enables you to add conditional formatting without writing any code.

Let's run through a quick sample of how this functionality might work.  We'll start by using a view in the AdventureWorks Database that deals with sales per sales person.  For the years in question, we will gray out the text area in the grid if the sales person did not have any sales.  To do this we will add an operator condition to each of the years (2002, 2003, 2004) that states IsNullOrEmpty and set the backcolor to gray.

Next we'll associate a scale for the sales force that will help us identify how they are selling.  If they are less than $2M in sales we'll associate a down arrow (image), if they are at $2 - 3M we'll add a neutral glyph, and if they are above $3M we'll add an up arrow.  To handle ranges, we will have to add a condition group that will enable us to perform logic such as greater than $2M "AND" less than $3M.

Conditional Formatting Dialog

Next, add an UltraCalcManager component to the Form (this will enable us to add formula conditions).  We need to figure out our employees who are performing less than stellar.  The less than stellar employees are the employees (in the year 2004) who are selling less than $3M, so I'll add this to a condition group.  Next, I'll add a Formula Condition that will check the second part of the criteria.  The second part is that they had an increase of less than 25% in sales over the previous year. 

 Formula Builder

I'll next move that condition group up to the top of the conditions for 2004 so that it has the highest priority such that the flag that I associated with it paints instead of the arrow. 

The end result is a pretty compelling view of sales data as displayed below:

Final Screenshot

WPF Beta...Released...

As a Product Manager at Infragistics, I can tell you about the skill and knowledge of our architects when approaching an entirely new technology is nothing short of amazing.  I watched with interest as these gods of code crafted a new tool now known as the xamDataPresenter way back in the days when WPF was still “Avalon.”  As the Windows Forms Product Manager, I watched in fear as this new technology took shape over the years into a weapon that could be used in conjunction with my WinForms applications or heaven-forbid standing alone.  As the joint WinForms/WPF Product Manager, I stand in awe working in the midst of not only the brightest minds in development, but with the UXG and VDG our User Experience Group and Visual Design Group.  As it stands today, we have gone Beta with part of our Data Visualization Strategy and I look back and see the growth, the knowledge, and the transformation to what is already becoming an exciting future.

If you haven’t already…download the .NET Framework 3.0  and grab NetAdvantage for WPF 2007 Volume 1 Public Beta!

WPF Screenshot

Changing Position at Infragistics....(sort of)
Should I upgrade to WPF?  Should I interop the new xamDataPresenter in my Windows Forms Application?  Should I start a new WPF initiative and use the WinExplorerBar in it?  Does Infragistics have a strategy for Rich Client development specifically in regards to WPF and Windows Forms?

Everyone knows that in regards to Windows Forms, I am the Product Manager (and with the help of some of the brightest development minds) set the strategy for Infragistics Windows Forms.  I've recently begun transitioning roles at Infragistics or rather adding roles.  In an effort to better create a cohesive, consistent, strategy of Rich Client development; I am adding WPF to the product portfolio that I manage. 

What does that mean to you as customers?  It means you have a single interface for all rich client needs (including the Infragistics test strategy with TestAdvantage).  It means that I'm here to listen and be your voice in how Infragistics approaches Rich Client Strategy.

So, with that feel free to look to me for any of your rich client product development needs.

NetAdvantage for Windows Forms 2007 Volume 1

Feeling as though we just shipped a product a few months ago…It’s that time to ship a product packed full of exciting features again.  I’m not going to talk about the ASP.NET side of things, but their release (you need to be a current subscriber to see Tony's post in the beta forums) is not just monumental it’s really freakin’ cool. 

What I am going to talk about is a new technology that the Windows Forms team has shipped labeled Infragistics Express Styling™.  Now not to discount any of the other features added like Ribbon MDI merging, Ribbon support of Aero (Vista Glass), or a whole host of other rockin’ features, but this Express Styling™ is the next gen approach to how you build styles. 
It starts by selecting File -> New -> New Style Library from Template
 

Template  


Next you select the type of template you would like to apply your choices include Flat, Glassy, Grey, Office 2007, or Vista.  These templates define how the colors will be applied to your application.  For instance a flat template won’t have the polished glass look of the Glassy template.  The templates have nothing to do with the color of the application, only the ‘feel’ of the colors as they’re applied.
Next, you have the option of selecting a pre-defined palette that will help you choose colors that work well together or just selecting the colors that perhaps are defined by your organization.  There is a live preview that shows how the colors look in different scenarios to give you a feel for what to expect.
Template Dialog 


After choosing your color selection, you select OK and you’ve nearly completed styling your application in the colors that you have chosen!  The last step is to just remember to load the style file by calling the load method Infragistics.Win.AppStyling.StyleManager.Load(@"C:\myIsl.isl ");  Here's a few samples that I threw together in about a minute...

Blue Isl

Purple ISL

Ok so...interested yet?  If you're a current subscriber you can download the bits here: 

NetAdvantage for .NET 2007 Volume 1 (CLR 1.X)

NetAdvantage for .NET 2007 Volume 1 (CLR 2)

If you're not a subscriber...subscribe NOW and get access to these bits along with a that will give you what looks to be some monumental releases in the future!

Getting the rounded Office 2007 Style form…

If you’ve ever wanted to get that cool rounded form style that you see displayed with our ribbon, but you don’t want to use the ribbon it’s really quite easy to achieve.  (Actually, it’s just a simple property setting.)  The code is as follows:

ultraToolbarsManager1.FormDisplayStyle = Infragistics.Win.UltraWinToolbars.FormDisplayStyle.RoundedSizable;

And of course if you want to change the color to one of the other Office 2007 themes simply set the following property:

Infragistics.Win.Office2007ColorTable.ColorScheme = Infragistics.Win.Office2007ColorScheme.Black;

After a couple quick property settings you have a nice rounded form with your existing menu-based application.  Enjoy…

Rounded Form

What’s that time? Daylight Savings Time and NetAdvantage Scheduling

For the United States (and Canada) the start and end of daylight savings times will be changed this year.  Daylight savings time will now start on March 11, 2007 (about 3 weeks earlier than normal) and end November 4th, 2007 (one week later). 

This may affect you if you are using the Infragistics Scheduling products that are part of NetAdvantage.  We rely on the operating system clock to get the current date and time (DateTime.Now).  Therefore, if your operating system clock is off; so is your scheduling application. 

That being said, Microsoft has released some information (http://www.microsoft.com/windows/timezone/dst2007.mspx) for preparing for the time change and also released a series of patches (http://support.microsoft.com/kb/928388).  After making the appropriate OS updates your scheduling applications will observe the appropriate time changes.

NetAdvantage Tools in Office?
Microsoft Office is one of the most popular productivity tools for the office environment.  Its user-experience defines metaphors that become their own entity of UX design (i.e. the ribbon, the outlook bar, etc.).   Furthermore, component vendors such as Infragistics invest considerable amounts of time enabling developers to easily recreate these user-experiences.

A certain paradigm may come into play where you don’t need to develop an entire application, but feel the need to add functionality to a Microsoft Office product.  Microsoft provides the capability to create add-ins for the Office products and NetAdvantage plays very nicely in this space.  With our full host of Office styling your add-ins can seamlessly integrate into any Office environment. 

Basically, to create an Office Add-In you need to download the Visual Studio Tools for Office.  Then it’s  virtually as simple as  creating a user-control.  There is an excellent article on how to do this on msdn.

I ran through the basics just to get a feel for how this might work.  It’s really easy to do and the end-result is a perfect blend into the Office Experience.


NetAdvantage in Office
Office 2007 UI Licensing
Microsoft has decided to share their ‘significant UI Investment in 2007 Microsoft Office Applications’ with the world by way of a royalty-free licensing agreement giving you access to a comprehensive set of design guidelines.  Basically, all you will be required to do is to accept a simple click-through licensing agreement with Microsoft that will eventually be found on an Office UI Licensing page.

That being said, some of you have called, emailed, or questioned this ambiguous statement (You have no license to the Office 2007 UI) found in our installers for the NetAdvantage For Windows Forms 2006.3 release.  The answer from us internally has been please contact Microsoft for more information. 

Here’s the scoop on what's been going on now that everything is public.  Infragistics usually ships our Volume 3 release in early October.  Microsoft informed us that they wished to protect some of their intellectual property and define usage guidelines for that material in our shipping product (namely, the ribbon); we made a tactical decision to delay our shipment.

We were one of the first Microsoft partners given privy to a set of confidential design guidelines that specified this new Office UI and if I may proudly say we were virtually dead-on with everything that Microsoft expected to be in place to have compliance with their guidelines.  Unfortunately, we were bound by an NDA to Microsoft that did not allow us to tell our customers that there might be some new licensing requirements with the new UI.  The decision was made to delay the launch to protect our customers, until the agreement with Microsoft was in its final stages.  We did not want to ship something and have our customers start building applications and then experience any pain when the information about the design guidelines and Microsoft’s licensing became public.  Basically, we wanted to be 100% compliant with the Microsoft guidelines before we released the bits and give our customers a heads up that if they were building Office 2007 UI-centric applications that they should contact Microsoft.

My thoughts, personally as the Windows Forms Product Manager, at the time were that of great frustration because I knew that we had created an unbelievably, amazing rendition of the new Office UX, but couldn’t ship it AND couldn’t even tell our customers why we couldn’t ship it.  However, I can now convey that Microsoft has released a significant amount of guidance to enable the world to create applications that don't dilute the innovation and flexibility enabled by the new UI.

All of this being said I have a few thoughts on this last release.  First, if you haven’t already, check out the new Office 2007 capabilities that we’ve shipped.  They are unbelievably accurate and have virtually all of the features that you would want from galleries, full application menu, to keytips, and contextual tabs. 

Second, you’ll notice the “Disable Office 2007 UI Compatibility" button on our toolbarsmanager at design time.  Basically, by default and where it is under our control, we try to resolve settings such that they comply with the Office UI Guidelines so that our customers don't inadvertently go against the requirements of the guidelines.

In closing and a call to action, download the bits, offer feedback, and get ready for a phenomenal year as we gear up for the 2007 releases!