Пример #1
0
		public bool Compare(HitInfo hitInfo)
		{
			if(hitInfo == null){
				return false;
			}

			if(hitInfo.HittedObject == this.HittedObject){

		//		if(this.HittedObject == HittedObject.DownScrollButton || this.HittedObject == HittedObject.DownScrollButton){
		//			return true;
		//		}

				if(hitInfo.HittedObject == HittedObject.Bar){
					if(m_HittedBar != null && hitInfo.HittedBar != null && object.ReferenceEquals(hitInfo.HittedBar,this.HittedBar)){
						return true;
					}
				}

				if(hitInfo.HittedObject == HittedObject.Item){
					if(m_HittedItem != null && hitInfo.HittedItem != null && object.ReferenceEquals(hitInfo.HittedItem,this.HittedItem)){
						return true;
					}
				}
			}			
			
			return false;			
		}
Пример #2
0
		protected override void OnMouseLeave(System.EventArgs e)
		{
			base.OnMouseLeave(e);

			this.Invalidate();
			m_LastHitInfo = null;		
		}
Пример #3
0
		protected override void OnMouseMove(System.Windows.Forms.MouseEventArgs e)
		{
			base.OnMouseMove(e);
			
			HitInfo hitInfo = new HitInfo(new Point(e.X,e.Y),this);
						
			if(!hitInfo.Compare(m_LastHitInfo)){					
				DrawObject(hitInfo,true);
				m_LastHitInfo = hitInfo;
				this.Invalidate();
			}			
		}
Пример #4
0
		protected override void OnMouseUp(System.Windows.Forms.MouseEventArgs e)
		{
			base.OnMouseUp(e);

			if(e.Button != MouseButtons.Left){
				return;
			}

			HitInfo hitInfo = new HitInfo(new Point(e.X,e.Y),this);
					
			//--- If hitted bar is different than activeBar, set hittedBar as activeBar.
			if(hitInfo.HittedObject == HittedObject.Bar && hitInfo.HittedBar.Index != m_ActiveBarIndex){
				m_ActiveBarIndex = hitInfo.HittedBar.Index;
				this.UpdateAll();
				return;
			}

			//--- If button clicked
			if(hitInfo.HittedObject == HittedObject.Item){
				if(hitInfo.HittedItem.AllowStuck){
					if(!hitInfo.HittedItem.Equals(m_StuckenItem)){
						Item oldItem  = m_StuckenItem;
						m_StuckenItem = hitInfo.HittedItem;

						//--- Redraw old stucken item					
						if(oldItem != null && oldItem.Bar.IsItemVisible(oldItem)){
							using(Graphics g = this.CreateGraphics()){
								g.SetClip(this.ActiveBar.BarClientRect);
								DrawItem(g,oldItem,oldItem.Bar,false,false);
							}
						}

						OnItemClicked(hitInfo.HittedItem);
					}
				}
				else{
					OnItemClicked(hitInfo.HittedItem);
				}
			}

			//--- If up scroll button clicked
			Bar activeBar = this.ActiveBar;
			if(hitInfo.HittedObject == HittedObject.UpScrollButton){
				activeBar.FirstVisibleIndex--;
				this.UpdateAll();
				return;
			}

			//--- If down scroll button clicked
			if(hitInfo.HittedObject == HittedObject.DownScrollButton){
				activeBar.FirstVisibleIndex++;
				this.UpdateAll();
				return;
			}

			// By default, redraw last hitted object
			DrawObject(hitInfo,false);							
		}
Пример #5
0
		private void DrawObject(HitInfo hitInfo,bool unDrawOld)
		{
			using(Graphics g = this.CreateGraphics()){
				//--- Draw old object as normal
				if(unDrawOld && m_LastHitInfo != null){
					if(m_LastHitInfo.HittedObject == HittedObject.Item){
						g.SetClip(this.ActiveBar.BarClientRect);
						DrawItem(g,m_LastHitInfo.HittedItem,this.ActiveBar,false,false);
						g.ResetClip();
					}

					if(m_LastHitInfo.HittedObject == HittedObject.Bar){
						DrawBar(g,m_LastHitInfo.HittedBar,false,false);
					}
				}
				
				if(hitInfo.HittedObject == HittedObject.Item){
					g.SetClip(this.ActiveBar.BarClientRect);
					DrawItem(g,hitInfo.HittedItem,this.ActiveBar,true,Control.MouseButtons == MouseButtons.Left);
					g.ResetClip();					
				}

				if(hitInfo.HittedObject == HittedObject.Bar){
					DrawBar(g,hitInfo.HittedBar,true,Control.MouseButtons == MouseButtons.Left);
				}

				DrawScrollButtons(g);
							
			}
		}
Пример #6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="e"></param>
        protected override void OnMouseUp(System.Windows.Forms.MouseEventArgs e)
        {
            base.OnMouseUp(e);

            if (e.Button != MouseButtons.Left)
            {
                return;
            }

            HitInfo hitInfo = new HitInfo(new Point(e.X, e.Y), this);

            //--- If hitted bar is different than activeBar, set hittedBar as activeBar.
            if (hitInfo.HittedObject == HittedObject.Bar && hitInfo.HittedBar.Index != m_ActiveBarIndex)
            {
                m_ActiveBarIndex = hitInfo.HittedBar.Index;
                this.UpdateAll();

                // Raise bar clicked event
                OnBarClicked(hitInfo.HittedBar);
                return;
            }

            //--- If item clicked
            if (hitInfo.HittedObject == HittedObject.Item)
            {
                if (!hitInfo.HittedItem.Enabled)
                {
                    return;
                }
                if (hitInfo.HittedItem.AllowStuck)
                {
                    if (!hitInfo.HittedItem.Equals(m_StuckenItem))
                    {
                        Item oldItem = m_StuckenItem;
                        m_StuckenItem = hitInfo.HittedItem;

                        //--- Redraw old stucken item
                        if (oldItem != null && oldItem.Bar.IsItemVisible(oldItem))
                        {
                            using (Graphics g = this.CreateGraphics()){
                                g.SetClip(this.ActiveBar.BarClientRect);
                                DrawItem(g, oldItem, oldItem.Bar, false, false);
                            }
                        }

                        // Raise item clicked event
                        OnItemClicked(hitInfo.HittedItem);
                    }
                }
                else
                {
                    // Raise item clicked event
                    OnItemClicked(hitInfo.HittedItem);
                    this.Invalidate();
                }
            }

            //--- If up scroll button clicked
            Bar activeBar = this.ActiveBar;

            if (hitInfo.HittedObject == HittedObject.UpScrollButton)
            {
                activeBar.FirstVisibleIndex--;
                this.UpdateAll();
                return;
            }

            //--- If down scroll button clicked
            if (hitInfo.HittedObject == HittedObject.DownScrollButton)
            {
                activeBar.FirstVisibleIndex++;
                this.UpdateAll();
                return;
            }

            // By default, redraw last hitted object
            DrawObject(hitInfo, false);
        }