// // // // // $Revision$ // using System; using System.Drawing; using System.Windows.Forms; using ICSharpCode.TextEditor.Document; namespace ICSharpCode.TextEditor { public delegate void MarginMouseEventHandler(AbstractMargin sender, Point mousepos, MouseButtons mouseButtons); public delegate void MarginPaintEventHandler(AbstractMargin sender, Graphics g, Rectangle rect); /// /// This class views the line numbers and folding markers. /// public abstract class AbstractMargin { Cursor cursor = Cursors.Default; [CLSCompliant(false)] protected Rectangle drawingPosition = new Rectangle(0, 0, 0, 0); [CLSCompliant(false)] protected TextArea textArea; public Rectangle DrawingPosition { get { return drawingPosition; } set { drawingPosition = value; } } public TextArea TextArea { get { return textArea; } } public IDocument Document { get { return textArea.Document; } } public ITextEditorProperties TextEditorProperties { get { return textArea.Document.TextEditorProperties; } } public virtual Cursor Cursor { get { return cursor; } set { cursor = value; } } public virtual Size Size { get { return new Size(-1, -1); } } public virtual bool IsVisible { get { return true; } } protected AbstractMargin(TextArea textArea) { this.textArea = textArea; } public virtual void HandleMouseDown(Point mousepos, MouseButtons mouseButtons) { if (MouseDown != null) { MouseDown(this, mousepos, mouseButtons); } } public virtual void HandleMouseMove(Point mousepos, MouseButtons mouseButtons) { if (MouseMove != null) { MouseMove(this, mousepos, mouseButtons); } } public virtual void HandleMouseLeave(EventArgs e) { if (MouseLeave != null) { MouseLeave(this, e); } } public virtual void Paint(Graphics g, Rectangle rect) { if (Painted != null) { Painted(this, g, rect); } } public event MarginPaintEventHandler Painted; public event MarginMouseEventHandler MouseDown; public event MarginMouseEventHandler MouseMove; public event EventHandler MouseLeave; } }