public CircuitViewModel()
 {
     _fileStrategyFactory = FileStrategyFactory.Instance;
     _circuitBuilder      = new CircuitBuilder();
     OpenCircuitCommand   = new RelayCommand(OpenCircuit);
     ResetCircuitCommand  = new RelayCommand(ResetCircuit);
     QuitCommand          = new RelayCommand(Quit);
     ClearLogsCommand     = new RelayCommand(ClearLogs);
     Logger     = Logger.Instance;
     _validator = new Validator();
 }
Beispiel #2
0
        public ViewModelLocator()
        {
            ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);

            // register file strategies
            FileStrategyFactory fileStrategyFactory = FileStrategyFactory.Instance;

            fileStrategyFactory.RegisterStrategy("json", new JsonFileStrategy());
            fileStrategyFactory.RegisterStrategy("txt", new TxtFileStrategy());

            // register node types
            NodeFactory nodeFactory = NodeFactory.Instance;

            nodeFactory.RegisterNode <InputHigh>("INPUT_HIGH");
            nodeFactory.RegisterNode <InputLow>("INPUT_LOW");
            nodeFactory.RegisterNode <Probe>("PROBE");
            nodeFactory.RegisterNode <NotGate>("NOT");
            nodeFactory.RegisterNode <AndGate>("AND");
            nodeFactory.RegisterNode <NandGate>("NAND");
            nodeFactory.RegisterNode <NorGate>("NOR");
            nodeFactory.RegisterNode <OrGate>("OR");
            nodeFactory.RegisterNode <XorGate>("XOR");

            // Validation strategies
            ValidationStrategyFactory validationStrategyFactory = ValidationStrategyFactory.Instance;

            // INode validation
            validationStrategyFactory.RegisterStrategy <INode>(new ValidGatesValidation());
            validationStrategyFactory.RegisterStrategy <INode>(new MinNodeValidation());
            validationStrategyFactory.RegisterStrategy <INode>(new DuplicateGateValidation());
            validationStrategyFactory.RegisterStrategy <INode>(new LoopValidation());

            // StartPoint validation
            validationStrategyFactory.RegisterStrategy <StartPoint>(new MinOutputsValidation(0));

            // Probe validation
            validationStrategyFactory.RegisterStrategy <Probe>(new MinInputsValidation(1));

            // AND gate validation
            validationStrategyFactory.RegisterStrategy <AndGate>(new MinInputsValidation(2));
            validationStrategyFactory.RegisterStrategy <AndGate>(new MinOutputsValidation(1));

            // NAND gate validation
            validationStrategyFactory.RegisterStrategy <NandGate>(new MinInputsValidation(2));
            validationStrategyFactory.RegisterStrategy <NandGate>(new MinOutputsValidation(1));

            // NOR gate validation
            validationStrategyFactory.RegisterStrategy <NorGate>(new MinInputsValidation(2));
            validationStrategyFactory.RegisterStrategy <NorGate>(new MinOutputsValidation(1));

            // NOT gate validation
            validationStrategyFactory.RegisterStrategy <NotGate>(new MinInputsValidation(1));
            validationStrategyFactory.RegisterStrategy <NotGate>(new MaxInputsValidation(1));

            // OR gate validation
            validationStrategyFactory.RegisterStrategy <OrGate>(new MinInputsValidation(2));
            validationStrategyFactory.RegisterStrategy <OrGate>(new MinOutputsValidation(1));

            // XOR gate validation
            validationStrategyFactory.RegisterStrategy <XorGate>(new MinInputsValidation(2));
            validationStrategyFactory.RegisterStrategy <XorGate>(new MinOutputsValidation(1));

            SimpleIoc.Default.Register <CircuitViewModel>();
        }