public MainForm(FTObjects ftobjects)
        {
            InitializeComponent();

            //Determine VersionRowSpace
            VersionRow versionrow = new VersionRow();
            ExitRemoveKey = false;
            BlockAddingAndRemovingVersionRows = new object();
            VersionRowSpaceH = versionrow.Height + ExtraVersionRowSpace;
            VersionRowSpaceW = versionrow.Width;
            versionrow.Dispose();

            m_VersionRowFromIndex = new Dictionary<int, VersionRow>();
            this.m_FTObjects = ftobjects;
            m_FTObjects.AddToCallList(this);

            MonitorGroupName = "test";
            this.ListVersionvScrollBar.Maximum = (VersionRowSpaceH * 2) *  m_FTObjects.CurrentAmountOfVersions;

            DisplayVersions();
        }
 public void NewCurrentVersion(string MonitorGroup, VersionInfo vers)
 {
     if (CurrentVerionRow != null && CurrentVerionRow.IsDisposed == false)
     {
         CurrentVerionRow.UnIndicateCurrentVersion();
     }
     foreach (KeyValuePair<int,VersionRow> kVer in m_VersionRowFromIndex)
     {
         if(kVer.Value.PublicVersionInfo.versionName.Equals(vers.versionName))
         {
             kVer.Value.IndicateCurrentVersion();
             CurrentVerionRow = kVer.Value;
             break;
         }
     }
 }
        private void DisplayVersions()
        {
            ExitRemoveKey = true;
            lock (BlockAddingAndRemovingVersionRows)
            {

                    int index = 0;

                    List<int> HeightSquares = SquaresSpaces(this.ListVersionvScrollBar.Value, this.VersionPanel.Height, VersionRowSpaceH);

                    VersionInfo versionInfo;
                    VersionRow versionRow;

                    foreach (int height in HeightSquares)
                    {
                        index = height / VersionRowSpaceH;

                        if (index <= m_FTObjects.CurrentAmountOfVersions)
                        {
                            versionInfo = m_FTObjects.CurrentVersionList[index];

                            if (m_VersionRowFromIndex.TryGetValue(index, out versionRow) == false)
                            {
                                versionRow = new VersionRow(versionInfo, m_FTObjects);
                                versionRow.Location = new Point(ExtraVersionRowSpace, ExtraVersionRowSpace + height - this.ListVersionvScrollBar.Value);
                                lock (m_VersionRowFromIndex)
                                {
                                    m_VersionRowFromIndex[index] = versionRow;
                                }
                                this.ListVersionPanel.Controls.Add(versionRow);
                                if (versionInfo.versionName.Equals(m_FTObjects.CurrentVersion))
                                {
                                    versionRow.IndicateCurrentVersion();
                                    CurrentVerionRow = versionRow;
                                }
                            }
                            else
                            {
                                versionRow.Location = new Point(ExtraVersionRowSpace, ExtraVersionRowSpace + height - this.ListVersionvScrollBar.Value);
                            }
                        }
                    }

            }
            ExitRemoveKey = false;
        }