コード例 #1
0
 private void treeView_MouseMove(object sender, MouseEventArgs e)
 {
     if (e.LeftButton == MouseButtonState.Pressed)
     {
         if (DropAdapter == null)
         {
             return;
         }
         if (!(e.Source is BaseTreeView))
         {
             return;
         }
         if (treeView.SelectedItem == null)
         {
             return;
         }
         TreeNavigationItem selectedTreeNavigationItem = treeView.SelectedItem as TreeNavigationItem;
         if (!DropAdapter.DragStart(e, selectedTreeNavigationItem))
         {
             return;
         }
         TreeViewItem treeViewItem = GetTreeViewItemAt(e.GetPosition(treeView));
         //_dragAdorner = new DragAdorner(treeViewItem, treeViewItem.DesiredSize, e.GetPosition(treeView));
         DragDrop.DoDragDrop(treeView, treeView.SelectedItem, DragDropEffects.All);
         //_dragAdorner.Detach();
     }
 }
コード例 #2
0
 protected override async Task <List <TreeNavigationItem> > DoLoadChildren(TreeNavigationItem parentTreeNavigationItem)
 {
     return(await Task.Run(() =>
     {
         return _service.GetChildren(MasterNavigationContext.CreateMasterNavigationContext(_masterNavigationItem), parentTreeNavigationItem);
     }));
 }
コード例 #3
0
 public static ExecutionEvent Create(TreeNavigationItem selectedTreeNavigationItem, TreeNavigationItem masterTreeNavigationItem)
 {
     return(new ExecutionEvent(new List <TreeNavigationItem>()
     {
         selectedTreeNavigationItem
     }, masterTreeNavigationItem));
 }
コード例 #4
0
        public void Drop(DragEventArgs e, TreeNavigationItem draggedTreeNavigationItem, TreeNavigationItem targetTreeNavigationItem)
        {
            IDropHandler activeDropHandler = null;

            if (draggedTreeNavigationItem == null || targetTreeNavigationItem == null)
            {
                return;
            }
            if (draggedTreeNavigationItem.Id.Equals(targetTreeNavigationItem.Id))
            {
                return;
            }
            foreach (IDropHandler dropHandler in _dropHandlers)
            {
                if (dropHandler.IsActive(draggedTreeNavigationItem, targetTreeNavigationItem))
                {
                    activeDropHandler = dropHandler;
                    break;
                }
            }
            if (activeDropHandler != null)
            {
                activeDropHandler.Drop(draggedTreeNavigationItem, targetTreeNavigationItem);
            }
        }
コード例 #5
0
 protected virtual async Task <List <TreeNavigationItem> > DoLoadChildren(TreeNavigationItem parentTreeNavigationItem)
 {
     return(await Task.Run(() =>
     {
         return _service.GetChildren(NavigationContext.CreateNavigationContext(), parentTreeNavigationItem);
     }));
 }
コード例 #6
0
 public virtual void DragOver(DragEventArgs e, TreeNavigationItem draggedTreeNavigationItem, TreeNavigationItem targetTreeNavigationItem)
 {
     if (!ValidateDragAndDrop(_dragAndDropEqualityValidators, draggedTreeNavigationItem, targetTreeNavigationItem))
     {
         e.Effects = DragDropEffects.None;
         return;
     }
     e.Effects = DragDropEffects.Move;
 }
コード例 #7
0
 public GenerateLiquibaseWindowModelView(TreeNavigationItem selectedTreeNavigationItem)
     : base("GenerateLiquibaseWindowModelView")
 {
     _generateService            = ServiceActivator.Get <IGenerateLiquibaseService>();
     _selectedTreeNavigationItem = selectedTreeNavigationItem;
     LoadCommand     = new RelayCommand(OnLoadCommand);
     GenerateCommand = new RelayCommand(OnGenerateCommand, x => !IsThreadRunning);
     CloseCommand    = new RelayCommand(OnCloseCommand, x => !IsThreadRunning);
 }
コード例 #8
0
        public UIElement GenerateUiControl(BaseDto dto, PropertyInfo propertyInfo, Grid grid, int rowIndex)
        {
            CreateLabel(propertyInfo, grid, rowIndex);

            Grid referenceGrid = new Grid();

            referenceGrid.ColumnDefinitions.Add(new ColumnDefinition()
            {
                Width = new GridLength(1, GridUnitType.Star)
            });
            referenceGrid.ColumnDefinitions.Add(new ColumnDefinition()
            {
                Width = GridLength.Auto
            });
            referenceGrid.ColumnDefinitions.Add(new ColumnDefinition()
            {
                Width = GridLength.Auto
            });

            Label referenceLabel = CreateReferenceLabel(dto, propertyInfo);

            Button referenceButton = CreateButton("...", delegate
            {
                IReferenceEditor referenceEditor = CreateReferenceEditor(dto, propertyInfo); //(BaseReferenceEditor)Activator.CreateInstance(Type.GetType(editorAttribute.CompleteAssembly));
                TreeNavigationItem selectedTreeNavigationItem = DialogUtils.OpenReferenceWindow(referenceEditor.GetProposals);
                if (selectedTreeNavigationItem != null)
                {
                    ReferenceString referenceString = new ReferenceString(selectedTreeNavigationItem.Id, selectedTreeNavigationItem.Name);
                    propertyInfo.SetValue(dto, referenceString);
                    referenceLabel.Content = referenceString.GetValue();
                }
            });

            Image image = new Image();

            image.Source = new BitmapImage(RemoveReferenceImage);
            Button removeReferenceButton = CreateButton(image, delegate
            {
                propertyInfo.SetValue(dto, null);
                referenceLabel.Content = string.Empty;
            });

            referenceGrid.Children.Add(referenceLabel);
            referenceGrid.Children.Add(referenceButton);
            referenceGrid.Children.Add(removeReferenceButton);

            Grid.SetColumn(referenceLabel, 0);
            Grid.SetColumn(referenceButton, 1);
            Grid.SetColumn(removeReferenceButton, 2);

            grid.Children.Add(referenceGrid);
            Grid.SetRow(referenceGrid, rowIndex);
            Grid.SetColumn(referenceGrid, 1);

            return(referenceGrid);
        }
コード例 #9
0
        public void Drop(TreeNavigationItem draggedTreeNavigationItem, TreeNavigationItem targetTreeNavigationItem)
        {
            Connection.GetInstance().StartTransaction();
            IMoveAwareCRUDService moveAwareCRUDService = ServiceActivator.Get <IFolderCRUDService>();

            moveAwareCRUDService.Move(draggedTreeNavigationItem.Id, targetTreeNavigationItem.Id);
            Connection.GetInstance().EndTransaction();
            Publisher.GetInstance().Publish(PublishEvent.CreateDeletionEvent(draggedTreeNavigationItem.Id, draggedTreeNavigationItem.GetParentId()));
            Publisher.GetInstance().Publish(PublishEvent.CreateCreationEvent(draggedTreeNavigationItem.Id, targetTreeNavigationItem.GetParentId()));
        }
コード例 #10
0
        private void treeView_Drop(object sender, DragEventArgs e)
        {
            if (DropAdapter == null)
            {
                return;
            }
            TreeNavigationItem targetTreeNavigationItem  = GetTreeNavigationItemAt(e.GetPosition(treeView));
            TreeNavigationItem draggedTreeNavigationItem = GetDataFromDragEventArgs(e);

            DropAdapter.Drop(e, draggedTreeNavigationItem, targetTreeNavigationItem);
        }
        private List <TreeNavigationItem> CreateVirtualFolders(Guid compositeTypeId)
        {
            List <TreeNavigationItem> roots      = new List <TreeNavigationItem>();
            TreeNavigationItem        presetRoot = new TreeNavigationItem(IdConstants.PRESET_FOLDER_ID, "Presets", NavigationType.FOLDER);
            List <TreeNavigationItem> presets    = GetChildrenToFolder(presetRoot.Id, compositeTypeId);

            ExtendTreeNavigationItems(presets, presetRoot);
            presetRoot.Children = new ObservableCollection <TreeNavigationItem>(presets);
            roots.Add(presetRoot);
            return(roots);
        }
コード例 #12
0
        public async void LoadChildren(TreeNavigationItem parentTreeNavigationItem)
        {
            if (parentTreeNavigationItem == null)
            {
                return;
            }

            if (parentTreeNavigationItem.HasRemoteChildren)
            {
                parentTreeNavigationItem.HasRemoteChildren = false;
                parentTreeNavigationItem.SetChildren(await DoLoadChildren(parentTreeNavigationItem));
            }
        }
コード例 #13
0
        private void treeView_DragOver(object sender, DragEventArgs e)
        {
            if (DropAdapter == null)
            {
                return;
            }
            TreeNavigationItem targetTreeNavigationItem  = GetTreeNavigationItemAt(e.GetPosition(treeView));
            TreeNavigationItem draggedTreeNavigationItem = GetDataFromDragEventArgs(e);

            //      _dragAdorner.UpdatePosition(e.GetPosition(treeView));
            DropAdapter.DragOver(e, draggedTreeNavigationItem, targetTreeNavigationItem);
            e.Handled = true;
        }
コード例 #14
0
        public async void OnSelectionChange(object selection)
        {
            if (!(selection is TreeNavigationItem))
            {
                return;
            }
            _masterNavigationItem = (TreeNavigationItem)selection;
            Roots = new ObservableCollection <TreeNavigationItem>();
            Roots.Add(new TreeNavigationItem(Guid.Empty, ResourceUtils.GetMessage(MessageKeyConstants.LABEL_LOADING), NavigationType.FOLDER));
            OnPropertyChanged(() => Roots);

            Roots = new ObservableCollection <TreeNavigationItem>(await DoLoadRoots());
            OnPropertyChanged(() => Roots);
        }
コード例 #15
0
        protected virtual void ExtendTreeNavigationItems(List <TreeNavigationItem> treeNavigationItems, TreeNavigationItem parentTreeNavigationItem)
        {
            TreeNavigationItem loadingTreeNavigationItem = new TreeNavigationItem(Guid.Empty, "Loading...", NavigationType.FOLDER);

            foreach (TreeNavigationItem treeNavigationItem in treeNavigationItems)
            {
                if (treeNavigationItem.HasRemoteChildren)
                {
                    treeNavigationItem.Children.Add(loadingTreeNavigationItem);
                }
                if (parentTreeNavigationItem != null)
                {
                    treeNavigationItem.Parent = parentTreeNavigationItem;
                }
            }
        }
コード例 #16
0
 protected TreeNavigationItem Find(ObservableCollection <TreeNavigationItem> treeNavigationItems, Guid id)
 {
     foreach (TreeNavigationItem treeNavigationItem in treeNavigationItems)
     {
         if (id.Equals(treeNavigationItem.Id))
         {
             return(treeNavigationItem);
         }
         TreeNavigationItem foundTreeNavigationItem = Find(treeNavigationItem.Children, id);
         if (foundTreeNavigationItem != null)
         {
             return(foundTreeNavigationItem);
         }
     }
     return(null);
 }
        public TreeNavigationItem Reload(TreeNavigationItem treeNavigationItem)
        {
            TreeNavigationItem updatedTreeNavigationItem = null;

            switch (treeNavigationItem.Type)
            {
            case NavigationType.PRESET:
                updatedTreeNavigationItem = _presetNavigationRepository.FindSpecificPreset(treeNavigationItem.Id);
                break;

            case NavigationType.COMPOSITE_PRESET_ELEMENT:
                updatedTreeNavigationItem = _compositePresetElementNavigationRepository.FindSpecificCompositePresetElement(treeNavigationItem.Id);
                break;
            }
            return(updatedTreeNavigationItem);
        }
コード例 #18
0
        private void DoUpdate(IList <TreeNavigationItem> children, TreeNavigationItem parentTreeNavigationItem, TreeNavigationItem originalTreeNavigationItem)
        {
            int indexOfUpdatedTreeNavigationItem = children.IndexOf(originalTreeNavigationItem);

            children.RemoveAt(indexOfUpdatedTreeNavigationItem);
            TreeNavigationItem updatedTreeNavigationItem = _service.Reload(originalTreeNavigationItem);

            updatedTreeNavigationItem.Parent            = parentTreeNavigationItem;
            updatedTreeNavigationItem.HasRemoteChildren = originalTreeNavigationItem.HasRemoteChildren;
            updatedTreeNavigationItem.Children          = originalTreeNavigationItem.Children;

            if (!updatedTreeNavigationItem.HasRemoteChildren && updatedTreeNavigationItem.Children.Count > 0)
            {
                updatedTreeNavigationItem.IsExpanded = true;
            }
            children.Insert(indexOfUpdatedTreeNavigationItem, updatedTreeNavigationItem);
        }
コード例 #19
0
        protected virtual void OnFilterChangedCommand(object obj)
        {
            if (string.IsNullOrEmpty(obj.ToString()))
            {
                Proposals.Filter = null;
            }

            Proposals.Filter = x =>
            {
                TreeNavigationItem treeNavigationItem = (TreeNavigationItem)x;
                if (treeNavigationItem == null)
                {
                    return(false);
                }
                return(treeNavigationItem.Name.ToLower().Contains(obj.ToString().ToLower()));
            };
        }
コード例 #20
0
        public GenerateCodeTypeTreeNavigationItem GetTypeToGenerate(Guid owningTypeId)
        {
            TreeNavigationItem        compositeTypeTreeNavigationItem         = _compositeTypeNavigationRepository.FindSpecific(owningTypeId);
            List <TreeNavigationItem> compositeTypeElementTreeNavigationItems = _compositeTypeElementNavigationRepository.FindChildren(owningTypeId);

            GenerateCodeTypeTreeNavigationItem generateCodeTypeTreeNavigationItem = new GenerateCodeTypeTreeNavigationItem();

            generateCodeTypeTreeNavigationItem.Name = compositeTypeTreeNavigationItem.Name;

            List <GenerateCodeTypeElementTreeNavigationItem> generateCodeTypeElementTreeNavigationItems = new List <GenerateCodeTypeElementTreeNavigationItem>();

            foreach (CompositeTypeElementTreeNavigationItem compositeTypeElementTreeNavigationItem in compositeTypeElementTreeNavigationItems)
            {
                generateCodeTypeTreeNavigationItem.Fields.Add(CreateGenerateCodeTypeElementTreeNavigationItem(compositeTypeElementTreeNavigationItem));
            }
            return(generateCodeTypeTreeNavigationItem);
        }
コード例 #21
0
        protected virtual void OnCreate(PublishEvent publishEvent)
        {
            TreeNavigationItem parentTreeNavigationItem = Find(Roots, publishEvent.ParentObjectId.Value);

            if (parentTreeNavigationItem == null)
            {
                return;
            }
            parentTreeNavigationItem.SetChildren(_service.GetChildren(NavigationContext.CreateNavigationContext(), parentTreeNavigationItem));
            parentTreeNavigationItem.IsExpanded = true;
            TreeNavigationItem affectedTreeNavigationItem = Find(Roots, publishEvent.AffectedObjectId);

            if (affectedTreeNavigationItem != null)
            {
                affectedTreeNavigationItem.IsSelected = true;
            }
        }
コード例 #22
0
            public int Compare(object x, object y)
            {
                TreeNavigationItem firstTreeNavigationItem  = x as TreeNavigationItem;
                TreeNavigationItem secondTreeNavigationItem = y as TreeNavigationItem;

                int compare = firstTreeNavigationItem.Type.CompareTo(secondTreeNavigationItem.Type);

                if (compare == 0)
                {
                    if (firstTreeNavigationItem.Name != null)
                    {
                        return(firstTreeNavigationItem.Name.CompareTo(secondTreeNavigationItem.Name));
                    }
                    return(firstTreeNavigationItem.ToString().CompareTo(secondTreeNavigationItem.ToString()));
                }
                return(compare);
            }
コード例 #23
0
        public void Drop(TreeNavigationItem draggedTreeNavigationItem, TreeNavigationItem targetTreeNavigationItem)
        {
            string name = Guid.NewGuid().ToString().Substring(0, 7);
            ICompositeTypeElementCRUDService compositeTypeElementCRUDService = ServiceActivator.Get <ICompositeTypeElementCRUDService>();
            CompositeTypeElementDto          compositeTypeElementDto         = new CompositeTypeElementDto();

            compositeTypeElementDto.Description          = name;
            compositeTypeElementDto.UniqueName           = name;
            compositeTypeElementDto.RuntimeId            = Guid.NewGuid();
            compositeTypeElementDto.ProjectId            = targetTreeNavigationItem.ProjectId;
            compositeTypeElementDto.OwningTypeId         = targetTreeNavigationItem.Id;
            compositeTypeElementDto.State                = State.NEW;
            compositeTypeElementDto.ElementTypeReference = new ReferenceString(draggedTreeNavigationItem.Id, draggedTreeNavigationItem.Name);
            Connection.GetInstance().StartTransaction();
            compositeTypeElementDto = compositeTypeElementCRUDService.Persist(compositeTypeElementDto);
            Connection.GetInstance().EndTransaction();
            Publisher.GetInstance().Publish(PublishEvent.CreateCreationEvent(compositeTypeElementDto.Id, compositeTypeElementDto.OwningTypeId));
        }
コード例 #24
0
        protected override void OnCreate(PublishEvent publishEvent)
        {
            TreeNavigationItem parentTreeNavigationItem = Find(Roots, publishEvent.AffectedObjectId);

            if (parentTreeNavigationItem == null)
            {
                return;
            }
            parentTreeNavigationItem.SetChildren(_service.GetChildren(MasterNavigationContext.CreateMasterNavigationContext(_masterNavigationItem), parentTreeNavigationItem));
            parentTreeNavigationItem.IsExpanded = true;

            TreeNavigationItem affectedTreeNavigationItem = Find(Roots, publishEvent.AffectedObjectId);

            if (affectedTreeNavigationItem != null)
            {
                affectedTreeNavigationItem.IsSelected = true;
            }
        }
コード例 #25
0
        protected virtual void OnDelete(PublishEvent publishEvent)
        {
            TreeNavigationItem treeNavigationItem = Find(Roots, publishEvent.AffectedObjectId);

            if (treeNavigationItem == null)
            {
                return;
            }
            if (treeNavigationItem.GetParentId() == null)
            {
                Roots.Remove(treeNavigationItem);
            }
            else
            {
                TreeNavigationItem parentTreeNavigationItem = treeNavigationItem.Parent;
                parentTreeNavigationItem.Children.Remove(treeNavigationItem);
            }
        }
コード例 #26
0
        protected virtual void OnUpdate(PublishEvent publishEvent)
        {
            TreeNavigationItem treeNavigationItem = Find(Roots, publishEvent.AffectedObjectId);

            if (treeNavigationItem == null)
            {
                return;
            }
            TreeNavigationItem parentTreeNavigationItem = treeNavigationItem.Parent;

            if (parentTreeNavigationItem == null)
            {
                DoUpdate(Roots, parentTreeNavigationItem, treeNavigationItem);
            }
            else
            {
                DoUpdate(parentTreeNavigationItem.Children, parentTreeNavigationItem, treeNavigationItem);
            }
        }
コード例 #27
0
        protected override FolderDto CreateNewDto(ExecutionEvent executionEvent)
        {
            FolderDto folderDto = base.CreateNewDto(executionEvent);

            folderDto.State = State.NEW;
            TreeNavigationItem selectedTreeNavigationItem = executionEvent.GetFirstSelectedTreeNavigationItem();

            if (NavigationType.PROJECT.Equals(selectedTreeNavigationItem.Type))
            {
                folderDto.ProjectId = selectedTreeNavigationItem.Id;
                folderDto.ParentId  = null;
            }
            else
            {
                folderDto.ProjectId = selectedTreeNavigationItem.ProjectId;
                folderDto.ParentId  = selectedTreeNavigationItem.Id;
            }
            return(folderDto);
        }
コード例 #28
0
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value == null)
            {
                return(null);
            }
            if (!(value is TreeNavigationItem))
            {
                return(null);
            }
            TreeNavigationItem treeNavigationItem = value as TreeNavigationItem;

            if (NavigationType.PRESET.Equals(treeNavigationItem.Type))
            {
                PresetTreeNavigationItem presetTreeNavigationItem = (PresetTreeNavigationItem)treeNavigationItem;
                if (presetTreeNavigationItem.IsDefault)
                {
                    return(new Uri("pack://application:,,,/Images/preset_default.png"));
                }
            }
            return(NavigationTypeToImage.NAVIGATION_TYPE_TO_IMAGE[treeNavigationItem.Type]);
        }
コード例 #29
0
        protected override void DoExecute(ExecutionEvent executionEvent)
        {
            try
            {
                ICollection <Guid> idsToRemove     = TreeNavigationItem.CollectIds(executionEvent.GetSelectedTreeNavigationItems());
                string             questionMessage = GetQuestionMessage(idsToRemove.Count, executionEvent.GetFirstSelectedTreeNavigationItem().Name);
                if (MessageBoxResult.No.Equals(MessageDialogUtils.Question(questionMessage, executionEvent.GetFirstSelectedTreeNavigationItem().Name)))
                {
                    return;
                }

                foreach (Guid idToRemove in idsToRemove)
                {
                    Delete(executionEvent, idToRemove);
                    OnSuccessful(executionEvent, idToRemove);
                }
            }
            catch (ValidationException ex)
            {
                WindowsManager.GetInstance().ShowDialog <MessageWindow>(new MessageWindowModelView(ex.GetValidationResult()));
            }
        }
コード例 #30
0
        private void AllowMultiSelection(TreeView treeView)
        {
            if (IsSelectionChangeActiveProperty == null)
            {
                return;
            }
            treeView.SelectedItemChanged += (a, b) =>
            {
                TreeNavigationItem treeNavigationItem = /*treeView.SelectedItem*/ b.NewValue as TreeNavigationItem;
                if (treeNavigationItem == null)
                {
                    return;
                }

                if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))
                {
                    object isSelectionChangeActive = IsSelectionChangeActiveProperty.GetValue(treeView, null);
                    IsSelectionChangeActiveProperty.SetValue(treeView, true, null);
                    SelectedItems.ForEach(item => item.IsSelected = true);
                    IsSelectionChangeActiveProperty.SetValue(treeView, isSelectionChangeActive, null);
                }
                else
                {
                    SelectedItems.ForEach(item => item.IsSelected = (item == treeNavigationItem));
                    SelectedItems.Clear();
                }

                if (!SelectedItems.Contains(treeNavigationItem))
                {
                    SelectedItems.Add(treeNavigationItem);
                }
                else
                {
                    treeNavigationItem.IsSelected = false;
                    SelectedItems.Remove(treeNavigationItem);
                }
            };
        }