Пример #1
0
        public void RunExportAsync(Stream exportStream, ISpreadExportRenderer exportRenderer)
        {
            this.spreadExportRenderer = exportRenderer;
            if (this.GetWorker().IsBusy)
            {
                throw new Exception("There is an export operation that has not yet finished.");
            }
            List <TreeViewSpreadExportRow> exportRows = (List <TreeViewSpreadExportRow>)null;

            if (this.treeView.InvokeRequired)
            {
                this.treeView.Invoke((Delegate)(() =>
                {
                    TreeViewExportState state = this.SaveTreeViewState();
                    exportRows = this.GetTreeViewDataSnapshot();
                    this.RestoreTreeViewState(state);
                }));
            }
            else
            {
                TreeViewExportState state = this.SaveTreeViewState();
                exportRows = this.GetTreeViewDataSnapshot();
                this.RestoreTreeViewState(state);
            }
            this.GetWorker().RunWorkerAsync((object)new List <object>(2)
            {
                (object)new TreeViewSpreadExportDataSnapshot(string.Empty, exportRows),
                (object)exportStream
            });
        }
Пример #2
0
 private void RestoreTreeViewState(TreeViewExportState state)
 {
     foreach (RadTreeNode selectedNode in state.SelectedNodes)
     {
         selectedNode.Selected = true;
     }
     if (state.CurrentNode != null)
     {
         state.CurrentNode.Current = true;
     }
     this.treeView.HScrollBar.Value = state.HorizontalScrollbarValue;
     this.treeView.VScrollBar.Value = state.VerticalScrolbarValue;
 }
Пример #3
0
        private TreeViewExportState SaveTreeViewState()
        {
            TreeViewExportState treeViewExportState = new TreeViewExportState()
            {
                HorizontalScrollbarValue = this.treeView.HScrollBar.Value, VerticalScrolbarValue = this.treeView.VScrollBar.Value
            };
            int num = 0;
            Queue <RadTreeNode> radTreeNodeQueue = new Queue <RadTreeNode>();

            foreach (RadTreeNode node in (Collection <RadTreeNode>) this.treeView.TreeViewElement.Root.Nodes)
            {
                radTreeNodeQueue.Enqueue(node);
            }
            while (radTreeNodeQueue.Count > 0)
            {
                RadTreeNode radTreeNode = radTreeNodeQueue.Dequeue();
                if (radTreeNode.Level > num)
                {
                    num = radTreeNode.Level;
                }
                if (radTreeNode.Selected)
                {
                    treeViewExportState.SelectedNodes.Add(radTreeNode);
                }
                if (radTreeNode.Current)
                {
                    treeViewExportState.CurrentNode = radTreeNode;
                    radTreeNode.Current             = false;
                }
                foreach (RadTreeNode node in (Collection <RadTreeNode>)radTreeNode.Nodes)
                {
                    radTreeNodeQueue.Enqueue(node);
                }
            }
            this.depthOfTree = num;
            this.treeView.SelectedNodes.Clear();
            return(treeViewExportState);
        }
Пример #4
0
        private void RunExportCall(string fileName)
        {
            TreeViewExportState state = this.SaveTreeViewState();

            this.columnWidths    = new List <int>();
            this.defaultItemSize = new Size(this.treeView.Width, this.treeView.ItemHeight);
            if (this.ExportVisualSettings)
            {
                this.elementProvider = this.treeView.TreeViewElement.ViewElement.ElementProvider as TreeViewElementProvider;
            }
            try
            {
                this.spreadExportRenderer.GetFormatProvider(this.ExportFormat);
                fileName = Path.GetDirectoryName(fileName) + (object)Path.DirectorySeparatorChar + Path.GetFileNameWithoutExtension(fileName) + this.spreadExportRenderer.GetFileExtension(this.ExportFormat);
                FileStream fileStream;
                if (this.FileExportMode == FileExportMode.NewSheetInExistingFile && File.Exists(fileName) && this.ExportFormat == SpreadExportFormat.Xlsx)
                {
                    fileStream = new FileStream(fileName, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite, 32768, false);
                    this.spreadExportRenderer.ImportWorkbook((Stream)fileStream);
                }
                else
                {
                    fileStream = new FileStream(fileName, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite, 32768, false);
                    this.spreadExportRenderer.CreateWorkbook();
                }
                using (fileStream)
                    this.ExportToStream((Stream)fileStream);
                this.OnExportCompleted(new EventArgs());
                ControlTraceMonitor.TrackAtomicFeature((RadControl)this.treeView, "Export", (object)fileName);
            }
            finally
            {
                this.applicationDoEvents = false;
                this.RestoreTreeViewState(state);
            }
        }
Пример #5
0
        private void RunExportCall(Stream exportStream)
        {
            TreeViewExportState state = this.SaveTreeViewState();

            this.columnWidths    = new List <int>();
            this.defaultItemSize = new Size(this.treeView.Width, this.treeView.ItemHeight);
            if (this.ExportVisualSettings)
            {
                this.elementProvider = this.treeView.TreeViewElement.ViewElement.ElementProvider as TreeViewElementProvider;
            }
            try
            {
                this.spreadExportRenderer.GetFormatProvider(this.ExportFormat);
                this.spreadExportRenderer.CreateWorkbook();
                this.ExportToStream(exportStream);
                this.OnExportCompleted(new EventArgs());
                ControlTraceMonitor.TrackAtomicFeature((RadControl)this.treeView, "Export");
            }
            finally
            {
                this.applicationDoEvents = false;
                this.RestoreTreeViewState(state);
            }
        }