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-03-12 22:55:26 +0400
committerJeremie Laval <jeremie.laval@gmail.com>2012-03-12 22:57:48 +0400
commit182d6fbfcc02a128081623b120262b66c5725907 (patch)
tree3d0cb260bf77c451423f1c00070bc19e59933f7d /WebViewExtraordinaire.cs
parente0e1bdc47bf2dba28baad64318d8cd561ce9eb5c (diff)
[macdoc] Add search and find shortcuts and implementation
Diffstat (limited to 'WebViewExtraordinaire.cs')
-rw-r--r--WebViewExtraordinaire.cs54
1 files changed, 53 insertions, 1 deletions
diff --git a/WebViewExtraordinaire.cs b/WebViewExtraordinaire.cs
index 260f75f..77cb2db 100644
--- a/WebViewExtraordinaire.cs
+++ b/WebViewExtraordinaire.cs
@@ -26,6 +26,9 @@ namespace macdoc
public event EventHandler<SwipeEventArgs> SwipeEvent;
public event EventHandler<SwipeEventArgs> OngoingSwipeEvent;
+ FindBarExtraordinaireController findBarController;
+ NSScrollView currentScrollView;
+
public WebViewExtraordinaire (IntPtr handle) : base (handle)
{
Initialize ();
@@ -39,8 +42,11 @@ namespace macdoc
void Initialize ()
{
+ findBarController = new FindBarExtraordinaireController ();
IsSwipeEnabled = NSEvent.IsSwipeTrackingFromScrollEventsEnabled;
- //FinishedLoad += (sender, e) => MainFrame.FrameView.DocumentView.EnclosingScrollView.HorizontalScrollElasticity = NSScrollElasticity.Allowed;
+ FinishedLoad += (sender, e) => SetupFindBar (MainFrame.FrameView.DocumentView.EnclosingScrollView);
+ findBarController.View.FindTextChanged += (sender, e) => InternalPerformFinderAction (NSTextFinderAction.SetSearchString);
+ findBarController.View.CloseFindPanel += (sender, e) => InternalPerformFinderAction (NSTextFinderAction.HideFindInterface);
}
public bool IsSwipeEnabled { get; set; }
@@ -117,6 +123,52 @@ namespace macdoc
if (temp != null)
temp (this, new SwipeEventArgs { Side = status });
}
+
+ public override void PerformFindPanelAction (NSObject sender)
+ {
+ var ctrl = sender as NSMenuItem;
+ if (ctrl == null)
+ return;
+
+ InternalPerformFinderAction ((NSTextFinderAction)ctrl.Tag);
+ }
+
+ void InternalPerformFinderAction (NSTextFinderAction action)
+ {
+ switch (action) {
+ case NSTextFinderAction.ShowFindInterface:
+ if (currentScrollView != null)
+ currentScrollView.FindBarVisible = true;
+ findBarController.View.GrabFocus ();
+ break;
+ case NSTextFinderAction.HideFindInterface:
+ if (currentScrollView != null)
+ currentScrollView.FindBarVisible = false;
+ break;
+ case NSTextFinderAction.NextMatch:
+ case NSTextFinderAction.SetSearchString:
+ DoSearch (true);
+ break;
+ case NSTextFinderAction.PreviousMatch:
+ DoSearch (false);
+ break;
+ default:
+ break;
+ }
+ }
+
+ void SetupFindBar (NSScrollView scrollView)
+ {
+ currentScrollView = scrollView;
+ scrollView.FindBarView = findBarController.View;
+ scrollView.FindBarPosition = NSScrollViewFindBarPosition.AboveContent;
+ }
+
+ void DoSearch (bool forward)
+ {
+ var findBar = findBarController.View;
+ Search (findBar.FindText, forward, findBar.CaseSensitive, findBar.Wrap);
+ }
}
}