//05Dec2013 refreshing status bar for showing split info
        public void RefreshStatusbar()
        {
            TabItem   panel     = docGroup.SelectedItem as TabItem;
            DataPanel datapanel = panel.Content as DataPanel;

            datapanel.RefreshStatusBar();
        }
        //Refresh Data and Var grids from Refresh icon in main window
        //Refresh DataSet and Variable grid 25MAr2013
        public void RefreshBothGrids(DataSource ds) //A.
        {
            RefreshDataSet(ds);                     //Refresh DataGrid
            TabItem panel = GetTabItem(ds);         //04Sep2014

            if (panel == null)
            {
                return;                //fix for crash when for some reason the existing dataset tab is not found
            }
            //04Sep2014 TabItem panel = docGroup.SelectedItem as TabItem;//we dont want active tab. Instead we need tab that matches the title "Dataset1"
            DataPanel datapanel = panel.Content as DataPanel;

            //if (!ds.IsPaginationClicked) //if the refresh is called from refresh icon and not from pagination
            //{
            //    ds.StartColindex = 0;
            //    ds.EndColindex = 15;
            //    datapanel.InitializeDynamicColIndexes(); // then reset the start and end indexes (to 0 and 15)
            //}

            //31May2018
            //refresh datagrid tab. (RData files diff names but same dataframe name, so needs tab title refresh too)
            StackPanel sp        = panel.Header as StackPanel;
            string     sheetname = string.Empty;//29Apr2015

            if (ds.SheetName != null && ds.SheetName.Trim().Length > 0)
            {
                sheetname = "{" + ds.SheetName + "}";
            }
            Label lb = sp.Children[0] as Label;

            lb.ToolTip = ds.FileName;
            var tabtextcolor = new SolidColorBrush(Color.FromArgb(255, (byte)48, (byte)88, (byte)144));//Foreground="#FF1579DA"

            lb.Foreground = tabtextcolor;
            lb.Content    = Path.GetFileName(ds.FileName) + sheetname + " (" + ds.Name + ")";

            //datapanel.sortcolnames = sortcolnames; //11Apr2014
            //datapanel.sortorder = sortorder; //14Apr2014
            datapanel.sortasccolnames  = sortasccolnames;
            datapanel.sortdesccolnames = sortdesccolnames;
            datapanel.Variables        = ds.Variables; //Refresh Var grid
            datapanel.DisableEnableAllNavButtons();
            datapanel.arrangeVarGridCols();            // arranging col positions
            datapanel.RefreshStatusBar();


            //04Aug2014 Remove old dialogs if cols changed in dataset
            DataSource removedds = panel.Tag as DataSource;
            string     semiKey   = removedds.FileName + removedds.Name;

            RemoveOldSessionDialogsFromMemory(semiKey);
        }
        //Refresh DataSet
        public void RefreshDataSet(DataSource ds) //A.
        {
            TabItem panel = GetTabItem(ds);       //04Sep2014

            if (panel == null)
            {
                return;                //fix for crash when for some reason the existing dataset tab is not found
            }
            //04Sep2014 TabItem panel = docGroup.SelectedItem as TabItem;//we dont want active tab. Instead we need tab that matches the title "Dataset1"
            DataPanel datapanel = panel.Content as DataPanel;

            if (!ds.IsPaginationClicked) //if the refresh is called from refresh icon and not from pagination
            {
                ds.StartColindex = 0;
                ds.EndColindex   = 15;
                datapanel.InitializeDynamicColIndexes(); // then reset the start and end indexes (to 0 and 15)
            }

            ds.Changed = true;//False +ve cases:scrolling to next page, refreshing grid without modifying
            //IList list = new VirtualListDynamic(_analyticsService, ds);
            VirtualListDynamic vld = new VirtualListDynamic(_analyticsService, ds);

            vld.DataF = _analyticsService.GetDataFrame(ds);
            IList list = vld;

            panel.Tag    = ds; //panel.Tag = ds;
            datapanel.DS = ds; //sending reference
            //datapanel.sortcolnames = sortcolnames; //11Apr2014
            //datapanel.sortorder = sortorder; //14Apr2014
            datapanel.sortasccolnames  = sortasccolnames;
            datapanel.sortdesccolnames = sortdesccolnames;
            datapanel.Data             = list;
            //causing recursion datapanel.Variables = ds.Variables; //Refresh Var grid
            datapanel.DisableEnableAllNavButtons();
            //causing recursion datapanel.arrangeVarGridCols(); // arranging col positions
            datapanel.RefreshStatusBar();

            // comment following variable refresh, if dont want to update var grid from R datasets.
            // Arrangement changing. Calling the arrangeVarGridCols() will solve the arrangement problem.
            // but I guess ObservableCollection is causing problem and  throwing error for text and numeric cols
            // datapanel.Variables = ds.Variables; //uncommented for Compute 22Mar2013

            //05Mar2013 commented b'coz Tab header changed to normal header when added var in vargrid
            //panel.Header = Path.GetFileName(ds.FileName);
        }
        //Refresh Data and Var grids from Refresh icon in main window
        //Refresh DataSet and Variable grid 25MAr2013
        public void RefreshBothGrids(DataSource ds) //A.
        {
            RefreshDataSet(ds);                     //Refresh DataGrid
            TabItem panel = GetTabItem(ds);         //04Sep2014
            //04Sep2014 TabItem panel = docGroup.SelectedItem as TabItem;//we dont want active tab. Instead we need tab that matches the title "Dataset1"
            DataPanel datapanel = panel.Content as DataPanel;

            datapanel.sortcolnames = sortcolnames; //11Apr2014
            datapanel.sortorder    = sortorder;    //14Apr2014
            datapanel.Variables    = ds.Variables; //Refresh Var grid
            datapanel.arrangeVarGridCols();        // arranging col positions
            datapanel.RefreshStatusBar();

            //04Aug2014 Remove old dialogs if cols changed in dataset
            DataSource removedds = panel.Tag as DataSource;
            string     semiKey   = removedds.FileName + removedds.Name;

            RemoveOldSessionDialogsFromMemory(semiKey);
        }