Ejemplo n.º 1
0
        protected override void Process([NotNull] DuplicateItemPipeline pipeline)
        {
            Debug.ArgumentNotNull(pipeline, nameof(pipeline));

            var parent = pipeline.TreeViewItem.Parent as BaseTreeViewItem;

            if (parent == null)
            {
                return;
            }

            if (pipeline.NewItemUri == ItemUri.Empty)
            {
                parent.Refresh();
            }
            else if (!parent.HasChildren)
            {
                parent.Refresh();

                foreach (var item in parent.Items)
                {
                    var i = item as ItemTreeViewItem;
                    if (i == null)
                    {
                        continue;
                    }

                    if (i.ItemUri == pipeline.NewItemUri)
                    {
                        i.IsSelected = true;
                        Keyboard.Focus(i);
                        break;
                    }
                }
            }
            else
            {
                var itemHeader = pipeline.TreeViewItem.Item.Clone();
                itemHeader.Name    = pipeline.NewName;
                itemHeader.ItemUri = new ItemUri(new DatabaseUri(pipeline.NewItemUri.Site, pipeline.NewItemUri.DatabaseName), pipeline.NewItemUri.ItemId);

                var n = itemHeader.Path.LastIndexOf('/');
                if (n >= 0)
                {
                    itemHeader.Path = itemHeader.Path.Left(n + 1) + pipeline.NewName;
                }

                var item = new ItemTreeViewItem(itemHeader);

                if (pipeline.TreeViewItem.HasItems)
                {
                    item.Add(DummyTreeViewItem.Instance);
                }

                parent.Add(item);

                item.IsSelected = true;
                Keyboard.Focus(item);
            }
        }
        public ConfirmTransferDialog([NotNull] ItemTreeViewItem target, [NotNull] IEnumerable <IItem> items)
        {
            Assert.ArgumentNotNull(target, nameof(target));
            Assert.ArgumentNotNull(items, nameof(items));

            InitializeComponent();
            this.InitializeDialog();
        }
Ejemplo n.º 3
0
        private ListBoxItem GetListBoxItem([NotNull] ItemTreeViewItem item)
        {
            Debug.ArgumentNotNull(item, nameof(item));

            var valueItem = new ValueItem(item.Text, item.ItemUri.ItemId.ToString());

            return(GetListBoxItem(valueItem));
        }
        public TransferItemsDialog([NotNull] ItemTreeViewItem target, [NotNull] IEnumerable <IItem> items)
        {
            Assert.ArgumentNotNull(target, nameof(target));
            Assert.ArgumentNotNull(items, nameof(items));

            InitializeComponent();
            this.InitializeDialog();

            Items = items;
            ItemDependencies.ItemsSource = items.Select(i => i.ItemUri);
        }
Ejemplo n.º 5
0
        public static void GetSortOrder([NotNull] ItemTreeViewItem target, ControlDragAdornerPosition position, int itemCount, out int sortOrder, out int sortOrderDelta, [CanBeNull] out ItemTreeViewItem parent, [CanBeNull] out ItemTreeViewItem anchor)
        {
            Debug.ArgumentNotNull(target, nameof(target));

            if (position == ControlDragAdornerPosition.Top)
            {
                GetBeforeSortOrder(target, itemCount, out sortOrder, out sortOrderDelta, out parent, out anchor);
                return;
            }

            GetAfterSortOrder(target, itemCount, out sortOrder, out sortOrderDelta, out parent, out anchor);
        }
Ejemplo n.º 6
0
        public static void RaiseItemTreeViewDrop([NotNull] object sender, [NotNull] ItemTreeViewItem item, [NotNull] DragEventArgs args)
        {
            Assert.ArgumentNotNull(sender, nameof(sender));
            Assert.ArgumentNotNull(item, nameof(item));
            Assert.ArgumentNotNull(args, nameof(args));

            var drop = ItemTreeViewDrop;

            if (drop != null)
            {
                drop(sender, item, args);
            }
        }
Ejemplo n.º 7
0
        public DragCopyPipeline WithParameters([NotNull] ItemTreeViewItem target, [NotNull] IEnumerable <IItem> items, ControlDragAdornerPosition position, DragDropKeyStates keyStates)
        {
            Assert.ArgumentNotNull(target, nameof(target));
            Assert.ArgumentNotNull(items, nameof(items));

            KeyStates = keyStates;
            Target    = target;
            Items     = items;
            Position  = position;

            Start();

            return(this);
        }
Ejemplo n.º 8
0
        public override void Execute(object parameter)
        {
            var context = parameter as GutterContext;

            if (context == null)
            {
                return;
            }

            var itemList           = new StringBuilder();
            ItemTreeViewItem first = null;

            foreach (var itemTreeViewItem in context.SelectedItems.OfType <ItemTreeViewItem>())
            {
                if (first == null)
                {
                    first = itemTreeViewItem;
                }
                else
                {
                    itemList.Append('|');
                }

                itemList.Append(itemTreeViewItem.ItemUri.ItemId);
            }

            if (first == null)
            {
                return;
            }

            ExecuteCompleted completed = delegate(string response, ExecuteResult result)
            {
                if (!DataService.HandleExecute(response, result))
                {
                    return;
                }

                foreach (var item in context.SelectedItems.OfType <ItemTreeViewItem>())
                {
                    item.UpdateGutters();
                }
            };

            first.ItemUri.Site.DataService.ExecuteAsync("Security.Unlock", completed, first.ItemUri.DatabaseName.Name, itemList.ToString());
        }
Ejemplo n.º 9
0
        public TransferDialog([NotNull] ItemTreeViewItem target, [NotNull] IEnumerable <IItem> items, bool deep, bool changeIds)
        {
            Assert.ArgumentNotNull(target, nameof(target));
            Assert.ArgumentNotNull(items, nameof(items));

            InitializeComponent();
            this.InitializeDialog();

            Target    = target;
            Items     = items;
            Deep      = deep;
            ChangeIds = changeIds;
            Index     = 0;

            ProgressBar.Maximum = items.Count();

            Loaded += ControlLoaded;
        }
Ejemplo n.º 10
0
        protected override bool CanExecute(ItemTreeViewItem item)
        {
            Debug.ArgumentNotNull(item, nameof(item));

            var path = item.GetPath();

            if (string.Compare(path, "/sitecore/media library", StringComparison.InvariantCultureIgnoreCase) == 0)
            {
                return(true);
            }

            if (path.StartsWith("/sitecore/media library/", StringComparison.InvariantCultureIgnoreCase))
            {
                return(true);
            }

            return(false);
        }
Ejemplo n.º 11
0
        public void SetField(Field sourceField)
        {
            Assert.ArgumentNotNull(sourceField, nameof(sourceField));

            Source.Items.Clear();

            Resizer.FieldId = sourceField.FieldUris.First().FieldId;

            DatabaseUri  = sourceField.FieldUris.First().ItemVersionUri.DatabaseUri;
            FieldSource  = sourceField.Source;
            initialItems = sourceField.ValueItems;

            var fieldSource = new UrlString(FieldSource ?? string.Empty);

            ExcludeItemsForDisplay       = fieldSource["excludeitemsfordisplay"] ?? string.Empty;
            ExcludeTemplatesForDisplay   = fieldSource["excludetemplatesfordisplay"] ?? string.Empty;
            ExcludeTemplatesForSelection = fieldSource["excludetemplatesforselection"] ?? string.Empty;
            IncludeItemsForDisplay       = fieldSource["includeitemsfordisplay"] ?? string.Empty;
            IncludeTemplatesForDisplay   = fieldSource["includetemplatesfordisplay"] ?? string.Empty;
            IncludeTemplatesForSelection = fieldSource["includetemplatesforselection"] ?? string.Empty;

            excludeItemsForDisplayList       = ',' + ExcludeItemsForDisplay.ToLowerInvariant() + ",";
            excludeTemplatesForDisplayList   = ',' + ExcludeTemplatesForDisplay.ToLowerInvariant() + ",";
            excludeTemplatesForSelectionList = ',' + ExcludeTemplatesForSelection.ToLowerInvariant() + ",";
            includeItemsForDisplayList       = ',' + IncludeItemsForDisplay.ToLowerInvariant() + ",";
            includeTemplatesForDisplayList   = ',' + IncludeTemplatesForDisplay.ToLowerInvariant() + ",";
            includeTemplatesForSelectionList = ',' + IncludeTemplatesForSelection.ToLowerInvariant() + ",";

            if (sourceField.Root == null)
            {
                return;
            }

            var itemTreeViewItem = new ItemTreeViewItem(sourceField.Root);

            Source.Items.Add(itemTreeViewItem);

            if (sourceField.Root.HasChildren)
            {
                itemTreeViewItem.MakeExpandable();
            }
        }
Ejemplo n.º 12
0
        protected override int GetSortOrder(ItemTreeViewItem item)
        {
            Debug.ArgumentNotNull(item, nameof(item));

            var parent = item.GetParentTreeViewItem();

            if (parent == null)
            {
                return(item.Item.SortOrder);
            }

            var last = parent.Items[parent.Items.Count - 1] as ItemTreeViewItem;

            if (last == null)
            {
                return(item.Item.SortOrder);
            }

            return(last.Item.SortOrder + 100);
        }
Ejemplo n.º 13
0
        protected override int GetSortOrder(ItemTreeViewItem item)
        {
            Debug.ArgumentNotNull(item, nameof(item));

            var parent = item.GetParentTreeViewItem();

            if (parent == null)
            {
                return(item.Item.SortOrder);
            }

            var index = parent.Items.IndexOf(item);

            if (index <= 0)
            {
                return(item.Item.SortOrder);
            }

            var previous = parent.Items[index - 1] as ItemTreeViewItem;

            if (previous == null)
            {
                return(item.Item.SortOrder);
            }

            if (index == 1)
            {
                return(previous.Item.SortOrder - 100);
            }

            var previousPrevious = parent.Items[index - 2] as ItemTreeViewItem;

            if (previousPrevious == null)
            {
                return(item.Item.SortOrder);
            }

            return(previousPrevious.Item.SortOrder + (previous.Item.SortOrder - previousPrevious.Item.SortOrder) / 2);
        }
Ejemplo n.º 14
0
        protected override int GetSortOrder(ItemTreeViewItem item)
        {
            Debug.ArgumentNotNull(item, nameof(item));

            var parent = item.GetParentTreeViewItem();

            if (parent == null)
            {
                return(item.Item.SortOrder);
            }

            var index = parent.Items.IndexOf(item);

            if (index < 0 || index == parent.Items.Count - 1)
            {
                return(item.Item.SortOrder);
            }

            var next = parent.Items[index + 1] as ItemTreeViewItem;

            if (next == null)
            {
                return(item.Item.SortOrder);
            }

            if (index == parent.Items.Count - 2)
            {
                return(next.Item.SortOrder + 100);
            }

            var nextNext = parent.Items[index + 2] as ItemTreeViewItem;

            if (nextNext == null)
            {
                return(item.Item.SortOrder);
            }

            return(next.Item.SortOrder + (nextNext.Item.SortOrder - next.Item.SortOrder) / 2);
        }
Ejemplo n.º 15
0
        private static void DragOver([NotNull] object sender, [NotNull] ItemTreeViewItem item, [NotNull] DragEventArgs args)
        {
            Debug.ArgumentNotNull(sender, nameof(sender));
            Debug.ArgumentNotNull(item, nameof(item));
            Debug.ArgumentNotNull(args, nameof(args));

            if (!args.Data.GetDataPresent(@"CF_VSSTGPROJECTITEMS"))
            {
                return;
            }

            args.Effects = DragDropEffects.None;

            if ((item.ItemUri.Site.DataService.FeatureCapabilities & DataServiceFeatureCapabilities.Execute) != DataServiceFeatureCapabilities.Execute)
            {
                return;
            }

            var fileName = args.Data.GetData(@"Text") as string ?? string.Empty;

            try
            {
                if (!File.Exists(fileName))
                {
                    return;
                }
            }
            catch
            {
                return;
            }

            var fileItemHandler = FileItemManager.GetFileItemHandler(fileName);

            if (fileItemHandler == null)
            {
                return;
            }

            Project project          = null;
            string  relativeFileName = null;

            foreach (var proj in ProjectManager.Projects)
            {
                relativeFileName = proj.GetRelativeFileName(fileName);
                if (relativeFileName == fileName)
                {
                    continue;
                }

                project = proj;
                break;
            }

            if (project == null)
            {
                return;
            }

            if (project.Site != item.ItemUri.Site)
            {
                return;
            }

            var projectItem = project.GetProjectItem(relativeFileName);

            if (projectItem != null)
            {
                return;
            }

            args.Effects = DragDropEffects.Copy;
        }
Ejemplo n.º 16
0
        public ItemTreeViewItemSelectedObject([NotNull] ItemTreeViewItem item) : base(item.Item.ItemUri.DatabaseUri)
        {
            Assert.ArgumentNotNull(item, nameof(item));

            Item = item;
        }
Ejemplo n.º 17
0
        protected virtual bool CanExecute([NotNull] ItemTreeViewItem item)
        {
            Debug.ArgumentNotNull(item, nameof(item));

            return(true);
        }
Ejemplo n.º 18
0
        private static void GetAfterSortOrder([NotNull] ItemTreeViewItem target, int itemCount, out int sortOrder, out int sortOrderDelta, [CanBeNull] out ItemTreeViewItem parent, [CanBeNull] out ItemTreeViewItem anchor)
        {
            Debug.ArgumentNotNull(target, nameof(target));

            sortOrder = target.Item.SortOrder;
            parent    = null;
            anchor    = null;

            var itemsControl = target.GetParentTreeViewItem();

            if (itemsControl == null)
            {
                sortOrder     += 100;
                sortOrderDelta = 100;
                return;
            }

            parent = itemsControl as ItemTreeViewItem;
            if (parent == null)
            {
                sortOrder     -= itemCount * 100;
                sortOrderDelta = 100;
                return;
            }

            var index = itemsControl.Items.IndexOf(target);

            if (index < 0 || index == itemsControl.Items.Count - 1)
            {
                sortOrder     += 100;
                sortOrderDelta = 100;
                return;
            }

            var nextItem = itemsControl.Items[index + 1] as ItemTreeViewItem;

            if (nextItem == null)
            {
                sortOrder     += 100;
                sortOrderDelta = 100;
                return;
            }

            anchor = nextItem;

            var nextSortOrder = nextItem.Item.SortOrder;

            if (nextSortOrder == sortOrder)
            {
                var sort    = 0;
                var fieldId = IdManager.GetFieldId("/sitecore/templates/System/Templates/Sections/Appearance/Appearance/__Sortorder");

                for (var i = 0; i < parent.Items.Count; i++)
                {
                    var item = parent.Items[i] as ItemTreeViewItem;
                    if (item != null)
                    {
                        ItemModifier.Edit(item.Item.ItemUri, fieldId, sort.ToString());
                        item.Item.SortOrder = sort;
                    }

                    sort += i == index ? (itemCount + 1) * 100 : 100;
                }

                sortOrder     = index * 100;
                nextSortOrder = sortOrder + (itemCount + 1) * 100;
            }

            var gap = nextSortOrder - sortOrder;

            sortOrderDelta = gap / (itemCount + 1);

            if (sortOrderDelta == 0)
            {
                sortOrder = sortOrder + (int)Math.Floor((double)gap / 2);
                return;
            }

            sortOrder += sortOrderDelta;
        }
Ejemplo n.º 19
0
        private static void Drop([NotNull] object sender, [NotNull] ItemTreeViewItem item, [NotNull] DragEventArgs args)
        {
            Debug.ArgumentNotNull(sender, nameof(sender));
            Debug.ArgumentNotNull(item, nameof(item));
            Debug.ArgumentNotNull(args, nameof(args));

            if (!args.Data.GetDataPresent(@"CF_VSSTGPROJECTITEMS"))
            {
                return;
            }

            var fileName = args.Data.GetData(@"Text") as string ?? string.Empty;

            try
            {
                if (!File.Exists(fileName))
                {
                    return;
                }
            }
            catch
            {
                return;
            }

            var fileItemHandler = FileItemManager.GetFileItemHandler(fileName);

            if (fileItemHandler == null)
            {
                return;
            }

            Project project          = null;
            string  relativeFileName = null;

            foreach (var proj in ProjectManager.Projects)
            {
                relativeFileName = proj.GetRelativeFileName(fileName);
                if (relativeFileName == fileName)
                {
                    continue;
                }

                if (proj.Site != item.ItemUri.Site)
                {
                    continue;
                }

                project = proj;
                break;
            }

            if (project == null)
            {
                return;
            }

            var projectItem = project.GetProjectItem(relativeFileName) as ProjectFileItem;

            if (projectItem != null)
            {
                if (projectItem.Items.Any())
                {
                    return;
                }
            }

            projectItem = ProjectFileItem.Load(project, fileName);
            project.Add(projectItem);
            project.Save();

            var itemPath = Path.Combine(item.GetPath(), Path.GetFileNameWithoutExtension(fileName) ?? string.Empty);

            fileItemHandler.Handle(item.ItemUri.DatabaseName, projectItem, itemPath, (s, e) => item.Refresh());
        }
Ejemplo n.º 20
0
 protected abstract int GetSortOrder([NotNull] ItemTreeViewItem item);