Category Archives: 2010 R1

Introducing WebSlidingMenu

It has been a while since my last blog post. In this post, I want to introduce you to Intersoft’s  new ASP.NET control that we shipped in 2010 release. Called WebSlidingMenu, it is a unique navigation control with superb navigation experience. With WebSlidingMenu, you can swiftly move from one page to another page in fewer clicks. WebSlidingMenu is one of the controls that included in WebEssentials suite. Click here to learn more about WebEssentials.

WebSlidingMenu offers a hierarchical navigational concept in drill-down mode. As a navigation control, WebSlidingMenu is perfectly suitable for a complex structured navigation as it allows users to drill-down to a specific menu and navigate to the specific item instantly.

In this post, I will deep dive on each feature  of the WebSlidingMenu.

Data Binding

Data binding is one of the control basics that generally populates the items based on the given data source. WebSlidingMenu provides an intuitive DataBinding Editor makes it easy for you to connect the WebSlidingMenu control to your existing XML documents.

The WebSlidingMenu’s Data Binding Editor is shown in the following screenshot.

DataBinding

Notice that you can define the data binding node in hierarchical to easily match your XML data structure. Click here to learn more about WebSlidingMenu’s data binding concept.

Load-on-Demand

Performance is always an issue as users demanded intuitive and responsive user experience even with large set of data. We, at Intersoft Solutions are fully aware of this problem and offer an innovative load-on-demand feature in WebSlidingMenu.  You can enable the load on demand feature by simply enabling the LoadOnDemand property.

You can check the WebSlidingMenu’s load on demand sample here.

Header Template and Item Template

Sometimes having text as a display is not enough, you need a better layout like images or maybe some HTML tables or even server side controls. In WebSlidingMenu, you can create the header and item display that you want by choosing the appropriate mode like text, text and image or inline.

The following illustration shows the WebSlidingMenu configured with inline mode in the Header and Item. You can also check the sample here.

HeaderTemplate

Auto Height

In certain scenarios, you often need to specify dynamic height for each item. The easiest  way to do this is setting the height of each item individually, which is not a good practice. WebSlidingMenu provides a more elegant approach with its Auto Height feature. All you need to do is simply setting the AutoHeight property to true. WebSlidingMenu will automatically determine the height for each item to fit the item’s content. Please refer to the following screenshot for clearer picture.

AutoHeight

You can try the online demo here.

Summary

In this post, I have covered only some of the best features available in WebSlidingMenu. Please click here to learn more, and here for more online demos.

If you haven’t downloaded WebUI Studio, click here to grab your 30-day free trial and test drive WebSlidingMenu for yourself. Feel free to unleash your creativity and spice up your applications with stunning navigation experiences. For questions, feedbacks or suggestions, please post it in Intersoft’s community.

Warm Regards,

Gordon Tumewu
WebEssentials Team

Using Multiple Calendars in WebCalendar

Continuing my posts about Intersoft WebCalendar control for ASP.NET, I have described how to configure the holiday collection in WebCalendar, and how to get selected dates and perform multiple selection. If you missed the blog posts, please check it out here.

In this post, I will show you about how to configure WebCalendar to multiple calendars in multiple columns. Let’s start configuring the WebCalendar.

Unlike similar calendar controls, WebCalendar enables you to display multiple calendars. This behavior is controlled by the NumberOfCalendarDisplayed property.

When multiple calendars feature is enabled, only 1 calendar will be active when users switched to the year view or decade view.

The following screenshots show the multiple calendars feature in WebCalendar using different type of view mode.

clip_image002clip_image004clip_image006

As you can see from the above screenshots, WebCalendar’s default behavior is to display the multiple calendars in one column. To enable multiple columns option in WebCalendar, we can customize the CalendarItemWidth property to set the width of each calendar, and the Width property to control the WebCalendar’s width.

As an example, I will show you how to display a whole year calendar in 4×3 configurations.
Please follow the steps below.

  1. Set the NumberOfCalendarDisplayed property to 12.
  2. Set the CalendarItemWidth to 170px. The CalendarItemWidth is 1/4 from the entire WebCalendar’s width.
  3. Set the CalendarItemHeight to 180px. The CalendarItemHeight is 1/3 from the entire WebCalendar’s height.
  4. Set the Width property to 680px. We can get the Width property value from multiply the total column with CalendarItemWidth’s value.
  5. Set the Height property to 540px. We can get the Height property value from multiply the total row with CalendarItemHeight’s value.

Here is the result from the above WebCalendar configurations.

clip_image008

Now you have learned how to use WebCalendar to display multiple calendars in multiple columns. If you have any question, feedbacks or comments, feel free post them to our community forum. You can also check the online demos of WebCalendar here.

Warm Regards,
Budianto Muliawan
Intersoft Software Architect

Extending Contacts Application (Silverlight & WPF) with DevForce 2010

Flashing back several months ago when I posted a depth details on MVVM and Silverlight, I have described how simple and easy it was to build a rich contacts application using ClientUI controls with pure MVVM pattern. Since then, the contacts sample has become one of the most popular examples that helps developers learn about MVVM pattern, commanding, and write better XAML that supports unified development model. You can see the contacts sample online here, or open the Visual Studio 2010 solution available from your local ClientUI installation.

The contacts sample project was originally designed using non-persisting model classes that loads up data from an XML data source. It’s made that simple and remain unchanged in the RTM to keep the code focused on the MVVM implementation. In this blog post, I decided to revisit this nice contacts application and take it to the next level by extending it with full-blown database connectivity and solid persistence layer.

ClientUI Meets DevForce

The contacts application shows a number of interesting implementation – such as commanding, input binding, key binding, and how the entire presentation controls can be elegantly connected to the entity through MVVM pattern – which are also the main reasons why it’s chosen for our joint case study with IdeaBlade, the maker of DevForce.

In case you haven’t aware, DevForce is a powerful ORM solution that thoughtfully designed to cover many of the lacking data access layer in the Silverlight and WCF RIA Services. Furthermore, DevForce uniquely supports WPF using the same codebase – which simply makes it the perfect match for ClientUI as the ClientUI controls already support WPF out-of-the-box. To learn more about DevForce, please visit their website here.

The outcome is incredible – you can now create rich client applications that target both Silverlight and WPF using the same presentation controls and now the same persistence and data access layer. The capability to write once and reuse is really something exciting for the multi-platform development as we received tremendous requests from our customers asking about the best practice in leveraging the MVVM pattern and unified development model in real-world apps. For developers, that all comes down to this simple line: more maintainable code, better scalability, and significantly accelerated development process.

Using DevForce as Persistence Layer and Data Programmability Services

We’ve been working closely with IdeaBlade team in the past few weeks and managed to put together a comprehensive case study that demonstrates how to implement DevForce as the persistence layer for the contacts application, as well as showing a host of interesting line-of-business scenarios including retrieving data from the database, performing update and delete asynchronously, and validating input.

The joint case study also shows some of the DevForce’s advanced features that are really helpful to solve real-world development challenges and business scenarios such as support for complex type (which RIA Services completely lacking of), and support for persistence layer in both design-time and runtime through a combination of several design patterns such as repository and entity manager factory design pattern.

The following illustration shows the design-time entity manager factory and the contact editing dialog box which is bound to the same view models used in runtime/production.

Design-time view model using EntityManagerFactory

On the other hand, many of the user interface and usability aspects have been further enhanced and polished to reflect the scenarios in the real-world data-aware application. For instance, the page now shows busy indicator when the data is being loaded by DevForce, the editing form now closes the window automatically after the data is saved successfully by DevForce. Please note that all DevForce’s data operations are executed in the view model, while the interaction with the view is elegantly done through data binding to the ClientUI controls.

See the following shot for the busy indicator enhancement for the contacts sample.

Busy state management in ClientUI

Notice that the commands (such as those in toolbar) are automatically disabled when the page is busy, and enabled again when the operation completes. For more information on user experience features implemented in ClientUI, see User Experiences Overview.

Silverlight and WPF – Truly One Codebase

A few vendors out there stated they supported one XAML codebase for Silverlight and WPF development. This turns out to be true – but only up to the control/component level. When it comes to the XAML for the application-specific and framework markups, particularly those missing in Silverlight such as commanding, gestures and binding (as well as certain MVVM aspects such as delegates and command references), those tools came out failed. The workarounds? An old, classy answer – make two separate version for the views layer.

We are thrilled to share our new findings – ClientUI turns out to be, so far, the only presentation toolkit that allows you to build applications that run flawlessly in Silverlight and WPF with identical XAML and codebase. More than just control level XAML unification, ClientUI also unifies many of the framework and application-specific API – from the command bindings, input bindings, MVVM, to drag-drop framework and data binding markup. To learn more, see Unified Development Model.

Even better, you can now add persistence layer and remote data connectivity to your application using the same bits, and still run flawlessly in both Silverlight and WPF. Credits goes to DevForce which, similar to ClientUI, was thoughtfully architected to support data programmability in both client platforms. The following screenshot compares the code and designer of both Silverlight and WPF solution side-by-side.

Silverlight & WPF - Truly One Codebase

Get ready to dive deeper?

Download the enhanced contacts sample application and play it around for yourself. Both Silverlight and WPF solutions are included. Make sure you check out the walkthrough article (ClientUI_DevForceIntegration.pdf) once you extracted out the files from the zip package, or click here to read it online.

Ward Bell of IdeaBlade shares his thought about the joint case study – read his blog post here.

I hope you enjoyed the enhanced, DevForce-integrated contacts sample. For any questions and feedback on the sample, please post to ClientUI forum.

What’s Next

The previously MVVM-only contacts sample is now a fully database-connected application in just a few days implementation, thanks to the DevForce’s powerful library and easy-to-use designer integration. In this first part of multi-series joint solutions, you have learned how to create a rich contacts application using ClientUI controls, MVVM, commanding and DevForce together as one ubiquitous solution for the Silverlight and WPF development platform. In the project sample, you can find a completely working solution that demonstrates a full-fledged contact application that retrieves data from SQL, perform insert, update and delete, and validate data input – all elegantly designed with best practices and solid design patterns.

In the next series, we will make available more joint solutions with more interesting scenarios geared toward business applications such as client-side caching and offline scenarios, batch update with transactions, complex projection and advanced client-side LINQ, and more. Stay tuned…

Best,
Jimmy
Chief Software Architect

WebExpander with Google Maps

In the 2010 R1 release, Intersoft introduces a new ASP .NET collection control under the WebEssentials suite. Further information about WebEssentials can be found here. One of the controls in the WebEssentials is WebExpander. In this post, I will show you how to mashup Google Maps service with WebExpander to display contact list address. The following screenshot illustrates the above scenario. You can achieve the above scenario by customizing the WebExpander’s Mode and Flow property, and use custom inline template for the WebExpander’s header and content section. You also need to implement WebExpander’s OnClick client side event to call the Google Maps service. I have provided a working sample which you can download at the end of this post. Now, let’s start customizing the WebExpander.

  • Customize the Mode property I’m going to set the Mode property to Fixed.
  • Customize the Flow property I’m going to set the Flow property to Right because I want the Google Maps service to expand to the right of the header.
  • Customize WebExpander’s header and content section As you can see from the above screenshot, there are two sections in the WebExpander. The list of contacts and the Google map address of the selected contact. The list of contacts is the header section and the Google map is the content section. The following code shows the customization of the header and content section using custom template.
    <ISWebEssentials:WebExpanderItem Name="WebExpander1_item0" 
        State="Expanded">
        <headertemplate>
            <div style="margin-left: 10px; padding-top: 12px;
                font-family: Segoe UI;">
            <div style="background-repeat: no-repeat;
                background-position: left center;
                height: 50px; padding-left: 50px; font-size: 12px;
                background-image: url('images/photo1.png');">
                <div style="line-height: 80px; font-size: 12px;
                    font-weight: bold;
                    line-height: 80px;">
                    Patrice Johnson</div></div>
            <div style="height: 18px; line-height: 18px;
                padding-top: 2px; font-size: 11px;">
                191 North Cowley Drive</div>
            </div>
        </headertemplate>
        <contenttemplate>
            <div id="canvas_map_0" style="width: 623px;
                height: 483px;">
                <div style="text-align: center;
                    padding-top: 240px;">
                    Loading Map ...</div>
            </div>
        </contenttemplate>
    </ISWebEssentials:WebExpanderItem>

    The content section is set using a predefined size to hold the Google Maps service.

  • OnClick client side event The Google Maps service API is called in the WebExpander’s OnClick event handler. In order to get the correct map size, you should ensure that the content section is fully expanded before calling the Google Maps API.
    function WebExpander1_OnClick(ctrlId, itemName)
    {
        var exp = ISGetObject(ctrlId);
        var itemObj = exp.Items.GetNamedItem(itemName);
    
        var intervalExpandObj = setInterval(function ()
        {
            if (itemObj.State == "Expanded")
            {
                clearInterval(intervalExpandObj);
                intervalObj = null;
    
                var idx = itemName.substring(itemName.length - 1);
    
                 //Function to call Google Maps API
                ShowMapByAddress(parseInt(idx));
            }
        }, 50);
    }

Once you have finished configuring the WebExpander, you will get something similar to the above screenshot. In summary, I have explained some WebExpander features such as mode, flow, custom template, and client side API which you can use to create a mashup service between WebExpander and Google Maps. For further information about WebExpander features, please visit WebExpander product page here. As mentioned earlier, you can download the sample for this post here. You can also explore other WebExpander samples in the online demo here. If you have questions or feedback about this post or anything related to WebExpander control, feel free to post it to Intersoft community forum. Regards, Glenn Layaar Intersoft Member

ClientUI Learning Guide and Resources

Along with the service pack release and new support center launch last week, we have made available a vast array of resources for ClientUI, including few dozens of conceptual topics, hundreds of walkthroughs, and a handful of getting started videos. You can access the support page dedicated for ClientUI here, and the online product documentation here.

Although the documentation has been neatly organized based on the topic category, locating a certain topic may take sometime due to the comprehensiveness of the documentation. In this blog post, I’m going to outline some of the topics that I think interesting for both beginners and advanced Silverlight and WPF developers. Let’s get it started.

Introduction to ClientUI

Learn the basic concepts and the philosophy behind the ClientUI architecture, such as the comprehensive application framework in addition to the rich controls. Also learn about unified development model in ClientUI which enables you to develop solutions for both Silverlight and WPF using both shared XAML and API.

Getting Started Walkthroughs

Jump start your Silverlight and WPF projects using the installed ClientUI templates. Also learn how to create basic applications using ClientUI controls with MVVM pattern.

Getting Started Videos

Preferred to watch the walkthrough videos with voice narration instead of reading text? Then check out the getting started videos below. Notice that several MVVM walkthroughs are divided into multi-series videos, so that you can skip the earlier series if you already familiar with it.

Commanding and MVVM Pattern

All you need to know about commanding and MVVM pattern in one place. Learn the basics of commanding and why you should use commanding in your application. Also learn the fundamentals of MVVM pattern with illustrated charts followed with a host of MVVM examples.

Navigation Framework

In my previous ClientUI blog on navigation, I have described the outlines of the ClientUI navigation features such as the child navigation, role-based security and more. Many of these navigation features are discussed more deeply in the conceptual topics, walkthroughs and how-to topics listed below. Learn the supported navigation topologies, navigation hosts and navigation source support, navigation events and lifetime, and learn how to use navigation commands and more.

Application Framework

In the part 1 of my ClientUI blogs, I have touched the surface of the application framework in ClientUI. The most recent version of the ClientUI documentation now covers the basic concepts and architecture of the application framework, illustrated with many nice graphics and class diagrams. Learn how to easily write composite application for Silverlight and WPF in XAML declarative manner – without have to deal with MEF or tons of code. Also learn the best practice to partition your applications into smaller shareable modules for best performance, something not available in Silverlight or other solutions.

Drag-drop Framework

In several of my previous blog posts, I have outlined that many of the UI controls in ClientUI support fluid drag-drop and animation. Many of these stunning drag-drop effects are actually powered by the drag-drop framework available in the core of the ClientUI architecture itself. Learn how to take advantage of the powerful ClientUI drag-drop framework in your application. And if you haven’t aware, our drag-drop framework supports unified API between Silverlight and WPF where it supports data objects, visual hints, and we even bring the WPF-style DoDragDrop API down to Silverlight. Too good to be true? Check the topics below.

Windowing Framework and User Experiences

In the part 7 of my ClientUI blogs, I have outlined many of the key features related to the windowing, dialog boxes, and desktop-style application development in ClientUI. Since then, we have made available a host of new walkthroughs and conceptual topics arranged in better flow – discussing from the windowing fundamentals then down to the implementation and examples. Also learn how to integrate the desktop to task bar, open a new window using command, and perform advanced operations related to the task bar and the desktop.

ClientUI Control Library

With thoughtfully designed architecture from the ground up, plus 180+ controls for both Silverlight and WPF, ClientUI takes the rich UI development to a whole new level blowing off the competition few milestones away. So what does this all mean to developers? It could be a lot of things, from increased productivity to added new value to killer next-generation apps and more. The most important thing is that you get the tools right in your toolbox anywhere and anytime you need it. Forget about spending time looking for plumbing code just to make MVVM work, or other unproven workarounds.

More on ClientUI Fundamentals

Still looking to learn ClientUI architecture in even more details? Then please head straight to ClientUI Fundamentals.

 


Hopefully the list above helps you quickly getting started with application development using ClientUI. We welcome your feedback and requests for additional topics or walkthroughs.

 

All the best,
Jimmy

Page Index Indicator Using WebProgressBar

In the 2010 R1 release, Intersoft introduces a new ASP .NET collection control under the WebEssentials banner. One of the controls in the collection is WebProgressBar. Further information about WebEssentials can be found here.

In this post, I will show how to use WebProgressBar to indicate the page index in a paged form scenario.

The following screenshots show page index information in a paged form using WebProgressBar.

You can achieve such scenario with WebProgressBar in several simple steps. The basic idea is to customize the Mode and Orientation property of the WebProgressBar, and provide a client side event to update the WebProgressBar’s Value with the latest page index.

For your information, I have provided a working sample which you can download at the end of this post.

Now, let us start customizing the progress bar.

  • Customize the Mode property
    I am going to set the Mode property to Determinate with MaxValue property is set to the number of page in the form. I will also set the Value property of the progress bar to the initial page index value. In this sample, I set the MaxValue property to 4 and Value property to 1

    <ISWebEssentials:WebProgressBar ID="ProgressBar1" runat="server"
    
    Mode="Determinate" Value="1" MaxValue="4" DefaultStyleMode="Default">
    
    </ISWebEssentials:WebProgressBar>
  • Customize the Orientation property
    Since, we would like to show the progress bar in vertical position, let us set the Orientation property of the progress bar to Vertical.
  • Update the Value property in GoPrev and GoNext client side method
    As the page index changed, we also need to update the value of the progress bar. You can update the value programmatically in the client side event using SetValue client side API. In this sample, I am going to update the progress bar value during page transition client side method.

    function GoPrev() {
    	if (curPage > 1) {
    
    		curPage -= 1;
    
                    ...
    
                    var progBar = ISGetObject("ProgressBar1");
    		progBar.SetValue(curPage);
    	}
    
    }
    

Once you have finished configuring the WebProgressBar, you will get something similar to the above screenshot.

In summary, I have discuss some WebProgressBar features such as mode, orientation, and client side API which you can use to indicate the page index in a paged form scenario. For further information about WebProgressBar features, visit WebProgressBar web page here.

As mentioned earlier, you can download the working sample here.

You can also explore other WebProgressBar features in the online demo here.

Regards,

Glenn Layaar
Intersoft Member

WebUI Studio 2010 SP1 Is Here

We’re pleased to announce the immediate availability of WebUI Studio 2010 service pack 1, the most significant updates to our flagship suite since its initial release few months ago. The new service pack delivers hundreds of enhancements and dozens of fixes across all product lineups – thanks to our customers for the continuous support and feedback. Click here to view the complete release notes for WebUI Studio 2010 service pack 1.

All existing customers and prospects are highly recommended to download the new service pack for increased performance, reliability and stability. Click here to download the latest product installer.

Over 5000 Documentation Topics for Silverlight and WPF – Delivered!

The new release also includes a comprehensive MSDN-style product documentation for the Silverlight and WPF lineups, packing in over 150 new walkthroughs and how-to topics, and over 80 conceptual topics that cover fundamental topics such as MVVM pattern development, application framework, navigation framework, and much more – not to mention the documentation for over 4500 classes, types and members at the class library level along with complimentary examples and remarks!

Accessing the new help content is easy and straightforward – here’s how.

  • From Windows program group.
    The new ClientUI documentation is now built upon Microsoft’s latest help viewer technology. This allows you to read the documentation with your favorite browser. Simply point and click the shortcut shown in the following screenshot, which opens a web browser with the help content ready. Open ClientUI documentation from program group
  • From Visual Studio.
    Having a hard time locating the help content for a particular property or class? With the new ClientUI help system, that’s a thing of the past! Now, you can simply place your cursor to a property or class in your XAML within the code editor and hit F1 key to bring up the help content for that particular member. The same contextual help is also applicable to the selection in the property window and class view, thanks to the seamless integration with the Visual Studio’s help viewer library. Press F1 to locate help content for the selected member

I think it’s noteworthy to mention that all the topics in the ClientUI documentation have passed our rigorous three-level review: technical review, content and formatting review, and US English proof-read review. Of course, what’s matter the most in such a product documentation is always the content. The content of the ClientUI documentation itself is arranged in the way that lets you locate certain help content easily and intuitively. Let’s tour the documentation highlights.

Getting Started

This is the best place to get started with ClientUI. The topics are ranging from introduction, system requirements, development environment overview, and quick walkthroughs for beginners.

Getting Started

Application Development

Get enough with the introduction? Jump straight to the application development using ClientUI. This section includes several interesting topics that guide you to work with Visual Studio 2010 and Expression Blend 4, as well as describing the designer features supported in ClientUI.

Application Development

ClientUI Fundamentals

The MVVM pattern, navigation framework and the load-on-demand composite application framework are three of the most interesting fundamental architecture in ClientUI – which are also the most frequently asked questions in our community forum since the RTM release two months ago. Satisfy your hunger on the architectural and fundamental topics – all centralized in this section from core application unity, to commanding concept, to drag and drop and user experiences, and more.

image

Licensing

Browse to this section when you’re ready to deploy your ClientUI-powered applications, or when you have other difficulties in the development licensing which is very unlikely.

image

Walkthroughs

And last but not least, here is the place where you can find all the walkthroughs and how-to topics you need to get up to speed with Silverlight and WPF development using ClientUI. Despite of the huge list in number, every walkthrough is written very thoroughly with step-by-step details, accompanied with screenshots and XAML examples so you would never get lost. You definitely have to read it to see the details yourself.

image


What’s Next

What makes us even busier in the past few months is that we are going to release our new support site with hundreds of fresh content (of course!) in just the next couple days. It will include dozens of new tutorial videos particularly for the Silverlight and WPF lineups. The new support site will also unveil our new online documentation browser that sports a blazing fast tree navigation with auto sync TOC, as well as featuring Windows 7-style address bar and on-the-fly searching. Sneak preview it in the following screenshot.

New Online Documentation

When the new support site is available, I will blog more details about the new resources that you can play immediately, as well as aggregating a high level overview of the ClientUI documentation for easy reference.

Again, click here to learn the enhancements and fixes implemented in WebUI Studio 2010 service pack 1, and here to download the latest product installer.

We hope you enjoyed the new release! Stay tuned for the next announcement.

All the best,
Jimmy