private void trvBooks_Drop(object sender, DragEventArgs e)
        {
            try
            {
                if (e.Data.GetDataPresent(DataFormats.FileDrop, true))
                {
                    string[] fileNames = e.Data.GetData(DataFormats.FileDrop, true) as string[];

                    if (fileNames != null && fileNames.Length > 0)
                    {
                        TreeViewItem      trvNode    = new BauMvvm.Views.Tools.ToolsWpf().FindAncestor <TreeViewItem>((DependencyObject)e.OriginalSource);
                        BaseNodeViewModel nodeTarget = null;

                        // Si se ha encontrado algún nodo, recoge el objeto ViewModel
                        if (trvNode != null)
                        {
                            nodeTarget = trvNode.Header as BaseNodeViewModel;
                        }
                        // Crea los nodos de eBook
                        ViewModel.CreateEBookNodes(nodeTarget, fileNames,
                                                   BookLibraryPlugin.MainInstance.HostPluginsController.ControllerWindow.ShowQuestion("¿Desea eliminar los archivos originales?"));
                    }
                }
            }
            catch (Exception exception)
            {
                BookLibraryPlugin.MainInstance.HostPluginsController.ControllerWindow.ShowMessage("Excepción al recoger los archivos: " + exception.Message);
            }
        }
        public BlogSeeNewsControlView(BaseNodeViewModel nodeViewModel)
        {
            // Inicializa los componentes
            InitializeComponent();
            // Crea el temporizador de lectura
            _tmrRead          = new DispatcherTimer();
            _tmrRead.Interval = new TimeSpan(0, 0, 30);
            _tmrRead.Tick    += tmrRead_Tick;
            // Inicializa el ViewModel
            ViewModel              = CreateViewModel(nodeViewModel);
            grdData.DataContext    = ViewModel;
            lswEntries.ItemsSource = ViewModel.Entries;
            FormView = new BaseFormView(ViewModel);
            // Observa el evento PropertyChanged para ver cuándo se cambia el Html
            ViewModel.PropertyChanged += (sender, evntArgs) =>
            {
                if (evntArgs.PropertyName.EqualsIgnoreCase("HtmlNews"))
                {
                    ShowHtmlNews();
                }
            };
            // Añade el viewModel al explorador
            wbExplorer.DataContext      = ViewModel;
            wbExplorer.FunctionExecute += (sender, evntArgs) => ViewModel.ExecuteFromExplorer(evntArgs.Parameters);
            // Agrupa los elementos
            if (lswEntries.ItemsSource != null)
            {
                CollectionView           views            = (CollectionView)CollectionViewSource.GetDefaultView(lswEntries.ItemsSource);
                PropertyGroupDescription groupDescription = new PropertyGroupDescription("BlogName");

                views.GroupDescriptions.Add(groupDescription);
            }
            // Muestra el HTML
            ShowHtmlNews();
        }
        /// <summary>
        ///		Crea el ViewModel
        /// </summary>
        private BlogSeeNewsViewModel CreateViewModel(BaseNodeViewModel nodeViewModel)
        {
            BlogsModelCollection blogs = new BlogsModelCollection();

            // Obtiene la colección de blogs
            if (nodeViewModel != null)
            {
                blogs = nodeViewModel.GetBlogs();
            }
            // Devuelve el ViewModel
            return(new BlogSeeNewsViewModel(blogs));
        }
        /// <summary>
        ///		Corta / copia un nodo sobre otro
        /// </summary>
        private void DropNode(BaseNodeViewModel nodeSource, DependencyObject eventTarget, bool copy)
        {
            if (nodeSource != null)
            {
                BaseNodeViewModel nodeTarget = GetTreeNodeFromEventTarget(eventTarget);

                if (nodeTarget != null)
                {
                    ViewModel.Copy(nodeSource, nodeTarget, copy);
                }
            }
        }
        /// <summary>
        ///		Carga los nodos del árbol
        /// </summary>
        private TreeViewItemsViewModelCollection LoadTreeNodes(BaseNodeViewModel parent, FileModel file,
                                                               OwnerChildModelCollection childs)
        {
            TreeViewItemsViewModelCollection nodes = new TreeViewItemsViewModelCollection();

            // Crea los nodos
            if (childs != null)
            {
                foreach (OwnerChildModel ownerChild in childs)
                {
                    nodes.Add(new OwnerNodeViewModel(file, ownerChild, parent, ownerChild.HasChilds));
                }
            }
            // Devuelve la colección de nodos
            return(nodes);
        }
        /// <summary>
        ///		Obtiene los nodos correspondientes a las definiciones de objetos propietario
        /// </summary>
        private TreeViewItemsViewModelCollection LoadOwnerNodes(BaseNodeViewModel parent, FileModel file, OwnerChildModel owner,
                                                                OwnerObjectDefinitionModelCollection ownerDefinitions)
        {
            TreeViewItemsViewModelCollection nodes = new TreeViewItemsViewModelCollection();

            // Obtiene los nodos
            if (owner != null && owner.ObjectChilds != null && owner.ObjectChilds.Count > 0)
            {
                nodes = LoadTreeNodes(parent, file, owner.ObjectChilds);
            }
            else
            {
                // Normaliza los elementos hijo
                if (ownerDefinitions == null || ownerDefinitions.Count == 0)
                {
                    if (file is ProjectModel)
                    {
                        ownerDefinitions = (file as ProjectModel)?.Definition.OwnerChilds;
                    }
                    else
                    {
                        ownerDefinitions = file.FileDefinition.OwnerChilds;
                    }
                }
                // Carga los nodos
                foreach (OwnerObjectDefinitionModel ownerDefinition in ownerDefinitions)
                {
                    if (ownerDefinition.IsRootNode)
                    {
                        nodes.Add(new OwnerNodeViewModel(file, new OwnerChildModel(file.FullFileName + "_" + ownerDefinition.GlobalId,
                                                                                   file, ownerDefinition.Name,
                                                                                   ownerDefinition, ownerDefinition.OwnerChilds.Count > 0),
                                                         parent));
                    }
                    else
                    {
                        nodes = LoadTreeNodes(parent, file,
                                              SourceEditorViewModel.Instance.MessagesController.LoadOwnerChilds(file, owner));
                    }
                }
            }
            // Devuelve la colección de nodos
            return(nodes);
        }
        private void trvExplorer_Drop(object sender, DragEventArgs e)
        {
            BaseNodeViewModel nodeSource = _dragDropController.GetDragDropFileNode(e.Data) as BaseNodeViewModel;

            if (nodeSource != null)
            {
                TreeViewItem trvNode = new Libraries.BauMvvm.Views.Tools.ToolsWpf().FindAncestor <TreeViewItem>((DependencyObject)e.OriginalSource);

                if (trvNode != null)
                {
                    BaseNodeViewModel nodeTarget = trvNode.Header as BaseNodeViewModel;

                    if (nodeSource != null && nodeTarget != null)
                    {
                        ViewModel.Copy(nodeSource, nodeTarget,
                                       (e.KeyStates & DragDropKeyStates.ControlKey) == DragDropKeyStates.ControlKey);
                    }
                }
            }
        }
        /// <summary>
        ///		Copia los archivos seleccionados desde el navegador en el nodo apropiado del árbol
        /// </summary>
        private void DropExternalFiles(string[] arrfileNames, DependencyObject eventTarget)
        {
            try
            {
                if (arrfileNames != null && arrfileNames.Length > 0)
                {
                    BaseNodeViewModel nodeTarget = GetTreeNodeFromEventTarget(eventTarget);

                    // Si se ha encontrado algún nodo, copia los archivos en el nodo
                    if (nodeTarget != null)
                    {
                        ViewModel.Copy(nodeTarget, arrfileNames);
                    }
                }
            }
            catch (Exception exception)
            {
                SourceEditorPlugin.MainInstance.HostPluginsController.ControllerWindow.ShowMessage($"Excepción al copiar los archivos: {exception.Message}");
            }
        }
        /// <summary>
        ///		Abre la ventana de propiedades de un contacto
        /// </summary>
        private void OpenPropertiesNewContact()
        {
            BaseNodeViewModel node = Tree.GetSelectedNode();

            if (node == null)
            {
                BauMessengerViewModel.Instance.ControllerWindow.ShowMessage("Seleccione una conexión en el árbol");
            }
            else
            {
                JabberConnection connection = node.GetConnectionNode()?.Connection;

                if (connection == null)
                {
                    BauMessengerViewModel.Instance.ControllerWindow.ShowMessage("Seleccione una conexión en el árbol");
                }
                else
                {
                    BauMessengerViewModel.Instance.ViewsController.OpenPropertiesContact
                        (new Contacts.ContactViewModel(connection, null));
                }
            }
        }
Example #10
0
        private static BaseNodeViewModel AddSubNode(ObservableCollection <BaseNodeViewModel> tree, string name, BaseNodeViewModel parent)
        {
            var newChild = new NodeViewModel(name);

            if (parent == null)
            {
                tree.Add(newChild);
                parent = newChild;
            }
            else
            {
                (parent as NodeViewModel).Children.Add(newChild);
            }

            return(newChild);
        }
 /// <summary>
 ///		Obtiene los nodos correspondientes a las definiciones hija de un objeto propietario
 /// </summary>
 internal TreeViewItemsViewModelCollection LoadOwnerNodes(BaseNodeViewModel parent, FileModel file, OwnerChildModel ownerChild)
 {
     return(LoadOwnerNodes(parent, file, ownerChild, ownerChild.Definition.OwnerChilds));
 }
 /// <summary>
 ///		Obtiene los nodos propietario
 /// </summary>
 internal TreeViewItemsViewModelCollection LoadOwnerNodes(BaseNodeViewModel parent, FileModel file)
 {
     return(LoadOwnerNodes(parent, file, null, file.FileDefinition.OwnerChilds));
 }