コード例 #1
0
        public void AddNewSANTypeData()
        {
            var td = new SANTypeData {
                SANTypeDataID = -1, BiotaID = Taxon.TaxaID.GetValueOrDefault(-1)
            };
            var viewModel = new SANTypeDataViewModel(td);

            viewModel.Museum = NextNewName("<New {0}>", _typeData, () => viewModel.Museum);
            _typeData.Add(viewModel);
            lstTypeData.SelectedItem = viewModel;
            RegisterPendingChange(new InsertSANTypeDataCommand(td));
        }
コード例 #2
0
        public SpeciesAvailableNameControl(TaxonViewModel taxon, User user) : base(taxon, user, "SpeciesAvailabeNames::")
        {
            InitializeComponent();

            txtReference.BindUser(user, LookupType.Reference);
            txtNameStatus.BindUser(user, PickListType.Phrase, "SAN Name Status", TraitCategoryType.Taxon);
            txtInstitution.BindUser(user, PickListType.Phrase, "Institution", TraitCategoryType.Taxon);
            txtSpecimen.BindUser(user, LookupType.Material);


            int taxaId = taxon.TaxaID.GetValueOrDefault(-1);
            SpeciesAvailableName data = Service.GetSpeciesAvailableName(taxaId) ?? new SpeciesAvailableName {
                BiotaID = taxaId
            };

            _model = new SpeciesAvailableNameViewModel(data);

            _model.DataChanged += changed => RegisterUniquePendingChange(new UpdateSanDatabaseCommand(_model.Model));

            cmbPrimaryType.SelectionChanged += (source, e) => {
                var tstr = cmbPrimaryType.SelectedItem as string;
                if (tstr != null && _SANTypeDataTypes.ContainsKey(tstr))
                {
                    var typedata = _SANTypeDataTypes[tstr];
                    cmbSecondaryType.ItemsSource = typedata.SecondaryTypes;
                }
            };

            if (taxon.TaxaID != null)
            {
                List <SANTypeDataType> santypes = Service.GetSANTypeDataTypes(taxon.TaxaID.Value);
                foreach (SANTypeDataType type in santypes)
                {
                    _SANTypeDataTypes[type.PrimaryType] = type;
                }

                cmbPrimaryType.ItemsSource = santypes.ConvertAll(st => st.PrimaryType);
            }

            var tdlist = Service.GetSANTypeData(taxaId);

            _typeData = new ObservableCollection <SANTypeDataViewModel>(tdlist.ConvertAll(d => {
                var viewmodel          = new SANTypeDataViewModel(d);
                viewmodel.DataChanged += changed => {
                    if (viewmodel.SANTypeDataID >= 0)
                    {
                        RegisterUniquePendingChange(new UpdateSANTypeDataCommand(viewmodel.Model));
                    }
                };
                return(viewmodel);
            }));
            lstTypeData.ItemsSource = _typeData;

            lstTypeData.SelectionChanged += (source, e) => {
                gridTypeData.IsEnabled = lstTypeData.SelectedItem != null;

                var availableTypes = new List <string> {
                    cmbPrimaryType.Text
                };
                var secondaries = cmbSecondaryType.ItemsSource as IEnumerable <string>;

                if (secondaries != null)
                {
                    availableTypes.AddRange(secondaries);
                }

                cmbType.ItemsSource      = availableTypes;
                gridTypeData.DataContext = lstTypeData.SelectedItem;
            };

            DataContext = _model;

            gridTypeData.IsEnabled = false;


            this.BackgroundInvoke(() => {
                if (_typeData.Count > 0)
                {
                    lstTypeData.SelectedIndex = 0;
                }
            });
        }