Пример #1
0
        public override void Execute(object parameter)
        {
            var context = parameter as IItemSelectionContext;

            if (context == null)
            {
                return;
            }

            var item = context.Items.First();

            if (item == null)
            {
                return;
            }

            Site.RequestCompleted callback = delegate(string response)
            {
                var fileName = Path.Combine(Path.GetTempPath(), item.Name + @".rawlayout.xml");
                fileName = IO.File.MakeUniqueFileName(fileName);

                IO.File.Save(fileName, response);

                AppHost.Files.OpenFile(fileName);

                File.Delete(fileName);
            };

            item.ItemUri.Site.Execute("Layouts.GetRawLayout", callback, item.ItemUri.DatabaseName.ToString(), item.ItemUri.ItemId.ToString());
        }
        private void FindPlaceHolderSettingsItem([NotNull] Action <ItemHeader> action)
        {
            Debug.ArgumentNotNull(action, nameof(action));
            var placeHolderName = PlaceHolderTreeViewItem.PlaceHolderName;
            var placeHolderPath = PlaceHolderTreeViewItem.GetPlaceHolderPath();

            var device = PlaceHolderTreeViewItem.DeviceTreeViewItem.Device;

            Site.RequestCompleted completed = delegate(string response)
            {
                if (string.IsNullOrEmpty(response))
                {
                    CreatePlaceHolderSettings(placeHolderName, placeHolderPath, action);
                    return;
                }

                var root = response.ToXElement();
                if (root == null)
                {
                    return;
                }

                var itemHeader = ItemHeader.Parse(device.DatabaseUri, root);
                action(itemHeader);
            };

            device.DatabaseUri.Site.Execute("LayoutBuilders.GetPlaceHolderSettings", completed, device.DatabaseUri.DatabaseName.ToString(), placeHolderName, placeHolderPath);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="GridDesignerMain" /> class.
        /// </summary>
        /// <param name="databaseUri">The database Uri.</param>
        /// <param name="currentLayoutTypeValue">The current layout type value.</param>
        /// <param name="numberOfCell">The number of cell.</param>
        /// <param name="cellAttributes">The cell attributes.</param>
        public GridDesignerMain([NotNull] DatabaseUri databaseUri, [CanBeNull] string currentLayoutTypeValue, int numberOfCell, [NotNull] string cellAttributes)
        {
            InitializeComponent();
            this.InitializeDialog();

            Site.RequestCompleted completed = delegate(string response)
            {
                LayoutType currentLayoutType = null;
                var        layoutTypes       = new List <LayoutType>();

                var root = response.ToXElement();
                if (root != null)
                {
                    foreach (var element in root.Elements())
                    {
                        var layoutType = GetLayoutTypeFromItem(element);
                        if (layoutType != null)
                        {
                            layoutTypes.Add(layoutType);
                            if (layoutType.Name.Equals(currentLayoutTypeValue))
                            {
                                currentLayoutType = layoutType;
                            }
                        }
                    }
                }

                InitializeGridDesigner(layoutTypes, currentLayoutType, numberOfCell, cellAttributes);
            };

            databaseUri.Site.Execute("Layouts.GetGridDesignerLayouts", completed, databaseUri.DatabaseName.Name);
        }
Пример #4
0
        private void TrackLayout()
        {
            Site.RequestCompleted completed = delegate(string response)
            {
                Device.LayoutPlaceHolders = response;
                RenderRenderings();
            };

            Device.PageModel.DatabaseUri.Site.Execute("Layouts.GetLayoutPlaceHolders", completed, Device.PageModel.DatabaseUri.DatabaseName.ToString(), Device.LayoutId);
        }
        private void CreatePlaceHolderSettings([NotNull] string placeHolderName, [NotNull] string placeHolderPath, [NotNull] Action <ItemHeader> action)
        {
            Debug.ArgumentNotNull(placeHolderName, nameof(placeHolderName));
            Debug.ArgumentNotNull(placeHolderPath, nameof(placeHolderPath));
            Debug.ArgumentNotNull(action, nameof(action));

            var device = PlaceHolderTreeViewItem.DeviceTreeViewItem.Device;

            var options = new TaskDialogOptions
            {
                Owner           = this.GetAncestorOrSelf <Window>(),
                Title           = "Place Holder Settings",
                CommonButtons   = TaskDialogCommonButtons.None,
                MainInstruction = "The place holder settings item was not found.",
                MainIcon        = VistaTaskDialogIcon.Information,
                CommandButtons  = new[]
                {
                    string.Format("Create place holder settings with name \"{0}\"", placeHolderName),
                    string.Format("Create place holder settings with qualified name \"{0}\"", placeHolderPath)
                },
                AllowDialogCancellation = true
            };

            var r = TaskDialog.Show(options).CommandButtonResult;

            if (r == null)
            {
                return;
            }

            var path = r == 0 ? placeHolderName : placeHolderPath;

            Site.RequestCompleted completed = delegate(string response)
            {
                if (string.IsNullOrEmpty(response))
                {
                    AppHost.MessageBox("Could not create the Place Holder Settings item.", "Information", MessageBoxButton.OK, MessageBoxImage.Information);
                    return;
                }

                var root = response.ToXElement();
                if (root == null)
                {
                    AppHost.MessageBox("Could not create the Place Holder Settings item.", "Information", MessageBoxButton.OK, MessageBoxImage.Information);
                    return;
                }

                var itemHeader = ItemHeader.Parse(device.DatabaseUri, root);

                action(itemHeader);
            };

            device.DatabaseUri.Site.Execute("Layouts.CreatePlaceHolderSettings", completed, device.DatabaseUri.DatabaseName.ToString(), path);
        }
        private void ControlLoaded([NotNull] object sender, [NotNull] RoutedEventArgs e)
        {
            Debug.ArgumentNotNull(sender, nameof(sender));
            Debug.ArgumentNotNull(e, nameof(e));

            Loaded -= ControlLoaded;

            var item  = SelectedItems.First();
            var items = string.Join("|", SelectedItems.Select(i => i.ItemUri.ItemId.ToString()));

            Site.RequestCompleted completed = delegate(string response)
            {
                PreparingPanel.Visibility = Visibility.Collapsed;

                var root = response.ToXElement();
                if (root == null)
                {
                    NoMessagesPanel.Visibility = Visibility.Visible;
                    NoMessagesText.Text        = "The server returned an unexpected reply.";
                    return;
                }

                OK.IsEnabled = true;

                var count = int.Parse(root.GetAttributeValue("count"));
                if (count == 1)
                {
                    ConfirmText.Text    = "Are you sure you want to delete this item?";
                    NoMessagesText.Text = "It is safe to delete this item.";
                }
                else
                {
                    ConfirmText.Text    = string.Format("Are you sure you want to delete these {0} items?", count);
                    NoMessagesText.Text = string.Format("It is safe to delete these {0} items.", count);
                }

                if (!root.Elements().Any())
                {
                    NoMessagesPanel.Visibility = Visibility.Visible;
                    return;
                }

                HasMessagesPanel.Visibility = Visibility.Visible;

                ParseMessages(root);
                RenderMessages(messages);
            };

            item.ItemUri.Site.Execute("Items.DeleteItems", completed, item.ItemUri.DatabaseName.ToString(), items, true, false);
        }
Пример #7
0
        private void DeleteItemsQuickly([NotNull] List <IItem> selectedItems)
        {
            Debug.ArgumentNotNull(selectedItems, nameof(selectedItems));

            var singleText   = Resources.Delete_Execute_Are_you_sure_you_want_to_delete___0___;
            var multipleText = Resources.Delete_Execute_Are_you_sure_you_want_to_delete_these__0__items_;

            var texts = selectedItems.OfType <ICanDeleteWithText>().FirstOrDefault();

            if (texts != null)
            {
                singleText   = texts.SingleText;
                multipleText = texts.SingleText;
            }

            if (selectedItems.Count() == 1)
            {
                var item = selectedItems.First() as ICanDelete;
                if (item == null)
                {
                    return;
                }

                if (AppHost.MessageBox(string.Format(singleText, item.Text), Resources.Confirmation, MessageBoxButton.OKCancel, MessageBoxImage.Exclamation) != MessageBoxResult.OK)
                {
                    return;
                }
            }
            else
            {
                if (AppHost.MessageBox(string.Format(multipleText, selectedItems.Count), Resources.Confirmation, MessageBoxButton.OKCancel, MessageBoxImage.Exclamation) != MessageBoxResult.OK)
                {
                    return;
                }
            }

            Site.RequestCompleted completed = delegate
            {
                foreach (var item in selectedItems)
                {
                    Notifications.RaiseItemDeleted(this, item.ItemUri);
                }
            };

            var items        = string.Join("|", selectedItems.Select(i => i.ItemUri.ItemId.ToString()));
            var selectedItem = selectedItems.First();

            selectedItem.ItemUri.Site.Execute("Items.DeleteItems", completed, selectedItem.ItemUri.DatabaseName.ToString(), items, false, true);
        }
Пример #8
0
        private void Opened([NotNull] object sender, [NotNull] RoutedEventArgs e)
        {
            Debug.ArgumentNotNull(sender, nameof(sender));
            Debug.ArgumentNotNull(e, nameof(e));

            var context = Context;

            if (context == null)
            {
                return;
            }

            var databaseUri = context.DatabaseUri;

            var menuItem = e.Source as MenuItem;

            if (menuItem == null)
            {
                return;
            }

            var item = menuItem.Items.OfType <MenuItem>().FirstOrDefault(i => i.Tag as string == @"loading");

            if (item == null)
            {
                return;
            }

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

            menuItem.Items.Insert(index + 1, new Separator());

            Site.RequestCompleted completed = delegate(string response)
            {
                var root = response.ToXElement();
                if (root == null)
                {
                    return;
                }

                LoadLanguages(menuItem, root, databaseUri);
            };

            databaseUri.Site.Execute("Languages.GetLanguages", completed, databaseUri.DatabaseName.ToString());
        }
Пример #9
0
        public override void Execute(object parameter)
        {
            var context = parameter as ContentTreeContext;

            if (context == null)
            {
                return;
            }

            var dialog = new OpenFileDialog
            {
                Title           = "Import",
                CheckFileExists = true,
                DefaultExt      = @".xml",
                Filter          = @"Xml files|*.xml|All files|*.*"
            };

            if (dialog.ShowDialog() != true)
            {
                return;
            }

            var selectedItem = context.SelectedItems.FirstOrDefault() as ItemTreeViewItem;

            if (selectedItem == null)
            {
                return;
            }

            var xml = File.ReadAllText(dialog.FileName);

            Site.RequestCompleted completed = delegate(string response)
            {
                if (string.IsNullOrEmpty(response))
                {
                    AppHost.MessageBox("Import succeeded.", "Information", MessageBoxButton.OK, MessageBoxImage.Information);
                }
                else
                {
                    AppHost.MessageBox("Import succeeded with messages:\n\n" + response, "Information", MessageBoxButton.OK, MessageBoxImage.Information);
                }
            };

            selectedItem.ItemUri.Site.Execute("Documentation.Import", completed, selectedItem.ItemUri.DatabaseName.ToString(), xml);
        }
Пример #10
0
        private void LoadRenderingGallery([NotNull] LayoutDesigner layoutDesigner, [NotNull] InRibbonGallery gallery)
        {
            Debug.ArgumentNotNull(layoutDesigner, nameof(layoutDesigner));
            Debug.ArgumentNotNull(gallery, nameof(gallery));

            Site.RequestCompleted completed = delegate(string response)
            {
                var root = response.ToXElement();
                if (root == null)
                {
                    return;
                }

                var items      = root.Elements().Select(element => ItemHeader.Parse(layoutDesigner.DatabaseUri, element)).Where(e => MatchesSpeakCoreVersion(e, layoutDesigner)).ToList();
                var renderings = new List <RenderingButton>();

                foreach (var item in items.OrderBy(i => i.ParentName).ThenBy(i => i.Name))
                {
                    var button = new RenderingButton
                    {
                        Label   = item.Name,
                        Icon    = item.Icon,
                        Tag     = item,
                        ToolTip = ToolTipBuilder.BuildToolTip(item)
                    };

                    button.PreviewMouseUp += (sender, args) => { AddRenderingFromRibbon(layoutDesigner, sender, button); };

                    renderings.Add(button);
                }

                renderings = renderings.OrderBy(i => i.Label).ToList();

                gallery.ItemsSource = renderings;
            };

            layoutDesigner.DatabaseUri.Site.Execute("Layouts.GetRenderings", completed, layoutDesigner.DatabaseUri.DatabaseName.ToString());
        }
        private void OkClick([NotNull] object sender, [NotNull] RoutedEventArgs e)
        {
            Debug.ArgumentNotNull(sender, nameof(sender));
            Debug.ArgumentNotNull(e, nameof(e));

            var item  = SelectedItems.First();
            var items = string.Join("|", SelectedItems.Select(i => i.ItemUri.ItemId.ToString()));

            Site.RequestCompleted completed = delegate
            {
                foreach (var selectedItem in SelectedItems)
                {
                    Notifications.RaiseItemDeleted(this, selectedItem.ItemUri);
                }

                this.Close(true);
            };

            OK.IsEnabled     = false;
            Cancel.IsEnabled = false;

            item.ItemUri.Site.Execute("Items.DeleteItems", completed, item.ItemUri.DatabaseName.ToString(), items, false, false);
        }
Пример #12
0
        public override void Execute(object parameter)
        {
            var context = parameter as ContentTreeContext;

            if (context == null)
            {
                return;
            }

            var dialog = new SaveFileDialog
            {
                Title           = "Export SPEAK Documentation",
                CheckPathExists = true,
                OverwritePrompt = true,
                Filter          = @"Xml files|*.xml|All files|*.*"
            };

            if (dialog.ShowDialog() != true)
            {
                return;
            }

            var selectedItem = context.SelectedItems.FirstOrDefault() as ItemTreeViewItem;

            if (selectedItem == null)
            {
                return;
            }

            Site.RequestCompleted completed = delegate(string response)
            {
                File.WriteAllText(dialog.FileName, response);
                AppHost.Files.OpenFile(dialog.FileName);
            };

            selectedItem.ItemUri.Site.Execute("Documentation.Export", completed, selectedItem.ItemUri.DatabaseName.ToString(), selectedItem.ItemUri.ItemId.ToString());
        }
Пример #13
0
        public override void Execute(object parameter)
        {
            var context = parameter as LayoutDesignerContext;

            if (context == null)
            {
                return;
            }

            var renderingTreeViewItem = context.SelectedItems.FirstOrDefault() as RenderingItem;

            if (renderingTreeViewItem == null)
            {
                return;
            }

            var itemUri     = context.LayoutDesigner.FieldUris.First().ItemVersionUri.ItemUri;
            var databaseUri = context.LayoutDesigner.DatabaseUri;

            string name;

            renderingTreeViewItem.ParameterDictionary.Parameters.TryGetValue("Id", out name);
            if (string.IsNullOrEmpty(name))
            {
                name = renderingTreeViewItem.Name;
            }

            var location = renderingTreeViewItem.DataSourceLocation;

            if (string.IsNullOrEmpty(location))
            {
                var dialog = new SelectItemDialog();
                dialog.Initialize("Create Data Source", itemUri);
                if (AppHost.Shell.ShowDialog(dialog) != true)
                {
                    return;
                }
            }

            var template = renderingTreeViewItem.DataSourceTemplate;

            Site.RequestCompleted completed = delegate(string response)
            {
                var parts = response.Split(',');
                if (parts.Length != 2)
                {
                    AppHost.MessageBox("The item was not found.", Resources.Information, MessageBoxButton.OK, MessageBoxImage.Information);
                    return;
                }

                var itemId       = parts[0];
                var parentItemId = parts[1];

                Guid guid;
                if (!Guid.TryParse(itemId, out guid))
                {
                    AppHost.MessageBox("The item was not found.", Resources.Information, MessageBoxButton.OK, MessageBoxImage.Information);
                    return;
                }

                renderingTreeViewItem.DataSource = itemId;

                var itemVersionUri = new ItemVersionUri(new ItemUri(databaseUri, new ItemId(guid)), LanguageManager.CurrentLanguage, Data.Version.Latest);

                Notifications.RaiseItemAdded(this, itemVersionUri, new ItemUri(databaseUri, new ItemId(new Guid(parentItemId))));

                AppHost.OpenContentEditor(itemVersionUri);
            };

            databaseUri.Site.Execute("LayoutBuilders.CreateDataSource", completed, databaseUri.DatabaseName.ToString(), itemUri.ItemId.ToString(), name, location, template);
        }