コード例 #1
0
        public void NodeWithChildrenShouldGetThemAsChildren()
        {
            var converter = new FuncStringConverterExtended((s, t) => (true, Convert.ChangeType(s, t)));
            var creator   = new FuncInstanceCreator((hints, type) => new CreationResult(Activator.CreateInstance(type)));
            var sut       = new NodeAssembler(creator, converter, null);

            var constructionNode = new ConstructionNode <Collection>()
                                   .WithChildren(
                new ConstructionNode <int>
            {
                SourceValue = "1"
            },
                new ConstructionNode <int>
            {
                SourceValue = "2"
            },
                new ConstructionNode <int>
            {
                SourceValue = "3"
            }
                );

            sut.Assemble(constructionNode, null);

            Assert.Equal(new Collection()
            {
                1, 2, 3,
            }, (IEnumerable)constructionNode.Instance);
        }
コード例 #2
0
        public void SourceValue()
        {
            var converter        = new FuncStringConverterExtended((s, t) => (true, Convert.ChangeType(s, t)));
            var sut              = new NodeAssembler(null, converter, null);
            var constructionNode = new ConstructionNode <int> {
                SourceValue = "1"
            };

            sut.Assemble(constructionNode, null);
            Assert.Equal(1, constructionNode.Instance);
        }
コード例 #3
0
        public void NodeWithOnlyATypeShouldReturnTheProvidedInstanced()
        {
            var someInstance = new TextBlock();
            var creator      = new FuncInstanceCreator((hints, type) => new CreationResult(someInstance));
            var sut          = new NodeAssembler(creator, null, null);

            var constructionNode = new ConstructionNode <TextBlock>();

            sut.Assemble(constructionNode, null);

            Assert.Equal(someInstance, constructionNode.Instance);
        }
コード例 #4
0
        public void ConstructionWithAssignmentShouldExecuteAssigmentApplier()
        {
            var textBlock = new TextBlock();
            var converter = new FuncStringConverterExtended((s, t) => (true, Convert.ChangeType(s, t)));

            var creator = new FuncInstanceCreator((hints, type) => new CreationResult(textBlock));
            var sut     = new NodeAssembler(creator, converter, new FuncAssignmentApplier((assignment, objectBuilder, context) =>
            {
                assignment.Assignment.Member.SetValue(assignment.Instance, assignment.Assignment.Values.First().Instance);
            }));

            var constructionNode = new ConstructionNode <TextBlock>().WithAssignment(tb => tb.Text, "SomeText");

            sut.Assemble(constructionNode, null);

            Assert.Equal("SomeText", textBlock.Text);
        }
コード例 #5
0
        private void OnExportEXCEL(object _type)
        {
            if (_type == null)
            {
                return;
            }
            NodesToExcelExportType type = NodeAssembler.StringToType(_type.ToString());

            try
            {
                // Configure save file dialog box
                var dlg = new Microsoft.Win32.SaveFileDialog()
                {
                    FileName   = "Export",                  // Default file name
                    DefaultExt = ".xlsx",                   // Default file extension
                    Filter     = "excel files|*.xls;*.xlsx" // Filter files by extension
                };

                // Show save file dialog box
                Nullable <bool> result = dlg.ShowDialog();

                // Process save file dialog box results
                if (result.HasValue && result == true)
                {
                    // transfer the nodes into strings
                    List <string>         data_header;
                    List <List <string> > data_as_strings;
                    switch (type)
                    {
                    case NodesToExcelExportType.COMPLETE:
                        data_header     = NodeAssembler.GetNodeListHeaderComplete();
                        data_as_strings = NodeAssembler.NodeListToStringsComplete(this.NManager.Nodes, false);
                        break;

                    case NodesToExcelExportType.EXPLICIT:
                        data_header     = NodeAssembler.GetNodeListHeaderComplete();
                        data_as_strings = NodeAssembler.NodeListToStringsComplete(this.NManager.Nodes, true);
                        break;

                    default:
                        data_header     = NodeAssembler.GetNodeListHeader();
                        data_as_strings = NodeAssembler.NodeListToStrings(this.NManager.Nodes);
                        break;
                    }

                    // prepare an empty document
                    string filename = dlg.FileName;
                    File.Delete(filename);
                    File.Copy(".\\Data\\blank.xlsx", filename);

                    // write data
                    ExcelExporter excelExp = new ExcelExporter();
                    excelExp.ExportToFile(filename, "Export", data_header, data_as_strings);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "EXCEL File Export Error", MessageBoxButton.OK, MessageBoxImage.Error);
                // MessageBox.Show(ex.StackTrace, "EXCEL File Export Error", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
コード例 #6
0
        private void OnImportEXCEL(object _type)
        {
            if (_type == null)
            {
                return;
            }
            NodesToExcelExportType type = NodeAssembler.StringToType(_type.ToString());

            try
            {
                var dlg = new Microsoft.Win32.OpenFileDialog()
                {
                    Filter = "excel files|*.xls;*.xlsx"
                };
                // this causes a Securiy Exception (SQLite) if the propgram is not run as Administrator,
                // but it has no effect on the rest
                if (dlg.ShowDialog().Value)
                {
                    if (File.Exists(dlg.FileName))
                    {
                        // get the name of the table
                        string tablename = "Tabelle1";
                        Window window    = Application.Current.MainWindow;
                        if (window != null)
                        {
                            MainWindow mw = window as MainWindow;
                            if (mw != null)
                            {
                                tablename = mw.OpenTableNameWindow();
                            }
                        }

                        //imports the EXCEL file
                        ExcelImporter         excelImp = new ExcelImporter();
                        List <List <string> > raw_data = excelImp.ImportFromFile(dlg.FileName, tablename, 1000);

                        // extract the data
                        switch (type)
                        {
                        case NodesToExcelExportType.COMPLETE:
                            this.imported_node_list = NodeAssembler.GetNodeListComplete(raw_data);
                            break;

                        case NodesToExcelExportType.EXPLICIT:
                            this.imported_node_list = NodeAssembler.GetNodeListExplicit(raw_data);
                            break;

                        default:
                            this.imported_node_list = NodeAssembler.GetNodeList(raw_data);
                            break;
                        }

                        // attach to the nodemanager
                        NodeAssembler.AttachNodesToNodeManager(this.imported_node_list, ref this.NManager);

                        // publish to GUI
                        this.OnRefreshTree();
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "EXCEL File Import Error", MessageBoxButton.OK, MessageBoxImage.Error);
                // MessageBox.Show(ex.StackTrace, "EXCEL File Import Error", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
コード例 #7
0
 public TwoPassesNodeAssembler(NodeAssembler nodeAssembler)
 {
     assembler = nodeAssembler;
 }