Help Needed, upgrade SL4, new release of project

Coordinator
May 4, 2010 at 9:21 PM
Edited May 4, 2010 at 9:22 PM

We're looking at making a serious push towards a new release of both the toolkit and the map control. I'm looking for feedback on what people would like to see in this release and an indication of who would like to help.

Some ideas for discussion - What would you like to see? What should be our priority?

  1. Upgrade everything to Silverlight 4 (mousewheel, remove browser dependancies, Hardware acceleration)
  2. Support Out of Browser mode (should work based on 1)
  3. Support Windows Phone 7 (should work based on 1 + branch)
  4. Migrate Toolkit controls to DeepEarth Map - Improved geometry, digitizer, layer panels etc
  5. Rename Map Methods and properties to be more in sync with Bing Maps control?
  6. Replace NetTopologySuite with something slimer? (make a specific utility project with just the bits we actually use)
  7. Replace the Silverlight Toolkit controls with something slimer? (make a specific control project with just the controls we are using)

We plan to use the task system here at codeplex to create many tasks to be allocated to developers registered for the project, if you are not yet registered please let me know ASAP.

May 5, 2010 at 12:15 AM
I think 1 & 3 is the most important.
Coordinator
May 5, 2010 at 12:26 AM

Generally are there parts of the project where we need improvement? Are there now some better design patterns we should use / support?

  • Tighter integration with MEF
  • Combined assembly - single dll?
  • Missing dependancy properties
  • Style dictionary being combined forcing too many references to be manditory
  • Blend compatibility

 

May 5, 2010 at 9:34 AM
Absolutely point 1!! We're stuck in our development because we're switching everything to Visual Studio 2010/.NET 4.0/Silverlight 4...
Developer
May 5, 2010 at 12:39 PM

Point 6, I think GEOAP/NetTopology Suite I is one of the most importent thing in the Toolkit. Allthough the project is not using it at the moment there are so many applications with this API. If we replace NetTopologySuite I think it is really important that the new API implements GEOAPI for compliance with OGC types. Can http://silverspatial.codeplex.com/ be something down the road?

I would love to run DeepEarth client in a mobile device.

May 5, 2010 at 9:44 PM

I  think that the most important rigth now is the point 1, then upgrade the points 2, 3 and 4. In the future upgrade the others points.

Coordinator
May 6, 2010 at 3:40 AM

For Point 1 we have tried a straight upgrade of the project and all referenced controls and we ended up stuck on a werid runtime error. I tired stripping things back but couldn't spot the offending code.

The only solution for us is to take the other direction and start with a clean SL4 project and start adding functionality. So specifically for this upgrade if there are key recommended changes to the code it would be perfect timing to get them done. My list is:

  • Replace the isdesigntime logic to remove browser dependancy - put this method into a common function to easily enhance.
  • Use delegates, anon methods, action<t>, Linq, var, auto properties etc, to reduce code complexity. Suggestions welcome.
  • Introduce a Location class with Latitiude and Longitude properties to remove confusing over Point class reuse. Should this be a GeoAPI "Point" ?

 

Coordinator
May 7, 2010 at 4:03 AM

Still seems a little unclear what the correct check for design time should be, our current HtmlPage.IsEnabled is wrong but does the offical DesignerProperties.GetIsInDesignMode() actually work?

Here is work around but can anyone confirm if it is now solved in SL4?

http://blogs.msdn.com/delay/archive/2009/02/26/designerproperties-getisindesignmode-forrealz-how-to-reliably-detect-silverlight-design-mode-in-blend-and-visual-studio.aspx

Coordinator
May 7, 2010 at 4:08 AM

The new mousewheel support is great, my simple example to wire it up to a MSI:

            msi.MouseWheel += (o,e) =>
                                  {
                                      var incrementFactor = e.Delta > 0 ? 1.3 : 0.7;
                                      var logicalPoint = msi.ElementToLogicalPoint(e.GetPosition(msi));
                                      msi.ZoomAboutLogicalPoint(incrementFactor, logicalPoint.X, logicalPoint.Y);
                                  };
Developer
May 7, 2010 at 5:08 AM
i normally for the designtime like this

        public bool IsRuntime
        {
            get { return !DesignerProperties.IsInDesignTool; }
        }

so I just go

if(IsRuntime)
{
   var = blah;
}

On 7 May 2010 14:08, soulsolutions <notifications@codeplex.com> wrote:

From: soulsolutions

The new mousewheel support is great, my simple example to wire it up to a MSI:

            msi.MouseWheel += (o,e) =>
                                  {
                                      var incrementFactor = e.Delta > 0 ? 1.3 : 0.7;
                                      var logicalPoint = msi.ElementToLogicalPoint(e.GetPosition(msi));
                                      msi.ZoomAboutLogicalPoint(incrementFactor, logicalPoint.X, logicalPoint.Y);
                                  };

Read the full discussion online.

To add a post to this discussion, reply to this email (deepearth@discussions.codeplex.com)

To start a new discussion for this project, email deepearth@discussions.codeplex.com

You are receiving this email because you subscribed to this discussion on CodePlex. You can unsubscribe or change your settings on codePlex.com.

Please note: Images and attachments will be removed from emails. Any posts to this discussion will also be available online at codeplex.com


Developer
May 7, 2010 at 5:12 AM

.NET Framework Class Library for Silverlight
DesignerProperties.IsInDesignTool Property

Gets a value that indicates whether the element is running in the context of a designer.



On 7 May 2010 15:08, David Thiessen <david.thiessen@gmail.com> wrote:
i normally for the designtime like this

        public bool IsRuntime
        {
            get { return !DesignerProperties.IsInDesignTool; }
        }

so I just go

if(IsRuntime)
{
   var = blah;
}

On 7 May 2010 14:08, soulsolutions <notifications@codeplex.com> wrote:

From: soulsolutions

The new mousewheel support is great, my simple example to wire it up to a MSI:

            msi.MouseWheel += (o,e) =>
                                  {
                                      var incrementFactor = e.Delta > 0 ? 1.3 : 0.7;
                                      var logicalPoint = msi.ElementToLogicalPoint(e.GetPosition(msi));
                                      msi.ZoomAboutLogicalPoint(incrementFactor, logicalPoint.X, logicalPoint.Y);
                                  };

Read the full discussion online.

To add a post to this discussion, reply to this email (deepearth@discussions.codeplex.com)

To start a new discussion for this project, email deepearth@discussions.codeplex.com

You are receiving this email because you subscribed to this discussion on CodePlex. You can unsubscribe or change your settings on codePlex.com.

Please note: Images and attachments will be removed from emails. Any posts to this discussion will also be available online at codeplex.com



Developer
May 7, 2010 at 5:26 AM
On the topic of "Events" this is a code snippet of the Rx.NET libary, for anyone who has not seen it before...

this snippet below is effectively the code for a simple draw control (that draws a line as you drag the mouse)

http://rxwiki.wikidot.com/101samples


var mouseMoveEvent = Observable.FromEvent<MouseEventArgs>( this, "MouseMove" );
var mouseLeftButtonDown = Observable.FromEvent<MouseButtonEventArgs>( this, "MouseLeftButtonDown" );
var mouseLeftButtonUp = Observable.FromEvent<MouseButtonEventArgs>( this, "MouseLeftButtonUp" );

var draggingEvents = from pos in mouseMoveEvent.SkipUntil( mouseLeftButtonDown ).
    TakeUntil( mouseLeftButtonUp )
                        .Let( mm => mm.Zip( mm.Skip( 1 ), ( prev, cur ) =>
                            new
                            {
                                X2 = cur.EventArgs.GetPosition( this ).X,
                                X1 = prev.EventArgs.GetPosition( this ).X,
                                Y2 = cur.EventArgs.GetPosition( this ).Y,
                                Y1 = prev.EventArgs.GetPosition( this ).Y
                            } ) ).Repeat()
                     select pos;

draggingEvents.Subscribe(
    p =>
    {
        Line line = new Line();
        line.StrokeThickness = 2;
        line.Stroke = new SolidColorBrush( Colors.Black );
        line.X1 = p.X1;
        line.Y1 = p.Y1;
        line.X2 = p.X2;
        line.Y2 = p.Y2;
        this.LayoutRoot.Children.Add( line );
    });


link for the article that describes the snippet above





On 7 May 2010 15:12, David Thiessen <david.thiessen@gmail.com> wrote:

.NET Framework Class Library for Silverlight
DesignerProperties.IsInDesignTool Property

Gets a value that indicates whether the element is running in the context of a designer.



On 7 May 2010 15:08, David Thiessen <david.thiessen@gmail.com> wrote:
i normally for the designtime like this

        public bool IsRuntime
        {
            get { return !DesignerProperties.IsInDesignTool; }
        }

so I just go

if(IsRuntime)
{
   var = blah;
}

On 7 May 2010 14:08, soulsolutions <notifications@codeplex.com> wrote:

From: soulsolutions

The new mousewheel support is great, my simple example to wire it up to a MSI:

            msi.MouseWheel += (o,e) =>
                                  {
                                      var incrementFactor = e.Delta > 0 ? 1.3 : 0.7;
                                      var logicalPoint = msi.ElementToLogicalPoint(e.GetPosition(msi));
                                      msi.ZoomAboutLogicalPoint(incrementFactor, logicalPoint.X, logicalPoint.Y);
                                  };

Read the full discussion online.

To add a post to this discussion, reply to this email (deepearth@discussions.codeplex.com)

To start a new discussion for this project, email deepearth@discussions.codeplex.com

You are receiving this email because you subscribed to this discussion on CodePlex. You can unsubscribe or change your settings on codePlex.com.

Please note: Images and attachments will be removed from emails. Any posts to this discussion will also be available online at codeplex.com