protected override void OnEnter(EventArgs e) { bool flag = true; base.OnEnter(e); if (_layout != null) { if (_layout.NodeCount > 0) { ServerLabel serverLabel = _layout.LabelArray[_layout.FocusedServerIndex - 1]; if (serverLabel.Parent == this) { serverLabel.Focus(); flag = false; } } } else { ServerBase serverBase = ServerTree.Instance.SelectedNode as ServerBase; if (serverBase != null) { serverBase.Focus(); flag = false; } } if (flag) { Focus(); } }
private void DrawThumbnail(ServerLabel label, int windowTop) { Rectangle thumbnailAbsoluteBounds = _layout.GetThumbnailAbsoluteBounds(label.ThumbnailIndex); int num = thumbnailAbsoluteBounds.Top - windowTop; int top = num + ThumbnailLabelHeight - 1; Server server = label.Server; server.SetThumbnailView(thumbnailAbsoluteBounds.X, top, thumbnailAbsoluteBounds.Width, thumbnailAbsoluteBounds.Height); label.Size = new Size(thumbnailAbsoluteBounds.Width, ThumbnailLabelHeight); label.Location = new Point(thumbnailAbsoluteBounds.X, num); base.Controls.Add(label); label.Show(); server.Show(); if (Program.TheForm.ActiveControl == this && label.ThumbnailIndex == _layout.FocusedServerIndex) { label.Focus(); _layout.FocusedServerIndex = 0; } }
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { ServerLabel serverLabel = Program.TheForm.ActiveControl as ServerLabel; if (serverLabel == null) { if (_layout == null || Program.TheForm.ActiveControl != this) { return(base.ProcessCmdKey(ref msg, keyData)); } serverLabel = _layout.LabelArray[_layout.FocusedServerIndex - 1]; } _layout.EnsureTabIndex(); int value = serverLabel.Server.DisplaySettings.ThumbnailScale.Value; int thumbnailIndex = serverLabel.ThumbnailIndex; int num = _layout.ServerTileX[thumbnailIndex]; int num2 = _layout.ServerTileY[thumbnailIndex]; int tabIndex = serverLabel.TabIndex; switch (keyData) { case Keys.Tab: case Keys.LButton | Keys.Back | Keys.Shift: ServerTree.Instance.Focus(); return(true); case Keys.Left: if (--tabIndex == 0) { return(true); } thumbnailIndex = _layout.TabIndexToServerIndex[tabIndex]; num = _layout.ServerTileX[thumbnailIndex]; num2 = _layout.ServerTileY[thumbnailIndex]; break; case Keys.Right: if (++tabIndex > _layout.NodeCount) { return(true); } thumbnailIndex = _layout.TabIndexToServerIndex[tabIndex]; num = _layout.ServerTileX[thumbnailIndex]; num2 = _layout.ServerTileY[thumbnailIndex]; break; case Keys.Up: if (--num2 < 0) { return(true); } break; case Keys.Down: num2 += value; if (num2 > _layout.LowestTileY) { return(true); } break; case Keys.Home: num = 0; num2 = 0; break; case Keys.End: num = _layout.ServerLayoutToIndex.GetUpperBound(1); num2 = _layout.LowestTileY; break; case Keys.Prior: { if (num2 == 0) { return(true); } int val3 = (int)Math.Floor((double)serverLabel.Top / (double)UnitHeight); int val4 = base.Height / UnitHeight; int num4 = Math.Max(val3, val4); num2 = Math.Max(0, num2 - num4); break; } case Keys.Next: { if (num2 == _layout.LowestTileY) { return(true); } int val = (int)Math.Floor((double)(serverLabel.Top + GetServerHeight(value)) / (double)UnitHeight); int val2 = base.Height / UnitHeight; int num3 = Math.Max(val, val2); num2 = Math.Min(_layout.LowestTileY, num2 + num3); break; } default: return(base.ProcessCmdKey(ref msg, keyData)); } while (true) { thumbnailIndex = _layout.ServerLayoutToIndex[num2, num]; if (thumbnailIndex != 0) { break; } num--; } serverLabel = _layout.LabelArray[thumbnailIndex - 1]; ScrollServerIntoView(serverLabel); serverLabel.Focus(); return(true); }