public MaterialForTrapReport(User user, SiteExplorerNodeViewModel trap)
            : base(user)
        {
            this.Trap = trap;

            RegisterViewer(new TabularDataViewerSource());

            DefineColumn("BiotaFullName", "Taxa");
            DefineColumn("FullRegion", "Region");
            DefineColumn("Local", "Locality");
            DefineColumn("FormattedLatLong", "Lat/Long");
            DefineColumn("Collectors");
            DefineColumn("Dates");
            DefineColumn("AccessionNo");
        }
Exemple #2
0
        public SiteCompare(Window owner, User user, SiteExplorerNodeViewModel dest, List<SiteExplorerNodeViewModel> otherSites)
        {
            this.Owner = owner;
            this.User = user;
            InitializeComponent();
            Destination = dest;
            _compareModel = new ObservableCollection<SiteExplorerNodeViewModel>(otherSites.ConvertAll((vm) => {
                vm.IsSelected = true;
                return vm;
            }));
            txtMergeInto.Text = dest.Name;
            lstRemove.ItemsSource = _compareModel;

            grpDiff.DataContextChanged += new DependencyPropertyChangedEventHandler(grpDiff_DataContextChanged);

            if (_compareModel.Count > 0) {
                lstRemove.SelectedItem = _compareModel[0];
            }
        }
Exemple #3
0
        public RapidDataEntry(MaterialExplorer explorer, User user, int objectId, SiteExplorerNodeType objectType, SiteExplorerNodeViewModel parent)
            : base(user, "RDE:" + objectType.ToString() + ":" + objectId)
        {
            // Bind input gestures to the commands...
            AddNewSiteCmd.InputGestures.Add(new KeyGesture(Key.T, ModifierKeys.Control));
            AddNewSiteVisitCmd.InputGestures.Add(new KeyGesture(Key.I, ModifierKeys.Control));
            AddNewMaterialCmd.InputGestures.Add(new KeyGesture(Key.M, ModifierKeys.Control));
            MoveNextCmd.InputGestures.Add(new KeyGesture(Key.N, ModifierKeys.Control));
            MovePreviousCmd.InputGestures.Add(new KeyGesture(Key.P, ModifierKeys.Control));
            UnlockAllCmd.InputGestures.Add(new KeyGesture(Key.U, ModifierKeys.Control));

            InitializeComponent();

            _objectId = objectId;
            _objectType = objectType;
            ParentNode = parent;
            Explorer = explorer;

            Loaded += RapidDataEntryLoaded;
            ChangesCommitted += RapidDataEntryChangesCommitted;
        }
        internal SiteExplorerNodeViewModel AddNewNode(HierarchicalViewModelBase parent, SiteExplorerNodeType nodeType, Func<SiteExplorerNodeViewModel, DatabaseCommand> commandFactoryFunction)
        {
            if (parent != null) {
                parent.IsExpanded = true;
            }

            var model = new SiteExplorerNode();
            model.Name = string.Format("<New {0}>", nodeType.ToString());
            if (parent is SiteExplorerNodeViewModel) {
                model.ParentID = (parent as SiteExplorerNodeViewModel).ElemID;
            }
            model.ElemType = nodeType.ToString();
            model.ElemID = -1;
            model.RegionID = -1;

            var viewModel = new SiteExplorerNodeViewModel(model);
            if (parent != null) {
                viewModel.Parent = parent;
                parent.Children.Add(viewModel);
            }

            viewModel.IsSelected = true;
            viewModel.IsRenaming = true;

            if (commandFactoryFunction != null) {
                RegisterPendingChange(commandFactoryFunction(viewModel), this);
            }

            return viewModel;
        }
 internal void EditRegion(SiteExplorerNodeViewModel region)
 {
     EditNode(region, (readOnly) => { return new RegionDetails(User, region.ElemID, readOnly); }, PermissionCategory.SPARC_REGION);
 }
        private void MergeNodes(SiteExplorerNodeViewModel oldNode, SiteExplorerNodeViewModel newNode)
        {
            DatabaseCommand mergeAction = null;
            switch (oldNode.NodeType) {
                case SiteExplorerNodeType.SiteGroup:
                    mergeAction = new MergeSiteGroupCommand(oldNode.Model, newNode.Model);
                    break;
                case SiteExplorerNodeType.SiteVisit:
                    mergeAction = new MergeSiteVisitCommand(oldNode.Model, newNode.Model);
                    break;
                case SiteExplorerNodeType.Material:
                    mergeAction = new MergeMaterialCommand(oldNode.Model, newNode.Model);
                    break;
                case SiteExplorerNodeType.Trap:
                    mergeAction = new MergeTrapCommand(oldNode.Model, newNode.Model);
                    break;
                case SiteExplorerNodeType.Region:
                    mergeAction = new MergeRegionCommand(oldNode.Model, newNode.Model);
                    break;
            }

            if (mergeAction != null) {
                if (this.Question(string.Format("Are you sure you want to merge '{0}' with '{1}'?", oldNode.DisplayLabel, newNode.DisplayLabel), "Merge " + oldNode.NodeType)) {
                    oldNode.IsDeleted = true;
                    newNode.IsChanged = true;
                    RegisterPendingChange(mergeAction, this);
                }
            }
        }
        private void MoveNode(SiteExplorerNodeViewModel source, SiteExplorerNodeViewModel dest)
        {
            DatabaseCommand moveAction = null;
            if (source.Parent == dest) {
                ErrorMessage.Show("'{0}' is already a child of '{1}'.", source.Name, dest.Name);
                return;
            }

            switch (source.NodeType) {
                case SiteExplorerNodeType.Site:
                    moveAction = new MoveSiteCommand(source.Model, dest.Model);
                    break;
                case SiteExplorerNodeType.SiteGroup:
                    moveAction = new MoveSiteGroupCommand(source.Model, dest.Model);
                    break;
                case SiteExplorerNodeType.Region:
                    moveAction = new MoveRegionCommand(source.Model, dest.Model);
                    break;
                case SiteExplorerNodeType.SiteVisit:
                    moveAction = new MoveSiteVisitCommand(source.Model, dest.Model);
                    break;
                case SiteExplorerNodeType.Material:
                    moveAction = new MoveMaterialCommand(source.Model, dest.Model);
                    break;
                case SiteExplorerNodeType.Trap:
                    moveAction = new MoveTrapCommand(source.Model, dest.Model);
                    break;
            }

            if (moveAction != null) {
                if (source.Parent != null) {
                    source.Parent.Children.Remove(source);
                }
                dest.IsChanged = true;
                dest.IsExpanded = true;
                dest.Children.Add(source);
                RegisterPendingChange(moveAction, this);
            }
        }
 private void AskMoveMergeNode(SiteExplorerNodeViewModel source, SiteExplorerNodeViewModel dest)
 {
     // Regions and site groups can either be merged or moved. Need to ask...
     var frm = new DragDropOptions(this.FindParentWindow());
     if (frm.ShowDialog().GetValueOrDefault(false)) {
         if (frm.DragDropOption == DragDropOption.Merge) {
             MergeNodes(source, dest);
         } else {
             MoveNode(source, dest);
         }
     }
 }
        private void EditNode(SiteExplorerNodeViewModel node, Func<bool, DatabaseCommandControl> editorFactory, PermissionCategory permCategory)
        {
            if (node.ElemID < 0) {
                ErrorMessage.Show("You must first apply the changes before editing the details of this item!");
                return;
            } else {
                var readOnly = !User.HasPermission(permCategory, PERMISSION_MASK.UPDATE);
                var editor = editorFactory(readOnly);
                string caption = "";

                var readOnlyStr = readOnly ? "(Read Only)" : "";
                if (node.IsTemplate) {
                    caption = string.Format("{0} Template [{1}] {2}", node.NodeType.ToString(), node.ElemID, readOnlyStr);
                } else {
                    caption = string.Format("{0} Detail {1} [{2}] {3}", node.NodeType.ToString(), node.Name, node.ElemID, readOnlyStr);
                }

                PluginManager.Instance.AddNonDockableContent(Owner, editor, caption, SizeToContent.Manual);
            }
        }
Exemple #10
0
 internal void DeleteMaterial(SiteExplorerNodeViewModel material)
 {
     DeleteNode(material, () => { return new DeleteMaterialCommand(material.ElemID); }, PermissionCategory.SPARC_MATERIAL);
 }
Exemple #11
0
 internal void EditTrap(SiteExplorerNodeViewModel trap)
 {
     EditNode(trap, (readOnly) => { return new TrapDetails(User, trap.ElemID, readOnly); }, PermissionCategory.SPARC_TRAP);
 }
Exemple #12
0
 internal void AddTrap(SiteExplorerNodeViewModel parent)
 {
     AddNewNode(parent, SiteExplorerNodeType.Trap, (viewModel) => { return new InsertTrapCommand(viewModel.Model, viewModel); });
 }
Exemple #13
0
 internal PinnableObject CreatePinnable(SiteExplorerNodeViewModel node)
 {
     return CreatePinnable(node.ElemType, node.ElemID);
 }
Exemple #14
0
 internal void AddSiteVisit(SiteExplorerNodeViewModel parent, int templateId = 0)
 {
     AddNewNode(parent, SiteExplorerNodeType.SiteVisit, (viewModel) => { return new InsertSiteVisitCommand(viewModel.Model, viewModel, templateId); });
 }
Exemple #15
0
 internal SiteExplorerNodeViewModel AddSiteGroup(SiteExplorerNodeViewModel parent)
 {
     return AddNewNode(parent, SiteExplorerNodeType.SiteGroup, (viewModel) => { return new InsertSiteGroupCommand(viewModel.Model, viewModel); });
 }
Exemple #16
0
 internal SiteExplorerNodeViewModel AddSite(SiteExplorerNodeViewModel parent, int templateId = 0)
 {
     return AddNewNode(parent, SiteExplorerNodeType.Site, (viewModel) => { return new InsertSiteCommand(viewModel.Model, viewModel, templateId); });
 }
Exemple #17
0
 internal void EditSite(SiteExplorerNodeViewModel site)
 {
     EditNode(site, (readOnly) => { return new SiteDetails(User, site.ElemID, readOnly); }, PermissionCategory.SPARC_SITE);
 }
Exemple #18
0
        internal void DeleteNode(SiteExplorerNodeViewModel node, Func<DatabaseCommand> actionFactory, PermissionCategory permCategory)
        {
            if (!node.IsDeleted) {

                if (!User.HasPermission(permCategory, PERMISSION_MASK.DELETE)) {
                    ErrorMessage.Show("You do not have permission to delete this item!");
                    return;
                }

                node.Traverse((child) => {
                    child.IsDeleted = true;
                });

                if (actionFactory != null) {
                    RegisterPendingChange(actionFactory(), this);
                }
            }
        }
Exemple #19
0
 internal void EditSiteVisit(SiteExplorerNodeViewModel sitevisit)
 {
     EditNode(sitevisit, (readOnly) => {
         var form = new SiteVisitDetails(User, sitevisit.ElemID, readOnly);
         form.ChangesCommitted += new PendingChangesCommittedHandler((s) => {
             Refresh();
         });
         return form;
     }, PermissionCategory.SPARC_SITEVISIT);
 }
Exemple #20
0
 internal void DeleteRegion(SiteExplorerNodeViewModel region)
 {
     DeleteNode(region, () => { return new DeleteRegionCommand(region.ElemID); }, PermissionCategory.SPARC_REGION);
 }
Exemple #21
0
 internal void RefreshNode(SiteExplorerNodeViewModel parent)
 {
     var surrogateModel = new ObservableCollection<HierarchicalViewModelBase>();
     surrogateModel.Add(parent);
     var expanded = GetExpandedParentages(surrogateModel);
     parent.IsChildrenLoaded = false;
     parent.IsExpanded = false;
     ExpandParentages(surrogateModel, expanded);
 }
Exemple #22
0
 internal void DeleteSiteVisit(SiteExplorerNodeViewModel group)
 {
     DeleteNode(group, () => { return new DeleteSiteVisitCommand(group.ElemID); }, PermissionCategory.SPARC_SITEVISIT);
 }
Exemple #23
0
        private ObservableCollection<HierarchicalViewModelBase> BuildExplorerModel(List<SiteExplorerNode> list, bool isFindModel)
        {
            list.Sort((item1, item2) => {
                int compare = item1.ElemType.CompareTo(item2.ElemType);
                if (compare == 0) {
                    return item1.Name.CompareTo(item2.Name);
                }
                return compare;
            });

            var regionsModel = new ObservableCollection<HierarchicalViewModelBase>(list.ConvertAll((model) => {
                var viewModel = new SiteExplorerNodeViewModel(model, isFindModel);

                if (model.NumChildren > 0) {
                    viewModel.Children.Add(new ViewModelPlaceholder("Loading..."));
                    viewModel.LazyLoadChildren += new HierarchicalViewModelAction(viewModel_LazyLoadChildren);
                }
                return viewModel;
            }));
            return regionsModel;
        }
Exemple #24
0
 internal void DeleteTrap(SiteExplorerNodeViewModel trap)
 {
     DeleteNode(trap, () => { return new DeleteTrapCommand(trap.ElemID); }, PermissionCategory.SPARC_TRAP);
 }
Exemple #25
0
 private string MakeDropMapKey(SiteExplorerNodeViewModel source, SiteExplorerNodeViewModel dest)
 {
     return MakeDropMapKey(source.NodeType, dest.NodeType);
 }
Exemple #26
0
        public void ShowInContents(SiteExplorerNodeViewModel node)
        {
            if (node == null) {
                return;
            }

            var parentage = new MaterialService(User).GetSiteExplorerNodeParentage(node.ElemID, node.NodeType);
            var childlist = RegionsModel;

            tabMaterial.InvokeIfRequired(() => {
                tabMaterial.SelectedIndex = 0; // ensure contents tab is showing
            });

            tvwMaterial.InvokeIfRequired(() => {
                tvwMaterial.Focus();
            });

            tvwMaterial.InvokeIfRequired(() => {
                HierarchicalViewModelBase child = null;
                foreach (SiteExplorerNode element in parentage) {
                    child = childlist.FirstOrDefault((vm) => (vm.ObjectID.HasValue ? vm.ObjectID.Value : 0) == element.ElemID);
                    if (child == null) {
                        break;
                    }
                    if (child.Parent != null && !child.Parent.IsExpanded) {
                        child.Parent.IsExpanded = true;

                    }

                    child.IsExpanded = true;
                    childlist = child.Children;
                }

                if (child != null) {
                    tvwMaterial.BringModelToView(child, regionsNode);
                    child.IsSelected = true;
                }

            });
        }
Exemple #27
0
 private void MergeSites(SiteExplorerNodeViewModel oldNode, SiteExplorerNodeViewModel newNode)
 {
     var frm = new MergeSiteOptions(this.FindParentWindow(), User, oldNode, newNode);
     if (frm.ShowDialog().GetValueOrDefault(false)) {
         newNode.IsChanged = true;
         foreach (SiteExplorerNodeViewModel other in frm.SelectedNodes) {
             other.IsDeleted = true;
             RegisterPendingChange(new MergeSiteCommand(other.Model, newNode.Model), this);
         }
     }
 }
Exemple #28
0
        internal void EditRDE(SiteExplorerNodeViewModel node)
        {
            RapidDataEntry control = null;

            if (node != null && (node.NodeType == SiteExplorerNodeType.Site || node.NodeType == SiteExplorerNodeType.SiteVisit || node.NodeType == SiteExplorerNodeType.Material)) {
                control = new RapidDataEntry(this, User, node.ElemID, node.NodeType, node);
            } else {
                control = new RapidDataEntry(this, User, -1, SiteExplorerNodeType.Site, null);
            }

            control.ChangesCommitted += new PendingChangesCommittedHandler((s) => {
                Refresh();
            });

            PluginManager.Instance.AddNonDockableContent(Owner, control, "RDE", SizeToContent.Manual);
        }
Exemple #29
0
 internal void EditMaterial(SiteExplorerNodeViewModel material)
 {
     EditNode(material, (readOnly) => {
         var form = new MaterialDetails(User, material.ElemID, readOnly);
         form.ChangesCommitted += new PendingChangesCommittedHandler((s) => {
             Refresh();
         });
         return form;
     }, PermissionCategory.SPARC_MATERIAL);
 }
Exemple #30
0
 internal void AddMaterial(SiteExplorerNodeViewModel parent, int templateId = 0)
 {
     AddNewNode(parent, SiteExplorerNodeType.Material, (viewModel) => { return new InsertMaterialCommand(viewModel.Model, viewModel, templateId); });
 }