All entries for March 2006

March 31, 2006

Provided Views

Writing about web page http://www.gotdotnet.com/workspaces/workspace.aspx?id=ccbb6b50-6c55-4291-b191-f5c5f80ba122

I've been doing more work on the BindingListView project.

A problem I faced was when displaying a master-details style UI. I could make the master list a BindingListView (with filtering, sorting, etc) but then the child "details" list would just be whatever the business object had defined it as e.g. List.
While the business object developer could add an additional property that exposed a BindingListView of a list, that violates the separation of business logic and UI logic. (Since a view is really only for the UI's benefit.)

The solution was to make the view object provide additional properties at runtime using its ITypedList interface implementation. Basically, it looks for properties that implement generic IList and then returns additional properties for a BindingListView of those. The actual view objects are stored in the EditableObject wrappers of source items.

So I can now set the DataMember of a child bindingsource on my form to something like "OrderView". This is the provided view of the "Orders" list.


March 17, 2006

OPML Export

This evening I wrote an OMPL generator for my managed Feed API wrapper. It makes use of the Visitor design pattern – so all the OPML stuff is totally separate from the feed classes.
This allows a user to export their Windows RSS subcriptions to OPML for use in other application/websites.

I'm going to make an OPML importer as well, to ease migration to Windows Feeds.


March 16, 2006

LINQ demo

Follow-up to More Managed RSS from codeMonkey.Weblog();

OK - I had to get this quick demo up too:
FeedFolder folder = FeedFolder.GetRoot();
DateTime yesterday = DateTime.Now.Subtract(TimeSpan.FromDays(1));
var allItems = folder.AllFeeds.SelectMany(f => f.Items);

var items =
from item in allItems
where item.PubDate > yesterday
orderby item.Title
select item;

foreach (var item in items)
Console.WriteLine(item.Title);
That above is using C#3.0 with LINQ to search for all items from all feeds that were published after yesterday. The results are also sorted by title.
Note how none of that required adding sort or filter code to the object model! LINQ is totally awesome!

More Managed RSS

I have been working on the managed wrapper for the Windows RSS API. The adapter layer is able to pull all the folders, feeds and items across into my object model. This can then be traversed using standard .NET foreach constructs, or even LINQ!
The wrapper is two-way, in that changes made to certain properties are pushed back to the Windows RSS store. I can even add new feeds and folders.
I am also working on the eventing system to receive notifications when the RSS store changes. These events will be pushed up through my model so .NET applications can respond. I'm still working the kinks out of the COM event handlers. I'm not sure if I'm hitting beta bugs, or if my code is wrong…

Here's a little taster of the wrapper in action:

FeedFolder root = FeedFolder.GetRoot();
root.FeedAdded += delegate(object sender, FeedAddedEventArgs e)
{
Console.WriteLine("Feed added: " + e.NewFeed.Url.ToString());
};

foreach (Feed feed in root.AllFeeds)
{
Console.WriteLine(feed.Title);
foreach (Item item in feed.Items)
{
Console.WriteLine(" " + item.Title);

if (item.HasEnclosure)
{
Console.WriteLine(item.Enclosure.LocalPath);
}
}
}


FeedFolder folder = root.AddSubFolder("Hello World");
folder.AddFeed("Me", new Uri("http://blogs.warwick.ac.uk/andrewdavey/?rss=rss_2_0"));

March 13, 2006

Managed Wrapper

Writing about web page http://blogs.msdn.com/rssteam/

(Ahem.. long time, no post… I'm back now. Woooo!)

I was very happy to hear that IE7 will have an API for its common feed list. This will allow developers to use a single common store for any RSS the user is subscribing to. The only downside is that the API is exposed via COM. That's right, freakin' 1990s COM…!

Whilst it is totally possible to interop with COM from .NET, the code looks ugly in places. (Lots of casts from "object", etc). With no sign of a decent managed wrapper out there, I have decided to create my own.

My wrapper will expose a .NET friendly, data bindable components, to enable drag-n-drop development of RSS applications. I'm also making the wrapper entirely plugable with respect to the back end store. This means it could work with something else besides the IE7 Common Feeds List. For example, someone running on Linux with Mono won't have IE7, so there could be a different feed manager.

I've only just begun, but if people are interested please leave comments. I may make this an open source project, if there is positive feedback.


Google Ads

Search this blog

Most recent comments

  • I scratched my eye while i was holding some kind of plastic packaging.. Anyways the corner of the pl… by Ercan on this entry
  • About a year ago my contacts that i was wearing, i guess were fautly, because shortly after they wer… by Jon on this entry
  • I got shower gel in my eye 4 and a half days ago, and becasue i rubbed my eyes a lot, i have scratch… by Chris on this entry
  • This website may help http://www.webmd.com/eye–health/tc/Eye–Injuries–Home–Treatment by S on this entry
  • I somehow got dirt, or debris in my eye. The terrible pain sent me in a tailspin. I was afraid of sa… by Bobbi on this entry

Tags

March 2006

Mo Tu We Th Fr Sa Su
Feb |  Today  | Apr
      1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31      

Galleries

Blog archive

Loading…
Not signed in
Sign in

Powered by BlogBuilder
© MMXX