public void UpdateCmisTree(RootFolder root) { lock (lockCmisStore) { TreeIter iter; if (CmisStore.GetIterFirst (out iter)) { do { string name = CmisStore.GetValue (iter, (int)Column.ColumnName) as string; if (name == null) { Console.WriteLine ("UpdateCmisTree GetValue Error"); return; } if (name == root.Name) { UpdateCmisTreeNode (iter, root); return; } } while (CmisStore.IterNext(ref iter)); } iter = CmisStore.AppendNode (); UpdateCmisTreeNode (iter, root); return; } }
/// <summary> /// Get the selected folder list /// </summary> /// <returns></returns> public static List<string> GetSelectedFolder(RootFolder repo) { List<string> result = new List<string>(); foreach (Folder child in repo.Children) { result.AddRange(Folder.GetSelectedFolder(child)); } return result; }
public override void AwakeFromNib() { base.AwakeFromNib(); bool firstRepo = true; this.Repositories = new List<RootFolder>(); Loader = new Dictionary<string, AsyncNodeLoader>(); foreach (var repository in Controller.repositories) { RootFolder repo = new RootFolder() { Name = repository.Name, Id = repository.Id, Address = this.Controller.saved_address.ToString() }; this.Repositories.Add(repo); if (firstRepo) { repo.Selected = true; firstRepo = false; } else { repo.Selected = false; } CmisRepoCredentials cred = new CmisRepoCredentials() { UserName = this.Controller.saved_user, Password = this.Controller.saved_password, Address = this.Controller.saved_address, RepoId = repository.Id }; // GUI workaround to remove ignore folder {{ //AsyncNodeLoader asyncLoader = new AsyncNodeLoader(repo, cred, PredefinedNodeLoader.LoadSubFolderDelegate, PredefinedNodeLoader.CheckSubFolderDelegate); //Loader.Add(repo.Id, asyncLoader); repo.Status = LoadingStatus.DONE; // GUI workaround to remove ignore folder }} } this.DataSource = new CmisTree.CmisTreeDataSource(this.Repositories); this.DataDelegate = new OutlineViewDelegate (); Outline.DataSource = this.DataSource; Outline.Delegate = this.DataDelegate; ContinueButton.Enabled = this.Repositories.Count > 0; // ContinueButton.KeyEquivalent = "\r"; this.BackButton.Title = Properties_Resources.Back; this.CancelButton.Title = Properties_Resources.Cancel; this.ContinueButton.Title = Properties_Resources.Continue; this.InsertEvent(); // must be called after InsertEvent() // GUI workaround to remove ignore folder {{ //foreach (RootFolder repo in Repositories) { // Loader [repo.Id].Load (repo); //} // GUI workaround to remove ignore folder }} }
public override void AwakeFromNib () { base.AwakeFromNib (); bool firstRepo = true; Repositories = new List<RootFolder>(); Loader = new Dictionary<string,AsyncNodeLoader> (); foreach (KeyValuePair<String, String> repository in Controller.repositories) { RootFolder repo = new RootFolder() { Name = repository.Value, Id = repository.Key, Address = Controller.saved_address.ToString() }; Repositories.Add(repo); if (firstRepo) { repo.Selected = true; firstRepo = false; } else { repo.Selected = false; } CmisRepoCredentials cred = new CmisRepoCredentials() { UserName = Controller.saved_user, Password = Controller.saved_password, Address = Controller.saved_address, RepoId = repository.Key }; AsyncNodeLoader asyncLoader = new AsyncNodeLoader(repo, cred, PredefinedNodeLoader.LoadSubFolderDelegate, PredefinedNodeLoader.CheckSubFolderDelegate); Loader.Add(repo.Id, asyncLoader); } DataSource = new CmisTree.CmisTreeDataSource(Repositories); DataDelegate = new OutlineViewDelegate (); Outline.DataSource = DataSource; Outline.Delegate = DataDelegate; ContinueButton.Enabled = (Repositories.Count > 0); // ContinueButton.KeyEquivalent = "\r"; this.BackButton.Title = Properties_Resources.Back; this.CancelButton.Title = Properties_Resources.Cancel; this.ContinueButton.Title = Properties_Resources.Continue; InsertEvent (); // must be called after InsertEvent() foreach (RootFolder repo in Repositories) { Loader [repo.Id].Load (repo); } }
public void UpdateCmisTree(RootFolder root) { lock (LockRepositories) { for (int i = 0; i < Repositories.Count; ++i) { if (Repositories [i].Name == root.Name) { Repositories [i] = new NSCmisTree (root); return; } } Repositories.Add (new NSCmisTree (root)); } }
/// <summary> /// This class can be used to load children nodes asynchronous in another thread /// </summary> /// <param name="root">The repository Node</param> /// <param name="credentials">The server crendentials to load children for the given Cmis Repo</param> /// <param name="method">Function for loading nodes</param> public AsyncNodeLoader(RootFolder root, CmisRepoCredentials credentials, LoadChildrenDelegate method, CheckChildrenDelegate check) { this.root = root; repoCredentials = credentials; this.actualNode = null; this.worker = new BackgroundWorker(); this.method = method; this.check = check; this.worker.WorkerReportsProgress = false; this.worker.WorkerSupportsCancellation = true; this.worker.DoWork += new DoWorkEventHandler(DoWork); this.worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(Finished); }
public static RootFolder Import(XDocument opml) { var root = new RootFolder(); var opmlElement = opml.Element("opml"); if (opmlElement != null) { var element = opmlElement.Element("body"); if (element != null) { var topLevel = element.Elements("outline"); foreach (var outlineElement in topLevel) { if (outlineElement.HasElements) { root.AddFolder(new Folder { Name = outlineElement.Attribute("title").Value, Feeds = (from feed in outlineElement.Elements("outline") select new Feed(new Uri(feed.Attribute("xmlUrl").Value), feed.Attribute("title").Value, new Uri(feed.Attribute("htmlUrl").Value) )) }); } else { root.AddFeed( new Feed(new Uri(outlineElement.Attribute("xmlUrl").Value), outlineElement.Attribute("title").Value, new Uri(outlineElement.Attribute("htmlUrl").Value)) ); } } return root; } } return new RootFolder(); }
public Project FindProjectByName(string name) { return(RootFolder.FindProjectByName(name)); }
/// <summary> /// Create the UI /// </summary> private void CreateEdit() { CmisTreeStore cmisStore = new CmisTreeStore(); Gtk.TreeView treeView = new Gtk.TreeView(cmisStore.CmisStore); RootFolder root = new RootFolder() { Name = this.Name, Id = credentials.RepoId, Address = credentials.Address.ToString() }; IgnoredFolderLoader.AddIgnoredFolderToRootNode(root, Ignores); LocalFolderLoader.AddLocalFolderToRootNode(root, localPath); AsyncNodeLoader asyncLoader = new AsyncNodeLoader(root, credentials, PredefinedNodeLoader.LoadSubFolderDelegate, PredefinedNodeLoader.CheckSubFolderDelegate); asyncLoader.UpdateNodeEvent += delegate { cmisStore.UpdateCmisTree(root); }; cmisStore.UpdateCmisTree(root); asyncLoader.Load(root); Header = CmisSync.Properties_Resources.EditTitle; VBox layout_vertical = new VBox(false, 12); Controller.CloseWindowEvent += delegate { asyncLoader.Cancel(); }; Button cancel_button = new Button(CmisSync.Properties_Resources.Cancel); cancel_button.Clicked += delegate { Close(); }; Button finish_button = new Button(CmisSync.Properties_Resources.SaveChanges); finish_button.Clicked += delegate { Ignores = NodeModelUtils.GetIgnoredFolder(root); Controller.SaveFolder(); Close(); }; Gtk.TreeIter iter; treeView.HeadersVisible = false; treeView.Selection.Mode = SelectionMode.Single; TreeViewColumn column = new TreeViewColumn(); column.Title = "Name"; CellRendererToggle renderToggle = new CellRendererToggle(); column.PackStart(renderToggle, false); renderToggle.Activatable = true; column.AddAttribute(renderToggle, "active", (int)CmisTreeStore.Column.ColumnSelected); column.AddAttribute(renderToggle, "inconsistent", (int)CmisTreeStore.Column.ColumnSelectedThreeState); column.AddAttribute(renderToggle, "radio", (int)CmisTreeStore.Column.ColumnRoot); renderToggle.Toggled += delegate(object render, ToggledArgs args) { TreeIter iterToggled; if (!cmisStore.CmisStore.GetIterFromString(out iterToggled, args.Path)) { Console.WriteLine("Toggled GetIter Error " + args.Path); return; } Node node = cmisStore.CmisStore.GetValue(iterToggled, (int)CmisTreeStore.Column.ColumnNode) as Node; if (node == null) { Console.WriteLine("Toggled GetValue Error " + args.Path); return; } if (node.Parent == null) { node.Selected = true; } else { if (node.Selected == false) { node.Selected = true; } else { node.Selected = false; } } cmisStore.UpdateCmisTree(root); }; CellRendererText renderText = new CellRendererText(); column.PackStart(renderText, false); column.SetAttributes(renderText, "text", (int)CmisTreeStore.Column.ColumnName); column.Expand = true; treeView.AppendColumn(column); treeView.AppendColumn("Status", new StatusCellRenderer(), "text", (int)CmisTreeStore.Column.ColumnStatus); treeView.RowExpanded += delegate(object o, RowExpandedArgs args) { Node node = cmisStore.CmisStore.GetValue(args.Iter, (int)CmisTreeStore.Column.ColumnNode) as Node; asyncLoader.Load(node); }; ScrolledWindow sw = new ScrolledWindow() { ShadowType = Gtk.ShadowType.In }; sw.Add(treeView); layout_vertical.PackStart(new Label(""), false, false, 0); layout_vertical.PackStart(sw, true, true, 0); Add(layout_vertical); AddButton(cancel_button); AddButton(finish_button); finish_button.GrabDefault(); this.ShowAll(); }
/// <summary> /// /// </summary> /// <param name="Root"></param> public void CreateRoot(RootFolder Root) { _db.RootFolders.Add(Root); _db.SaveChanges(); }
private void ShowAdd2Page() { CmisTreeStore cmisStore = new CmisTreeStore(); Gtk.TreeView treeView = new Gtk.TreeView(cmisStore); bool firstRepo = true; List <RootFolder> repositories = new List <RootFolder>(); Dictionary <string, AsyncNodeLoader> loader = new Dictionary <string, AsyncNodeLoader> (); foreach (KeyValuePair <String, String> repository in Controller.repositories) { RootFolder root = new RootFolder() { Name = repository.Value, Id = repository.Key, Address = Controller.saved_address.ToString() }; if (firstRepo) { root.Selected = true; firstRepo = false; } else { root.Selected = false; } repositories.Add(root); CmisRepoCredentials cred = new CmisRepoCredentials() { UserName = Controller.saved_user, Password = Controller.saved_password, Address = Controller.saved_address, RepoId = repository.Key }; AsyncNodeLoader asyncLoader = new AsyncNodeLoader(root, cred, PredefinedNodeLoader.LoadSubFolderDelegate, PredefinedNodeLoader.CheckSubFolderDelegate); asyncLoader.UpdateNodeEvent += delegate { cmisStore.UpdateCmisTree(root); }; cmisStore.UpdateCmisTree(root); // GUI workaround to remove ignore folder {{ //asyncLoader.Load (root); //loader.Add (root.Id, asyncLoader); // GUI workaround to remove ignore folder }} } Header = Properties_Resources.Which; VBox layout_vertical = new VBox(false, 12); Button cancel_button = new Button(cancelText); cancel_button.Clicked += delegate { foreach (AsyncNodeLoader task in loader.Values) { task.Cancel(); } Controller.PageCancelled(); }; Button continue_button = new Button(continueText) { Sensitive = (repositories.Count > 0) }; continue_button.Clicked += delegate { RootFolder root = repositories.Find(x => (x.Selected != false)); if (root != null) { foreach (AsyncNodeLoader task in loader.Values) { task.Cancel(); } Controller.saved_repository = root.Id; List <string> ignored = NodeModelUtils.GetIgnoredFolder(root); List <string> selected = NodeModelUtils.GetSelectedFolder(root); Controller.Add2PageCompleted(root.Id, root.Path, ignored.ToArray(), selected.ToArray()); } }; Button back_button = new Button(backText) { Sensitive = true }; back_button.Clicked += delegate { foreach (AsyncNodeLoader task in loader.Values) { task.Cancel(); } Controller.BackToPage1(); }; treeView.HeadersVisible = false; treeView.Selection.Mode = SelectionMode.Single; TreeViewColumn column = new TreeViewColumn(); column.Title = "Name"; CellRendererToggle renderToggle = new CellRendererToggle(); column.PackStart(renderToggle, false); renderToggle.Activatable = true; column.AddAttribute(renderToggle, "active", (int)CmisTreeStore.Column.ColumnSelected); column.AddAttribute(renderToggle, "inconsistent", (int)CmisTreeStore.Column.ColumnSelectedThreeState); column.AddAttribute(renderToggle, "radio", (int)CmisTreeStore.Column.ColumnRoot); renderToggle.Toggled += delegate(object render, ToggledArgs args) { TreeIter iterToggled; if (!cmisStore.GetIterFromString(out iterToggled, args.Path)) { Console.WriteLine("Toggled GetIter Error " + args.Path); return; } Node node = cmisStore.GetValue(iterToggled, (int)CmisTreeStore.Column.ColumnNode) as Node; if (node == null) { Console.WriteLine("Toggled GetValue Error " + args.Path); return; } RootFolder selectedRoot = repositories.Find(x => (x.Selected != false)); Node parent = node; while (parent.Parent != null) { parent = parent.Parent; } RootFolder root = parent as RootFolder; if (root != selectedRoot) { selectedRoot.Selected = false; cmisStore.UpdateCmisTree(selectedRoot); } if (node.Parent == null) { node.Selected = true; } else { if (node.Selected == false) { node.Selected = true; } else { node.Selected = false; } } cmisStore.UpdateCmisTree(root); }; CellRendererText renderText = new CellRendererText(); column.PackStart(renderText, false); column.SetAttributes(renderText, "text", (int)CmisTreeStore.Column.ColumnName); column.Expand = true; treeView.AppendColumn(column); // GUI workaround to remove ignore folder {{ //treeView.AppendColumn ("Status", new StatusCellRenderer (), "text", (int)CmisTreeStore.Column.ColumnStatus); // GUI workaround to remove ignore folder }} treeView.RowExpanded += delegate(object o, RowExpandedArgs args) { Node node = cmisStore.GetValue(args.Iter, (int)CmisTreeStore.Column.ColumnNode) as Node; Node parent = node; while (parent.Parent != null) { parent = parent.Parent; } RootFolder root = parent as RootFolder; loader[root.Id].Load(node); }; ScrolledWindow sw = new ScrolledWindow() { ShadowType = Gtk.ShadowType.In }; sw.Add(treeView); layout_vertical.PackStart(new Label(""), false, false, 0); layout_vertical.PackStart(sw, true, true, 0); Add(layout_vertical); AddButton(back_button); AddButton(cancel_button); AddButton(continue_button); if (repositories.Count > 0) { continue_button.GrabDefault(); continue_button.GrabFocus(); } else { back_button.GrabDefault(); back_button.GrabFocus(); } }
private void AddContentFolderExecute(string folderName) { RootFolder.AddFolder(folderName); }
public void RequestSubDirs(TreeViewFolderBrowserHelper helper, TreeNodePath parent, TreeViewCancelEventArgs e) { if (parent.Path == null) { return; } if (parent.Path == "") { rootFolder = RootFolder.None; } string sql = string.Empty; bool createDummyNode = true; string nodeTag; // We have a Special folder, when we are at the root level if (parent.IsSpecialFolder) { rootFolder = RootFolder.None; } if (rootFolder == RootFolder.None) { switch ((string)parent.Tag) { case "artist": rootFolder = RootFolder.Artist; sql = SQL_STMT_ARTIST; break; case "albumartist": rootFolder = RootFolder.AlbumArtist; sql = SQL_STMT_ALBUMARTIST; break; case "album": rootFolder = RootFolder.Album; sql = SQL_STMT_ALBUM; createDummyNode = false; break; case "genre": rootFolder = RootFolder.Genre; sql = SQL_STMT_GENRE; break; } } else if (rootFolder == RootFolder.Artist) { sql = string.Format(SQL_STMT_ARTISTSEARCH, Util.RemoveInvalidChars(parent.Path)); isRootFolder = false; createDummyNode = false; } else if (rootFolder == RootFolder.AlbumArtist) { sql = string.Format(SQL_STMT_ALBUMARTISTSEARCH, Util.RemoveInvalidChars(parent.Path)); isRootFolder = false; createDummyNode = false; } else if (rootFolder == RootFolder.Genre) { isRootFolder = false; string[] searchString = (parent.Tag as string).Split('\\'); if (searchString.GetLength(0) == 2) { sql = string.Format(SQL_STMT_GENREARTISTSEARCH, Util.RemoveInvalidChars(parent.Path)); createDummyNode = true; } else { sql = string.Format(SQL_STMT_GENREARTISTALBUMSEARCH, Util.RemoveInvalidChars(searchString[1]), Util.RemoveInvalidChars(parent.Path)); createDummyNode = false; } } string connection = string.Format(@"Data Source={0}", Options.MainSettings.MediaPortalDatabase); try { SQLiteConnection conn = new SQLiteConnection(connection); conn.Open(); using (SQLiteCommand cmd = new SQLiteCommand()) { cmd.Connection = conn; cmd.CommandType = CommandType.Text; cmd.CommandText = sql; log.Debug("TreeViewBrowser: Executing sql: {0}", sql); using (SQLiteDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { string dbValue = reader.GetString(0); TreeNodePath newNode = CreateTreeNode(helper, dbValue, dbValue, createDummyNode, false, false); if (isRootFolder) { nodeTag = (string)parent.Tag; } else { nodeTag = string.Format(@"{0}\{1}", parent.Tag, dbValue); } newNode.Tag = nodeTag; parent.Nodes.Add(newNode); } } } conn.Close(); } catch (Exception ex) { log.Error("TreeViewBrowser: Error executing sql: {0}", ex.Message); } }
public IEnumerable <IArchiveFileEntry> GetFiles() { return(RootFolder.EnumerateFiles(true)); }
public override void Dispose() { base.Dispose(); RootFolder.Dispose(); Counters.SolutionsLoaded--; }
protected override BuildResult OnBuild(IProgressMonitor monitor, ConfigurationSelector configuration) { return(RootFolder.Build(monitor, configuration)); }
public override Project GetProjectContainingFile(FilePath fileName) { return(RootFolder.GetProjectContainingFile(fileName)); }
public override IEnumerable <Project> GetProjectsContainingFile(FilePath fileName) { return(RootFolder.GetProjectsContainingFile(fileName)); }
public ReadOnlyCollection <Project> GetAllProjectsWithTopologicalSort(ConfigurationSelector configuration) { return(RootFolder.GetAllProjectsWithTopologicalSort(configuration)); }
public ReadOnlyCollection <T> GetAllSolutionItemsWithTopologicalSort <T> (ConfigurationSelector configuration) where T : SolutionItem { return(RootFolder.GetAllItemsWithTopologicalSort <T> (configuration)); }
public override ReadOnlyCollection <T> GetAllSolutionItems <T> () { return(RootFolder.GetAllItems <T> ()); }
/// <summary> /// Create the UI /// </summary> private void CreateEdit() { RootFolder repo = new RootFolder() { Name = FolderName, Id = credentials.RepoId, Address = credentials.Address.ToString() }; repo.Selected = true; IgnoredFolderLoader.AddIgnoredFolderToRootNode(repo, Ignores); LocalFolderLoader.AddLocalFolderToRootNode(repo, localPath); List <RootFolder> repos = new List <RootFolder>(); repos.Add(repo); OutlineViewDelegate DataDelegate = new OutlineViewDelegate(); CmisTree.CmisTreeDataSource DataSource = new CmisTree.CmisTreeDataSource(repos); CmisOutlineController OutlineController = new CmisOutlineController(DataSource, DataDelegate); AsyncNodeLoader asyncLoader = new AsyncNodeLoader(repo, credentials, PredefinedNodeLoader.LoadSubFolderDelegate, PredefinedNodeLoader.CheckSubFolderDelegate); asyncLoader.UpdateNodeEvent += delegate { InvokeOnMainThread(delegate { DataSource.UpdateCmisTree(repo); NSOutlineView view = OutlineController.OutlineView(); for (int i = 0; i < view.RowCount; ++i) { view.ReloadItem(view.ItemAtRow(i)); } }); }; asyncLoader.Load(repo); DataDelegate.ItemExpanded += delegate(NSNotification notification) { InvokeOnMainThread(delegate { NSCmisTree cmis = notification.UserInfo["NSObject"] as NSCmisTree; if (cmis == null) { Console.WriteLine("ItemExpanded Error"); return; } NSCmisTree cmisRoot = cmis; while (cmisRoot.Parent != null) { cmisRoot = cmisRoot.Parent; } if (repo.Name != cmisRoot.Name) { Console.WriteLine("ItemExpanded find root Error"); return; } Node node = cmis.GetNode(repo); if (node == null) { Console.WriteLine("ItemExpanded find node Error"); return; } asyncLoader.Load(node); }); }; DataSource.SelectedEvent += delegate(NSCmisTree cmis, int selected) { InvokeOnMainThread(delegate { Node node = cmis.GetNode(repo); if (node == null) { Console.WriteLine("SelectedEvent find node Error"); } node.Selected = (selected != 0); DataSource.UpdateCmisTree(repo); NSOutlineView view = OutlineController.OutlineView(); for (int i = 0; i < view.RowCount; ++i) { try{ view.ReloadItem(view.ItemAtRow(i)); }catch (Exception e) { Console.WriteLine(e); } } }); }; OutlineController.View.Frame = new RectangleF(190, 60, 400, 240); ContentView.AddSubview(OutlineController.View); Controller.CloseWindowEvent += delegate { asyncLoader.Cancel(); }; Controller.OpenWindowEvent += delegate { InvokeOnMainThread(delegate { OrderFrontRegardless(); }); }; NSButton finish_button = new NSButton() { Title = Properties_Resources.SaveChanges, }; NSButton cancel_button = new NSButton() { Title = Properties_Resources.DiscardChanges }; Buttons.Add(finish_button); Buttons.Add(cancel_button); finish_button.Activated += delegate { Ignores = NodeModelUtils.GetIgnoredFolder(repo); Controller.SaveFolder(); InvokeOnMainThread(delegate { PerformClose(this); }); }; cancel_button.Activated += delegate { InvokeOnMainThread(delegate { PerformClose(this); }); }; this.Header = Properties_Resources.EditTitle; this.Description = ""; this.ShowAll(); }
protected override void OnClean(IProgressMonitor monitor, ConfigurationSelector configuration) { RootFolder.Clean(monitor, configuration); }
private void AddContentFolderExecute(string folderName) { DiagnosticsClient.TrackEvent("PackageViewModel_AddContentFolderExecute"); RootFolder.AddFolder(folderName); }
void ShowFolderSeletionPage() { Header = Properties_Resources.Which; Description = ""; bool firstRepo = true; Repositories = new List<RootFolder>(); Loader = new Dictionary<string,AsyncNodeLoader> (); foreach (KeyValuePair<String, String> repository in Controller.repositories) { RootFolder repo = new RootFolder() { Name = repository.Value, Id = repository.Key, Address = Controller.saved_address.ToString() }; Repositories.Add(repo); if (firstRepo) { repo.Selected = true; firstRepo = false; } else { repo.Selected = false; } CmisRepoCredentials cred = new CmisRepoCredentials() { UserName = Controller.saved_user, Password = Controller.saved_password, Address = Controller.saved_address, RepoId = repository.Key }; AsyncNodeLoader asyncLoader = new AsyncNodeLoader(repo, cred, PredefinedNodeLoader.LoadSubFolderDelegate, PredefinedNodeLoader.CheckSubFolderDelegate); asyncLoader.UpdateNodeEvent += delegate { InvokeOnMainThread(delegate { DataSource.UpdateCmisTree(repo); NSOutlineView view = OutlineController.OutlineView(); for (int i = 0; i < view.RowCount; ++i) { view.ReloadItem(view.ItemAtRow(i)); } }); }; asyncLoader.Load(repo); Loader.Add(repo.Id, asyncLoader); } DataSource = new CmisTree.CmisTreeDataSource(Repositories); DataSource.SelectedEvent += delegate (NSCmisTree cmis, int selected) { InvokeOnMainThread(delegate { RootFolder selectedRoot = null; foreach (RootFolder root in Repositories) { Node node = cmis.GetNode(root); if (node != null) { if (node.Parent == null && node.Selected == false) { selectedRoot = root; } node.Selected = (selected != 0); DataSource.UpdateCmisTree(root); } } NSOutlineView view = OutlineController.OutlineView(); if (selectedRoot != null) { foreach (RootFolder root in Repositories) { if (root != selectedRoot) { root.Selected = false; DataSource.UpdateCmisTree(root); } } view.ReloadData(); } else { for (int i = 0; i < view.RowCount; ++i) { view.ReloadItem(view.ItemAtRow(i)); } } }); }; DataDelegate = new OutlineViewDelegate (); OutlineController = new CmisOutlineController (DataSource,DataDelegate); ContinueButton = new NSButton() { Title = Properties_Resources.Continue, Enabled = (Repositories.Count > 0) }; CancelButton = new NSButton() { Title = Properties_Resources.Cancel }; NSButton BackButton = new NSButton() { Title = Properties_Resources.Back }; // DataDelegate.SelectionChanged += delegate // { // InvokeOnMainThread(delegate { // NSOutlineView view = OutlineController.OutlineView(); // if (view.SelectedRow >= 0) { // ContinueButton.Enabled = true; // } else { // ContinueButton.Enabled = false; // } // }); // }; DataDelegate.ItemExpanded += delegate(NSNotification notification) { InvokeOnMainThread(delegate { NSCmisTree cmis = notification.UserInfo["NSObject"] as NSCmisTree; if (cmis == null) { Console.WriteLine("ItemExpanded Error"); return; } NSCmisTree cmisRoot = cmis; while (cmisRoot.Parent != null) { cmisRoot = cmisRoot.Parent; } RootFolder root = Repositories.Find(x=>x.Name.Equals(cmisRoot.Name)); if (root == null) { Console.WriteLine("ItemExpanded find root Error"); return; } Node node = cmis.GetNode(root); if (node == null) { Console.WriteLine("ItemExpanded find node Error"); return; } Loader[root.Id].Load(node); }); }; ContinueButton.Activated += delegate { InvokeOnMainThread(delegate { NSOutlineView view = OutlineController.OutlineView(); // NSCmisTree cmis = (NSCmisTree)(view.ItemAtRow(view.SelectedRow)); // while (cmis.Parent != null) // cmis = cmis.Parent; // RootFolder root = Repositories.Find(x=>x.Name.Equals(cmis.Name)); RootFolder root = Repositories.Find(x=>(x.Selected != false)); if (root != null) { foreach (AsyncNodeLoader task in Loader.Values) task.Cancel(); Controller.saved_repository = root.Id; List<string> ignored = NodeModelUtils.GetIgnoredFolder(root); List<string> selected = NodeModelUtils.GetSelectedFolder(root); Controller.Add2PageCompleted(root.Id, root.Path, ignored.ToArray(), selected.ToArray()); } }); }; CancelButton.Activated += delegate { InvokeOnMainThread(delegate { foreach (AsyncNodeLoader task in Loader.Values) task.Cancel(); Controller.PageCancelled(); }); }; BackButton.Activated += delegate { InvokeOnMainThread(delegate { foreach (AsyncNodeLoader task in Loader.Values) task.Cancel(); Controller.BackToPage1(); }); }; OutlineController.View.Frame = new RectangleF (190, 60, 400, 240); ContentView.AddSubview(OutlineController.View); Buttons.Add(ContinueButton); Buttons.Add(BackButton); Buttons.Add(CancelButton); }
public IEnumerable <IArchiveFilesystemEntry> GetFilesystemEntries() { return(RootFolder.EnumerateChildren(true)); }
/// <summary> /// Merges the sub folder of the given path to the given Repo Node /// </summary> /// <param name="repo"></param> /// <param name="localPath"></param> public static void AddLocalFolderToRootNode(RootFolder repo, string localPath) { List<Node> children = CreateNodesFromLocalFolder(localPath, repo); AsyncNodeLoader.MergeFolderTrees(repo, children); }
public DubSolution() { RootFolder.AddItem(ExternalDepFolder); }
public void BuildAccount_FileCount_Test() { // Arrange User owner = new User { Role = UserRole.Owner, Email = "*****@*****.**", Name = "Joe Bloggs", Username = "******" }; User son = new User { Role = UserRole.AccreditedParty, Email = "*****@*****.**", Name = "Sunny Bloggs", Username = "******" }; User daughter = new User { Role = UserRole.AccreditedParty, Email = "*****@*****.**", Name = "Dorothy Bloggs", Username = "******" }; RootFolder rootFolder = new RootFolder { Contents = new List <FileStructureEntity> { new ChildFolder { Name = "Public Photos", AuthorisedUsers = new List <User> { son, daughter }, Contents = new List <FileStructureEntity> { new File { Name = "Public Photo1.jpg", Text = "photo 1 here" }, new File { Name = "Public Photo2.jpg", Text = "photo 2 here" }, new File { Name = "Public Photo3.jpg", Text = "photo 3 here" }, } }, new ChildFolder { Name = "Public Documents", AuthorisedUsers = new List <User> { son, daughter }, Contents = new List <FileStructureEntity> { new File { Name = "Public Document1.doc", Text = "Document 1 here" }, new File { Name = "Public Document2.doc", Text = "Document 2 here" }, } }, new ChildFolder { Name = "Private Photos for Daughter", AuthorisedUsers = new List <User> { daughter }, Contents = new List <FileStructureEntity> { new File { Name = "Private Photo1.jpg", Text = "photo 1 here" }, new File { Name = "Private Photo2.jpg", Text = "photo 2 here" }, new File { Name = "Private Photo3.jpg", Text = "photo 3 here" }, new File { Name = "Private Photo4.jpg", Text = "photo 4 here" }, new File { Name = "Private Photo5.jpg", Text = "photo 5 here" }, } }, new ChildFolder { Name = "Private Documents for Son", AuthorisedUsers = new List <User> { son }, Contents = new List <FileStructureEntity> { new File { Name = "Private Document1.doc", Text = "Document 1 here" }, new File { Name = "Private Document2.doc", Text = "Document 2 here" }, new File { Name = "Private Document3.doc", Text = "Document 3 here" }, } }, } }; // Act Account account = new Account { Owner = owner, RootFolder = rootFolder }; // Assert Assert.AreEqual(account.GetFileCount(owner), 13); Assert.AreEqual(account.GetFileCount(son), 8); Assert.AreEqual(account.GetFileCount(daughter), 10); }
public void AddDraggedAndDroppedFiles(PackageFolder folder, string[] fileNames) { if (folder == null) { bool?rememberedAnswer = null; for (int i = 0; i < fileNames.Length; i++) { string file = fileNames[i]; if (File.Exists(file)) { bool movingFile; PackageFolder targetFolder; string guessFolderName = FileHelper.GuessFolderNameFromFile(file); if (rememberedAnswer == null) { // ask user if he wants to move file Tuple <bool?, bool> answer = UIServices.ConfirmMoveFile( Path.GetFileName(file), guessFolderName, fileNames.Length - i - 1); if (answer.Item1 == null) { // user presses Cancel break; } movingFile = (bool)answer.Item1; if (answer.Item2) { rememberedAnswer = answer.Item1; } } else { movingFile = (bool)rememberedAnswer; } if (movingFile) { if (RootFolder.ContainsFolder(guessFolderName)) { targetFolder = (PackageFolder)RootFolder[guessFolderName]; } else { targetFolder = RootFolder.AddFolder(guessFolderName); } } else { targetFolder = RootFolder; } targetFolder.AddFile(file, isTempFile: false); } else if (Directory.Exists(file)) { RootFolder.AddPhysicalFolder(file); } } } else { foreach (string file in fileNames) { if (File.Exists(file)) { folder.AddFile(file, isTempFile: false); } else if (Directory.Exists(file)) { folder.AddPhysicalFolder(file); } } } }
public override void AwakeFromNib () { base.AwakeFromNib (); this.SideSplashView.Image = new NSImage (Path.Combine (NSBundle.MainBundle.ResourcePath, "Pixmaps", "side-splash.png")) { Size = new SizeF (150, 482) }; this.Header.StringValue = Properties_Resources.EditTitle; Repo = new RootFolder() { Name = FolderName, Id = credentials.RepoId, Address = credentials.Address.ToString() }; Repo.Selected = true; IgnoredFolderLoader.AddIgnoredFolderToRootNode(Repo, Ignores); LocalFolderLoader.AddLocalFolderToRootNode(Repo, localPath); List<RootFolder> repos = new List<RootFolder>(); repos.Add(Repo); Loader = new AsyncNodeLoader(Repo, credentials, PredefinedNodeLoader.LoadSubFolderDelegate, PredefinedNodeLoader.CheckSubFolderDelegate); CancelButton.Title = Properties_Resources.DiscardChanges; FinishButton.Title = Properties_Resources.SaveChanges; DataDelegate = new OutlineViewDelegate (); DataSource = new CmisTree.CmisTreeDataSource(repos); Outline.DataSource = DataSource; Outline.Delegate = DataDelegate; Controller.CloseWindowEvent += delegate { Loader.Cancel(); this.Window.PerformClose (this); this.Dispose(); }; InsertEvent (); // must be called after InsertEvent() Loader.Load(Repo); }
public void SetPathChecked(IEnumerable <string> list, bool isChecked = true) { if (list.IsNullOrEmpty() || this.RootFolder.IsNull()) //this.RootFolder.IsLoading { return; } IsChecking = true; int totalItems = list.Count(); int checkProcessing = 0; Action action = () => { int i = 0; const int timeout = 60; //Add timeout for checking mask view can't be removed // minutes while (true) { Thread.Sleep(1 * 1000); if (!IsChecking) { return; } if (i++ > timeout) { if (IsChecking) { IsChecking = false; } return; } } }; action.BeginInvoke((ar) => action.EndInvoke(ar), action); foreach (string path in list) { ///Maybe change explore factory during checking if (RootFolder.IsNull()) { IsChecking = false; break; } this.RootFolder.GetItemAsync(path, (file) => { checkProcessing++; LogHelper.DebugFormat("/**** set checked index:{0}, total:{1}", checkProcessing, totalItems); if (checkProcessing == totalItems) { IsChecking = false; } if (!file.IsNull()) { file.IsChecked = isChecked; #if DEBUG //if (file is CloudFile || file is CloudFolder) //{ // LogHelper.DebugFormat("/++++ set checked path:{0}", file.FolderPath + file.Name); //} //else //{ // LogHelper.DebugFormat("/++++ set checked path:{0}", file.FullPath); //} #endif } }); } }
/// <summary> /// Initialises a new instance of the RootFolderPathChangedEventArgs class /// </summary> /// <param name="rootFolder">Root folder whose path changed</param> /// <param name="previousPath">Previous path of the root folder</param> public RootFolderPathChangedEventArgs(RootFolder rootFolder, IntelligentString previousPath) : base(rootFolder) { this.previousPath = previousPath; }
public override void AwakeFromNib() { base.AwakeFromNib(); bool firstRepo = true; Repositories = new List <RootFolder>(); Loader = new Dictionary <string, AsyncNodeLoader> (); foreach (KeyValuePair <String, String> repository in Controller.repositories) { RootFolder repo = new RootFolder() { Name = repository.Value, Id = repository.Key, Address = Controller.saved_address.ToString() }; Repositories.Add(repo); if (firstRepo) { repo.Selected = true; firstRepo = false; } else { repo.Selected = false; } CmisRepoCredentials cred = new CmisRepoCredentials() { UserName = Controller.saved_user, Password = Controller.saved_password, Address = Controller.saved_address, RepoId = repository.Key }; // GUI workaround to remove ignore folder {{ //AsyncNodeLoader asyncLoader = new AsyncNodeLoader(repo, cred, PredefinedNodeLoader.LoadSubFolderDelegate, PredefinedNodeLoader.CheckSubFolderDelegate); //Loader.Add(repo.Id, asyncLoader); repo.Status = LoadingStatus.DONE; // GUI workaround to remove ignore folder }} } DataSource = new CmisTree.CmisTreeDataSource(Repositories); DataDelegate = new OutlineViewDelegate(); Outline.DataSource = DataSource; Outline.Delegate = DataDelegate; ContinueButton.Enabled = (Repositories.Count > 0); // ContinueButton.KeyEquivalent = "\r"; this.BackButton.Title = Properties_Resources.Back; this.CancelButton.Title = Properties_Resources.Cancel; this.ContinueButton.Title = Properties_Resources.Continue; InsertEvent(); // must be called after InsertEvent() // GUI workaround to remove ignore folder {{ //foreach (RootFolder repo in Repositories) { // Loader [repo.Id].Load (repo); //} // GUI workaround to remove ignore folder }} }
public CloudLandmarkAutoBookPayloadProvider(ICloudStorage cloudStorage, AWSSettings awsSettings, RootFolder baseLocalFolder) : base(baseLocalFolder) { _cloudStorage = cloudStorage; _awsSettings = awsSettings; }
private void ShowAdd2Page() { CmisTreeStore cmisStore = new CmisTreeStore (); Gtk.TreeView treeView = new Gtk.TreeView (cmisStore.CmisStore); bool firstRepo = true; List<RootFolder> repositories = new List<RootFolder>(); Dictionary<string,AsyncNodeLoader> loader = new Dictionary<string, AsyncNodeLoader> (); foreach (KeyValuePair<String, String> repository in Controller.repositories) { RootFolder root = new RootFolder () { Name = repository.Value, Id = repository.Key, Address = Controller.saved_address.ToString() }; if (firstRepo) { root.Selected = true; firstRepo = false; } else { root.Selected = false; } repositories.Add (root); CmisRepoCredentials cred = new CmisRepoCredentials () { UserName = Controller.saved_user, Password = Controller.saved_password, Address = Controller.saved_address, RepoId = repository.Key }; AsyncNodeLoader asyncLoader = new AsyncNodeLoader (root, cred, PredefinedNodeLoader.LoadSubFolderDelegate, PredefinedNodeLoader.CheckSubFolderDelegate); asyncLoader.UpdateNodeEvent += delegate { cmisStore.UpdateCmisTree(root); }; cmisStore.UpdateCmisTree (root); asyncLoader.Load (root); loader.Add (root.Id, asyncLoader); } Header = CmisSync.Properties_Resources.Which; VBox layout_vertical = new VBox (false, 12); Button cancel_button = new Button (cancelText); cancel_button.Clicked += delegate { foreach (AsyncNodeLoader task in loader.Values) task.Cancel(); Controller.PageCancelled (); }; Button continue_button = new Button (continueText) { Sensitive = (repositories.Count > 0) }; continue_button.Clicked += delegate { RootFolder root = repositories.Find (x => (x.Selected != false)); if (root != null) { foreach (AsyncNodeLoader task in loader.Values) task.Cancel(); Controller.saved_repository = root.Id; List<string> ignored = NodeModelUtils.GetIgnoredFolder(root); List<string> selected = NodeModelUtils.GetSelectedFolder(root); Controller.Add2PageCompleted (root.Id, root.Path, ignored.ToArray(), selected.ToArray()); } }; Button back_button = new Button (backText) { Sensitive = true }; back_button.Clicked += delegate { foreach (AsyncNodeLoader task in loader.Values) task.Cancel(); Controller.BackToPage1(); }; Gtk.TreeIter iter; treeView.HeadersVisible = false; treeView.Selection.Mode = SelectionMode.Single; TreeViewColumn column = new TreeViewColumn (); column.Title = "Name"; CellRendererToggle renderToggle = new CellRendererToggle (); column.PackStart (renderToggle, false); renderToggle.Activatable = true; column.AddAttribute (renderToggle, "active", (int)CmisTreeStore.Column.ColumnSelected); column.AddAttribute (renderToggle, "inconsistent", (int)CmisTreeStore.Column.ColumnSelectedThreeState); column.AddAttribute (renderToggle, "radio", (int)CmisTreeStore.Column.ColumnRoot); renderToggle.Toggled += delegate (object render, ToggledArgs args) { TreeIter iterToggled; if (! cmisStore.CmisStore.GetIterFromString (out iterToggled, args.Path)) { Console.WriteLine("Toggled GetIter Error " + args.Path); return; } Node node = cmisStore.CmisStore.GetValue(iterToggled,(int)CmisTreeStore.Column.ColumnNode) as Node; if (node == null) { Console.WriteLine("Toggled GetValue Error " + args.Path); return; } RootFolder selectedRoot = repositories.Find (x => (x.Selected != false)); Node parent = node; while (parent.Parent != null) { parent = parent.Parent; } RootFolder root = parent as RootFolder; if (root != selectedRoot) { selectedRoot.Selected = false; cmisStore.UpdateCmisTree(selectedRoot); } if (node.Parent == null) { node.Selected = true; } else { if (node.Selected == false) { node.Selected = true; } else { node.Selected = false; } } cmisStore.UpdateCmisTree(root); }; CellRendererText renderText = new CellRendererText (); column.PackStart (renderText, false); column.SetAttributes (renderText, "text", (int)CmisTreeStore.Column.ColumnName); column.Expand = true; treeView.AppendColumn (column); treeView.AppendColumn ("Status", new StatusCellRenderer (), "text", (int)CmisTreeStore.Column.ColumnStatus); treeView.RowExpanded += delegate (object o, RowExpandedArgs args) { Node node = cmisStore.CmisStore.GetValue(args.Iter, (int)CmisTreeStore.Column.ColumnNode) as Node; Node parent = node; while (parent.Parent != null) { parent = parent.Parent; } RootFolder root = parent as RootFolder; loader[root.Id].Load(node); }; ScrolledWindow sw = new ScrolledWindow() { ShadowType = Gtk.ShadowType.In }; sw.Add(treeView); layout_vertical.PackStart (new Label(""), false, false, 0); layout_vertical.PackStart (sw, true, true, 0); Add(layout_vertical); AddButton(back_button); AddButton(cancel_button); AddButton(continue_button); if (repositories.Count > 0) { continue_button.GrabDefault (); continue_button.GrabFocus (); } else { back_button.GrabDefault (); back_button.GrabFocus (); } }
public override SolutionEntityItem FindSolutionItem(string fileName) { return(RootFolder.FindSolutionItem(fileName)); }
/// <summary> /// Create the UI /// </summary> private void CreateEdit() { CmisTreeStore cmisStore = new CmisTreeStore (); Gtk.TreeView treeView = new Gtk.TreeView (cmisStore.CmisStore); RootFolder root = new RootFolder () { Name = this.Name, Id = credentials.RepoId, Address = credentials.Address.ToString() }; IgnoredFolderLoader.AddIgnoredFolderToRootNode(root, Ignores); LocalFolderLoader.AddLocalFolderToRootNode(root, localPath); AsyncNodeLoader asyncLoader = new AsyncNodeLoader (root, credentials, PredefinedNodeLoader.LoadSubFolderDelegate, PredefinedNodeLoader.CheckSubFolderDelegate); asyncLoader.UpdateNodeEvent += delegate { cmisStore.UpdateCmisTree(root); }; cmisStore.UpdateCmisTree (root); asyncLoader.Load (root); Header = CmisSync.Properties_Resources.EditTitle; VBox layout_vertical = new VBox (false, 12); Controller.CloseWindowEvent += delegate { asyncLoader.Cancel(); }; Button cancel_button = new Button (CmisSync.Properties_Resources.Cancel); cancel_button.Clicked += delegate { Close(); }; Button finish_button = new Button (CmisSync.Properties_Resources.SaveChanges); finish_button.Clicked += delegate { Ignores = NodeModelUtils.GetIgnoredFolder(root); Controller.SaveFolder(); Close(); }; Gtk.TreeIter iter; treeView.HeadersVisible = false; treeView.Selection.Mode = SelectionMode.Single; TreeViewColumn column = new TreeViewColumn (); column.Title = "Name"; CellRendererToggle renderToggle = new CellRendererToggle (); column.PackStart (renderToggle, false); renderToggle.Activatable = true; column.AddAttribute (renderToggle, "active", (int)CmisTreeStore.Column.ColumnSelected); column.AddAttribute (renderToggle, "inconsistent", (int)CmisTreeStore.Column.ColumnSelectedThreeState); column.AddAttribute (renderToggle, "radio", (int)CmisTreeStore.Column.ColumnRoot); renderToggle.Toggled += delegate (object render, ToggledArgs args) { TreeIter iterToggled; if (! cmisStore.CmisStore.GetIterFromString (out iterToggled, args.Path)) { Console.WriteLine("Toggled GetIter Error " + args.Path); return; } Node node = cmisStore.CmisStore.GetValue(iterToggled,(int)CmisTreeStore.Column.ColumnNode) as Node; if (node == null) { Console.WriteLine("Toggled GetValue Error " + args.Path); return; } if (node.Parent == null) { node.Selected = true; } else { if (node.Selected == false) { node.Selected = true; } else { node.Selected = false; } } cmisStore.UpdateCmisTree(root); }; CellRendererText renderText = new CellRendererText (); column.PackStart (renderText, false); column.SetAttributes (renderText, "text", (int)CmisTreeStore.Column.ColumnName); column.Expand = true; treeView.AppendColumn (column); treeView.AppendColumn ("Status", new StatusCellRenderer (), "text", (int)CmisTreeStore.Column.ColumnStatus); treeView.RowExpanded += delegate (object o, RowExpandedArgs args) { Node node = cmisStore.CmisStore.GetValue(args.Iter, (int)CmisTreeStore.Column.ColumnNode) as Node; asyncLoader.Load(node); }; ScrolledWindow sw = new ScrolledWindow() { ShadowType = Gtk.ShadowType.In }; sw.Add(treeView); layout_vertical.PackStart (new Label(""), false, false, 0); layout_vertical.PackStart (sw, true, true, 0); Add(layout_vertical); AddButton(cancel_button); AddButton(finish_button); finish_button.GrabDefault (); this.ShowAll(); }
private void LoadAddSelectRepoWPF() { // UI elements. Header = Properties_Resources.Which; // A tree allowing the user to browse CMIS repositories/folders. System.Uri resourceTreeLocater = new System.Uri("/DataSpaceSync;component/FolderTreeMVC/TreeView.xaml", System.UriKind.Relative); System.Windows.Controls.TreeView treeView = System.Windows.Application.LoadComponent(resourceTreeLocater) as TreeView; ObservableCollection <RootFolder> repos = new ObservableCollection <RootFolder>(); loader = new Dictionary <string, AsyncNodeLoader>(); // Some CMIS servers hold several repositories (ex:Nuxeo). Show one root per repository. bool firstRepo = true; foreach (KeyValuePair <String, String> repository in Controller.repositories) { RootFolder repo = new RootFolder() { Name = repository.Value, Id = repository.Key, Address = Controller.saved_address.ToString() }; repos.Add(repo); if (firstRepo) { repo.Selected = true; firstRepo = false; } else { repo.Selected = false; } CmisRepoCredentials cred = new CmisRepoCredentials() { UserName = Controller.saved_user, Password = Controller.saved_password, Address = Controller.saved_address, RepoId = repository.Key }; AsyncNodeLoader asyncLoader = new AsyncNodeLoader(repo, cred, PredefinedNodeLoader.LoadSubFolderDelegate, PredefinedNodeLoader.CheckSubFolderDelegate); // GUI workaround to remove ignore folder {{ //asyncLoader.Load(repo); //loader.Add(repo.Id, asyncLoader); repo.Status = LoadingStatus.DONE; // GUI workaround to remove ignore folder }} } treeView.DataContext = repos; treeView.AddHandler(TreeViewItem.ExpandedEvent, new RoutedEventHandler(delegate(object sender, RoutedEventArgs e) { TreeViewItem expandedItem = e.OriginalSource as TreeViewItem; Node expandedNode = expandedItem.Header as Folder; if (expandedNode != null) { Node parent = expandedNode.Parent; while (parent is Folder) { parent = parent.Parent; } if (parent is RootFolder) { AsyncNodeLoader l; RootFolder r = parent as RootFolder; if (loader.TryGetValue(r.Id, out l)) { l.Load(expandedNode); } } } })); ContentCanvas.Children.Add(treeView); Canvas.SetTop(treeView, 70); Canvas.SetLeft(treeView, 185); System.Uri resourceLocater = new System.Uri("/DataSpaceSync;component/SetupAddSelectRepoWPF.xaml", System.UriKind.Relative); UserControl LoadXAML = Application.LoadComponent(resourceLocater) as UserControl; back_button = LoadXAML.FindName("back_button") as Button; continue_button = LoadXAML.FindName("continue_button") as Button; cancel_button = LoadXAML.FindName("cancel_button") as Button; continue_button.IsEnabled = !firstRepo; ContentCanvas.Children.Add(LoadXAML); // Actions cancel_button.Click += delegate { SelectRepoCancelAction(); Controller.PageCancelled(); }; continue_button.Click += delegate { List <string> ignored = new List <string>(); List <string> selectedFolder = new List <string>(); ItemCollection items = treeView.Items; RootFolder selectedRepo = null; foreach (var item in items) { RootFolder repo = item as RootFolder; if (repo != null) { if (repo.Selected != false) { selectedRepo = repo; break; } } } if (selectedRepo != null) { ignored.AddRange(NodeModelUtils.GetIgnoredFolder(selectedRepo)); selectedFolder.AddRange(NodeModelUtils.GetSelectedFolder(selectedRepo)); Controller.saved_repository = selectedRepo.Id; Controller.saved_remote_path = selectedRepo.Path; SelectRepoCancelAction(); Controller.Add2PageCompleted( Controller.saved_repository, Controller.saved_remote_path, ignored.ToArray(), selectedFolder.ToArray()); } else { return; } }; back_button.Click += delegate { SelectRepoCancelAction(); Controller.BackToPage1(); }; }
/// <summary> /// Initialises a new instance of the RootFolderEventArgs class /// </summary> /// <param name="rootFolder">Root folder being passed to the event</param> public RootFolderEventArgs(RootFolder rootFolder) { this.rootFolder = rootFolder; }
protected LandmarkAutoBookPayloadProviderBase(RootFolder baseLocalFolder) => _baseLocalFolder = baseLocalFolder;
/// <summary> /// Merges the given ignored folders as children to the given root folder node /// </summary> /// <param name="root"></param> /// <param name="ignoredFolder"></param> public static void AddIgnoredFolderToRootNode(RootFolder root, List<string> ignoredFolder) { AsyncNodeLoader.MergeFolderTrees(root, CreateNodesFormIgnoredFolders(ignoredFolder)); }
/// <summary> /// Create the UI /// </summary> private void CreateEdit() { RootFolder repo = new RootFolder() { Name = FolderName, Id = credentials.RepoId, Address = credentials.Address.ToString() }; repo.Selected = true; IgnoredFolderLoader.AddIgnoredFolderToRootNode(repo, Ignores); LocalFolderLoader.AddLocalFolderToRootNode(repo, localPath); List<RootFolder> repos = new List<RootFolder>(); repos.Add(repo); OutlineViewDelegate DataDelegate = new OutlineViewDelegate (); CmisTree.CmisTreeDataSource DataSource = new CmisTree.CmisTreeDataSource(repos); CmisOutlineController OutlineController = new CmisOutlineController (DataSource, DataDelegate); AsyncNodeLoader asyncLoader = new AsyncNodeLoader(repo, credentials, PredefinedNodeLoader.LoadSubFolderDelegate, PredefinedNodeLoader.CheckSubFolderDelegate); asyncLoader.UpdateNodeEvent += delegate { InvokeOnMainThread(delegate { DataSource.UpdateCmisTree(repo); NSOutlineView view = OutlineController.OutlineView(); for (int i = 0; i < view.RowCount; ++i) { view.ReloadItem(view.ItemAtRow(i)); } }); }; asyncLoader.Load(repo); DataDelegate.ItemExpanded += delegate(NSNotification notification) { InvokeOnMainThread(delegate { NSCmisTree cmis = notification.UserInfo["NSObject"] as NSCmisTree; if (cmis == null) { Console.WriteLine("ItemExpanded Error"); return; } NSCmisTree cmisRoot = cmis; while (cmisRoot.Parent != null) { cmisRoot = cmisRoot.Parent; } if (repo.Name != cmisRoot.Name) { Console.WriteLine("ItemExpanded find root Error"); return; } Node node = cmis.GetNode(repo); if (node == null) { Console.WriteLine("ItemExpanded find node Error"); return; } asyncLoader.Load(node); }); }; DataSource.SelectedEvent += delegate (NSCmisTree cmis, int selected) { InvokeOnMainThread(delegate { Node node = cmis.GetNode(repo); if (node == null) { Console.WriteLine("SelectedEvent find node Error"); } node.Selected = (selected != 0); DataSource.UpdateCmisTree(repo); NSOutlineView view = OutlineController.OutlineView(); for (int i = 0; i < view.RowCount; ++i) { try{ view.ReloadItem(view.ItemAtRow(i)); }catch(Exception e) { Console.WriteLine(e); } } }); }; OutlineController.View.Frame = new RectangleF (190, 60, 400, 240); ContentView.AddSubview (OutlineController.View); Controller.CloseWindowEvent += delegate { asyncLoader.Cancel(); }; Controller.OpenWindowEvent += delegate { InvokeOnMainThread (delegate { OrderFrontRegardless (); }); }; NSButton finish_button = new NSButton() { Title = Properties_Resources.SaveChanges, }; NSButton cancel_button = new NSButton() { Title = Properties_Resources.DiscardChanges }; Buttons.Add(finish_button); Buttons.Add(cancel_button); finish_button.Activated += delegate { Ignores = NodeModelUtils.GetIgnoredFolder(repo); Controller.SaveFolder(); InvokeOnMainThread (delegate { PerformClose (this); }); }; cancel_button.Activated += delegate { InvokeOnMainThread (delegate { PerformClose (this); }); }; this.Header = Properties_Resources.EditTitle; this.Description = ""; this.ShowAll(); }
internal IEnumerable <IPackageFile> GetFiles() { return(RootFolder.GetFiles()); }
public override void AwakeFromNib () { base.AwakeFromNib (); this.SideSplashView.Image = new NSImage (UIHelpers.GetImagePathname ("side-splash")) { Size = new SizeF (150, 482) }; this.Header.StringValue = Properties_Resources.EditTitle; Repo = new RootFolder() { Name = FolderName, Id = Credentials.RepoId, Address = Credentials.Address.ToString() }; Repo.Selected = true; IgnoredFolderLoader.AddIgnoredFolderToRootNode(Repo, Ignores); LocalFolderLoader.AddLocalFolderToRootNode(Repo, localPath); List<RootFolder> repos = new List<RootFolder>(); repos.Add(Repo); Loader = new AsyncNodeLoader(Repo, Credentials, PredefinedNodeLoader.LoadSubFolderDelegate, PredefinedNodeLoader.CheckSubFolderDelegate); CancelButton.Title = Properties_Resources.DiscardChanges; FinishButton.Title = Properties_Resources.SaveChanges; DataDelegate = new OutlineViewDelegate (); DataSource = new CmisTree.CmisTreeDataSource(repos); Outline.DataSource = DataSource; Outline.Delegate = DataDelegate; this.AddressLabel.StringValue = Properties_Resources.CmisWebAddress; this.UserLabel.StringValue = Properties_Resources.User; this.PasswordLabel.StringValue = Properties_Resources.Password; this.AddressText.StringValue = Credentials.Address.ToString (); this.UserText.StringValue = Credentials.UserName; this.PasswordText.StringValue = Credentials.Password.ToString (); this.AddressText.Enabled = false; this.UserText.Enabled = false; this.LoginStatusProgress.IsDisplayedWhenStopped = false; this.LoginStatusLabel.Hidden = true; this.FolderTab.Label = Properties_Resources.AddingFolder; this.CredentialsTab.Label = Properties_Resources.Credentials; switch (this.type) { case EditType.EditFolder: TabView.SelectAt (0); break; case EditType.EditCredentials: TabView.SelectAt (1); break; default: TabView.SelectAt (0); break; } // GUI workaround to remove ignore folder {{ this.TabView.Remove (this.FolderTab); // GUI workaround to remove ignore folder }} Controller.CloseWindowEvent += delegate { Loader.Cancel(); this.Window.PerformClose (this); this.Dispose(); }; InsertEvent (); // must be called after InsertEvent() Loader.Load(Repo); lock(loginLock) isClosed = false; OnPasswordChanged (this); }
private void LoadAddSelectRepoWPF() { // UI elements. Header = Properties_Resources.Which; // A tree allowing the user to browse CMIS repositories/folders. System.Uri resourceTreeLocater = new System.Uri("/DataSpaceSync;component/FolderTreeMVC/TreeView.xaml", System.UriKind.Relative); System.Windows.Controls.TreeView treeView = System.Windows.Application.LoadComponent(resourceTreeLocater) as TreeView; ObservableCollection<RootFolder> repos = new ObservableCollection<RootFolder>(); loader = new Dictionary<string, AsyncNodeLoader>(); // Some CMIS servers hold several repositories (ex:Nuxeo). Show one root per repository. bool firstRepo = true; foreach (var repository in Controller.repositories) { RootFolder repo = new RootFolder() { Name = repository.Name, Id = repository.Id, Address = Controller.saved_address.ToString() }; repos.Add(repo); if (firstRepo) { repo.Selected = true; firstRepo = false; } else { repo.Selected = false; } CmisRepoCredentials cred = new CmisRepoCredentials() { UserName = Controller.saved_user, Password = Controller.saved_password, Address = Controller.saved_address, Binding = Controller.saved_binding, RepoId = repository.Id }; AsyncNodeLoader asyncLoader = new AsyncNodeLoader(repo, cred, PredefinedNodeLoader.LoadSubFolderDelegate, PredefinedNodeLoader.CheckSubFolderDelegate); // GUI workaround to remove ignore folder {{ //asyncLoader.Load(repo); //loader.Add(repo.Id, asyncLoader); repo.Status = LoadingStatus.DONE; // GUI workaround to remove ignore folder }} } treeView.DataContext = repos; treeView.AddHandler(TreeViewItem.ExpandedEvent, new RoutedEventHandler(delegate(object sender, RoutedEventArgs e) { TreeViewItem expandedItem = e.OriginalSource as TreeViewItem; Node expandedNode = expandedItem.Header as Folder; if (expandedNode != null) { Node parent = expandedNode.Parent; while (parent is Folder) { parent = parent.Parent; } if (parent is RootFolder) { AsyncNodeLoader l; RootFolder r = parent as RootFolder; if (loader.TryGetValue(r.Id, out l)) { l.Load(expandedNode); } } } })); ContentCanvas.Children.Add(treeView); Canvas.SetTop(treeView, 70); Canvas.SetLeft(treeView, 185); System.Uri resourceLocater = new System.Uri("/DataSpaceSync;component/SetupAddSelectRepoWPF.xaml", System.UriKind.Relative); UserControl LoadXAML = Application.LoadComponent(resourceLocater) as UserControl; back_button = LoadXAML.FindName("back_button") as Button; continue_button = LoadXAML.FindName("continue_button") as Button; cancel_button = LoadXAML.FindName("cancel_button") as Button; continue_button.IsEnabled = !firstRepo; ContentCanvas.Children.Add(LoadXAML); // Actions cancel_button.Click += delegate { SelectRepoCancelAction(); Controller.PageCancelled(); }; continue_button.Click += delegate { List<string> ignored = new List<string>(); List<string> selectedFolder = new List<string>(); ItemCollection items = treeView.Items; RootFolder selectedRepo = null; foreach (var item in items) { RootFolder repo = item as RootFolder; if (repo != null) { if (repo.Selected != false) { selectedRepo = repo; break; } } } if (selectedRepo != null) { ignored.AddRange(NodeModelUtils.GetIgnoredFolder(selectedRepo)); selectedFolder.AddRange(NodeModelUtils.GetSelectedFolder(selectedRepo)); Controller.saved_repository = selectedRepo.Id; Controller.saved_remote_path = selectedRepo.Path; SelectRepoCancelAction(); Controller.Add2PageCompleted( Controller.saved_repository, Controller.saved_remote_path, ignored.ToArray(), selectedFolder.ToArray()); } else { return; } }; back_button.Click += delegate { SelectRepoCancelAction(); Controller.BackToPage1(); }; }