Пример #1
0
		/// <summary>
		/// Removes the specified input event listener so that it no longer 
		/// receives input events from this node.
		/// </summary>
		/// <param name="listener">The input listener to remove.</param>
		public virtual void RemoveInputEventListener(PInputEventListener listener) {
			KeyDown -= new PInputEventHandler(listener.OnKeyDown);
			KeyPress -= new PInputEventHandler(listener.OnKeyPress);
			KeyUp -= new PInputEventHandler(listener.OnKeyUp);
			Click -= new PInputEventHandler(listener.OnClick);
			DoubleClick -= new PInputEventHandler(listener.OnDoubleClick);
			MouseDown -= new PInputEventHandler(listener.OnMouseDown);
			MouseUp -= new PInputEventHandler(listener.OnMouseUp);
			MouseMove -= new PInputEventHandler(listener.OnMouseMove);
			MouseDrag -= new PInputEventHandler(listener.OnMouseDrag);
			MouseEnter -= new PInputEventHandler(listener.OnMouseEnter);
			MouseLeave -= new PInputEventHandler(listener.OnMouseLeave);
			MouseWheel -= new PInputEventHandler(listener.OnMouseWheel);
			DragEnter -= new PInputEventHandler(listener.OnDragEnter);
			DragLeave -= new PInputEventHandler(listener.OnDragLeave);
			DragOver -= new PInputEventHandler(listener.OnDragOver);
			DragDrop -= new PInputEventHandler(listener.OnDragDrop);
			GotFocus -= new PInputEventHandler(listener.OnGotFocus);
			LostFocus -= new PInputEventHandler(listener.OnLostFocus);
		}
Пример #2
0
		/// <summary>
		/// Raise the given input event.
		/// </summary>
		/// <param name="e">The arguments for this input event.</param>
		/// <param name="handler">The delegate to dispatch this event to.</param>
		/// <remarks>
		/// If an event has been set as handled, and the delegate is not a member of a listener
		/// class, then the event is consumed.  If the delegate is a member of a listener class
		/// the decision of consumption is left up to the filter associated with that class.
		/// </remarks>
		protected virtual void HandleEvent(PInputEventArgs e, PInputEventHandler handler) {
			if (handler != null) {
				Delegate[] list = handler.GetInvocationList();

				for (int i = list.Length - 1; i >= 0; i--) {
					Delegate each = list[i];

					if (each.Target is PInputEventListener) {
						PInputEventListener listener = (PInputEventListener)each.Target;
						if (listener.DoesAcceptEvent(e)) {
							// The source is the node from which the event originated, not the
							// picked node.
							((PInputEventHandler)each)(this, e);
						}
					}
					else if (!e.Handled) {
						// The source is the node from which the event originated, not the
						// picked node.
						((PInputEventHandler)each)(this, e);
					}
				}
			}
		}
Пример #3
0
		/// <summary>
		/// Adds the specified input event listener to receive input events 
		/// from this node.
		/// </summary>
		/// <param name="listener">The new input listener</param>
		public virtual void AddInputEventListener(PInputEventListener listener) {
			KeyDown += new PInputEventHandler(listener.OnKeyDown);
			KeyPress += new PInputEventHandler(listener.OnKeyPress);
			KeyUp += new PInputEventHandler(listener.OnKeyUp);
			Click += new PInputEventHandler(listener.OnClick);
			DoubleClick += new PInputEventHandler(listener.OnDoubleClick);
			MouseDown += new PInputEventHandler(listener.OnMouseDown);
			MouseUp += new PInputEventHandler(listener.OnMouseUp);
			MouseMove += new PInputEventHandler(listener.OnMouseMove);
			MouseDrag += new PInputEventHandler(listener.OnMouseDrag);
			MouseEnter += new PInputEventHandler(listener.OnMouseEnter);
			MouseLeave += new PInputEventHandler(listener.OnMouseLeave);
			MouseWheel += new PInputEventHandler(listener.OnMouseWheel);
			DragEnter += new PInputEventHandler(listener.OnDragEnter);
			DragLeave += new PInputEventHandler(listener.OnDragLeave);
			DragOver += new PInputEventHandler(listener.OnDragOver);
			DragDrop += new PInputEventHandler(listener.OnDragDrop);
			GotFocus += new PInputEventHandler(listener.OnGotFocus);
			LostFocus += new PInputEventHandler(listener.OnLostFocus);
		}