<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="http://www.codeplex.com/rss.xsl"?><rss version="2.0"><channel><title>patterns &amp; practices - Smart Client Guidance</title><link>http://www.codeplex.com/smartclient/Project/ProjectRss.aspx</link><description>Welcome to the Community workspace of patterns &amp;#38; practices Smart Client offerings.</description><item><title>New Post: IAuthenticationService and Loose Coupling to the Shell</title><link>http://www.codeplex.com/smartclient/Thread/View.aspx?ThreadId=30810</link><description>&lt;div style="line-height: normal;"&gt;&lt;br&gt;
&lt;div style="border-style:dotted none;border-color:rgb(170, 170, 170) -moz-use-text-color;border-width:0.1em medium;margin:1em 0em 2.5em 3em;padding:0.2em;font-style:italic"&gt;&lt;br&gt;
bittondb wrote:&lt;br&gt;
Here's my question.&amp;nbsp; I am using a WCF service to authenticate my user.&amp;nbsp; This WCF service is referenced in Infrastructure.Library.&amp;nbsp; The service's AuthenticateUser() method returns a ServiceCompany object which has Name, Id, and Roles properties.&amp;nbsp; Based on my understanding, this object should be translated into a BusinessEntity, however translators are not loaded until after authentication.&amp;nbsp; I want to stuff these objects into my custom IPrincipal object.&amp;nbsp; Since this only occurs once in the whole application lifetime, should I manually translate it myself?&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;
Does it need to be a business entity? What's the important thing that needs to happen in this situation? (My guess: a custom IPrincipal object gets set with the right data so that concerned application code can access it and make checks). &lt;br&gt;
&lt;br&gt;
If it were me, I'd probably just take the data straight off the ServiceCompany object and put them on my custom IPrincipal object. &lt;br&gt;
&lt;br&gt;
ServiceCompany serviceCompany = service.AuthenticateUser(blah...);&lt;br&gt;
&lt;br&gt;
MyCustomPrincipal principal = new MyCustomPrincipal();&lt;br&gt;
principal.Id = serviceCompany.Id;&lt;br&gt;
principal.Name = serviceCompany.Name;&lt;br&gt;
principal.Roles = serviceCompany.Roles; &lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;</description><author>ChrisHolmes</author><pubDate>Tue, 08 Jul 2008 22:39:09 GMT</pubDate><guid isPermaLink="false">New Post: IAuthenticationService and Loose Coupling to the Shell 20080708103909P</guid></item><item><title>New Post: IAuthenticationService and Loose Coupling to the Shell</title><link>http://www.codeplex.com/smartclient/Thread/View.aspx?ThreadId=30810</link><description>&lt;div style="line-height: normal;"&gt;Here's my question.&amp;nbsp; I am using a WCF service to authenticate my user.&amp;nbsp; This WCF service is referenced in Infrastructure.Library.&amp;nbsp; The service's AuthenticateUser() method returns a ServiceCompany object which has Name, Id, and Roles properties.&amp;nbsp; Based on my understanding, this object should be translated into a BusinessEntity, however translators are not loaded until after authentication.&amp;nbsp; I want to stuff these objects into my custom IPrincipal object.&amp;nbsp; Since this only occurs once in the whole application lifetime, should I manually translate it myself?&lt;br&gt;
&lt;/div&gt;</description><author>bittondb</author><pubDate>Tue, 08 Jul 2008 20:23:46 GMT</pubDate><guid isPermaLink="false">New Post: IAuthenticationService and Loose Coupling to the Shell 20080708082346P</guid></item><item><title>New Post: MDIWorkspace : Lot of flicker</title><link>http://www.codeplex.com/smartclient/Thread/View.aspx?ThreadId=30593</link><description>&lt;div style="line-height: normal;"&gt;&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;Hi, John,&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;I was able to reproduce your error.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;The first issue you describe in point 3 happens as the ZoneWorkspace gives focus to the view when added, so the last view will have the focus, and therefore, the control with the lowest &lt;b&gt;TabIndex&lt;/b&gt; will be focused.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;The second issue happens as a result of the following line located in the &lt;b&gt;SmartPartEntered()&lt;/b&gt; private method of the ZoneWorkspace:&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;((&lt;span style="color:#4bacc6"&gt;IComposableWorkspace&lt;/span&gt;&amp;lt;&lt;span style="color:#4bacc6"&gt;Control&lt;/span&gt;, &lt;span style="color:#4bacc6"&gt;ZoneSmartPartInfo&lt;/span&gt;&amp;gt;)&lt;span style="color:blue"&gt;this&lt;/span&gt;).Activate(control);&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;This line gives focus to the View, making the actual focused control the one whose &lt;b&gt;TabIndex&lt;/b&gt; is 0 (or the lowest).&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;A possible workaround could be to perform some checks on the Enter event of the view or to create a derived ZoneWorkspace class. You may consider altering that method in the source code.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;Regarding your point number two. Could you please send more information? Perhaps some code snippet or any other piece of information you may consider relevant?&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;Hope it helps.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;Ignacio Baumann Fonay&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt -0.6pt"&gt;&lt;a href="http://blogs.southworks.net/ibaumann/"&gt;&lt;span style="font-family:Calibri"&gt;http://blogs.southworks.net/ibaumann/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;</description><author>ibaumann</author><pubDate>Tue, 08 Jul 2008 19:36:54 GMT</pubDate><guid isPermaLink="false">New Post: MDIWorkspace : Lot of flicker 20080708073654P</guid></item><item><title>New Post: Problem loading modules due to invalid basedirectory from appdomain</title><link>http://www.codeplex.com/smartclient/Thread/View.aspx?ThreadId=31089</link><description>&lt;div style="line-height: normal;"&gt;Hi,&lt;br&gt;
&lt;br&gt;
I have a scsf application which when launched as an exe is running perfectly. I've modified my app so that it can be launched as an regular exe or as a dialog box. That's working great but I've now created a context menu which is added to the &amp;quot;sent to&amp;quot; option of the windows explorer context menu but I'm having a problem as the appdomain is explorer.exe which is located in c:\windows and none of my assemblies will load.&lt;br&gt;
&lt;br&gt;
If I make a copy of explorer.exe into the same folder as my app and debug this way, all is ok, but it still does not sort my solution. &lt;br&gt;
&lt;br&gt;
1) I've tried to create a new appdomain where I set the basedirectory&amp;nbsp;to where my application is located but I can see&amp;nbsp;an error displayed&amp;nbsp;on the basedirectory line. The error is:&lt;br&gt;
&lt;span style="font-size:10px"&gt;&lt;span style="font-size:8pt;font-family:'Courier New'"&gt;&lt;br&gt;
System.Security.SecurityException: {&amp;quot;Request for the permission of type 'System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.&amp;quot;}&lt;br&gt;
&lt;br&gt;
Another problem I'm faced with is that my class is already inheriting from another class so inheriting from MarshalByRef in order to use the &lt;span style="font-size:13px"&gt;CreateInstanceFromAndUnwrap is not a solution. So I ended up creating a new class which inherits MarshalByRefObject and this class (and separate assembly) is making a call to my application.&lt;/span&gt;&lt;br&gt;
&lt;br&gt;
Anyway, the scenario above works like a charm when calling it from a regular windows form application but when called from the context menu, it keeps giving the error listed above.&lt;br&gt;
&lt;br&gt;
I haven't been able to sort this one out.&lt;br&gt;
&lt;br&gt;
2) I also discovered after god know how many hours of research that there is a function called getData and setData which can be called from AppDomain.CurrentDomain. I found out that I could change the base directory of the current appdomain using the following code:&lt;br&gt;
&lt;br&gt;
&lt;span style="font-size:13px"&gt;
&lt;p&gt;AppDomain.CurrentDomain.SetData(&lt;/p&gt;
&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:13px;color:#a31515"&gt;&amp;quot;APPBASE&amp;quot;&lt;/span&gt;&lt;span style="font-size:13px"&gt;, applicationPath)
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
This changes the baseDirectory ok and I was delighted thinking I had sorted my problem but now I'm face with another one. It goes a lot further than it did before, but unfortunately while it manages to now find and load the assembly, it fails on:&lt;br&gt;
&lt;br&gt;
&lt;span style="font-size:13px;color:#0000ff"&gt;
&lt;p&gt;For&lt;/p&gt;
&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:13px"&gt; &lt;/span&gt;&lt;span style="font-size:13px;color:#0000ff"&gt;Each&lt;/span&gt;&lt;span style="font-size:13px"&gt; type &lt;/span&gt;&lt;span style="font-size:13px;color:#0000ff"&gt;As&lt;/span&gt;&lt;span style="font-size:13px"&gt; Type &lt;/span&gt;&lt;span style="font-size:13px;color:#0000ff"&gt;In&lt;/span&gt;&lt;span style="font-size:13px"&gt; assembly.GetExportedTypes() in the DependentModuleLoaderService.vb&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;telling me that:&lt;br&gt;
&lt;br&gt;
&lt;span style="font-size:10px"&gt;&amp;quot;Could not load file or assembly 'Infrastructure.Interface, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.&amp;quot;&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;&lt;br&gt;
Does anyone has any idea how I could sort my problem. Ideally, I'd prefer using the second method as it is nice and simple rather than using an appdomain solution, but if the appdomain is the only way, so be it.&lt;br&gt;
&lt;br&gt;
Any help would be dearly appreciated.&lt;br&gt;
&lt;br&gt;
Many thanks.&lt;br&gt;
&lt;br&gt;
Thierry&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;</description><author>tfierens</author><pubDate>Tue, 08 Jul 2008 16:03:14 GMT</pubDate><guid isPermaLink="false">New Post: Problem loading modules due to invalid basedirectory from appdomain 20080708040314P</guid></item><item><title>New Post: Workitems as a scoping container for SmartParts containing SmartParts</title><link>http://www.codeplex.com/smartclient/Thread/View.aspx?ThreadId=30870</link><description>&lt;div style="line-height: normal;"&gt;Hi Ignacio,&lt;br&gt;
&lt;br&gt;
Thanks for your comments. &lt;br&gt;
&lt;br&gt;
I guess we need&amp;nbsp;to&amp;nbsp;create an instance of a&amp;nbsp;custom workitem to ensure that&amp;nbsp;we have the correct&amp;nbsp;scope for both the SmartPart ID (in the relevant&amp;nbsp;workitem collection)&amp;nbsp;and the events for passing the data between SmartParts. This is in the case of multiple instances of the 'composite' SmartPart. In this case, the WorkItem effectively becomes the controller for the collection of SmartParts, including setting up the views. However, by introducing the workitem we have to drop back to code in order to add these elements to our UI. This is at the cost of&amp;nbsp;slightly reducing the&amp;nbsp;ease of usability - i.e. we can no longer&amp;nbsp;use&amp;nbsp;our parent SmartPart directly in XAML for example.&lt;br&gt;
&lt;br&gt;
Going back to the passing data discussion. Do people generally use locally scoped CAB events or WorkItem state information as opposed to exposing the data via the view interface (which feels wrong, but is less work)?&lt;br&gt;
&lt;br&gt;
Max&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;</description><author>MaxP</author><pubDate>Tue, 08 Jul 2008 11:11:54 GMT</pubDate><guid isPermaLink="false">New Post: Workitems as a scoping container for SmartParts containing SmartParts 20080708111154A</guid></item><item><title>New Post: MDIWorkspace : Lot of flicker</title><link>http://www.codeplex.com/smartclient/Thread/View.aspx?ThreadId=30593</link><description>&lt;div style="line-height: normal;"&gt;Any answer ? Please...
&lt;/div&gt;</description><author>s0udk0stik</author><pubDate>Tue, 08 Jul 2008 07:22:15 GMT</pubDate><guid isPermaLink="false">New Post: MDIWorkspace : Lot of flicker 20080708072215A</guid></item><item><title>New Post: Publishing Event from a Winform not being raised?</title><link>http://www.codeplex.com/smartclient/Thread/View.aspx?ThreadId=30905</link><description>&lt;div style="line-height: normal;"&gt;Hi ibaumann,&lt;br&gt;
&lt;br&gt;
Great stuff!! That's exactly what I wanted to do. Only wish I had figured this out myself :).&lt;br&gt;
&lt;br&gt;
Thanks again.&lt;br&gt;
&lt;br&gt;
T.
&lt;/div&gt;</description><author>tfierens</author><pubDate>Mon, 07 Jul 2008 21:15:21 GMT</pubDate><guid isPermaLink="false">New Post: Publishing Event from a Winform not being raised? 20080707091521P</guid></item><item><title>New Post: IAuthenticationService and Loose Coupling to the Shell</title><link>http://www.codeplex.com/smartclient/Thread/View.aspx?ThreadId=30810</link><description>&lt;div style="line-height: normal;"&gt;One other idea is to prompt the user to select which company they want to log into, and fixing the context of the app to that company, therefore requiring a single role context.&amp;nbsp; Switching companies would set a new role context.&amp;nbsp; The only problem would be if a user wanted more than one company.&amp;nbsp; Could this be accomplished by launching a new thread or app domain which would have a separate Principal and Identity?&lt;br&gt;
&lt;/div&gt;</description><author>bittondb</author><pubDate>Mon, 07 Jul 2008 18:58:12 GMT</pubDate><guid isPermaLink="false">New Post: IAuthenticationService and Loose Coupling to the Shell 20080707065812P</guid></item><item><title>New Post: IAuthenticationService and Loose Coupling to the Shell</title><link>http://www.codeplex.com/smartclient/Thread/View.aspx?ThreadId=30810</link><description>&lt;div style="line-height: normal;"&gt;Using a custom IPrinciple like in the article would require tight coupling to the concrete implementation of the class, yes?&lt;br&gt;
&lt;br&gt;
&lt;div style="border-style:dotted none;border-color:rgb(170, 170, 170) -moz-use-text-color;border-width:0.1em medium;margin:1em 0em 2.5em 3em;padding:0.2em;font-style:italic"&gt;&lt;br&gt;
karelkral wrote:&lt;br&gt;
&lt;br&gt;
&lt;div style="border-style:dotted none;border-color:rgb(170, 170, 170) -moz-use-text-color;border-width:0.1em medium;margin:1em 0em 2.5em 3em;padding:0.2em;font-style:italic"&gt;One other question I have is that when I authorize my user, I need to store an array of Company objects that indicate which companies this user is authorized to view.&amp;nbsp; Where can I persist this data?&amp;nbsp; Would it make sense for me to implement my own IPrincipal and store the company IDs in there?&lt;br&gt;
&lt;/div&gt;
&lt;p&gt;Yes, this is the way I have choosen. I have found very usefull article about this: &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.programmersheaven.com/2/Role-Based-Security"&gt;http://www.programmersheaven.com/2/Role-Based-Security&lt;/a&gt;&lt;/p&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;</description><author>bittondb</author><pubDate>Mon, 07 Jul 2008 18:55:28 GMT</pubDate><guid isPermaLink="false">New Post: IAuthenticationService and Loose Coupling to the Shell 20080707065528P</guid></item><item><title>New Post: IAuthenticationService and Loose Coupling to the Shell</title><link>http://www.codeplex.com/smartclient/Thread/View.aspx?ThreadId=30810</link><description>&lt;div style="line-height: normal;"&gt;&lt;br&gt;
&lt;div style="border-style:dotted none;border-color:rgb(170, 170, 170) -moz-use-text-color;border-width:0.1em medium;margin:1em 0em 2.5em 3em;padding:0.2em;font-style:italic"&gt;&lt;br&gt;
bittondb wrote:&lt;br&gt;
Effectively I have multiple role-sets.&amp;nbsp; Each role-set applies to an individual company that the user can see.&amp;nbsp; So they may be an Admin with one company and a Clerk with another.&amp;nbsp; A simple string[] for roles isn't complex enough.&amp;nbsp; I need a Company[] and each Company has a string[] for roles.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;
You could store it as a custom object and inject that into the necessary classes. Either way, custom principal or injected object, will work. &lt;br&gt;
&lt;/div&gt;</description><author>ChrisHolmes</author><pubDate>Mon, 07 Jul 2008 18:05:09 GMT</pubDate><guid isPermaLink="false">New Post: IAuthenticationService and Loose Coupling to the Shell 20080707060509P</guid></item><item><title>New Post: IAuthenticationService and Loose Coupling to the Shell</title><link>http://www.codeplex.com/smartclient/Thread/View.aspx?ThreadId=30810</link><description>&lt;div style="line-height: normal;"&gt;&lt;br&gt;
&lt;div style="border-style:dotted none;border-color:rgb(170, 170, 170) -moz-use-text-color;border-width:0.1em medium;margin:1em 0em 2.5em 3em;padding:0.2em;font-style:italic"&gt;&lt;br&gt;
bittondb wrote:&lt;br&gt;
I think I know where I'm humped as far as having user authentication in a module outside of the Infrastructure modules.&amp;nbsp; CabApplication.Run() calls AuthenticateUser() prior to calling LoadModules().&amp;nbsp; I went back and stepped through the code and yes, my IAuthenticationService get's added, however I think it's a day late and a dollar short.&amp;nbsp; I'm not about to start modifying CabApplication.cs, but IMHO, this is a bug. Opinion?&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;
In my opinion, no, it is not a bug. The way authentication generally works is, you want to authenticate a user &lt;strong&gt;before &lt;/strong&gt;you give them access to an application, not after. The first thing an application should do is authenticate the user. Then it should load modules (preferably based on the permissions of the user you just authenticated; another reason to authenticate first and load modules second). By putting your authentication in a separate module you've effectively compromised the security of your system. All I have to do, as a hacker, is remove the authentication module from the load sequence, and now I have access to your application. &lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;</description><author>ChrisHolmes</author><pubDate>Mon, 07 Jul 2008 18:03:30 GMT</pubDate><guid isPermaLink="false">New Post: IAuthenticationService and Loose Coupling to the Shell 20080707060330P</guid></item><item><title>New Post: Workitems as a scoping container for SmartParts containing SmartParts</title><link>http://www.codeplex.com/smartclient/Thread/View.aspx?ThreadId=30870</link><description>&lt;div style="line-height: normal;"&gt;&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;Hi,&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;This scenario is covered in the &lt;b&gt;SmartPart QuickStart&lt;/b&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="color:#1f497d"&gt;&lt;span style="font-family:Calibri"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;A quick overview:&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;The &lt;b&gt;ViewCustomerWorkItem folder&lt;/b&gt; contains all the components needed to fulfill the use case “Show a Customer” (just an illustrative name). The &lt;b&gt;CustomerTabView&lt;/b&gt; view contains two tabs. The first one holds a &lt;b&gt;CustomerDetailView&lt;/b&gt; view &lt;i&gt;added on the Designer&lt;/i&gt;, and the second one holds a &lt;b&gt;SmartPartPlaceHolder&lt;/b&gt; which asks for an instance in the WorkItem.SmartParts collection with the &lt;i&gt;“CustomerSummary”&lt;/i&gt; ID. As you can imagine by now, this could result in ID clashes or unexpected behavior if more than one SmartPart is added with the same ID or if the same instance of that SmartPart is modified by accessing it via the ID. So, the &lt;b&gt;BrowseCustomersWorkItem&lt;/b&gt; provides the &lt;b&gt;ShowCustomerDetails(Customer customer)&lt;/b&gt; method to create a new instance of the &lt;b&gt;ViewCustomerWorkItem&lt;/b&gt; workItem. This makes that the IDs are &lt;i&gt;scoped&lt;/i&gt; into that instance only, and it would result in no clashes.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;However, as you’ve said, WorkItems are no longer so fine grained (in a one-per-use case fashion), so you may put that method in the &lt;b&gt;ModuleController&lt;/b&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;Regarding the passing of information to the View, you may find handy this related topic: &lt;/span&gt;&lt;a href="http://www.codeplex.com/smartclient/Thread/View.aspx?ThreadId=28769"&gt;&lt;span style="color:#0000ff;font-family:Calibri"&gt;Who should use the IViewFoo interface&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:Calibri"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;You may also find handy this SCSF Help topic: &lt;span style="color:#1f497d"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc540794.aspx"&gt;&lt;span style="color:#0000ff"&gt;View Navigation&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;Please, let me know if this helps.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span&gt;&lt;span style="font-family:Calibri"&gt;Ignacio Baumann Fonay&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt -0.6pt"&gt;&lt;a href="http://blogs.southworks.net/ibaumann/"&gt;&lt;span&gt;&lt;span style="font-family:Calibri"&gt;http://blogs.southworks.net/ibaumann/&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;
&lt;/div&gt;</description><author>ibaumann</author><pubDate>Mon, 07 Jul 2008 17:56:28 GMT</pubDate><guid isPermaLink="false">New Post: Workitems as a scoping container for SmartParts containing SmartParts 20080707055628P</guid></item><item><title>New Post: IAuthenticationService and Loose Coupling to the Shell</title><link>http://www.codeplex.com/smartclient/Thread/View.aspx?ThreadId=30810</link><description>&lt;div style="line-height: normal;"&gt;Effectively I have multiple role-sets.&amp;nbsp; Each role-set applies to an individual company that the user can see.&amp;nbsp; So they may be an Admin with one company and a Clerk with another.&amp;nbsp; A simple string[] for roles isn't complex enough.&amp;nbsp; I need a Company[] and each Company has a string[] for roles.&lt;br&gt;
&lt;/div&gt;</description><author>bittondb</author><pubDate>Mon, 07 Jul 2008 17:47:51 GMT</pubDate><guid isPermaLink="false">New Post: IAuthenticationService and Loose Coupling to the Shell 20080707054751P</guid></item><item><title>New Post: IAuthenticationService and Loose Coupling to the Shell</title><link>http://www.codeplex.com/smartclient/Thread/View.aspx?ThreadId=30810</link><description>&lt;div style="line-height: normal;"&gt;&lt;br&gt;
&lt;div style="border-right:medium none;padding-right:0.2em;border-top:#aaa 0.1em dotted;padding-left:0.2em;padding-bottom:0.2em;margin:1em 0em 2.5em 3em;border-left:medium none;padding-top:0.2em;border-bottom:#aaa 0.1em dotted;font-style:italic"&gt;One other question I have is that when I authorize my user, I need to store an array of Company objects that indicate which companies this user is authorized to view.&amp;nbsp; Where can I persist this data?&amp;nbsp; Would it make sense for me to implement my own IPrincipal and store the company IDs in there?&lt;br&gt;
&lt;/div&gt;
&lt;p&gt;Yes, this is the way I have choosen. I have found very usefull article about this: &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.programmersheaven.com/2/Role-Based-Security"&gt;http://www.programmersheaven.com/2/Role-Based-Security&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;</description><author>karelkral</author><pubDate>Mon, 07 Jul 2008 17:33:28 GMT</pubDate><guid isPermaLink="false">New Post: IAuthenticationService and Loose Coupling to the Shell 20080707053328P</guid></item><item><title>New Post: Aren't all workspaces visible at any level?</title><link>http://www.codeplex.com/smartclient/Thread/View.aspx?ThreadId=31001</link><description>&lt;div style="line-height: normal;"&gt;I'm sorry,&lt;br&gt;
&lt;br&gt;
&amp;nbsp;I'm replying to myself, these are the actions taken to fix my problem:&lt;br&gt;
&lt;br&gt;
&amp;nbsp;Created a view inside the Infrasctructure.Module.&lt;br&gt;
&amp;nbsp;Included in that view the OutlookBarWorkspace control.&lt;br&gt;
&amp;nbsp;Changed the standard shellForm to contain only one workspace (kept RightWorkspace)&lt;br&gt;
&amp;nbsp;Removed all previous setups for LeftWorkspace.&lt;br&gt;
&amp;nbsp;Set the name of the OutlookBarWorkspace to LeftWorkspace.&lt;br&gt;
&amp;nbsp;Modified the ModuleController for the Infrasctruture Module to load the View that contains the OutlookBarWorkspace &lt;br&gt;
&lt;br&gt;
Et voilá, all works :)&lt;br&gt;
&lt;div style="border-style:dotted none;border-color:rgb(170, 170, 170) -moz-use-text-color;border-width:0.1em medium;margin:1em 0em 2.5em 3em;padding:0.2em;font-style:italic"&gt;&lt;br&gt;
lpinho wrote:&lt;br&gt;
Hi,&lt;br&gt;
&lt;br&gt;
&amp;nbsp;I've got a view that contains a control of type OutlookBarWorkspace (SCSFContrib project).&lt;br&gt;
&lt;br&gt;
&amp;nbsp;This OutlookBar would be used to contains a series of controls that allow the user to activate/open several other views, each of the items inside this OutlookBar is set by the modules.&lt;br&gt;
&lt;br&gt;
&amp;nbsp;My intention was to use this view as a dockable panel:&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DockPanelSmartPartInfo dockInfo = new DockPanelSmartPartInfo(&amp;quot;Testing&amp;quot;, &amp;quot;testing&amp;quot;);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dockInfo.DockingType = DockingType.TaskView;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dockInfo.ShowStrategy = new DockStateShowStrategy(DockState.DockLeft);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WorkItem.Workspaces[WorkspaceNames.RightWorkspace].Show(testing, dockInfo);&lt;br&gt;
&lt;br&gt;
And then the user can hide it whenever he wants.&lt;br&gt;
&lt;br&gt;
Each module of my application can add items to the Outlookbar, so, the workspace must be available to every module.&lt;br&gt;
Initially I had this outlook bar inside a panel part of a splitPanel and everything works ok (Each module loads their own controls at loading time).&lt;br&gt;
&lt;br&gt;
Now, using this view to support dockable panels, the workspace is only available inside the list of Workspaces of this workitem (ModuleController of the module that contains the View)&lt;br&gt;
&lt;br&gt;
Is is possible to make this workspace available to all? Or is there any way to load a workspace to make it dockable?&lt;br&gt;
&lt;br&gt;
Thanks for the help,&lt;br&gt;
&lt;br&gt;
Luis Pinho&lt;br&gt;
&lt;br&gt;
P.S.: BTW, if I try to add the workspace using code to the RootWorkItem I get the error: An object with this ID already exists: _deckWorkspace. (but the ID that I'm using to id the workspace if &amp;quot;TestingMe&amp;quot;)&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;</description><author>lpinho</author><pubDate>Mon, 07 Jul 2008 17:03:36 GMT</pubDate><guid isPermaLink="false">New Post: Aren't all workspaces visible at any level? 20080707050336P</guid></item><item><title>New Post: Publishing Event from a Winform not being raised?</title><link>http://www.codeplex.com/smartclient/Thread/View.aspx?ThreadId=30905</link><description>&lt;div style="line-height: normal;"&gt;&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;Hi,&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;If you are trying to publish that event using &lt;b&gt;Attributes&lt;/b&gt;, you must add the form to the &lt;b&gt;WorkItem&lt;/b&gt;. However, if you do so, CAB will add the workspace contained in the form to the WorkItem in which you add the form; so you must take that into account.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;Nevertheless, if you do not want to do that, you can fire an event programmatically through the &lt;b&gt;Event Topic&lt;/b&gt; name, as follows:&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;_workItem.EventTopics[&lt;span style="color:#c00000"&gt;&amp;quot;MyEventTopicName&amp;quot;&lt;/span&gt;].Fire(this, &lt;span style="color:blue"&gt;new&lt;/span&gt; &lt;span style="color:#4bacc6"&gt;EventArgs&lt;/span&gt;&amp;lt;&lt;span style="color:blue"&gt;string&lt;/span&gt;&amp;gt;(&lt;span style="color:#c00000"&gt;&amp;quot;Some string as Argument&amp;quot;&lt;/span&gt;), _workItem, &lt;span style="color:#4bacc6"&gt;PublicationScope&lt;/span&gt;.Global);&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;Please, let me know if this helps.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:Calibri"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span&gt;&lt;span style="font-family:Calibri"&gt;Ignacio Baumann Fonay&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt -0.6pt"&gt;&lt;a href="http://blogs.southworks.net/ibaumann/"&gt;&lt;span&gt;&lt;span style="font-family:Calibri"&gt;http://blogs.southworks.net/ibaumann/&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;
&lt;/div&gt;</description><author>ibaumann</author><pubDate>Mon, 07 Jul 2008 16:51:50 GMT</pubDate><guid isPermaLink="false">New Post: Publishing Event from a Winform not being raised? 20080707045150P</guid></item><item><title>New Post: Workitems as a scoping container for SmartParts containing SmartParts</title><link>http://www.codeplex.com/smartclient/Thread/View.aspx?ThreadId=30870</link><description>&lt;div style="line-height: normal;"&gt;I've been continuing to read up about this. It is often suggested that you can create a custom, 'controlling'&amp;nbsp;WorkItem whose role is to:&lt;br&gt;
&lt;ul&gt;
    &lt;li&gt;create&amp;nbsp;the SmartParts and add them into the relevent UI sites (workspaces), effectively decoupling the SmartParts from each other&lt;/li&gt;
    &lt;li&gt;act as a scoping container for the events between the SmartParts that are used to synchronize data&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;While this has many advantages,&amp;nbsp;doesn't this&amp;nbsp;mean that you can only&amp;nbsp;get the SmartParts to 'cooperate' by writing additional code to&amp;nbsp;add the parent&amp;nbsp;scoping WorkItem?&lt;br&gt;
&lt;br&gt;
I also now&amp;nbsp;think that&amp;nbsp;the settings SmartParts and the control they apply to&amp;nbsp;should probably&amp;nbsp;be two siblings, rather than have&amp;nbsp;parent-child relationship. Any thoughts?&lt;/p&gt;
&lt;/div&gt;</description><author>MaxP</author><pubDate>Mon, 07 Jul 2008 16:26:42 GMT</pubDate><guid isPermaLink="false">New Post: Workitems as a scoping container for SmartParts containing SmartParts 20080707042642P</guid></item><item><title>New Post: IAuthenticationService and Loose Coupling to the Shell</title><link>http://www.codeplex.com/smartclient/Thread/View.aspx?ThreadId=30810</link><description>&lt;div style="line-height: normal;"&gt;Thanks for the insight.&amp;nbsp; The process of getting this to work in a separate module was an exercise in masochism.&amp;nbsp; It works now that I tweaked the CabApplication.cs file (and I filed a bug as such), so I think I'll leave it for now.&amp;nbsp; As for the login box, I'm using CredUIPromptForCredentialsW for a uniformed user experience.&amp;nbsp; &lt;br&gt;
&lt;br&gt;
One other question I have is that when I authorize my user, I need to store an array of Company objects that indicate which companies this user is authorized to view.&amp;nbsp; Where can I persist this data?&lt;br&gt;
&lt;/div&gt;</description><author>bittondb</author><pubDate>Mon, 07 Jul 2008 15:12:08 GMT</pubDate><guid isPermaLink="false">New Post: IAuthenticationService and Loose Coupling to the Shell 20080707031208P</guid></item><item><title>New Post: Aren't all workspaces visible at any level?</title><link>http://www.codeplex.com/smartclient/Thread/View.aspx?ThreadId=31001</link><description>&lt;div style="line-height: normal;"&gt;Hi,&lt;br&gt;
&lt;br&gt;
&amp;nbsp;I've got a view that contains a control of type OutlookBarWorkspace (SCSFContrib project).&lt;br&gt;
&lt;br&gt;
&amp;nbsp;This OutlookBar would be used to contains a series of controls that allow the user to activate/open several other views, each of the items inside this OutlookBar is set by the modules.&lt;br&gt;
&lt;br&gt;
&amp;nbsp;My intention was to use this view as a dockable panel:&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DockPanelSmartPartInfo dockInfo = new DockPanelSmartPartInfo(&amp;quot;Testing&amp;quot;, &amp;quot;testing&amp;quot;);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dockInfo.DockingType = DockingType.TaskView;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dockInfo.ShowStrategy = new DockStateShowStrategy(DockState.DockLeft);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WorkItem.Workspaces[WorkspaceNames.RightWorkspace].Show(testing, dockInfo);&lt;br&gt;
&lt;br&gt;
And then the user can hide it whenever he wants.&lt;br&gt;
&lt;br&gt;
Each module of my application can add items to the Outlookbar, so, the workspace must be available to every module.&lt;br&gt;
Initially I had this outlook bar inside a panel part of a splitPanel and everything works ok (Each module loads their own controls at loading time).&lt;br&gt;
&lt;br&gt;
Now, using this view to support dockable panels, the workspace is only available inside the list of Workspaces of this workitem (ModuleController of the module that contains the View)&lt;br&gt;
&lt;br&gt;
Is is possible to make this workspace available to all? Or is there any way to load a workspace to make it dockable?&lt;br&gt;
&lt;br&gt;
Thanks for the help,&lt;br&gt;
&lt;br&gt;
Luis Pinho&lt;br&gt;
&lt;br&gt;
P.S.: BTW, if I try to add the workspace using code to the RootWorkItem I get the error: An object with this ID already exists: _deckWorkspace. (but the ID that I'm using to id the workspace if &amp;quot;TestingMe&amp;quot;)&lt;br&gt;
&lt;/div&gt;</description><author>lpinho</author><pubDate>Mon, 07 Jul 2008 14:37:28 GMT</pubDate><guid isPermaLink="false">New Post: Aren't all workspaces visible at any level? 20080707023728P</guid></item><item><title>New Post: MVP - where are View and Presenter responsibilities?</title><link>http://www.codeplex.com/smartclient/Thread/View.aspx?ThreadId=31000</link><description>&lt;div style="line-height: normal;"&gt;Hello, &lt;br&gt;
I have read all of CAB Wiki about MVP. But I have&amp;nbsp;still mess in resposibilities of View and Presenter. &lt;br&gt;
&lt;br&gt;
I have View (SimpleGridView) with one grid on them. This View has ribbon container with appropriate buttons&amp;nbsp;placed&amp;nbsp;in&amp;nbsp;it. This container is merged&amp;nbsp;at runtime with the main ribbon of application,so user views one ribbon with variable buttons based on actual view open. &lt;br&gt;
&lt;br&gt;
But I cannot find the correct place WHERE to place event handlers for this ribbon command. It is supposed to place them into View (my choose) or some of them belongs to Presenter? &lt;br&gt;
&lt;br&gt;
Command&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Handled By&lt;br&gt;
Navigation&lt;br&gt;
----------------&lt;br&gt;
Move to next record&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; View&lt;br&gt;
Move to prev. record&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;View&lt;br&gt;
Move to first record&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; View&lt;br&gt;
Move to last record&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; View&lt;br&gt;
&lt;br&gt;
Actions&lt;br&gt;
-----------&lt;br&gt;
Start in-place editing of current&amp;nbsp;grid cell&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ?&lt;br&gt;
End editing of current grid cell&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;?&lt;br&gt;
Cancel editing&amp;nbsp;of current grid cell&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;?&lt;br&gt;
Add new row&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ?&lt;br&gt;
Delete selected rows&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ?&lt;br&gt;
Refresh data displayed&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;?&lt;br&gt;
Print grid contents&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;?&lt;br&gt;
&lt;br&gt;
Can you help me?
&lt;/div&gt;</description><author>karelkral</author><pubDate>Mon, 07 Jul 2008 14:30:38 GMT</pubDate><guid isPermaLink="false">New Post: MVP - where are View and Presenter responsibilities? 20080707023038P</guid></item></channel></rss>