private void ConfigureProvider(string provider, Obany.Render.Objects.Canvas canvas)
        {
            // Nope better prompt for some
            ShumbiDiscover.Controls.Dialogs.ApiLogin apiLoginDialog = new ShumbiDiscover.Controls.Dialogs.ApiLogin();

            apiLoginDialog.Provider = "Scribd";
            apiLoginDialog.ProviderIcon = new Uri("/ShumbiDiscover.Core;component/Resources/SearchProviders/Scribd48.png", UriKind.Relative);
            apiLoginDialog.ProviderLoginInformation = CultureHelper.GetString(Properties.Resources.ResourceManager, "PROVIDERLOGIN").Replace("%1", apiLoginDialog.Provider);
            apiLoginDialog.ProviderSignupInformation = CultureHelper.GetString(Properties.Resources.ResourceManager, "PROVIDERSIGNUP").Replace("%1", apiLoginDialog.Provider);
            apiLoginDialog.ProviderSignupUrl = new Uri("http://www.scribd.com");

            apiLoginDialog.OpenUrlRequested += new ShumbiDiscover.Controls.Dialogs.ApiLogin.OpenUrlRequestedEventHandler(OpenUrl);

            DialogPanel.ShowDialog(Properties.Resources.ResourceManager, "CONFIGURATION", apiLoginDialog, "buttonOK", DialogButtons.Ok | DialogButtons.Cancel,
                delegate(DialogResult dialogControlResult)
                {
                    if (dialogControlResult == DialogResult.Ok)
                    {
                        string apiCredentials1 = apiLoginDialog.ApiCredentials1;
                        string apiCredentials2 = apiLoginDialog.ApiCredentials2;
                        string apiCredentials3 = "";
                        string apiCredentials4 = "";

                        _coreLogic.ApiCredentialsSet(provider, apiCredentials1, apiCredentials2, apiCredentials3, apiCredentials4,
                            delegate(bool success)
                            {
                                if (success)
                                {
                                    if (canvas != null)
                                    {
                                        AnnotationShare(provider, canvas);
                                    }
                                }
                            }
                         );
                    }
                }
            );
        }
        void authenticatedClient_ChangePasswordCompleted(object sender, Obany.Cloud.Services.Proxy.ChangePasswordCompletedEventArgs e)
        {
            bool success = false;

            try
            {
                if (e.Result.Status == Obany.Core.OperationStatus.Success)
                {
                    success = true;
                }
            }
            catch(Exception exc)
            {
                Obany.Core.Logging.LogException("Configuration::authenticatedClient_ChangePasswordCompleted", exc, null, null, true);
            }

            if (success)
            {
                labelResult.Foreground = new SolidColorBrush(Color.FromArgb(0xFF, 0x00, 0xFF, 0x00));
                labelResult.Text = CultureHelper.GetString(Properties.Resources.ResourceManager, "PASSWORDCHANGESUCCESS");
            }
            else
            {
                labelResult.Foreground = new SolidColorBrush(Color.FromArgb(0xFF, 0xFF, 0x00, 0x00));
                labelResult.Text = CultureHelper.GetString(Properties.Resources.ResourceManager, "PASSWORDCHANGEFAIL");
            }
        }
        void annotationCanvas_SaveAnnotation(Obany.Render.Objects.Canvas canvas, string mimeType)
        {
            _progressControl = new ProgressControl();

            AddWatermark(canvas);

            string files = CultureHelper.GetString(Properties.Resources.ResourceManager, "FILES");
            string allFiles = CultureHelper.GetString(Properties.Resources.ResourceManager, "ALLFILES");

            string ext = "";
            string filter = "";
            if (mimeType == "image/jpeg")
            {
                ext += ".jpg";
                filter = "Jpg " + files + " (*.jpg)|*.jpg";
                _progressControl.Status = CultureHelper.GetString(Properties.Resources.ResourceManager, "CREATING") + " Jpg";
            }
            else if (mimeType == "application/vnd.ms-xpsdocument")
            {
                ext += ".xps";
                filter = "Xps " + files + " (*.xps)|*.xps";
                _progressControl.Status = CultureHelper.GetString(Properties.Resources.ResourceManager, "CREATING") + " Xps";
            }
            else if (mimeType == "application/pdf")
            {
                ext += ".pdf";
                filter = "Pdf " + files + " (*.pdf)|*.pdf";
                _progressControl.Status = CultureHelper.GetString(Properties.Resources.ResourceManager, "CREATING") + " Pdf";
            }

            filter += "|" + allFiles + " (*.*)|*.*";

            #if SILVERLIGHT
            SaveFileDialog saveFileDialog = new SaveFileDialog();
            #else
            Microsoft.Win32.SaveFileDialog saveFileDialog = new Microsoft.Win32.SaveFileDialog();
            if (!string.IsNullOrEmpty(_lastSavePath))
            {
                saveFileDialog.InitialDirectory = _lastSavePath;
            }
            #endif
            saveFileDialog.DefaultExt = ext;
            saveFileDialog.Filter = filter;

            if (saveFileDialog.ShowDialog().Value)
            {
            #if !SILVERLIGHT
                _lastSavePath = System.IO.Path.GetDirectoryName(saveFileDialog.FileName);
            #endif

                System.IO.Stream saveStream = saveFileDialog.OpenFile();

                DialogPanel.ShowDialog(Properties.Resources.ResourceManager, "PROGRESS", _progressControl, "buttonCancel", DialogButtons.Cancel,
                    delegate(DialogResult dialogControlResult)
                    {
                        _progressControl = null;
                    }
                );

                _saveTaskId = Guid.NewGuid();

                _coreLogic.AnnotationSave(_saveTaskId, saveStream, canvas, mimeType,
                    delegate(bool success, Guid saveTaskIdComplete)
                {
                    Action a = delegate()
                    {
                        if (_saveTaskId == saveTaskIdComplete)
                        {
                            if (!success)
                            {
                                DialogPanel.ShowInformationBox(CultureHelper.GetString(Properties.Resources.ResourceManager, "ANNOTATIONUNABLETOSAVE"),
                                                            DialogButtons.Ok, null);
                            }
                            else
                            {
                                if (annotationCanvas != null)
                                {
                                    annotationCanvas.ResetChanges();
                                }
                            }

                            if (_progressControl != null)
                            {
                                DialogPanel.Close(_progressControl, DialogResult.Close);
                            }
                            _saveTaskId = Guid.Empty;
                        }
                    };

            #if SILVERLIGHT
                    Dispatcher.BeginInvoke(a);
            #else
                    Dispatcher.Invoke(a);
            #endif
                });
            }
        }
 void annotationCanvas_ShareAnnotation(Obany.Render.Objects.Canvas canvas, string provider)
 {
     // Do we have any stored credentials for the provider
     if (!_coreLogic.ApiCredentialsExist(provider))
     {
         ConfigureProvider(provider, canvas);
     }
     else
     {
         // We have credentials so let the renderer do an upload
         AnnotationShare(provider, canvas);
     }
 }
        internal void AnnotationShare(string provider, Obany.Render.Objects.Canvas canvas)
        {
            ShumbiDiscover.Controls.Dialogs.DocumentInformation documentInformationDialog = new ShumbiDiscover.Controls.Dialogs.DocumentInformation();

            documentInformationDialog.Title = _currentSearchVisualisation.CurrentSearchAggregateItem.Title;
            documentInformationDialog.IsPublic = true;
            documentInformationDialog.Keywords = "";

            AddWatermark(canvas);

            DialogPanel.ShowDialog(Properties.Resources.ResourceManager, "ANNOTATIONNFORMATION", documentInformationDialog, "buttonOK", DialogButtons.Ok | DialogButtons.Cancel,
                delegate(DialogResult dialogControlResult)
                {
                    if (dialogControlResult == DialogResult.Ok)
                    {
                        _progressControl = new ProgressControl();
                        _progressControl.Status = CultureHelper.GetString(Properties.Resources.ResourceManager, "ANNOTATIONSENDINGTO").Replace("%1", provider);

                        DialogPanel.ShowDialog(Properties.Resources.ResourceManager, "PROGRESS", _progressControl, "buttonCancel", DialogButtons.Cancel,
                            delegate(DialogResult dialogControlResult2)
                            {
                                _progressControl = null;
                            }
                        );

                        _shareTaskId = Guid.NewGuid();

                        _coreLogic.AnnotationShare(_shareTaskId, provider, canvas, documentInformationDialog.Title, documentInformationDialog.IsPublic, documentInformationDialog.Keywords,
                            delegate(bool success, Guid shareTaskCompleteId, Uri providerUrl)
                            {
                                Action a = delegate()
                                {
                                    // Only do the completion operations if this is the current task
                                    if (_shareTaskId == shareTaskCompleteId)
                                    {
                                        if (!success)
                                        {
                                            DialogPanel.ShowInformationBox(CultureHelper.GetString(Properties.Resources.ResourceManager, "ANNOTATIONUNABLETOSEND").Replace("%1", provider), DialogButtons.Ok, null);
                                        }
                                        else
                                        {
                                            ShumbiDiscover.Controls.Dialogs.DocumentComplete documentCompleteDialog = new ShumbiDiscover.Controls.Dialogs.DocumentComplete();

                                            documentCompleteDialog.Url = providerUrl.ToString();

                                            documentCompleteDialog.OpenUrlRequested += new ShumbiDiscover.Controls.Dialogs.DocumentComplete.OpenUrlRequestedEventHandler(OpenUrl);

                                            DialogPanel.ShowDialog(Properties.Resources.ResourceManager, "ANNOTATIONSENDCOMPLETE", documentCompleteDialog, "buttonOK", DialogButtons.Ok, null);
                                        }

                                        if (_progressControl != null)
                                        {
                                            DialogPanel.Close(_progressControl, success ? DialogResult.Ok : DialogResult.Cancel);
                                            _progressControl = null;
                                        }

                                        _shareTaskId = Guid.Empty;
                                    }
                                };

            #if SILVERLIGHT
                                Dispatcher.BeginInvoke(a);
            #else
                                Dispatcher.Invoke(a);
            #endif
                            }
                         );
                    }
                }
            );
        }
        private void AddWatermark(Obany.Render.Objects.Canvas canvas)
        {
            if (!string.IsNullOrEmpty(_waterMark))
            {
                string fullWaterMark = "";
                double fontSize = 24;
                for (int i = 0; i < canvas.Width / (_waterMark.Length * FontSize); i++)
                {
                    fullWaterMark += _waterMark + " - ";
                }
                for (int i = 0; i < canvas.Height / 140; i++)
                {
                    Obany.Render.Objects.TextBlock tbWatermark = new Obany.Render.Objects.TextBlock();
                    tbWatermark.Left = 0;
                    tbWatermark.Top = (i * 140) + 60;
                    tbWatermark.Text = fullWaterMark;
                    tbWatermark.FontSize = fontSize;
                    tbWatermark.FontName = "Arial";
                    tbWatermark.FontColour = "#22000000";

                    canvas.Children.Add(tbWatermark);
                }
            }
        }
        void authenticationClient_LoginCompleted(object sender, Obany.Cloud.Services.Proxy.LoginCompletedEventArgs e)
        {
            bool success = false;

            try
            {
                if (e.Result.Status == Obany.Core.OperationStatus.Success)
                {
                    success = true;

                    if (LoginSuccess != null)
                    {
                        LoginSuccess(e.Result.Culture, e.Result.AuthToken);
                    }
                }
            }
            catch (Exception exc)
            {
                Obany.Core.Logging.LogException("Login::authenticationClient_LoginCompleted", exc, null, null, true);
            }

            if (success)
            {
                labelResult.Foreground = new SolidColorBrush(Color.FromArgb(0xFF, 0x00, 0xFF, 0x00));
                labelResult.Text = CultureHelper.GetString(Properties.Resources.ResourceManager, "LOGINSUCCESS");
            }
            else
            {
                labelResult.Foreground = new SolidColorBrush(Color.FromArgb(0xFF, 0xFF, 0x00, 0x00));
                labelResult.Text = CultureHelper.GetString(Properties.Resources.ResourceManager, "LOGINFAILED");
            }

            textEmailAddress.IsEnabled = true;
            textPassword.IsEnabled = true;
            buttonLogin.IsEnabled = true;
        }
        public override void AnnotationShare(Guid shareTaskId, string provider, Obany.Render.Objects.Canvas canvas, string title, bool isPublic, string keywords, AnnotationShareComplete annotationShareComplete)
        {
            ThreadPool.QueueUserWorkItem(delegate(object s)
            {
                bool success = false;
                Uri providerUri = null;

                Obany.DocumentStorage.Model.IDocumentStorageProvider documentStorageProvider = Core.CoreConfiguration.DocumentStorageProviderFactory.CreateInstance(provider);

                if (documentStorageProvider != null)
                {
                    ApiCredential apic = ApiCredentialsGet(provider);

                    if(apic != null)
                    {
                        bool sessionOk = true;

                        ISessionProvider sessionProvider = documentStorageProvider as ISessionProvider;
                        string sessionId = null;

                        if(sessionProvider != null)
                        {
                            Obany.Provider.Model.Results.SessionStartResult sessionStartResult = sessionProvider.SessionStart(
                                Obany.Cryptography.SecureEncryption.DecryptData(apic.ApiCredentials1),
                                Obany.Cryptography.SecureEncryption.DecryptData(apic.ApiCredentials2),
                                Obany.Cryptography.SecureEncryption.DecryptData(apic.ApiCredentials3),
                                Obany.Cryptography.SecureEncryption.DecryptData(apic.ApiCredentials4));

                            if(sessionStartResult.Status != OperationStatus.Success)
                            {
                                sessionOk = false;
                            }
                            else
                            {
                                sessionId = sessionStartResult.SessionId;
                            }
                        }

                        if(sessionOk)
                        {
                            Obany.Render.Canvas.CanvasRenderer canvasRenderer = new Obany.Render.Canvas.CanvasRenderer();

                            string errorMessage;
                            Obany.Render.Objects.RenderCanvas renderCanvas = canvasRenderer.Render(canvas, "application/pdf", GetFontFolderPath(), out errorMessage);

                            if (renderCanvas != null)
                            {
                                List<Obany.DocumentStorage.Model.DocumentMetadata> documentMetaData = new List<Obany.DocumentStorage.Model.DocumentMetadata>();
                                if (!string.IsNullOrEmpty(keywords))
                                {
                                    documentMetaData.Add(new Obany.DocumentStorage.Model.DocumentMetadata("Keywords", keywords));
                                }

                                Obany.DocumentStorage.Model.Results.DocumentUploadResult documentUploadResult = documentStorageProvider.DocumentUpload(title, "pdf", renderCanvas.Data, "application/pdf", isPublic, documentMetaData);

                                if (documentUploadResult.Status == OperationStatus.Success)
                                {
                                    providerUri = documentStorageProvider.GetDocumentUrl(documentUploadResult.DocumentId);
                                    success = true;
                                }
                            }

                            if (sessionProvider != null)
                            {
                                sessionProvider.SessionEnd(sessionId);
                            }

                        }
                    }
                }

                if(annotationShareComplete != null)
                {
                    annotationShareComplete(success, shareTaskId, providerUri);
                }
            });
        }
        public override void AnnotationSave(Guid saveTaskId, System.IO.Stream saveStream, Obany.Render.Objects.Canvas canvas, string mimeType, AnnotationSaveComplete annotationSaveComplete)
        {
            ThreadPool.QueueUserWorkItem(delegate(object s)
            {
                Obany.Render.Canvas.CanvasRenderer canvasRenderer = new Obany.Render.Canvas.CanvasRenderer();

                string errorMessage;
                Obany.Render.Objects.RenderCanvas renderCanvas = canvasRenderer.Render(canvas, mimeType, GetFontFolderPath(), out errorMessage);

                if (renderCanvas != null)
                {
                    saveStream.Write(renderCanvas.Data, 0, renderCanvas.Data.Length);
                    saveStream.Close();
                }

                if (annotationSaveComplete != null)
                {
                    annotationSaveComplete(renderCanvas != null, saveTaskId);
                }
            });
        }
 void TabletManager_HidScroll(bool isHorizontal, Obany.Hid.Tablet.Interop.SCROLLBARCOMMAND scrollBarCommand)
 {
     if (isHorizontal)
     {
         if (scrollBarCommand == Obany.Hid.Tablet.Interop.SCROLLBARCOMMAND.SB_LINELEFT)
         {
             _scrollViewer.LineLeft();
         }
         else if (scrollBarCommand == Obany.Hid.Tablet.Interop.SCROLLBARCOMMAND.SB_LINERIGHT)
         {
             _scrollViewer.LineRight();
         }
     }
 }
 void TabletManager_HidFlick(Obany.Hid.Tablet.Flick flick)
 {
     if (flick.FlickData.ActionCommandCode == Obany.Hid.Tablet.Interop.FLICKACTION_COMMANDCODE.FLICKACTION_COMMANDCODE_APPCOMMAND)
     {
     }
 }