Beispiel #1
0
        private void RestoreSortingColumn(DataGridViewColumn previousSortColumn, SortOrder previousSortOrder, DataGridViewColumn defaultSortColumn)
        {
            // SCTX-501 preserve the sorting column
            if ((previousSortColumn == null) || !NetworksGridView.Columns.Contains(previousSortColumn))
            {
                previousSortColumn = defaultSortColumn;
                previousSortOrder  = SortOrder.Ascending;
                // try to get the old sort order from the SortGlyph
                foreach (System.Windows.Forms.DataGridViewColumn column in NetworksGridView.Columns)
                {
                    if (column.HeaderCell.SortGlyphDirection != SortOrder.None)
                    {
                        previousSortColumn = column;
                        previousSortOrder  = column.HeaderCell.SortGlyphDirection;
                        break;
                    }
                }
            }
            if (previousSortColumn != null)
            {
                // clear any old sort glyphs; this is necessary as a result of the
                // change for CA-45643 (MTU column only added for Cowley or greater pools)
                foreach (System.Windows.Forms.DataGridViewColumn column in NetworksGridView.Columns)
                {
                    column.HeaderCell.SortGlyphDirection = SortOrder.None;
                }

                NetworksGridView.Sort(
                    previousSortColumn,
                    previousSortOrder == SortOrder.Ascending ? ListSortDirection.Ascending : ListSortDirection.Descending);
            }
        }
        public void UpdateData()
        {
            _dispatcher.Update();
            var networks = _dispatcher.Networks;

            var             selectedRows = NetworksGridView.SelectedRows;
            DataGridViewRow selectedRow  = null;
            string          selectedData = "";

            if (selectedRows.Count != 0)
            {
                selectedRow  = selectedRows[0];
                selectedData = selectedRow.Cells[0].Value.ToString();
            }

            ListSortDirection  sortOrder     = ListSortDirection.Ascending;
            DataGridViewColumn sortedCollumn = null;
            var sorted = false;

            if (NetworksGridView.SortOrder != SortOrder.None)
            {
                sorted        = true;
                sortOrder     = NetworksGridView.SortOrder == SortOrder.Ascending ? ListSortDirection.Ascending : ListSortDirection.Descending;
                sortedCollumn = NetworksGridView.SortedColumn;
            }

            NetworksGridView.Rows.Clear();
            foreach (var network in networks)
            {
                NetworksGridView.Rows.Add(network.Name, network.ConnectionQuality, network.AuthenticationType, network.MAC);
            }

            if (sorted)
            {
                NetworksGridView.Sort(sortedCollumn, sortOrder);
            }
            foreach (DataGridViewRow row in NetworksGridView.Rows)
            {
                if (row.Cells[0].Value.ToString().Equals(selectedData))
                {
                    row.Selected = true; break;
                }
            }

            this.UpdateButtons();
        }
Beispiel #3
0
        private void AddNetworkColumns()
        {
            // catch the sorting column and sorting order, so they could be restored after the columns are added to the grid (SCTX-501)
            DataGridViewColumn previousSortColumn = NetworksGridView.SortedColumn;
            SortOrder          previousSortOrder  = NetworksGridView.SortOrder == SortOrder.None ? SortOrder.Ascending : NetworksGridView.SortOrder;

            try
            {
                NetworksGridView.SuspendLayout();

                NetworksGridView.Columns.Clear();
                NetworksGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
                    this.ImageColumn,
                    this.NameColumn,
                    this.DescriptionColumn,
                    this.NicColumn,
                    this.VlanColumn,
                    this.AutoColumn,
                    this.LinkStatusColumn,
                    this.NetworkMacColumn
                });

                //CA-47050: the Description column should be autosized to Fill, but should not become smaller than a minimum
                //width, which here is chosen to be the column header width. To find what this width is set temporarily the
                //column's autosize mode to ColumnHeader.
                this.DescriptionColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.ColumnHeader;
                int storedWidth = this.DescriptionColumn.Width;
                this.DescriptionColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                this.DescriptionColumn.MinimumWidth = storedWidth;

                // add MTU to grid view on Network tab for pools and hosts, for Cowley or greater only (CA-45643)
                if (Helpers.CowleyOrGreater(_xenObject.Connection))
                {
                    NetworksGridView.Columns.Add(this.MtuColumn);
                }
            }
            finally
            {
                NetworksGridView.ResumeLayout();
            }

            // restore the sorting column (SCTX-501)
            RestoreSortingColumn(previousSortColumn, previousSortOrder, NicColumn);
        }
Beispiel #4
0
        private void copyToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Point pt = NetworksGridView.PointToClient(new Point(contextMenuStrip1.Left, contextMenuStrip1.Top));

            DataGridView.HitTestInfo info = NetworksGridView.HitTest(pt.X, pt.Y);
            if (info != null && info.RowIndex >= 0 && info.RowIndex < NetworksGridView.Rows.Count)
            {
                DataGridViewRow row = NetworksGridView.Rows[info.RowIndex];
                if (row != null)
                {
                    string t = row.Cells[info.ColumnIndex].Value.ToString();
                    if (String.IsNullOrEmpty(t))
                    {
                        return;
                    }

                    Clip.SetClipboardText(t);
                }
            }
        }
Beispiel #5
0
        public void BuildList()
        {
            Program.AssertOnEventThread();
            if (!this.Visible)
            {
                return;
            }

            if (InBuildList)
            {
                return;
            }

            InBuildList = true;

            try
            {
                if (XenObject == null || XenObject.Locked)
                {
                    return;
                }

                if (!XenObject.Connection.CacheIsPopulated)
                {
                    return;
                }

                if (XenObject is VM)
                {
                    DeregisterEventsOnGridRows();
                    VIF selectedVIF = SelectedVif;
                    VM  vm          = XenObject as VM;

                    NetworksGridView.SuspendLayout();
                    NetworksGridView.Rows.Clear();

                    List <VIF> vifs = vm.Connection.ResolveAll(vm.VIFs);
                    vifs.Sort();

                    // CA-8981 - Listen for guest metric changes which is necessary for IP Address updates
                    VM_guest_metrics vmGuestMetrics = vm.Connection.Resolve(vm.guest_metrics);
                    if (vmGuestMetrics != null)
                    {
                        vmGuestMetrics.PropertyChanged += Server_PropertyChanged;
                    }

                    var vifRowsToAdd = new List <VifRow>();
                    foreach (var vif in vifs)
                    {
                        var network = vif.Connection.Resolve(vif.network);
                        if (network != null &&
                            // CA-218956 - Expose HIMN when showing hidden objects
                            (network.IsGuestInstallerNetwork() && !XenAdmin.Properties.Settings.Default.ShowHiddenVMs))
                        {
                            continue;   // Don't show the guest installer network in the network tab (CA-73056)
                        }
                        vifRowsToAdd.Add(new VifRow(vif));
                    }
                    NetworksGridView.Rows.AddRange(vifRowsToAdd.ToArray());

                    bool selected = true;

                    if (selectedVIF != null)
                    {
                        foreach (VifRow row in NetworksGridView.Rows)
                        {
                            // Cannot compare opaque_ref as VIFs get destroyed / recreated on each edit.
                            if (row.Vif.device == selectedVIF.device)
                            {
                                row.Selected = true;
                                break;
                            }
                        }
                    }

                    if (!selected && NetworksGridView.Rows.Count > 0)
                    {
                        NetworksGridView.Rows[0].Selected = true;
                    }
                }
                else if (XenObject is Host || XenObject is Pool)
                {
                    DeregisterEventsOnGridRows();
                    XenAPI.Network selectedNetwork = SelectedNetwork;

                    NetworksGridView.SuspendLayout();
                    NetworksGridView.Rows.Clear();

                    XenAPI.Network[] networks = XenObject.Connection.Cache.Networks;
                    Array.Sort <XenAPI.Network>(networks);

                    List <NetworkRow> networkRowsToAdd = new List <NetworkRow>();
                    for (int i = 0; i < networks.Length; i++)
                    {
                        if (!networks[i].Show(XenAdmin.Properties.Settings.Default.ShowHiddenVMs))
                        {
                            continue;
                        }
                        networkRowsToAdd.Add(new NetworkRow(networks[i], XenObject));
                    }
                    NetworksGridView.Rows.AddRange(networkRowsToAdd.ToArray());
                    // The following update causes this to be a lot slower with many networks. Alot! CA-43944
                    //foreach(NetworkRow r in NetworksGridView.Rows)
                    //r.UpdateDefaultCellStyle();  // Has to be done again after adding to the grid view, even though it's already called in the constructor

                    if (selectedNetwork != null)
                    {
                        foreach (NetworkRow row in NetworksGridView.Rows)
                        {
                            if (row.Network.opaque_ref == selectedNetwork.opaque_ref && selectedNetwork.Show(XenAdmin.Properties.Settings.Default.ShowHiddenVMs))
                            {
                                row.Selected = true;
                                break;
                            }
                        }
                    }
                }
            }
            finally
            {
                if (NetworksGridView.SortedColumn != null)
                {
                    NetworksGridView.Sort(
                        NetworksGridView.SortedColumn,
                        NetworksGridView.SortOrder == SortOrder.Ascending
                            ? ListSortDirection.Ascending : ListSortDirection.Descending);
                }
                NetworksGridView.ResumeLayout();
                InBuildList = false;
            }
        }
Beispiel #6
0
 public override void SelectDefaultControl()
 {
     NetworksGridView.Select();
 }