public void Construct()
		{
			using (HotSpotProvider hotSpotProvider = new HotSpotProvider())
			{
				Assert.IsNotNull(hotSpotProvider);
			}
		}
		public void CanExtend_CalledAfterDisposed_Throws()
		{
			HotSpotProvider hotSpotProvider = new HotSpotProvider();
			hotSpotProvider.Dispose();
			using (TextBox textBox = new TextBox())
			{
				Assert.Throws<ObjectDisposedException>(() =>
 hotSpotProvider.CanExtend(textBox));
			}
		}
        static void Main()
        {
            // Is mercurial set up?
            var readinessMessage = HgRepository.GetEnvironmentReadinessMessage("en");
            if (!string.IsNullOrEmpty(readinessMessage))
            {
                MessageBox.Show(readinessMessage, CommonResources.kFLExBridge, MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                return;
            }

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            using (var hotspot = new HotSpotProvider())
            {
                // This is a kludge to make sure we have a real reference to PalasoUIWindowsForms.
                // Without this call, although PalasoUIWindowsForms is listed in the References of this project,
                // since we don't actually use it directly, it does not show up when calling GetReferencedAssemblies on this assembly.
                // But we need it to show up in that list so that ExceptionHandler.Init can install the intended PalasoUIWindowsForms
                // exception handler.
            }

            if (Settings.Default.CallUpgrade)
            {
                Settings.Default.Upgrade();
                Settings.Default.CallUpgrade = false;
            }

            SetUpErrorHandling();

            #if MONO
            // Set up Xpcom for geckofx (used by some Chorus dialogs that we may invoke).
            Xpcom.Initialize(XULRunnerLocator.GetXULRunnerLocation());
            GeckoPreferences.User["gfx.font_rendering.graphite.enabled"] = true;
            Application.ApplicationExit += (sender, e) => { Xpcom.Shutdown(); };
            #endif

            // An aggregate catalog that combines multiple catalogs
            using (var catalog = new AggregateCatalog())
            {
                var thisAssembly = Assembly.GetExecutingAssembly();
                catalog.Catalogs.Add(new DirectoryCatalog(
                    Path.GetDirectoryName(Utilities.StripFilePrefix(thisAssembly.CodeBase)),
                    "*-ChorusPlugin.dll"));
                catalog.Catalogs.Add(new AssemblyCatalog(thisAssembly));

                // Create the CompositionContainer with the parts in the catalog
                using (var container = new CompositionContainer(catalog))
                {
                    Application.Run(container.GetExportedValue<RepositoryUtilityForm>());
                }
            }
            Settings.Default.Save();
        }
            public HotSpotPainter(HotSpotProvider parent, TextBoxBase c)
            {
                if (c.IsHandleCreated)
                {
                    AssignHandle(c.Handle);
                }
                c.HandleCreated   += ControlHandleCreated;
                c.HandleDestroyed += ControlHandleDestroyed;

                c.TextChanged += OnTextChanged;
                c.MouseMove   += OnMouseMove;
                c.MouseDown   += OnMouseDown;
                c.MouseClick  += OnMouseClick;
                c.MouseUp     += OnMouseUp;
                c.MouseHover  += OnMouseHover;
                c.MouseLeave  += OnMouseLeave;

                _control         = c;
                HotSpots         = new List <HotSpotInternal>();
                _currentHotSpots = new List <HotSpotInternal>();
                _parent          = parent;
            }
		public void Setup()
		{
			_hotSpotProvider = new HotSpotProvider();
			_textBox = new ClickableTextBox();
			_textBox.Width = 350;
			_textBox.Text = "Now is the time for ...";
			_spot1 = new HotSpot.HotSpot(_textBox, 7, 3);
			_spot2 = new HotSpot.HotSpot(_textBox, 16, 3);

			_hotSpotProvider.SetEnableHotSpots(_textBox, true);
			_hotSpotProvider.RetrieveHotSpots +=
				delegate(object sender, RetrieveHotSpotsEventArgs e)
					{
						e.AddHotSpot(_spot1);
						e.AddHotSpot(_spot2);
						e.Color = Color.Yellow;
					};
			_originalCursorPosition = Cursor.Position;

			_form = new Form();
			_form.Controls.Add(_textBox);
			_form.Show();
		}
		public TextBoxSpellChecker()
		{
			_extendees = new Dictionary<Control, string>();
			bool brokerSuccessfullyCreated = false;

			try
			{
				_broker = new Broker();
				brokerSuccessfullyCreated = true;
			}
			catch
			{
				//it's okay if we can't create one.
				// probably because Enchant isn't installed on this machine
			}

			if (brokerSuccessfullyCreated)
			{
				_hotSpotProvider = new HotSpotProvider();
				_hotSpotProvider.RetrieveHotSpots += CheckSpelling;
				_dictionaries = new Dictionary<string, Dictionary>();
			}
		}
        static void Main(string[] args)
        {
            //MessageBox.Show(@"Get ready to debug FB exe.");
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            if(args.Length == 0)
            {
                MessageBox.Show(CommonResources.kNoCommandLineOptions, CommonResources.kFLExBridge, MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            using (var hotspot = new HotSpotProvider())
            {
                // This is a kludge to make sure we have a real reference to PalasoUIWindowsForms.
                // Without this call, although PalasoUIWindowsForms is listed in the References of this project,
                // since we don't actually use it directly, it does not show up when calling GetReferencedAssemblies on this assembly.
                // But we need it to show up in that list so that ExceptionHandler.Init can install the intended PalasoUIWindowsForms
                // exception handler.
            }

            if (Settings.Default.CallUpgrade)
            {
                Settings.Default.Upgrade();
                Settings.Default.CallUpgrade = false;
            }

            SetUpErrorHandling();

            var commandLineArgs = CommandLineProcessor.ParseCommandLineArgs(args);

            #if MONO
            // Set up Xpcom for geckofx (used by some Chorus dialogs that we may invoke).
            Xpcom.Initialize(XULRunnerLocator.GetXULRunnerLocation());
            GeckoPreferences.User["gfx.font_rendering.graphite.enabled"] = true;
            Application.ApplicationExit += (sender, e) => { Xpcom.Shutdown(); };
            #endif

            // An aggregate catalog that combines multiple catalogs
            using (var catalog = new AggregateCatalog())
            {
                catalog.Catalogs.Add(new DirectoryCatalog(
                    Path.GetDirectoryName(Utilities.StripFilePrefix(typeof(ActionTypeHandlerRepository).Assembly.CodeBase)),
                    "*-ChorusPlugin.dll"));

                // Create the CompositionContainer with the parts in the catalog
                using (var container = new CompositionContainer(catalog))
                {
                    var connHelper = container.GetExportedValue<FLExConnectionHelper>();
                    if (!connHelper.Init(commandLineArgs))
                        return;

                    // Is mercurial set up?
                    var readinessMessage = HgRepository.GetEnvironmentReadinessMessage("en");
                    if (!string.IsNullOrEmpty(readinessMessage))
                    {
                        MessageBox.Show(readinessMessage, CommonResources.kFLExBridge, MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                        return;
                    }

                    var l10Managers = Utilities.SetupLocalization(commandLineArgs);

                    try
                    {
                        var handlerRepository = container.GetExportedValue<ActionTypeHandlerRepository>();
                        var currentHandler = handlerRepository.GetHandler(commandLineArgs);
                        currentHandler.StartWorking(commandLineArgs);
                        var bridgeActionTypeHandlerShowWindow = currentHandler as IBridgeActionTypeHandlerShowWindow;
                        if (bridgeActionTypeHandlerShowWindow != null)
                        {
                            Application.Run(bridgeActionTypeHandlerShowWindow.MainForm);
                        }
                        var bridgeActionTypeHandlerCallEndWork = currentHandler as IBridgeActionTypeHandlerCallEndWork;
                        if (bridgeActionTypeHandlerCallEndWork != null)
                        {
                            bridgeActionTypeHandlerCallEndWork.EndWork();
                        }
                    }
                    catch
                    {
                        connHelper.SignalBridgeWorkComplete(false);
                        throw; // Re-throw the original exception, so the crash dlg has something to display.
                    }
                    finally
                    {
                        foreach (var manager in l10Managers.Values)
                        {
                            manager.Dispose();
                        }

                    }
                }
            }
            Settings.Default.Save();
        }
		public void SetSite_CalledAfterDisposed_Throws()
		{
			HotSpotProvider hotSpotProvider = new HotSpotProvider();
			hotSpotProvider.Dispose();
			Assert.Throws<ObjectDisposedException>(() =>
			hotSpotProvider.Site = null);
		}
		public void GetSite_CalledAfterDisposed_Throws()
		{
			HotSpotProvider hotSpotProvider = new HotSpotProvider();
			hotSpotProvider.Dispose();
			ISite x;
			Assert.Throws<ObjectDisposedException>(() =>
				 x = hotSpotProvider.Site);
		}
		public void Dispose_CalledTwice_CallsHandlerOnce()
		{
			HotSpotProvider hotSpotProvider = new HotSpotProvider();
			int disposedCalledCount = 0;
			hotSpotProvider.Disposed += delegate { ++disposedCalledCount; };
			Assert.AreEqual(0, disposedCalledCount);
			hotSpotProvider.Dispose();
			Assert.AreEqual(1, disposedCalledCount);
			hotSpotProvider.Dispose();
			Assert.AreEqual(1, disposedCalledCount);
		}
		public void Dispose_HasDisposedEventHandler_CallsHandler()
		{
			HotSpotProvider hotSpotProvider = new HotSpotProvider();
			bool disposedCalled = false;
			hotSpotProvider.Disposed += delegate { disposedCalled = true; };
			Assert.IsFalse(disposedCalled);
			hotSpotProvider.Dispose();
			Assert.IsTrue(disposedCalled);
		}
		public void SetEnableHotSpots_CalledAfterDisposed_Throws()
		{
			HotSpotProvider hotSpotProvider = new HotSpotProvider();
			hotSpotProvider.Dispose();
			using (TextBox textBox = new TextBox())
			{
				Assert.Throws<ObjectDisposedException>(() =>
hotSpotProvider.SetEnableHotSpots(textBox, false));
			}
		}
		public void Setup()
		{
			_hotSpotProvider = new HotSpotProvider();
		}
			public HotSpotPainter(HotSpotProvider parent, TextBoxBase c)
			{
				if (c.IsHandleCreated)
				{
					AssignHandle(c.Handle);
				}
				c.HandleCreated += ControlHandleCreated;
				c.HandleDestroyed += ControlHandleDestroyed;

				c.TextChanged += OnTextChanged;
				c.MouseMove += OnMouseMove;
				c.MouseDown += OnMouseDown;
				c.MouseClick += OnMouseClick;
				c.MouseUp += OnMouseUp;
				c.MouseHover += OnMouseHover;
				c.MouseLeave += OnMouseLeave;

				_control = c;
				HotSpots = new List<HotSpotInternal>();
				_currentHotSpots = new List<HotSpotInternal>();
				_parent = parent;
			}