/*
         * Executes the appropriate action from the passed ButtonSetting
         * instance.
         */
        private void PerformButtonAction(ButtonSetting button)
        {
            switch (button.Setting)
            {
            case ButtonSetting.ButtonSettingMode.LeftClick:
                OSController.SimulateLeftClick();
                break;

            case ButtonSetting.ButtonSettingMode.RightClick:
                OSController.SimulateRightClick();
                break;

            case ButtonSetting.ButtonSettingMode.OnScreenKeyboard:
                OSController.OpenOnScreenKeyboard();
                break;

            case ButtonSetting.ButtonSettingMode.TypePhrase:
                if (!String.IsNullOrEmpty(button.Phrase))
                {
                    OSController.TypePhrase(button.Phrase);
                }
                break;

            case ButtonSetting.ButtonSettingMode.OpenProgram:
                if (button.ProgramInfo != null && !String.IsNullOrEmpty(button.ProgramInfo.Path))
                {
                    OSController.OpenExecutable(button.ProgramInfo.Path);
                }
                break;

            case ButtonSetting.ButtonSettingMode.OpenWebsite:
                if (!String.IsNullOrEmpty(button.WebsiteURL))
                {
                    OSController.OpenWebsite(button.WebsiteURL);
                }
                break;

            case ButtonSetting.ButtonSettingMode.KeyboardShortcut:
                if (button.KeyCombination != null)
                {
                    OSController.PerformKeyboardShortcut(button.KeyCombination);
                }
                break;
            }
        }