private void InitScrollButtons() { _leftScrollButton = new TabBarScrollButton(); _leftScrollButton._isRight = false; _leftScrollButton.Enabled = false; _leftScrollButton.Width = SCROLLBUTTON_SIZE; _leftScrollButton.Height = SCROLLBUTTON_SIZE; _leftScrollButton.BringToFront(); _leftScrollButton.Click += new EventHandler(OnLeftScrollButtonClicked); this.Controls.Add(_leftScrollButton); _rightScrollButton = new TabBarScrollButton(); _rightScrollButton._isRight = true; _rightScrollButton.Enabled = false; _rightScrollButton.Width = SCROLLBUTTON_SIZE; _rightScrollButton.Height = SCROLLBUTTON_SIZE; _rightScrollButton.BringToFront(); _rightScrollButton.Click += new EventHandler(OnRightScrollButtonClicked); this.Controls.Add(_rightScrollButton); }
private void ArrangeButtonsForScrollStyle(bool animation, int animation_offset) { if (_leftScrollButton == null) { InitScrollButtons(); } for (int i = 0; i < _scrollButtonOffset; i++) { GEnv.Connections.TagAt(i).Button.Visible = false; } int x = 2; int y = 3; int limit = x + GetTabAreaWidth(); x += animation_offset; int offset = _scrollButtonOffset; int index = offset; while (offset < GEnv.Connections.Count) { ConnectionTag ct = GEnv.Connections.TagAt(offset); if (!ct.IsTerminated) { TabBarButton button = (TabBarButton)ct.Button; button.Left = x; button.Width = GetNecessaryButtonWidth(ct); SetButtonText(button, index, ct); if (x > limit && offset > _scrollButtonOffset) { break; //少なくとも一つはボタンを表示する } button.Top = y; button.Visible = true; button.Height = UNITHEIGHT - 4; x += button.Width + BUTTON_MARGIN; index++; } offset++; } for (int i = offset; i < GEnv.Connections.Count; i++) { GEnv.Connections.TagAt(i).Button.Visible = false; } _leftScrollButton.Left = this.Width - SCROLLBUTTON_SIZE * 2; _leftScrollButton.Top = y + 2; _leftScrollButton.BringToFront(); _leftScrollButton.Enabled = !animation && _scrollButtonOffset > 0; _rightScrollButton.Left = this.Width - SCROLLBUTTON_SIZE; _rightScrollButton.Top = y + 2; _rightScrollButton.BringToFront(); _rightScrollButton.Enabled = !animation && offset < GEnv.Connections.Count; //幅をふやしていったときなど、スペースに余裕があるなら表示を拡大 if (!animation && _scrollButtonOffset > 0 && GEnv.Connections.TagAt(_scrollButtonOffset - 1).Button.Width + BUTTON_MARGIN < limit - x) { _scrollButtonOffset--; ArrangeButtonsForScrollStyle(false, 0); } this.Height = y + UNITHEIGHT; }