Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/xamarin/macdoc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremie Laval <jeremie.laval@gmail.com>2012-02-15 16:51:17 +0400
committerJeremie Laval <jeremie.laval@gmail.com>2012-02-15 21:29:51 +0400
commit841d29fb4c99c79715a8ad0b88b9974a871de5e7 (patch)
tree44845ef76c010158c277cd8f31662dc427e97f75 /BookmarkAssistantController.cs
parent50f1869f63642b70323e6b0598af48e3fbc9df94 (diff)
[macdoc] Add bookmark manager
Diffstat (limited to 'BookmarkAssistantController.cs')
-rw-r--r--BookmarkAssistantController.cs115
1 files changed, 115 insertions, 0 deletions
diff --git a/BookmarkAssistantController.cs b/BookmarkAssistantController.cs
new file mode 100644
index 0000000..873253a
--- /dev/null
+++ b/BookmarkAssistantController.cs
@@ -0,0 +1,115 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using MonoMac.Foundation;
+using MonoMac.AppKit;
+
+namespace macdoc
+{
+ public partial class BookmarkAssistantController : MonoMac.AppKit.NSViewController
+ {
+ IList<BookmarkManager.Entry> entries;
+ BookmarkDataSource source;
+
+ public BookmarkAssistantController (IntPtr handle) : base (handle)
+ {
+ }
+
+ [Export ("initWithCoder:")]
+ public BookmarkAssistantController (NSCoder coder) : base (coder)
+ {
+ }
+
+ public BookmarkAssistantController (IList<BookmarkManager.Entry> entries) : base ("BookmarkAssistant", NSBundle.MainBundle)
+ {
+ this.entries = entries;
+ this.source = new BookmarkDataSource (entries, AppDelegate.BookmarkManager);
+ View.TableView.DataSource = source;
+ View.TableView.Activated += HandleViewTableViewActivated;
+ }
+
+ void HandleViewTableViewActivated (object sender, EventArgs e)
+ {
+ var tableView = (NSTableView)sender;
+ var row = tableView.ClickedRow;
+ var column = tableView.ClickedColumn;
+
+ // Only process action on the delete button
+ if (row == -1 || column != 3 || row >= entries.Count)
+ return;
+
+ var entry = entries[row];
+ AppDelegate.BookmarkManager.DeleteBookmark (entry);
+ Console.WriteLine ("Removed entry {0}", entry.Name);
+ View.TableView.ReloadData ();
+ }
+
+ public new BookmarkAssistant View {
+ get {
+ return (BookmarkAssistant)base.View;
+ }
+ }
+
+ public class BookmarkDataSource : NSTableViewDataSource
+ {
+ IList<BookmarkManager.Entry> entries;
+ BookmarkManager manager;
+
+ public BookmarkDataSource (IList<BookmarkManager.Entry> entries, BookmarkManager manager)
+ {
+ this.entries = entries;
+ this.manager = manager;
+ }
+
+ public override NSObject GetObjectValue (NSTableView tableView, NSTableColumn tableColumn, int row)
+ {
+ if (tableColumn == null)
+ return null;
+
+ int columnIndex = tableView.FindColumn ((NSString)tableColumn.Identifier);
+ switch (columnIndex) {
+ case 0:
+ return new NSString (entries[row].Name);
+ case 1:
+ return new NSString (entries[row].Notes);
+ case 2:
+ return new NSString (entries[row].Url);
+ default:
+ return null;
+ }
+ }
+
+ public override void SetObjectValue (NSTableView tableView, NSObject theObject, NSTableColumn tableColumn, int row)
+ {
+ NSString newNSValue = theObject as NSString;
+ if (newNSValue == null)
+ return;
+ string newValue = newNSValue.ToString ();
+ int columnIndex = tableView.FindColumn ((NSString)tableColumn.Identifier);
+ BookmarkManager.Entry entry = entries[row];
+ switch (columnIndex) {
+ case 0:
+ if (!string.IsNullOrWhiteSpace (newValue))
+ entry.Name = newValue;
+ break;
+ case 1:
+ entry.Notes = newValue;
+ break;
+ case 2:
+ if (!string.IsNullOrWhiteSpace (newValue))
+ entry.Url = newValue;
+ break;
+ default:
+ break;
+ }
+ manager.CommitBookmarkChange (entry);
+ }
+
+ public override int GetRowCount (NSTableView tableView)
+ {
+ return entries.Count;
+ }
+ }
+ }
+}
+