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"); }
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]; } }
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); } }
internal void DeleteMaterial(SiteExplorerNodeViewModel material) { DeleteNode(material, () => { return new DeleteMaterialCommand(material.ElemID); }, PermissionCategory.SPARC_MATERIAL); }
internal void EditTrap(SiteExplorerNodeViewModel trap) { EditNode(trap, (readOnly) => { return new TrapDetails(User, trap.ElemID, readOnly); }, PermissionCategory.SPARC_TRAP); }
internal void AddTrap(SiteExplorerNodeViewModel parent) { AddNewNode(parent, SiteExplorerNodeType.Trap, (viewModel) => { return new InsertTrapCommand(viewModel.Model, viewModel); }); }
internal PinnableObject CreatePinnable(SiteExplorerNodeViewModel node) { return CreatePinnable(node.ElemType, node.ElemID); }
internal void AddSiteVisit(SiteExplorerNodeViewModel parent, int templateId = 0) { AddNewNode(parent, SiteExplorerNodeType.SiteVisit, (viewModel) => { return new InsertSiteVisitCommand(viewModel.Model, viewModel, templateId); }); }
internal SiteExplorerNodeViewModel AddSiteGroup(SiteExplorerNodeViewModel parent) { return AddNewNode(parent, SiteExplorerNodeType.SiteGroup, (viewModel) => { return new InsertSiteGroupCommand(viewModel.Model, viewModel); }); }
internal SiteExplorerNodeViewModel AddSite(SiteExplorerNodeViewModel parent, int templateId = 0) { return AddNewNode(parent, SiteExplorerNodeType.Site, (viewModel) => { return new InsertSiteCommand(viewModel.Model, viewModel, templateId); }); }
internal void EditSite(SiteExplorerNodeViewModel site) { EditNode(site, (readOnly) => { return new SiteDetails(User, site.ElemID, readOnly); }, PermissionCategory.SPARC_SITE); }
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); } } }
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); }
internal void DeleteRegion(SiteExplorerNodeViewModel region) { DeleteNode(region, () => { return new DeleteRegionCommand(region.ElemID); }, PermissionCategory.SPARC_REGION); }
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); }
internal void DeleteSiteVisit(SiteExplorerNodeViewModel group) { DeleteNode(group, () => { return new DeleteSiteVisitCommand(group.ElemID); }, PermissionCategory.SPARC_SITEVISIT); }
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; }
internal void DeleteTrap(SiteExplorerNodeViewModel trap) { DeleteNode(trap, () => { return new DeleteTrapCommand(trap.ElemID); }, PermissionCategory.SPARC_TRAP); }
private string MakeDropMapKey(SiteExplorerNodeViewModel source, SiteExplorerNodeViewModel dest) { return MakeDropMapKey(source.NodeType, dest.NodeType); }
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; } }); }
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); } } }
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); }
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); }
internal void AddMaterial(SiteExplorerNodeViewModel parent, int templateId = 0) { AddNewNode(parent, SiteExplorerNodeType.Material, (viewModel) => { return new InsertMaterialCommand(viewModel.Model, viewModel, templateId); }); }