Ejemplo n.º 1
0
        bool hiddenmarkershouldbeshown = false; // if to show it now

        public ExtPanelRollUp()
        {
            SuspendLayout();

            this.Height = UnrolledHeight;

            pinbutton                 = new ExtCheckBox();
            pinbutton.Appearance      = Appearance.Normal;
            pinbutton.FlatStyle       = FlatStyle.Popup;
            pinbutton.Size            = new Size(24, 24);
            pinbutton.Image           = ExtendedControls.Properties.Resources.pindownwhite2; //colours 222 and 255 used
            pinbutton.ImageUnchecked  = ExtendedControls.Properties.Resources.pinupwhite2;
            pinbutton.Checked         = true;
            pinbutton.CheckedChanged += Pinbutton_CheckedChanged;
            pinbutton.Name            = "RUP Pinbutton";

            hiddenmarker1               = new ExtDrawnPanelNoTheme();
            hiddenmarker1.Name          = "Hidden marker";
            hiddenmarker1.ImageSelected = ExtPanelDrawn.ImageType.Bars;
            hiddenmarker1.Visible       = false;
            hiddenmarker1.Padding       = new Padding(0);
            hiddenmarker1.Click        += Hiddenmarker_Click;

            hiddenmarker2               = new ExtDrawnPanelNoTheme();
            hiddenmarker2.Name          = "Hidden marker";
            hiddenmarker2.ImageSelected = ExtPanelDrawn.ImageType.Bars;
            hiddenmarker2.Visible       = false;
            hiddenmarker2.Padding       = new Padding(0);
            hiddenmarker2.Click        += Hiddenmarker_Click;

            Controls.Add(pinbutton);
            Controls.Add(hiddenmarker1);
            Controls.Add(hiddenmarker2);

            ResumeLayout();

            mode        = Mode.None;
            timer       = new Timer();
            timer.Tick += Timer_Tick;

            pinbutton.Visible = false;
        }
        private void Button_Click(object sender, EventArgs e)
        {
            ExtPanelDrawn but = sender as ExtPanelDrawn;
            OutlineState  rur = but.Tag as OutlineState;

            if (Parent is ExtPanelDataGridViewScroll)   // this implements an efficient visibility change system
            {
                rur.r.expanded = !rur.r.expanded;

                if (rur.r.expanded == false)       // off is easy - hide everything
                {
                    (Parent as ExtPanelDataGridViewScroll).ChangeVisibility(rur.r.start, rur.r.end - KeepLastEntriesVisibleOnRollUp, rur.r.expanded);
                }
                else
                {
                    BaseUtils.IntRangeList irl = new BaseUtils.IntRangeList();
                    irl.Add(rur.r.start, rur.r.end);
                    Vis(Outlines.IndexOf(rur), irl);         // remove visibility of any children marked hidden
                    irl.Sort();
                    (Parent as ExtPanelDataGridViewScroll).ChangeVisibility(rur.r.start, rur.r.end, irl);
                }
            }
        }