|
// Copyright � 2006 by Christoph Richner. All rights are reserved.
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
//
// website http://www.raccoom.net, email support@raccoom.net, msn chrisdarebell@msn.com
using System;
namespace Raccoom.Windows.Forms
{
/// <summary>
/// Summary description for UrlDragDropManager.
/// </summary>
public class UrlDragDropManager
{
#region fields
#region delegate
public class UrlDragDropEventArgs : EventArgs
{
private Uri _uri;
public UrlDragDropEventArgs(Uri uri)
{
this._uri = uri;
}
public Uri Uri
{
get
{
return _uri;
}
}
}
public delegate void UrlDragDropDelegate(object sender, UrlDragDropEventArgs e);
#endregion
public UrlDragDropDelegate UrlDragDrop;
#endregion
#region constructors
public UrlDragDropManager(System.Windows.Forms.Control control)
{
System.Diagnostics.Debug.Assert(control!=null);
//
control.AllowDrop = true;
control.DragEnter += new System.Windows.Forms.DragEventHandler(OnDragEnter);
control.DragDrop +=new System.Windows.Forms.DragEventHandler(OnDragDrop);
}
#endregion
#region public interface
/// <summary>
/// Allow draging of UniformResourceLocator (Hyperlinks)
/// </summary>
private void OnDragEnter(object sender, System.Windows.Forms.DragEventArgs e)
{
if(e.Data.GetData("UniformResourceLocator",true)!=null)
{
e.Effect = System.Windows.Forms.DragDropEffects.Link;
}
else
{
e.Effect = System.Windows.Forms.DragDropEffects.None;
}
}
/// <summary>
/// If valid UniformResourceLocator was dropped, load it
/// </summary>
private void OnDragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
// FileContents
// UniformResourceLocator
//
try
{
string url = e.Data.GetData(typeof(string)) as string;
// some browser deliver url and text in UniformResourceLocator
string[] tokens =url.Split('\n');
if(tokens.Length>1)
{
url= tokens[0];
}
//
if(UrlDragDrop!=null) UrlDragDrop(this, new UrlDragDropEventArgs(new Uri(url)));
}
catch (System.Exception ex)
{
System.Diagnostics.Trace.WriteLine(ex.Message);
}
}
#endregion
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.