public static TreeViewItem ToTreeViewItem(this ProjectModel project)
 {
     var node = new TreeViewItem { Header = project.Name };
     if (!project.AllChildrenExist)
         node.ExpandSubtree();
     return node;
 }
Esempio n. 2
0
        //private static void ProcessNode(HtmlNode node, Stack<HtmlNode> stack)
        //{
        //    var depth = stack.Count;
        //    var padding = String.Empty.PadLeft(depth, ' ');
        //    stack.Push(node);
        //    try
        //    {
        //        Debug.WriteLine(padding + "Node: " + node.Name);
        //        foreach (var child in node.ChildNodes)
        //        {
        //            ProcessNode(child, stack);
        //        }
        //    }
        //    finally
        //    {
        //        stack.Pop();
        //    }
        //}

        private void button_Click(object sender, RoutedEventArgs e)
        {
            using (var stream = File.OpenRead(@"C:\Documents\bookmarks_7_27_15.html"))
            {
                var doc = new HtmlDocument();
                doc.Load(stream);

                var rootFolder = new Folder { Name = "<root>" };

                ProcessNode(doc.DocumentNode, rootFolder);
                if (rootFolder.Folders.Count == 1)
                    rootFolder = rootFolder.Folders.Single();

                treeView.Items.Add(GetTree(rootFolder));

                var bookmarks = rootFolder.AllBookmarks.ToList();
                bookmarks.Sort(
                    (l, r) => StringComparer.OrdinalIgnoreCase.Compare(l.Href.ToString(), r.Href.ToString()));
                var lookupItem = new TreeViewItem { Header = "Lookup" };
                var lookup = rootFolder.AllBookmarks.ToLookup(b => b.Href.ToString(), b => b.Folder, StringComparer.OrdinalIgnoreCase);
                foreach (var key in lookup)
                {
                    var folders = new HashSet<string>(key.Select(k => k.FullName), StringComparer.OrdinalIgnoreCase);
                    if (folders.Count > 1)
                    {
                        //folders.Sort((l, r) => StringComparer.OrdinalIgnoreCase.Compare(l.FullName, r.FullName));
                        var keyItem = new TreeViewItem { Header = key.Key + " (" + folders.Count + ")" };
                        foreach (var folder in folders.OrderBy(f => f, StringComparer.OrdinalIgnoreCase))
                            keyItem.Items.Add(new TreeViewItem { Header = folder });
                        lookupItem.Items.Add(keyItem);
                    }
                }
                lookupItem.ExpandSubtree();
                treeView.Items.Add(lookupItem);
                var set = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
                foreach (var bookmark in rootFolder.AllBookmarks)
                    set.Add(bookmark.ToString());
                foreach (var txt in set)
                    Debug.WriteLine(txt);

                using (var output = File.OpenWrite(@"C:\Documents\output.html"))
                {
                    output.SetLength(0);
                    using (var writer = new StreamWriter(output))
                    {

                        writer.WriteLine(@"<!DOCTYPE NETSCAPE-Bookmark-file-1>");
                        writer.WriteLine(@"<!-- This is an automatically generated file.");
                        writer.WriteLine(@"     It will be read and overwritten.");
                        writer.WriteLine(@"     DO NOT EDIT! -->");
                        writer.WriteLine(
                            "<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html;charset=UTF-8\">");
                        writer.WriteLine(@"<TITLE>Bookmarks</TITLE>");
                        WriteFolder(rootFolder, writer, new HashSet<string>(StringComparer.OrdinalIgnoreCase), "");
                    }
                }

                //Debugger.Break();
            }
        }
Esempio n. 3
0
        public MainWindow(ICatalogManager catMgr, IFinancialManager finMgr)
        {
            InitializeComponent();

            _catMgr = catMgr;
            _finMgr = finMgr;

            var root = new TreeViewItem();
            root.Header = "Tree";

            var child = new TreeViewItem();
            child.Header = "Initial Data Typing";
            root.Items.Add(child);

            child = new TreeViewItem();
            child.Header = "Descriptions";
            root.Items.Add(child);

            MainTreeView.Items.Add(root);

            root.ExpandSubtree();

            AreaComboBox.AddHandler(TextBoxBase.TextChangedEvent,
                new TextChangedEventHandler(ComboBox_TextChanged));
        }
Esempio n. 4
0
        public MainWindow(ICatalogManager catMgr, IFinancialManager finMgr)
        {
            InitializeComponent();

            _catMgr = catMgr;
            _finMgr = finMgr;

            var root = new TreeViewItem();
            root.Header = "Tree";

            var child = new TreeViewItem();
            child.Header = "Initial Data Typing";
            child.Selected += TreeViewItemSelected;
            child.Tag = typeof(InitialDataTypingView);
            root.Items.Add(child);

            child = new TreeViewItem();
            child.Header = "Descriptions";
            child.Selected += TreeViewItemSelected;
            child.Tag = typeof(DescriptionView);
            root.Items.Add(child);

            MainTreeView.Items.Add(root);

            root.ExpandSubtree();
        }
Esempio n. 5
0
        private void AddLayer(Layer layer)
        {
            Type layerClassType = layer.GetType();

            TreeViewItem newItem = new TreeViewItem();
            newItem.Header = Layer.LayerTypes[layerClassType];
            newItem.Tag = layer;
            foreach (var p in layerClassType.GetProperties())
            {
                var property = p;   // we want to closure this value in lambdas - therefore there must be an additional variable - do not use the foreach variable p!
                LayerAttributes.LayerAttribute[] layerAttributeList = (LayerAttributes.LayerAttribute[])
                                        property.GetCustomAttributes(typeof(LayerAttributes.LayerAttribute), false);
                if (layerAttributeList.Length > 0)
                {
                    // create ui for this element
                    layerAttributeList[0].CreateTreeViewSubElement(newItem, (int)Layers.ActualWidth,
                                () => { return property.GetMethod.Invoke(layer, new object[0]); },
                                (value) => { property.SetMethod.Invoke(layer, new object[] { value }); });

                    // pointset layer must be registered
                    if (layerAttributeList[0] is LayerAttributes.LayerAttributePointSet)
                        terrainRenderingPreview.AddPointSet((PointSet)property.GetMethod.Invoke(layer, new object[0]));
                }
            }
            if (Layers.Items.IsEmpty || (Layers.SelectedItem == null))
                Layers.Items.Insert(0, newItem);
            else
                Layers.Items.Insert(Layers.Items.IndexOf(Layers.SelectedItem), newItem);
            newItem.ExpandSubtree();
            newItem.IsSelected = true;
        }
Esempio n. 6
0
 /// <summary>Expands the specified <see cref="T:System.Windows.Controls.TreeViewItem" /> control and all its child <see cref="T:System.Windows.Controls.TreeViewItem" /> elements.</summary>
 /// <param name="container">The <see cref="T:System.Windows.Controls.TreeViewItem" /> to expand.</param>
 /// <returns>
 ///     <see langword="true" /> if the specified <see cref="T:System.Windows.Controls.TreeViewItem" /> and all its child elements were expanded; otherwise, <see langword="false" />.</returns>
 // Token: 0x060058EB RID: 22763 RVA: 0x0018987E File Offset: 0x00187A7E
 protected virtual bool ExpandSubtree(TreeViewItem container)
 {
     if (container != null)
     {
         container.ExpandSubtree();
         return(true);
     }
     return(false);
 }
        public void ShowObject(BsonValue bsonValue)
        {
            var tree = new TreeView();

            var item = new TreeViewItem();
            tree.Items.Add(item);
            WriteObject(item, bsonValue);
            item.ExpandSubtree();
            this.Content = tree;
            Show();
            Focus();
            this.Topmost= true;
        }
        public ExceptionMessageBox(System.Exception e, string userExceptionMessage)
        {
            InitializeComponent();

            this._userExceptionMessage = userExceptionMessage;
            textBox1.Text = userExceptionMessage;

            TreeViewItem treeViewItem = new TreeViewItem();
            treeViewItem.Header = "Exception";
            treeViewItem.ExpandSubtree();
            buildTreeLayer(e, treeViewItem);
            treeView1.Items.Add(treeViewItem);
        }
Esempio n. 9
0
        public MainWindow()
        {
            InitializeComponent();

            var root = new TreeViewItem();
            root.Header = "Tree";

            var child = new TreeViewItem();
            child.Header = "Initial Data Typing";
            root.Items.Add(child);

            child = new TreeViewItem();
            child.Header = "Descriptions";
            root.Items.Add(child);

            MainTreeView.Items.Add(root);

            root.ExpandSubtree();
        }
        public ExplanationView(IEnumerable<AutoCompletionResult.CommandResult> commandResults)
        {
            InitializeComponent();

            foreach (var commandResult in commandResults)
            {
                var commandTreeItem = new TreeViewItem {Header = commandResult.Item.Text + commandResult.CompletionId};
                Action<TreeViewItem, Explanation> renderExplanation = null;
                renderExplanation = (t, exp) =>
                                        {
                                            var header = exp.Value + " " + exp.Description + " ";
                                            var childItem = new TreeViewItem {Header = header};
                                            t.Items.Add(childItem);
                                            foreach (var explanation in exp.GetDetails() ?? new Explanation[] {})
                                            {
                                                renderExplanation(childItem, explanation);
                                            }
                                        };
                renderExplanation(commandTreeItem, commandResult.Explanation);
                commandTreeItem.ExpandSubtree();
                ExplanationTree.Items.Add(commandTreeItem);
            }
        }
Esempio n. 11
0
        public MainWindow(ICatalogManager catMgr)
        {
            InitializeComponent();

            _catMgr = catMgr;

            var root = new TreeViewItem();
            root.Header = "Tree";

            var child = CreateTreeViewItem("Initial Data Typing");
            child.Tag = typeof(InitialDataTypingForm);
            root.Items.Add(child);

            child = CreateTreeViewItem("Descriptions");
            child.Tag = typeof(DescriptionsForm);
            root.Items.Add(child);

            MainTreeView.Items.Add(root);

            root.ExpandSubtree();

            AreaComboBox.AddHandler(TextBoxBase.TextChangedEvent,
                new TextChangedEventHandler(ComboBox_TextChanged));
        }
Esempio n. 12
0
        void Group()
        {
            GroupTree.Items.Clear();
            Results.Visibility = Visibility.Collapsed;
            GroupTree.Visibility = Visibility.Visible;

            if (Query.Text == string.Empty || DataToQuery.Text == string.Empty)
                return;

            try
            {
                Regex theExpr;

                try
                {
                    theExpr = new Regex(Query.Text, RegExOptions, Timeout);
                }
                catch (RegexMatchTimeoutException)
                {
                    Status.Content = QueryTime.Content = "Timeout";
                    return;
                }
                catch (Exception E)
                {
                    Status.Content = E.Message;
                    return;
                }

                var c = theExpr.Matches(DataToQuery.Text);

                foreach (Match match in c)
                {
                    var header = new TreeViewItem { Header = match.Value };

                    foreach (var groupName in theExpr.GetGroupNames())
                    {
                        var theGroup = match.Groups[groupName];

                        if (groupName == "0")
                            continue;

                        var groupHeader = new TreeViewItem { Header = "<" + groupName + "> " + theGroup };
                        header.Items.Add(groupHeader);

                        foreach (Capture theCapture in theGroup.Captures)
                            groupHeader.Items.Add(theCapture.Value);
                    }

                    GroupTree.Items.Add(header);
                    header.ExpandSubtree();
                }

                Status.Content = c.Count == 0 ? "No Matches" : "Matched";
            }
            catch (Exception e) { Status.Content = e.Message; }
        }
Esempio n. 13
0
        /// <summary>
        /// Constructor.
        /// </summary>
        public Setup()
        {
            Logger.Info("Entering constructor.");

            // Defines how to show the setup window.
            Controller.ShowWindowEvent += delegate
            {
                Dispatcher.BeginInvoke((Action)delegate
                {
                    Logger.Info("Entering ShowWindowEvent.");
                    Show();
                    Activate();
                    BringIntoView();
                    Logger.Info("Exiting ShowWindowEvent.");
                });
            };

            // Defines how to hide the setup windows.
            Controller.HideWindowEvent += delegate
            {
                Dispatcher.BeginInvoke((Action)delegate
                {
                    Hide();
                });
            };

            // Defines what to do when changing page.
            // The remote folder addition wizard has several steps.
            Controller.ChangePageEvent += delegate(PageType type)
            {
                Dispatcher.BeginInvoke((Action)delegate
                {
                    Logger.Info("Entering ChangePageEvent.");
                    Reset();

                    // Show appropriate setup page.
                    switch (type)
                    {
                        // Welcome page that shows up at first run.
                        #region Page Setup
                        case PageType.Setup:
                            {
                                // UI elements.

                                Header = Properties_Resources.Welcome;
                                Description = Properties_Resources.Intro;

                                Button cancel_button = new Button()
                                {
                                    Content = Properties_Resources.Cancel
                                };

                                Button continue_button = new Button()
                                {
                                    Content = Properties_Resources.Continue,
                                    IsEnabled = false
                                };

                                Buttons.Add(continue_button);
                                Buttons.Add(cancel_button);

                                continue_button.Focus();

                                // Actions.

                                Controller.UpdateSetupContinueButtonEvent += delegate(bool enabled)
                                {
                                    Dispatcher.BeginInvoke((Action)delegate
                                    {
                                        continue_button.IsEnabled = enabled;
                                    });
                                };

                                cancel_button.Click += delegate
                                {
                                    Dispatcher.BeginInvoke((Action)delegate
                                    {
                                        Program.UI.StatusIcon.Dispose();
                                        Controller.SetupPageCancelled();
                                    });
                                };

                                continue_button.Click += delegate
                                {
                                    Controller.SetupPageCompleted();
                                };

                                Controller.CheckSetupPage();

                                break;
                            }
                        #endregion

                        #region Page Tutorial
                        case PageType.Tutorial:
                            {
                                switch (Controller.TutorialCurrentPage)
                                {
                                    // First page of the tutorial.
                                    case 1:
                                        {
                                            // UI elements.

                                            Header = Properties_Resources.WhatsNext;
                                            Description = Properties_Resources.CmisSyncCreates;

                                            WPF.Image slide_image = new WPF.Image()
                                            {
                                                Width = 350,
                                                Height = 200
                                            };

                                            slide_image.Source = UIHelpers.GetImageSource("tutorial-slide-1");

                                            Button skip_tutorial_button = new Button()
                                            {
                                                Content = Properties_Resources.SkipTutorial
                                            };

                                            Button continue_button = new Button()
                                            {
                                                Content = Properties_Resources.Continue
                                            };


                                            ContentCanvas.Children.Add(slide_image);
                                            Canvas.SetLeft(slide_image, 215);
                                            Canvas.SetTop(slide_image, 130);

                                            Buttons.Add(continue_button);
                                            Buttons.Add(skip_tutorial_button);

                                            // Actions.

                                            skip_tutorial_button.Click += delegate
                                            {
                                                Controller.TutorialSkipped();
                                            };

                                            continue_button.Click += delegate
                                            {
                                                Controller.TutorialPageCompleted();
                                            };

                                            break;
                                        }

                                    // Second page of the tutorial.
                                    case 2:
                                        {
                                            // UI elements.

                                            Header = Properties_Resources.Synchronization;
                                            Description = Properties_Resources.DocumentsAre;


                                            Button continue_button = new Button()
                                            {
                                                Content = Properties_Resources.Continue
                                            };

                                            WPF.Image slide_image = new WPF.Image()
                                            {
                                                Width = 350,
                                                Height = 200
                                            };

                                            slide_image.Source = UIHelpers.GetImageSource("tutorial-slide-2");


                                            ContentCanvas.Children.Add(slide_image);
                                            Canvas.SetLeft(slide_image, 215);
                                            Canvas.SetTop(slide_image, 130);

                                            Buttons.Add(continue_button);

                                            // Actions.

                                            continue_button.Click += delegate
                                            {
                                                Controller.TutorialPageCompleted();
                                            };

                                            break;
                                        }

                                    // Third page of the tutorial.
                                    case 3:
                                        {
                                            // UI elements.

                                            Header = Properties_Resources.StatusIcon;
                                            Description = Properties_Resources.StatusIconShows;


                                            Button continue_button = new Button()
                                            {
                                                Content = Properties_Resources.Continue
                                            };

                                            WPF.Image slide_image = new WPF.Image()
                                            {
                                                Width = 350,
                                                Height = 200
                                            };

                                            slide_image.Source = UIHelpers.GetImageSource("tutorial-slide-3");


                                            ContentCanvas.Children.Add(slide_image);
                                            Canvas.SetLeft(slide_image, 215);
                                            Canvas.SetTop(slide_image, 130);

                                            Buttons.Add(continue_button);

                                            // Actions.

                                            continue_button.Click += delegate
                                            {
                                                Controller.TutorialPageCompleted();
                                            };

                                            break;
                                        }

                                    // Fourth page of the tutorial.
                                    case 4:
                                        {
                                            // UI elements.

                                            Header = Properties_Resources.AddFolders;
                                            Description = Properties_Resources.YouCan;


                                            Button finish_button = new Button()
                                            {
                                                Content = Properties_Resources.Finish
                                            };

                                            WPF.Image slide_image = new WPF.Image()
                                            {
                                                Width = 350,
                                                Height = 200
                                            };

                                            slide_image.Source = UIHelpers.GetImageSource("tutorial-slide-4");

                                            CheckBox check_box = new CheckBox()
                                            {
                                                Content = Properties_Resources.Startup,
                                                IsChecked = true
                                            };


                                            ContentCanvas.Children.Add(slide_image);
                                            Canvas.SetLeft(slide_image, 215);
                                            Canvas.SetTop(slide_image, 130);

                                            ContentCanvas.Children.Add(check_box);
                                            Canvas.SetLeft(check_box, 185);
                                            Canvas.SetBottom(check_box, 12);

                                            Buttons.Add(finish_button);

                                            // Actions.

                                            check_box.Click += delegate
                                            {
                                                Controller.StartupItemChanged(check_box.IsChecked.Value);
                                            };

                                            finish_button.Click += delegate
                                            {
                                                Controller.TutorialPageCompleted();
                                            };

                                            break;
                                        }
                                }
                                break;
                            }
                        #endregion

                        // First step of the remote folder addition dialog: Specifying the server.
                        #region Page Add1
                        case PageType.Add1:
                            {
                                // UI elements.

                                Header = Properties_Resources.Where;

                                // Address input UI.
                                TextBlock address_label = new TextBlock()
                                {
                                    Text = Properties_Resources.EnterWebAddress,
                                    FontWeight = FontWeights.Bold
                                };

                                TextBox address_box = new TextBox()
                                {
                                    Width = 420,
                                    Text = (Controller.PreviousAddress != null) ? Controller.PreviousAddress.ToString() : ""
                                };

                                TextBlock address_help_label = new TextBlock()
                                {
                                    Text = Properties_Resources.Help + ": ",
                                    FontSize = 11,
                                    Foreground = new SolidColorBrush(Color.FromRgb(128, 128, 128))
                                };
                                Run run = new Run(Properties_Resources.WhereToFind);
                                Hyperlink link = new Hyperlink(run);
                                link.NavigateUri = new Uri("https://github.com/nicolas-raoul/CmisSync/wiki/What-address");
                                address_help_label.Inlines.Add(link);
                                link.RequestNavigate += (sender, e) =>
                                {
                                    System.Diagnostics.Process.Start(e.Uri.ToString());
                                };

                                // Rather than a TextBlock, we use a textBox so that users can copy/paste the error message and Google it.
                                TextBox address_error_label = new TextBox()
                                {
                                    FontSize = 11,
                                    Foreground = new SolidColorBrush(Color.FromRgb(255, 128, 128)),
                                    Visibility = Visibility.Hidden,
                                    IsReadOnly = true,
                                    Background = Brushes.Transparent,
                                    BorderThickness = new Thickness(0),
                                    TextWrapping = TextWrapping.Wrap,
                                    MaxWidth = 420
                                };

                                // User input UI.
                                TextBlock user_label = new TextBlock()
                                {
                                    Text = Properties_Resources.User + ":",
                                    FontWeight = FontWeights.Bold,
                                    Width = 200
                                };

                                TextBox user_box = new TextBox()
                                {
                                    Width = 200
                                };
                                if (Controller.saved_user == String.Empty || Controller.saved_user == null)
                                {
                                    user_box.Text = Environment.UserName;
                                }
                                else
                                {
                                    user_box.Text = Controller.saved_user;
                                }

                                TextBlock user_help_label = new TextBlock()
                                {
                                    FontSize = 11,
                                    Width = 200,
                                    Foreground = new SolidColorBrush(Color.FromRgb(128, 128, 128))
                                };

                                // Password input UI.
                                TextBlock password_label = new TextBlock()
                                {
                                    Text = Properties_Resources.Password + ":",
                                    FontWeight = FontWeights.Bold,
                                    Width = 200
                                };

                                PasswordBox password_box = new PasswordBox()
                                {
                                    Width = 200
                                };

                                TextBlock password_help_label = new TextBlock()
                                {
                                    FontSize = 11,
                                    Width = 200,
                                    Foreground = new SolidColorBrush(Color.FromRgb(128, 128, 128))
                                };

                                // Buttons.
                                Button cancel_button = new Button()
                                {
                                    Content = Properties_Resources.Cancel
                                };

                                Button continue_button = new Button()
                                {
                                    Content = Properties_Resources.Continue
                                };

                                Buttons.Add(continue_button);
                                Buttons.Add(cancel_button);

                                // Address
                                ContentCanvas.Children.Add(address_label);
                                Canvas.SetTop(address_label, 160);
                                Canvas.SetLeft(address_label, 185);

                                ContentCanvas.Children.Add(address_box);
                                Canvas.SetTop(address_box, 180);
                                Canvas.SetLeft(address_box, 185);

                                ContentCanvas.Children.Add(address_help_label);
                                Canvas.SetTop(address_help_label, 205);
                                Canvas.SetLeft(address_help_label, 185);

                                ContentCanvas.Children.Add(address_error_label);
                                Canvas.SetTop(address_error_label, 235);
                                Canvas.SetLeft(address_error_label, 185);

                                // User
                                ContentCanvas.Children.Add(user_label);
                                Canvas.SetTop(user_label, 300);
                                Canvas.SetLeft(user_label, 185);

                                ContentCanvas.Children.Add(user_box);
                                Canvas.SetTop(user_box, 330);
                                Canvas.SetLeft(user_box, 185);

                                ContentCanvas.Children.Add(user_help_label);
                                Canvas.SetTop(user_help_label, 355);
                                Canvas.SetLeft(user_help_label, 185);

                                // Password
                                ContentCanvas.Children.Add(password_label);
                                Canvas.SetTop(password_label, 300);
                                Canvas.SetRight(password_label, 30);

                                ContentCanvas.Children.Add(password_box);
                                Canvas.SetTop(password_box, 330);
                                Canvas.SetRight(password_box, 30);

                                ContentCanvas.Children.Add(password_help_label);
                                Canvas.SetTop(password_help_label, 355);
                                Canvas.SetRight(password_help_label, 30);

                                TaskbarItemInfo.ProgressValue = 0.0;
                                TaskbarItemInfo.ProgressState = TaskbarItemProgressState.None;

                                if (Controller.PreviousAddress == null || Controller.PreviousAddress.ToString() == String.Empty)
                                    address_box.Text = "https://";
                                else
                                    address_box.Text = Controller.PreviousAddress.ToString();
                                address_box.Focus();
                                address_box.Select(address_box.Text.Length, 0);

                                // Actions.

                                Controller.ChangeAddressFieldEvent += delegate(string text,
                                    string example_text)
                                {
                                    Dispatcher.BeginInvoke((Action)delegate
                                    {
                                        address_box.Text = text;
                                        address_help_label.Text = example_text;
                                    });
                                };

                                Controller.ChangeUserFieldEvent += delegate(string text,
                                    string example_text)
                                {
                                    Dispatcher.BeginInvoke((Action)delegate
                                    {
                                        user_box.Text = text;
                                        user_help_label.Text = example_text;
                                    });
                                };

                                Controller.ChangePasswordFieldEvent += delegate(string text,
                                    string example_text)
                                {
                                    Dispatcher.BeginInvoke((Action)delegate
                                    {
                                        password_box.Password = text;
                                        password_help_label.Text = example_text;
                                    });
                                };

                                Controller.UpdateAddProjectButtonEvent += delegate(bool button_enabled)
                                {
                                    Dispatcher.BeginInvoke((Action)delegate
                                    {
                                        continue_button.IsEnabled = button_enabled;
                                    });
                                };

                                Controller.CheckAddPage(address_box.Text);

                                address_box.TextChanged += delegate
                                {
                                    string error = Controller.CheckAddPage(address_box.Text);
                                    if (!String.IsNullOrEmpty(error))
                                    {
                                        address_error_label.Text = Properties_Resources.ResourceManager.GetString(error, CultureInfo.CurrentCulture);
                                        address_error_label.Visibility = Visibility.Visible;
                                    }
                                    else address_error_label.Visibility = Visibility.Hidden;
                                };

                                cancel_button.Click += delegate
                                {
                                    Controller.PageCancelled();
                                };

                                continue_button.Click += delegate
                                {
                                    // Show wait cursor
                                    System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor;

                                    // Try to find the CMIS server (asynchronously)
                                    GetRepositoriesFuzzyDelegate dlgt =
                                        new GetRepositoriesFuzzyDelegate(CmisUtils.GetRepositoriesFuzzy);
                                    IAsyncResult ar = dlgt.BeginInvoke(new Uri(address_box.Text), user_box.Text,
                                        password_box.Password, null, null);
                                    while (!ar.AsyncWaitHandle.WaitOne(100))
                                    {
                                        System.Windows.Forms.Application.DoEvents();
                                    }
                                    Tuple<CmisServer, Exception> result = dlgt.EndInvoke(ar);
                                    CmisServer cmisServer = result.Item1;

                                    Controller.repositories = cmisServer != null ? cmisServer.Repositories : null;

                                    address_box.Text = cmisServer.Url.ToString();

                                    // Hide wait cursor
                                    System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default;

                                    if (Controller.repositories == null)
                                    {
                                        // Could not retrieve repositories list from server, show warning.
                                        string warning = "";
                                        string message = result.Item2.Message;
                                        Exception e = result.Item2;
                                        if (e is CmisPermissionDeniedException)
                                        {
                                            warning = Properties_Resources.LoginFailedForbidden;
                                        }
                                        else if (e is CmisServerNotFoundException)
                                        {
                                            warning = Properties_Resources.ConnectFailure;
                                        }
                                        else if (e.Message == "SendFailure" && cmisServer.Url.Scheme.StartsWith("https"))
                                        {
                                            warning = Properties_Resources.SendFailureHttps;
                                        }
                                        else if (e.Message == "TrustFailure")
                                        {
                                            warning = Properties_Resources.TrustFailure;
                                        }
                                        else
                                        {
                                            warning = message + Environment.NewLine + Properties_Resources.Sorry;
                                        }
                                        address_error_label.Text = warning;
                                        address_error_label.Visibility = Visibility.Visible;
                                    }
                                    else
                                    {
                                        // Continue to next step, which is choosing a particular folder.
                                        Controller.Add1PageCompleted(
                                            new Uri(address_box.Text), user_box.Text, password_box.Password);
                                    }
                                };
                                break;
                            }
                        #endregion

                        // Second step of the remote folder addition dialog: choosing the folder.
                        #region Page Add2
                        case PageType.Add2:
                            {
                                // UI elements.

                                Header = Properties_Resources.Which;

                                // A tree allowing the user to browse CMIS repositories/folders.
                                /*if(TODO check if OpenDataSpace, and further separate code below)
                                {
                                    System.Uri resourceLocater = new System.Uri("/CmisSync;component/TreeView.xaml", System.UriKind.Relative);
                                    System.Windows.Controls.TreeView treeView = System.Windows.Application.LoadComponent(resourceLocater) as TreeView;
                                    ObservableCollection<CmisRepo> repos = new ObservableCollection<CmisRepo>();
                                */
                                System.Windows.Controls.TreeView treeView = new System.Windows.Controls.TreeView();
                                treeView.Width = 410;
                                treeView.Height = 267;

                                // Some CMIS servers hold several repositories (ex:Nuxeo). Show one root per repository.
                                foreach (KeyValuePair<String, String> repository in Controller.repositories)
                                {
                                    System.Windows.Controls.TreeViewItem item = new System.Windows.Controls.TreeViewItem();
                                    item.Tag = new SelectionTreeItem(repository.Key, "/");
                                    item.Header = repository.Value;
                                    treeView.Items.Add(item);
                                }

                                ContentCanvas.Children.Add(treeView);
                                Canvas.SetTop(treeView, 70);
                                Canvas.SetLeft(treeView, 185);

                                // Action: when an element in the tree is clicked, loads its children and show them.
                                treeView.SelectedItemChanged += delegate
                                {
                                    // Identify the selected remote path.
                                    TreeViewItem item = (TreeViewItem)treeView.SelectedItem;
                                    Controller.saved_remote_path = ((SelectionTreeItem)item.Tag).fullPath;

                                    // Identify the selected repository.
                                    object cursor = item;
                                    while (cursor is TreeViewItem)
                                    {
                                        TreeViewItem treeViewItem = (TreeViewItem)cursor;
                                        cursor = treeViewItem.Parent;
                                        if (!(cursor is TreeViewItem))
                                        {
                                            Controller.saved_repository = ((SelectionTreeItem)treeViewItem.Tag).repository;
                                        }
                                    }

                                    // Load sub-folders if it has not been done already.
                                    // We use each item's Tag to store metadata: whether this item's subfolders have been loaded or not.
                                    if (((SelectionTreeItem)item.Tag).childrenLoaded == false)
                                    {
                                        System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor;

                                        // Get list of subfolders (asynchronously)
                                        GetSubfoldersDelegate dlgt = new GetSubfoldersDelegate(CmisUtils.GetSubfolders);
                                        IAsyncResult ar = dlgt.BeginInvoke(Controller.saved_repository,
                                            Controller.saved_remote_path, Controller.saved_address.ToString(),
                                            Controller.saved_user, Controller.saved_password, null, null);
                                        while (!ar.AsyncWaitHandle.WaitOne(100))
                                        {
                                            System.Windows.Forms.Application.DoEvents();
                                        }
                                        string[] subfolders = dlgt.EndInvoke(ar);

                                        // Create a sub-item for each subfolder
                                        foreach (string subfolder in subfolders)
                                        {
                                            System.Windows.Controls.TreeViewItem subItem =
                                                new System.Windows.Controls.TreeViewItem();
                                            subItem.Tag = new SelectionTreeItem(null, subfolder);
                                            subItem.Header = Path.GetFileName(subfolder);
                                            item.Items.Add(subItem);
                                        }
                                        ((SelectionTreeItem)item.Tag).childrenLoaded = true;
                                        item.ExpandSubtree();
                                        System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default;
                                    }
                                };

                                Button cancel_button = new Button()
                                {
                                    Content = Properties_Resources.Cancel
                                };

                                Button continue_button = new Button()
                                {
                                    Content = CmisSync.Properties_Resources.ResourceManager.GetString("Continue", CultureInfo.CurrentCulture)
                                };

                                Button back_button = new Button()
                                {
                                    Content = Properties_Resources.Back,
                                    IsDefault = false
                                };

                                Buttons.Add(back_button);
                                Buttons.Add(continue_button);
                                Buttons.Add(cancel_button);

                                continue_button.Focus();

                                cancel_button.Click += delegate
                                {
                                    Controller.PageCancelled();
                                };

                                continue_button.Click += delegate
                                {
                                    Controller.Add2PageCompleted(
                                        Controller.saved_repository, Controller.saved_remote_path);
                                };

                                back_button.Click += delegate
                                {
                                    Controller.BackToPage1();
                                };
                                break;
                            }
                        #endregion

                        // Third step of the remote folder addition dialog: Customizing the local folder.
                        #region Page Customize
                        case PageType.Customize:
                            {
                                string parentFolder = Controller.DefaultRepoPath;

                                // UI elements.

                                Header = Properties_Resources.Customize;

                                // Customize local folder name
                                TextBlock localfolder_label = new TextBlock()
                                {
                                    Text = Properties_Resources.EnterLocalFolderName,
                                    FontWeight = FontWeights.Bold,
                                    TextWrapping = TextWrapping.Wrap,
                                    Width = 420
                                };
                                string localfoldername = Controller.saved_address.Host.ToString();
                                foreach (KeyValuePair<String, String> repository in Controller.repositories)
                                {
                                    if (repository.Key == Controller.saved_repository)
                                    {
                                        localfoldername += "\\" + repository.Value;
                                        break;
                                    }
                                }
                                TextBox localfolder_box = new TextBox()
                                {
                                    Width = 420,
                                    Text = localfoldername
                                };

                                TextBlock localrepopath_label = new TextBlock()
                                {
                                    Text = Properties_Resources.ChangeRepoPath,
                                    FontWeight = FontWeights.Bold
                                };

                                TextBox localrepopath_box = new TextBox()
                                {
                                    Width = 375,
                                    Text = Path.Combine(parentFolder, localfolder_box.Text)
                                };

                                localfolder_box.TextChanged += delegate
                                {
                                    localrepopath_box.Text = Path.Combine(parentFolder, localfolder_box.Text);
                                };

                                Button choose_folder_button = new Button()
                                {
                                    Width = 40,
                                    Content = "..."
                                };

                                TextBlock localfolder_error_label = new TextBlock()
                                {
                                    FontSize = 11,
                                    Foreground = new SolidColorBrush(Color.FromRgb(255, 128, 128)),
                                    Visibility = Visibility.Hidden,
                                    TextWrapping = TextWrapping.Wrap
                                };

                                Button cancel_button = new Button()
                                {
                                    Content = Properties_Resources.Cancel
                                };

                                Button add_button = new Button()
                                {
                                    Content = Properties_Resources.Add,
                                    IsDefault = true
                                };

                                Button back_button = new Button()
                                {
                                    Content = Properties_Resources.Back
                                };

                                Buttons.Add(back_button);
                                Buttons.Add(add_button);
                                Buttons.Add(cancel_button);

                                // Local Folder Name
                                ContentCanvas.Children.Add(localfolder_label);
                                Canvas.SetTop(localfolder_label, 160);
                                Canvas.SetLeft(localfolder_label, 185);

                                ContentCanvas.Children.Add(localfolder_box);
                                Canvas.SetTop(localfolder_box, 180);
                                Canvas.SetLeft(localfolder_box, 185);

                                ContentCanvas.Children.Add(localrepopath_label);
                                Canvas.SetTop(localrepopath_label, 200);
                                Canvas.SetLeft(localrepopath_label, 185);

                                ContentCanvas.Children.Add(localrepopath_box);
                                Canvas.SetTop(localrepopath_box, 220);
                                Canvas.SetLeft(localrepopath_box, 185);

                                ContentCanvas.Children.Add(choose_folder_button);
                                Canvas.SetTop(choose_folder_button, 220);
                                Canvas.SetLeft(choose_folder_button, 565);

                                ContentCanvas.Children.Add(localfolder_error_label);
                                Canvas.SetTop(localfolder_error_label, 275);
                                Canvas.SetLeft(localfolder_error_label, 185);

                                TaskbarItemInfo.ProgressValue = 0.0;
                                TaskbarItemInfo.ProgressState = TaskbarItemProgressState.None;

                                localfolder_box.Focus();
                                localfolder_box.Select(localfolder_box.Text.Length, 0);

                                // Actions.

                                Controller.UpdateAddProjectButtonEvent += delegate(bool button_enabled)
                                {
                                    Dispatcher.BeginInvoke((Action)delegate
                                    {
                                        if (add_button.IsEnabled != button_enabled)
                                        {
                                            add_button.IsEnabled = button_enabled;
                                            if (button_enabled)
                                            {
                                                add_button.IsDefault = true;
                                                back_button.IsDefault = false;
                                            }
                                        }
                                    });
                                };

                                // Repo name validity.

                                string error = Controller.CheckRepoPathAndName(localrepopath_box.Text, localfolder_box.Text);

                                if (!String.IsNullOrEmpty(error))
                                {
                                    localfolder_error_label.Text = Properties_Resources.ResourceManager.GetString(error, CultureInfo.CurrentCulture);
                                    localfolder_error_label.Visibility = Visibility.Visible;
                                }
                                else localfolder_error_label.Visibility = Visibility.Hidden;

                                localfolder_box.TextChanged += delegate
                                {
                                    error = Controller.CheckRepoPathAndName(localrepopath_box.Text, localfolder_box.Text);
                                    if (!String.IsNullOrEmpty(error))
                                    {
                                        localfolder_error_label.Text = Properties_Resources.ResourceManager.GetString(error, CultureInfo.CurrentCulture);
                                        localfolder_error_label.Visibility = Visibility.Visible;
                                    }
                                    else localfolder_error_label.Visibility = Visibility.Hidden;
                                };

                                // Repo path validity.

                                error = Controller.CheckRepoPathAndName(localrepopath_box.Text, localfolder_box.Text);
                                if (!String.IsNullOrEmpty(error))
                                {
                                    localfolder_error_label.Text = Properties_Resources.ResourceManager.GetString(error, CultureInfo.CurrentCulture);
                                    localfolder_error_label.Visibility = Visibility.Visible;
                                }
                                else localfolder_error_label.Visibility = Visibility.Hidden;

                                localrepopath_box.TextChanged += delegate
                                {
                                    error = Controller.CheckRepoPathAndName(localrepopath_box.Text, localfolder_box.Text);
                                    if (!String.IsNullOrEmpty(error))
                                    {
                                        localfolder_error_label.Text = Properties_Resources.ResourceManager.GetString(error, CultureInfo.CurrentCulture);
                                        localfolder_error_label.Visibility = Visibility.Visible;

                                    }
                                    else localfolder_error_label.Visibility = Visibility.Hidden;
                                };

                                // Choose a folder.
                                choose_folder_button.Click += delegate
                                {
                                    System.Windows.Forms.FolderBrowserDialog folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog();
                                    if (folderBrowserDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                                    {
                                        parentFolder = folderBrowserDialog1.SelectedPath;
                                        localrepopath_box.Text = Path.Combine(parentFolder, localfolder_box.Text);
                                    }
                                };

                                // Other actions.

                                cancel_button.Click += delegate
                                {
                                    Controller.PageCancelled();
                                };

                                back_button.Click += delegate
                                {
                                    Controller.BackToPage2();
                                };

                                add_button.Click += delegate
                                {
                                    Controller.CustomizePageCompleted(localfolder_box.Text, localrepopath_box.Text);
                                };
                                break;
                            }
                        #endregion

                        // Fourth page of the remote folder addition dialog: starting to sync.
                        // TODO: This step should be removed. Now it appears just a brief instant, because sync is asynchronous.
                        #region Page Syncing
                        case PageType.Syncing:
                            {
                                // UI elements.

                                Header = Properties_Resources.AddingFolder + " ‘" + Controller.SyncingReponame + "’…";
                                Description = Properties_Resources.MayTakeTime;

                                Button finish_button = new Button()
                                {
                                    Content = Properties_Resources.Finish,
                                    IsEnabled = false
                                };

                                ProgressBar progress_bar = new ProgressBar()
                                {
                                    Width = 414,
                                    Height = 15,
                                    Value = Controller.ProgressBarPercentage
                                };


                                ContentCanvas.Children.Add(progress_bar);
                                Canvas.SetLeft(progress_bar, 185);
                                Canvas.SetTop(progress_bar, 150);

                                TaskbarItemInfo.ProgressState = TaskbarItemProgressState.Normal;

                                Buttons.Add(finish_button);

                                // Actions.

                                Controller.UpdateProgressBarEvent += delegate(double percentage)
                                {
                                    Dispatcher.BeginInvoke((Action)delegate
                                    {
                                        progress_bar.Value = percentage;
                                        TaskbarItemInfo.ProgressValue = percentage / 100;
                                    });
                                };

                                break;
                            }
                        #endregion

                        // Final page of the remote folder addition dialog: end of the addition wizard.
                        #region Page Finished
                        case PageType.Finished:
                            {
                                // UI elements.

                                Header = Properties_Resources.Ready;
                                Description = Properties_Resources.YouCanFind;

                                Button finish_button = new Button()
                                {
                                    Content = Properties_Resources.Finish
                                };

                                Button open_folder_button = new Button()
                                {
                                    Content = Properties_Resources.OpenFolder
                                };

                                TaskbarItemInfo.ProgressValue = 0.0;
                                TaskbarItemInfo.ProgressState = TaskbarItemProgressState.None;

                                Buttons.Add(open_folder_button);
                                Buttons.Add(finish_button);

                                // Actions.

                                finish_button.Click += delegate
                                {
                                    Controller.FinishPageCompleted();
                                };

                                open_folder_button.Click += delegate
                                {
                                    Controller.OpenFolderClicked();
                                };


                                SystemSounds.Exclamation.Play();

                                break;
                            }
                        #endregion
                    }

                    ShowAll();
                    Logger.Info("Exiting ChangePageEvent.");
                });
            };
            this.Closing += delegate
            {
                Controller.PageCancelled();
            };

            Controller.PageCancelled();
            Logger.Info("Exiting constructor.");
        }
Esempio n. 14
0
        public SparkleSetup()
        {
            Controller.ShowWindowEvent += delegate {
               Dispatcher.BeginInvoke ((Action) delegate {
                    Show ();
                    Activate ();
                    BringIntoView ();
                });
            };

            Controller.HideWindowEvent += delegate {
                Dispatcher.BeginInvoke ((Action) delegate {
                    Hide ();
                });
            };

            Controller.ChangePageEvent += delegate (PageType type, string [] warnings) {
                Dispatcher.BeginInvoke ((Action) delegate {
                    Reset ();

                    switch (type) {
                    case PageType.Setup: {
                        Header      = "Welcome to CmisSync!";
                        Description = "CmisSync allows you to keep in sync with any CMIS-compatible repository, and use your documents even when offline.\nIt is like Dropbox for Enterprise Content Management!\nAvailable for Linux, Mac, Windows.";

                        Button cancel_button = new Button () {
                            Content = "Cancel"
                        };

                        Button continue_button = new Button () {
                            Content = "Continue",
                            IsEnabled = false
                        };

                        Buttons.Add (continue_button);
                        Buttons.Add (cancel_button);

                        continue_button.Focus();

                        Controller.UpdateSetupContinueButtonEvent += delegate (bool enabled) {
                            Dispatcher.BeginInvoke ((Action) delegate {
                                continue_button.IsEnabled = enabled;
                            });
                        };

                        cancel_button.Click += delegate {
                            Dispatcher.BeginInvoke ((Action) delegate {
                                Program.UI.StatusIcon.Dispose ();
                                Controller.SetupPageCancelled ();
                            });
                        };

                        continue_button.Click += delegate {
                            Controller.SetupPageCompleted ();
                        };

                        Controller.CheckSetupPage ();

                        break;
                    }

                    case PageType.Invite: {
                        Header      = "You've received an invite!";
                           Description = "Do you want to add this project to SparkleShare?";

                        TextBlock address_label = new TextBlock () {
                            Text = "Address:",
                            Width = 150,
                            TextAlignment = TextAlignment.Right
                        };

                        TextBlock address_value = new TextBlock () {
                            Text  = Controller.PendingInvite.Address,
                            Width = 175,
                            FontWeight = FontWeights.Bold
                        };

                        TextBlock path_label = new TextBlock () {
                            Text  = "Remote Path:",
                            Width = 150,
                            TextAlignment = TextAlignment.Right
                        };

                        TextBlock path_value = new TextBlock () {
                            Width = 175,
                            Text = Controller.PendingInvite.RemotePath,
                            FontWeight = FontWeights.Bold
                        };

                        Button cancel_button = new Button () {
                            Content = "Cancel"
                        };

                        Button add_button = new Button () {
                            Content = "Add"
                        };

                        ContentCanvas.Children.Add (address_label);
                        Canvas.SetLeft (address_label, 180);
                        Canvas.SetTop (address_label, 200);

                        ContentCanvas.Children.Add (address_value);
                        Canvas.SetLeft (address_value, 340);
                        Canvas.SetTop (address_value, 200);

                        ContentCanvas.Children.Add (path_label);
                        Canvas.SetLeft (path_label, 180);
                        Canvas.SetTop (path_label, 225);

                        ContentCanvas.Children.Add (path_value);
                        Canvas.SetLeft (path_value, 340);
                        Canvas.SetTop (path_value, 225);

                        Buttons.Add (add_button);
                        Buttons.Add (cancel_button);

                        cancel_button.Click += delegate {
                            Controller.PageCancelled ();
                        };

                        add_button.Click += delegate {
                            Controller.InvitePageCompleted ();
                        };

                        break;
                    }

                    case PageType.Add1: {
                        Header = "Where is your organization's server?";

                        // Address
                        TextBlock address_label = new TextBlock () {
                            Text       = "Enter a Web address where the documents can be seen:",
                            FontWeight = FontWeights.Bold
                        };

                        TextBox address_box = new TextBox () {
                            Width = 420,
                            Text  = Controller.PreviousAddress,
                            IsEnabled = (Controller.SelectedPlugin.Address == null)
                        };

                        TextBlock address_help_label = new TextBlock()
                        {
                            Text = "Help: ",
                            FontSize = 11,
                            Foreground = new SolidColorBrush(Color.FromRgb(128, 128, 128))
                        };
                        Run run = new Run("Where to find this address");
                        Hyperlink link = new Hyperlink(run);
                        link.NavigateUri = new Uri("https://github.com/nicolas-raoul/CmisSync/wiki/What-address");
                        address_help_label.Inlines.Add(link);
                        link.RequestNavigate += (sender, e) =>
                            {
                                System.Diagnostics.Process.Start(e.Uri.ToString());
                            };

                        TextBlock address_error_label = new TextBlock()
                        {
                            FontSize = 11,
                            Foreground = new SolidColorBrush(Color.FromRgb(255, 128, 128)),
                            Visibility = Visibility.Hidden
                        };

                        // User
                        TextBlock user_label = new TextBlock()
                        {
                            Text = "User:"******"Password:"******"Cancel"
                        };

                        Button continue_button = new Button () {
                            Content = "Continue"
                        };

                        // Address
                        ContentCanvas.Children.Add (address_label);
                        Canvas.SetTop (address_label, 160);
                        Canvas.SetLeft (address_label, 185);

                        ContentCanvas.Children.Add (address_box);
                        Canvas.SetTop (address_box, 180);
                        Canvas.SetLeft (address_box, 185);

                        ContentCanvas.Children.Add(address_help_label);
                        Canvas.SetTop(address_help_label, 205);
                        Canvas.SetLeft(address_help_label, 185);

                        ContentCanvas.Children.Add(address_error_label);
                        Canvas.SetTop(address_error_label, 235);
                        Canvas.SetLeft(address_error_label, 185);

                        // User
                        ContentCanvas.Children.Add(user_label);
                        Canvas.SetTop(user_label, 300);
                        Canvas.SetLeft(user_label, 185);

                        ContentCanvas.Children.Add(user_box);
                        Canvas.SetTop(user_box, 330);
                        Canvas.SetLeft(user_box, 185);

                        ContentCanvas.Children.Add(user_help_label);
                        Canvas.SetTop(user_help_label, 355);
                        Canvas.SetLeft(user_help_label, 185);

                        // Password
                        ContentCanvas.Children.Add(password_label);
                        Canvas.SetTop(password_label, 300);
                        Canvas.SetRight(password_label, 30);

                        ContentCanvas.Children.Add(password_box);
                        Canvas.SetTop(password_box, 330);
                        Canvas.SetRight(password_box, 30);

                        ContentCanvas.Children.Add(password_help_label);
                        Canvas.SetTop(password_help_label, 355);
                        Canvas.SetRight(password_help_label, 30);

                        TaskbarItemInfo.ProgressValue = 0.0;
                        TaskbarItemInfo.ProgressState = TaskbarItemProgressState.None;

                        Buttons.Add (continue_button);
                        Buttons.Add (cancel_button);

                        address_box.Focus ();
                        address_box.Select (address_box.Text.Length, 0);

                        Controller.ChangeAddressFieldEvent += delegate (string text,
                            string example_text, FieldState state) {
                            Dispatcher.BeginInvoke ((Action) delegate {
                                address_box.Text        = text;
                                address_box.IsEnabled   = (state == FieldState.Enabled);
                                address_help_label.Text = example_text;
                            });
                        };

                        Controller.ChangeUserFieldEvent += delegate(string text,
                            string example_text, FieldState state) {
                            Dispatcher.BeginInvoke((Action)delegate
                            {
                                user_box.Text = text;
                                user_box.IsEnabled = (state == FieldState.Enabled);
                                user_help_label.Text = example_text;
                            });
                        };

                        Controller.ChangePasswordFieldEvent += delegate(string text,
                            string example_text, FieldState state) {
                            Dispatcher.BeginInvoke((Action)delegate
                            {
                                password_box.Password = text;
                                password_box.IsEnabled = (state == FieldState.Enabled);
                                password_help_label.Text = example_text;
                            });
                        };

                        Controller.UpdateAddProjectButtonEvent += delegate(bool button_enabled)
                        {
                            Dispatcher.BeginInvoke ((Action) delegate {
                                continue_button.IsEnabled = button_enabled;
                            });
                        };

                        Controller.CheckAddPage (address_box.Text);

                        address_box.TextChanged += delegate {
                            Controller.CheckAddPage (address_box.Text);
                        };

                        cancel_button.Click += delegate {
                            Controller.PageCancelled ();
                        };

                        continue_button.Click += delegate {
                            // Show wait cursor
                            System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor;

                            // Try to find the CMIS server
                            CmisServer cmisServer = CmisUtils.GetRepositoriesFuzzy(
                                address_box.Text, user_box.Text, password_box.Password);
                            Controller.repositories = cmisServer.repositories;
                            address_box.Text = cmisServer.url;

                            // Hide wait cursor
                            System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default;

                            if (Controller.repositories == null)
                            {
                                // Show warning
                                address_error_label.Text = "Sorry, CmisSync can not find a CMIS server at this address.\nPlease check again.\nIf you are sure about the address, open it in a browser and post\nthe resulting XML to the CmisSync forum.";
                                address_error_label.Visibility = Visibility.Visible;
                            }
                            else
                            {
                                // Continue to folder selection
                                Controller.Add1PageCompleted(
                                    address_box.Text, user_box.Text, password_box.Password);
                            }
                        };

                        break;
                    }

                    case PageType.Add2: {
                        Header = "Which remote folder do you want to sync?";

                        System.Windows.Controls.TreeView treeView = new System.Windows.Controls.TreeView();
                        treeView.Width = 410;
                        treeView.Height = 267;
                        foreach (string repository in Controller.repositories)
                        {
                            System.Windows.Controls.TreeViewItem item = new System.Windows.Controls.TreeViewItem();
                            item.Tag = new SelectionTreeItem("/");
                            item.Header = repository;
                            treeView.Items.Add(item);
                        }
                        ContentCanvas.Children.Add(treeView);
                        Canvas.SetTop(treeView, 70);
                        Canvas.SetLeft(treeView, 185);

                        treeView.SelectedItemChanged += delegate
                        {
                            // Identify the selected remote path.
                            TreeViewItem item = (TreeViewItem)treeView.SelectedItem;
                            Controller.saved_remote_path = ((SelectionTreeItem)item.Tag).fullPath;

                            // Identify the selected repository.
                            object cursor = item;
                            while (cursor is TreeViewItem)
                            {
                                TreeViewItem treeViewItem = (TreeViewItem)cursor;
                                cursor = treeViewItem.Parent;
                                if ( ! (cursor is TreeViewItem))
                                {
                                    Controller.saved_repository = (string)treeViewItem.Header;
                                }
                            }

                            // Load sub-folders if it has not been done already.
                            // We use each item's Tag to store metadata: whether this item's subfolders have been loaded or not.
                            if ( ((SelectionTreeItem)item.Tag).childrenLoaded == false)
                            {
                                System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor;

                                // Get list of subfolders
                                string[] subfolders = CmisUtils.GetSubfolders(Controller.saved_repository, Controller.saved_remote_path,
                                    Controller.saved_address, Controller.saved_user, Controller.saved_password);

                                // Create a sub-item for each subfolder
                                foreach (string subfolder in subfolders)
                                {
                                    System.Windows.Controls.TreeViewItem subItem =
                                        new System.Windows.Controls.TreeViewItem();
                                    subItem.Tag = new SelectionTreeItem(subfolder);
                                    subItem.Header = Path.GetFileName(subfolder);
                                    item.Items.Add(subItem);
                                }
                                ((SelectionTreeItem)item.Tag).childrenLoaded = true;
                                item.ExpandSubtree();
                                System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default;
                            }
                        };

                        Button cancel_button = new Button()
                        {
                            Content = "Cancel"
                        };

                        Button add_button = new Button()
                        {
                            Content = "Add"
                        };

                        Buttons.Add(add_button);
                        Buttons.Add(cancel_button);

                        cancel_button.Click += delegate
                        {
                            Controller.PageCancelled();
                        };

                        add_button.Click += delegate
                        {
                            Controller.Add2PageCompleted(
                                Controller.saved_repository, Controller.saved_remote_path);
                        };

                        break;
                    }

                    case PageType.Syncing: {
                        Header      = "Adding folder ‘" + Controller.SyncingFolder + "’…";
                        Description = "This may either take a short or a long time depending on the folder's size.";

                        Button finish_button = new Button () {
                            Content   = "Finish",
                            IsEnabled = false
                        };

                        Button cancel_button = new Button () {
                            Content = "Cancel"
                        };

                        ProgressBar progress_bar = new ProgressBar () {
                            Width  = 414,
                            Height = 15,
                            Value  = Controller.ProgressBarPercentage
                        };

                        ContentCanvas.Children.Add (progress_bar);
                        Canvas.SetLeft (progress_bar, 185);
                        Canvas.SetTop (progress_bar, 150);

                        TaskbarItemInfo.ProgressState = TaskbarItemProgressState.Normal;

                        Buttons.Add (cancel_button);
                        Buttons.Add(finish_button);

                        Controller.UpdateProgressBarEvent += delegate (double percentage) {
                            Dispatcher.BeginInvoke ((Action) delegate {
                                progress_bar.Value = percentage;
                                TaskbarItemInfo.ProgressValue = percentage / 100;
                            });
                        };

                        cancel_button.Click += delegate {
                            Controller.SyncingCancelled ();
                        };

                        break;
                    }

                    case PageType.Error: {
                        Header      = "Oops! Something went wrong…";
                        Description = "Please check the following:";

                        TextBlock help_block = new TextBlock () {
                            TextWrapping = TextWrapping.Wrap,
                            Width        = 310
                        };

                        TextBlock bullets_block = new TextBlock () {
                            Text = "•\n\n\n•"
                        };

                        help_block.Inlines.Add (new Bold (new Run (Controller.PreviousUrl)));
                        help_block.Inlines.Add (" is the address we've compiled. Does this look alright?\n\n");
                        help_block.Inlines.Add ("Do you have access rights to this remote project?");

                        if (warnings.Length > 0) {
                            bullets_block.Text += "\n\n•";
                            help_block.Inlines.Add ("\n\nHere's the raw error message:");

                            foreach (string warning in warnings) {
                                help_block.Inlines.Add ("\n");
                                help_block.Inlines.Add (new Bold (new Run (warning)));
                            }
                        }

                        Button cancel_button = new Button () {
                            Content = "Cancel"
                        };

                        Button try_again_button = new Button () {
                            Content = "Try again…"
                        };

                        ContentCanvas.Children.Add (bullets_block);
                        Canvas.SetLeft (bullets_block, 195);
                        Canvas.SetTop (bullets_block, 100);

                        ContentCanvas.Children.Add (help_block);
                        Canvas.SetLeft (help_block, 210);
                        Canvas.SetTop (help_block, 100);

                        TaskbarItemInfo.ProgressValue = 1.0;
                        TaskbarItemInfo.ProgressState = TaskbarItemProgressState.Error;

                        Buttons.Add (try_again_button);
                        Buttons.Add (cancel_button);

                        cancel_button.Click += delegate {
                            Controller.PageCancelled ();
                        };

                        try_again_button.Click += delegate {
                            Controller.ErrorPageCompleted ();
                        };

                        break;
                    }

                    case PageType.Finished: {
                        Header      = "Your documents are ready!";
                        Description = "You can find them in your CmisSync folder.";

                        Button finish_button = new Button () {
                            Content = "Finish"
                        };

                        Button open_folder_button = new Button () {
                            Content = string.Format ("Open {0}", Path.GetFileName (Controller.PreviousPath))
                        };

                        if (warnings.Length > 0) {
                            Image warning_image = new Image () {
                                Source = Imaging.CreateBitmapSourceFromHIcon (Drawing.SystemIcons.Information.Handle,
                                    Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions ())
                            };

                            TextBlock warning_block = new TextBlock () {
                                Text         = warnings [0],
                                Width        = 310,
                                TextWrapping = TextWrapping.Wrap
                            };

                            ContentCanvas.Children.Add (warning_image);
                            Canvas.SetLeft (warning_image, 193);
                            Canvas.SetTop (warning_image, 100);

                            ContentCanvas.Children.Add (warning_block);
                            Canvas.SetLeft (warning_block, 240);
                            Canvas.SetTop (warning_block, 100);
                        }

                        TaskbarItemInfo.ProgressValue = 0.0;
                        TaskbarItemInfo.ProgressState = TaskbarItemProgressState.None;

                        Buttons.Add(open_folder_button);
                        Buttons.Add (finish_button);

                        finish_button.Click += delegate {
                            Controller.FinishPageCompleted ();
                        };

                        open_folder_button.Click += delegate {
                            Controller.OpenFolderClicked ();
                        };

                        SystemSounds.Exclamation.Play ();

                        break;
                    }

                    case PageType.Tutorial: {

                        switch (Controller.TutorialPageNumber) {
                            case 1: {
                                Header      = "What's happening next?";
                                Description = "CmisSync creates a special folder on your computer " +
                                    "that will keep track of your folders.";

                                WPF.Image slide_image = new WPF.Image () {
                                    Width  = 350,
                                    Height = 200
                                };

                                slide_image.Source = SparkleUIHelpers.GetImageSource ("tutorial-slide-1");

                                Button skip_tutorial_button = new Button () {
                                    Content = "Skip tutorial"
                                };

                                Button continue_button = new Button () {
                                    Content = "Continue"
                                };

                                ContentCanvas.Children.Add (slide_image);
                                Canvas.SetLeft (slide_image, 215);
                                Canvas.SetTop (slide_image, 130);

                                Buttons.Add (continue_button);
                                Buttons.Add (skip_tutorial_button);

                                skip_tutorial_button.Click += delegate {
                                    Controller.TutorialSkipped ();
                                };

                                continue_button.Click += delegate {
                                    Controller.TutorialPageCompleted ();
                                };

                                break;
                            }

                            case 2: {
                                Header      = "Sharing files with others";
                                Description = "All files added to the server are automatically synced to your " +
                                    "local folder.";

                                Button continue_button = new Button () {
                                    Content = "Continue"
                                };

                                WPF.Image slide_image = new WPF.Image () {
                                    Width  = 350,
                                    Height = 200
                                };

                                slide_image.Source = SparkleUIHelpers.GetImageSource ("tutorial-slide-2");

                                ContentCanvas.Children.Add (slide_image);
                                Canvas.SetLeft (slide_image, 215);
                                Canvas.SetTop (slide_image, 130);

                                Buttons.Add (continue_button);

                                continue_button.Click += delegate {
                                    Controller.TutorialPageCompleted ();
                                };

                                break;
                            }

                            case 3: {
                                Header      = "The status icon is here to help";
                                Description = "It shows the syncing progress, provides easy access to " +
                                    "your folders and lets you view recent changes.";

                                Button continue_button = new Button () {
                                    Content = "Continue"
                                };

                                WPF.Image slide_image = new WPF.Image () {
                                    Width  = 350,
                                    Height = 200
                                };

                                slide_image.Source = SparkleUIHelpers.GetImageSource ("tutorial-slide-3");

                                ContentCanvas.Children.Add (slide_image);
                                Canvas.SetLeft (slide_image, 215);
                                Canvas.SetTop (slide_image, 130);

                                Buttons.Add (continue_button);

                                continue_button.Click += delegate {
                                    Controller.TutorialPageCompleted ();
                                };

                                break;
                            }

                            case 4: {
                                Header      = "Adding repository folders to CmisSync";
                                Description = "You can easily add a new CMIS folder " +
                                    "at any time.";

                                Button finish_button = new Button () {
                                    Content = "Finish"
                                };

                                WPF.Image slide_image = new WPF.Image () {
                                    Width  = 350,
                                    Height = 200
                                };

                                slide_image.Source = SparkleUIHelpers.GetImageSource ("tutorial-slide-4");

                                CheckBox check_box = new CheckBox () {
                                    Content   = "Add CmisSync to startup items",
                                    IsChecked = true
                                };

                                ContentCanvas.Children.Add (slide_image);
                                Canvas.SetLeft (slide_image, 215);
                                Canvas.SetTop (slide_image, 130);

                                ContentCanvas.Children.Add (check_box);
                                Canvas.SetLeft (check_box, 185);
                                Canvas.SetBottom (check_box, 12);

                                Buttons.Add (finish_button);

                                check_box.Click += delegate {
                                    Controller.StartupItemChanged (check_box.IsChecked.Value);
                                };

                                finish_button.Click += delegate {
                                    Controller.TutorialPageCompleted ();
                                };

                                break;
                            }
                        }
                        break;
                    }
                    }

                    ShowAll ();
                });
            };
        }
		private void UpdateCacheView()
		{
			cacheDirectoryTextBox.Text = Cache.CacheDirectory;

			cacheTreeView.Items.Clear();

			//show error if cache not detected
			if (!File.Exists(Cache.CacheDirectory + Cache.CacheFileName))
			{
				cacheTreeView.Items.Add("No cache file found in directory.");
				_canExtract = false;
				return;
			}

			//fill the treeview
			var cacheTreeItem = new TreeViewItem
			{
				Header = "Cache",
				Tag = -1,
				ContextMenu = (ContextMenu)Resources["ExtractContextMenu"]
			};
			cacheTreeItem.MouseDoubleClick += cacheTreeViewItem_DoubleClick;

			cacheTreeItem.ExpandSubtree();

			foreach (var archiveId in Cache.GetArchiveIds())
			{
				var archiveTreeItem = new TreeViewItem
				{
					Header = $"Archive {archiveId}",
					Tag = archiveId,
					ContextMenu = (ContextMenu)Resources["ExtractContextMenu"]
				};

				archiveTreeItem.MouseDoubleClick += cacheTreeViewItem_DoubleClick;

				cacheTreeItem.Items.Add(archiveTreeItem);
			}

			_canExtract = true;
			cacheTreeView.Items.Add(cacheTreeItem);
		}
Esempio n. 16
0
        private void ShowFormula(string cellRef, string formula)
        {
            var formulaObject = new ExcelFormulaParser.ExcelFormula(formula);
            System.Action action = () =>
            {
                FormulaTreeView.Items.Clear();
                var rootItem = new TreeViewItem {Header = cellRef};
                FormulaTreeView.Items.Add(rootItem);
                ShowFormula(new Queue<ExcelFormulaToken>(formulaObject), rootItem.Items);
                rootItem.ExpandSubtree();
            };

            Dispatcher.BeginInvoke(action);
        }
Esempio n. 17
0
        private void ParserService_ParseInformationUpdated(object sender, ParseInformationEventArgs e)
        {
            if (_textEditor == null || !FileUtility.IsEqualFileName(_textEditor.FileName, e.FileName))
            {
                return;
            }

            trvLayout.Items.Clear();

            IVbModuleWrapper wrapper = (IVbModuleWrapper)e.NewUnresolvedFile;

            TreeViewItem root = new TreeViewItem();
            root.Header = GetNodeHeaderWithIcon(wrapper.Module.Name, CompletionImage.Class);

            TreeViewItem fields = new TreeViewItem();
            root.Items.Add(fields);

            TreeViewItem properties = new TreeViewItem();
            root.Items.Add(properties);

            TreeViewItem methods = new TreeViewItem();
            root.Items.Add(methods);

            foreach (IVbMember member in wrapper.Module.Members)
            {
                TreeViewItem memberNode = new TreeViewItem();
                memberNode.Header = member.Name;
                memberNode.Tag = member;
                memberNode.Selected += memberNode_Selected;

                if (member is IVbProperty)
                {
                    properties.Items.Add(memberNode);
                }
                else if (member is IVbMethod)
                {
                    methods.Items.Add(memberNode);
                }
                else if (member is IVbField)
                {
                    fields.Items.Add(memberNode);
                }
            }

            fields.Header = GetNodeHeaderWithIcon(string.Format("Fields ({0})", fields.Items.Count), CompletionImage.Field);
            properties.Header = GetNodeHeaderWithIcon(string.Format("Properties ({0})", properties.Items.Count), CompletionImage.Property);
            methods.Header = GetNodeHeaderWithIcon(string.Format("Methods ({0})", methods.Items.Count), CompletionImage.Method);

            root.ExpandSubtree();

            trvLayout.Items.Add(root);
        }
Esempio n. 18
0
        public TreeViewItem GetTreeViewItem()
        {
            TreeViewItem node = new TreeViewItem();
            node.Header = this.Name;
            node.Tag = this;
            {
                ContextMenu cm = new ContextMenu();
                MenuItem item1 = new MenuItem() { Header = "Open instance in explorer" };
                item1.Click += delegate
                {
                    Process.Start(this.Path);
                };
                cm.Items.Add(item1);
                node.ContextMenu = cm;
            }

            // Minecraft version
            TreeViewItem mcVer = new TreeViewItem();
            mcVer.Header = "Minecraft version " + ((this.Version == null) ? "" : this.Version.Key);
            mcVer.MouseUp += (s, e) =>
            {
                Label tb = new Label();
                tb.Content = (this.Version == null ? "no version" : this.Version.Type.ToString() + " - " + this.Version.Key);
                Button bt = new Button();
                bt.Content = "Change version";
                bt.Click +=bt_Click;
                App.mainWindow.listBox_instanceInfo.Items.Clear();
                App.mainWindow.listBox_instanceInfo.Items.Add(tb);
                App.mainWindow.listBox_instanceInfo.Items.Add(bt);
            };
            node.Items.Add(mcVer);

            foreach (IBackup b in PluginManager.backups)
            {
                node.Items.Add(b.treeItem(this));
            }
            node.ExpandSubtree();
            return node;
        }
Esempio n. 19
0
        private void Run_Click(object sender, RoutedEventArgs e)
        {
            if (isLoad == true)
            {
                Attribute hair = new Attribute("HairColor", new string[] { "Black", "Gray", "Silver" });
                Attribute height = new Attribute("Height", new string[] { "Short", "Medium", "High" });
                Attribute weight = new Attribute("Weight", new string[] { "Light", "Medium", "Heavy" });
                Attribute cream = new Attribute("Cream", new string[] { "Yes", "No" });

                Attribute[] attributes = new Attribute[] { hair, height, weight, cream };

                DataTable samples = datatable;

                DecisionTree id3 = new DecisionTree();
                TreeNode root = id3.mountTree(samples, "Result", attributes);
                TreeNode root1 = root;
                var decisiontree = new DecisionTree();
                decisiontree.SearchRule(root);
                RuleID3 = decisiontree.RuleID3;  
                int i = 1;
                foreach (var rule in RuleID3)
                {
                    ListRule.Add("Rule [" +i+ "]: IF {" + rule);
                    i++;
                }
                lvRule.ItemsSource = ListRule;
                DecisionTree.printNode(root, "     ");

                tvDecisionTree.Items.Clear();
                TreeViewItem item = new TreeViewItem();
                item.Header = "Logical Tree";

                DumpVisualTree(item, root1);

                tvDecisionTree.Items.Add(item);
                item.ExpandSubtree();

                txtTree.Text = DecisionTree.TreeList;
            }
            else
                MessageBox.Show("Data must load before run", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
        }
Esempio n. 20
0
        /// <summary>
        /// Recursively expands all the nodes under the given item.
        /// </summary>
        /// <returns>true if the subtree was expanded, false otherwise.</returns> 
        /// <remarks>This can be overriden to modify/disable the numpad-* behavior.</remarks>
        protected virtual bool ExpandSubtree(TreeViewItem container) 
        { 
            if (container != null)
            { 
                container.ExpandSubtree();
                return true;
            }
 
            return false;
        }