Beispiel #1
0
        private void DrawSimpleMenuItem(SimpleMenuItem item)
        {
            var scale = screen.Width / 320;

            screen.DrawTextB(item.Text, scale * item.ItemX, scale * item.ItemY, scale);
            //DrawMenuPatch(item.Name, item.ItemX, item.ItemY);
        }
        protected void ShowLocations(IList <FileLocationInfo> locations, FileLocationInfo currentLocation, string caption, bool bindToPsi)
        {
            var lifetimeDefinition = Lifetimes.Define(lifetime);

            if (!Enumerable.Any(locations))
            {
                agent.ShowBalloon(lifetimeDefinition.Lifetime, caption,
                                  string.Format("There are no {0}.", caption.ToLowerInvariant()), null,
                                  new[] { "OK" }, false, balloonLifetime =>
                {
                    agent.ButtonClicked.Advise(balloonLifetime, _ => lifetimeDefinition.Terminate());
                });
                return;
            }

            var options = new List <BalloonOption>();

            foreach (var locationInfo in locations.Distinct().Where(l => l.ProjectFile.IsValid() || l.FileSystemPath != null))
            {
                var descriptor = new SimpleMenuItem();

                var occurence = GetOccurence(locationInfo, bindToPsi);
                if (occurence != null)
                {
                    presentationManager.DescribeOccurence(descriptor, occurence, null);
                    var enabled = locationInfo != currentLocation;
                    options.Add(new BalloonOption(descriptor.Text + string.Format(" ({0})", descriptor.ShortcutText), false, enabled, locationInfo));
                }
            }

            agent.ShowBalloon(lifetimeDefinition.Lifetime, caption, string.Empty, options, new[] { "Done" }, true,
                              balloonLifetime =>
            {
                agent.BalloonOptionClicked.Advise(balloonLifetime, o =>
                {
                    lifetimeDefinition.Terminate();

                    var locationInfo = o as FileLocationInfo;
                    if (locationInfo == null)
                    {
                        return;
                    }

                    shellLocks.ExecuteOrQueueReadLock("GotoRecentFiles", () =>
                    {
                        using (ReadLockCookie.Create())
                        {
                            PsiFiles.CommitAllDocuments();
                            var occurence = GetOccurence(locationInfo, bindToPsi);
                            if (occurence != null)
                            {
                                occurence.Navigate(solution, popupWindowContext.Source, true);
                            }
                        }
                    });
                });

                agent.ButtonClicked.Advise(balloonLifetime, _ => lifetimeDefinition.Terminate());
            });
        }
Beispiel #3
0
        /// <summary>
        /// Creates initial menu
        /// </summary>
        protected virtual void CreateMenu()
        {
            MenuItems.Clear();

            var fileMenu = new SimpleMenuItem(Properties.Resources.FileHeader);

            SimpleMenuItem editModeMenu;

            editModeMenu = new SimpleMenuItem(Properties.Resources.EditModeHeader, ChangeEditMode, true);
            editModeMenu.CommandParameter = editModeMenu;
            fileMenu.SubMenuItems.Add(editModeMenu);

            fileMenu.SubMenuItems.Add(new SimpleMenuItem(Properties.Resources.ExitHeader, Exit));

            MenuItems.Add(fileMenu);
            MenuItems.Add(new SimpleMenuItem(Properties.Resources.FullScreenHeader, SetFullScreen));

            _editController = new EditModeController();
            _editMenu       = new SimpleMenuItem(Properties.Resources.EditHeader);
            _editMenu.SubMenuItems.Add(_editController.AddPoint);
            _editMenu.SubMenuItems.Add(_editController.MovePoint);
            _editMenu.SubMenuItems.Add(new SimpleMenuItem(Properties.Resources.DeletePointHeader, DeleteCurrentPoint));
            _editMenu.SubMenuItems.Add(new SimpleMenuItem(Properties.Resources.SaveHeader, SaveData));
            _editMenu.Visibility = Visibility.Collapsed;
            MenuItems.Add(_editMenu);
        }
        /// <summary>Describes the favorite file.</summary>
        /// <param name="favoriteFilePath">The favorite file path.</param>
        /// <param name="index">The index.</param>
        /// <returns>The favorite file.</returns>
        private static SimpleMenuItem DescribeFavoriteFile(FavoriteFilePath favoriteFilePath, int index)
        {
            var result = new SimpleMenuItem();

              if (favoriteFilePath == null)
              {
            result.Text = "<Error>";
            return result;
              }

              try
              {
            result.Text = Path.GetFileName(favoriteFilePath.Path);
              }
              catch
              {
            result.Text = favoriteFilePath.Path;
              }

              result.Style = MenuItemStyle.Enabled;
              result.ShortcutText = new RichText("(" + favoriteFilePath + ")", TextStyle.FromForeColor(Color.LightGray));

              if (index < 0 || index > 8)
              {
            return result;
              }

              result.Mnemonic = index.ToString();

              return result;
        }
        public void WhenCorrectlyInitializedWillStoreInputValues()
        {
            var command = new StubICommand();
            var simpleMenuItem = new SimpleMenuItem("Test", 1, command);

            Assert.AreEqual("Test", simpleMenuItem.Name);
            Assert.AreEqual(1, simpleMenuItem.Priority);
            Assert.AreEqual(command, simpleMenuItem.Command);
        }
Beispiel #6
0
        private static SimpleMenuItem CreateMenuItem(string text, string urlOnClick, string tooltip)
        {
            const int maxLength = 80;
            if (tooltip == null) {
                tooltip = (urlOnClick.Length < maxLength) ? urlOnClick : urlOnClick.Substring(0, maxLength) + "...";
            }

            var item = new SimpleMenuItem { Text = text, Style = MenuItemStyle.Enabled, Tooltip = tooltip };
            item.Clicked += delegate { Process.Start(urlOnClick); };

            return item;
        }
    /// <summary>Shows this instance.</summary>
    /// <param name="menuItems">The menu Items.</param>
    public void Show([NotNull] IEnumerable<PopupMenuItem> menuItems)
    {
      if (menuItems == null)
      {
        throw new ArgumentNullException("menuItems");
      }

      Action<Lifetime, JetPopupMenu> action = (lifetime, popupMenu) =>
      {
        if (popupMenu == null)
        {
          return;
        }

        var items = new List<SimpleMenuItem>();

        foreach (var menuItem in menuItems)
        {
          if (menuItem == null)
          {
            continue;
          }

          var item = new SimpleMenuItem
          {
            Text = menuItem.Text,
            Style = MenuItemStyle.Enabled
          };

          var executed = item.Executed;
          if (executed == null)
          {
            continue;
          }

          var m = menuItem;
          executed.Advise(EternalLifetime.Instance, () => m.RaiseClicked(this, EventArgs.Empty));

          items.Add(item);
        }

        popupMenu.SetItems(items.ToArray());

        popupMenu.Caption.Value = WindowlessControl.Create(this.Caption);
        popupMenu.KeyboardAcceleration.SetValue(KeyboardAccelerationFlags.Mnemonics);
      };

      Shell.Instance.GetComponent<JetPopupMenus>().Show(EternalLifetime.Instance, JetPopupMenu.ShowWhen.NoItemsBannerIfNoItems, action);
    }
Beispiel #8
0
        public EditModeController()
        {
            AddPoint = new SimpleMenuItem(Properties.Resources.CreateNewHeader, CreateMovePoint,
                                          (x) => EditMode != EditModeType.MovePoint)
            {
                IsCheckable      = true,
                CommandParameter = EditModeType.NewPoint
            };

            MovePoint = new SimpleMenuItem(Properties.Resources.MovePointHeader, CreateMovePoint, true)
            {
                CommandParameter = EditModeType.MovePoint
            };

            ResetMode();
        }
Beispiel #9
0
        //------------------------------------------------------------------------------------------------------------------------
        private static List <SimpleMenuItem> AddCreateFileMenuItem(Lifetime lifetime, TestCopProjectItem projectItem, string targetFile)
        {
            var menuItems = new List <SimpleMenuItem>();

            var result = new SimpleMenuItem("Create associated file"
                                            , null,
                                            ResharperHelper.ProtectActionFromReEntry(lifetime, "TestingMenuNavigation",
                                                                                     () =>
                                                                                     ResharperHelper.CreateFileWithinProject(projectItem, targetFile)));

            result.Style        = MenuItemStyle.Enabled;
            result.Icon         = UnnamedThemedIcons.Agent16x16.Id;
            result.Text         = new RichText("Create ", TextStyle.FromForeColor(Color.Green)).Append(targetFile, TextStyle.FromForeColor(TextStyle.DefaultForegroundColor));
            result.ShortcutText = new RichText("(" + projectItem.Project.GetPresentableProjectPath()
                                               +
                                               projectItem.SubNamespaceFolder.FullPath.RemoveLeading(
                                                   projectItem.Project.ProjectFileLocation.Directory.FullPath) + ")",
                                               TextStyle.FromForeColor(Color.LightGray));
            menuItems.Add(result);
            return(menuItems);
        }
Beispiel #10
0
        public void Draw(SpriteBatch spriteBatch)
        {
            //draw background
            spriteBatch.Draw(menuBackground, menuRect, Color.White);

            Vector2 textPos = new Vector2(menuRect.X + 5, menuRect.Y + 5);

            for (int i = 0; i < menuItems.Count; i++)
            {
                SimpleMenuItem item = menuItems[i];
                if (currentIndex == i)
                {
                    //Selected Item
                    spriteBatch.DrawString(Fonts.ArmaFive, item.text, textPos, selectedColor, 0f, Vector2.Zero, 1f, SpriteEffects.None, 1);
                }
                else
                {
                    //Unselected Item
                    spriteBatch.DrawString(Fonts.ArmaFive, item.text, textPos, item.color, 0f, Vector2.Zero, 1f, SpriteEffects.None, 1);
                }

                textPos.Y += 10;
            }
        }
        /// <summary>
        /// Handles the OnClicked event of the CreateLiveTemplates control.
        /// </summary>
        /// <param name="sender">
        /// The source of the event.
        /// </param>
        /// <param name="e">
        /// The <see cref="System.EventArgs"/> instance containing the event data.
        /// </param>
        private void CreateLiveTemplates_OnClicked(object sender, EventArgs e)
        {
            var simpleMenuItem = sender as SimpleMenuItem;
              if (simpleMenuItem == null)
              {
            return;
              }

              var liveTemplates = simpleMenuItem.Tag as List<LiveTemplateItem>;
              if (liveTemplates == null)
              {
            return;
              }

              var items = new List<SimpleMenuItem>();

              foreach (var template in liveTemplates)
              {
            var item = new SimpleMenuItem
            {
              Style = MenuItemStyle.Enabled,
              Text = template.MenuText ?? string.Empty,
              Tag = template
            };

            item.Clicked += LiveTemplateManager.AddLiveTemplate;

            items.Add(item);
              }

              var menu = new JetPopupMenu();

              var popupWindowContext = this.dataContext.GetData(DataConstants.POPUP_WINDOW_CONTEXT);
              if (popupWindowContext != null)
              {
            menu.Layouter = popupWindowContext.CreateLayouter();
              }

              menu.Caption.Value = WindowlessControl.Create("Create live template");
              menu.SetItems(items.ToArray());
              menu.KeyboardAcceleration.SetValue(KeyboardAccelerationFlags.Mnemonics);

              menu.Show();
        }
Beispiel #12
0
 private void DrawSimpleMenuItem(SimpleMenuItem item)
 {
     this.DrawMenuPatch(item.Name, item.ItemX, item.ItemY);
 }
        public virtual void Execute([NotNull] Lifetime lifetime, [NotNull] ITextControl textControl,
                                    [NotNull] IList <PrefixExpressionContext> expressions,
                                    [NotNull] string postfixText, [NotNull] string chooserTitle,
                                    [NotNull] Action <int> continuation)
        {
      #pragma warning disable 618
            if (Shell.Instance.IsTestShell)
      #pragma warning restore 618
            {
                continuation(0);
                return;
            }

            var popupMenu = myPopupMenus.CreateWithLifetime(lifetime);

            popupMenu.Caption.Value      = WindowlessControl.Create(chooserTitle);
            popupMenu.PopupWindowContext = new TextControlPopupWindowContext(
                lifetime, textControl, myShellLocks, myActionManager);

            // advise selected element to highlight expression
            popupMenu.SelectedItemKey.Change.Advise(lifetime, args =>
            {
                if (!args.HasNew)
                {
                    return;
                }

                var menuItem = args.New as SimpleMenuItem;
                if (menuItem == null)
                {
                    return;
                }

                var range = menuItem.Tag as TextRange?;
                if (range != null)
                {
                    UpdateHighlighting(textControl, range.Value);
                }
            });

            // build menu items from expressions
            var items = new LocalList <SimpleMenuItem>(expressions.Count);
            var index = 0;

            foreach (var expressionContext in expressions)
            {
                TextRange range;
                var       expressionText = PresentExpression(expressionContext, postfixText, out range);

                var itemIndex = index++;
                // ReSharper disable once UseObjectOrCollectionInitializer
                var menuItem = new SimpleMenuItem(
                    expressionText, BulbThemedIcons.YellowBulb.Id, () => continuation(itemIndex));

                menuItem.Tag = range;
                items.Add(menuItem);
            }

            popupMenu.SetItems(items.ToArray());

            var definition = Lifetimes.Define(lifetime);

            // handle menu close
            definition.Lifetime.AddAction(() =>
            {
                UpdateHighlighting(textControl, TextRange.InvalidRange);
            });

            popupMenu.Show(JetPopupMenu.ShowWhen.AutoExecuteIfSingleItem, definition);
        }
        /// <summary>Executes this instance.</summary>
        public void Execute()
        {
            var classNames = IntroduceStringConstantSettings.Instance.ClassNames;
              if (classNames.Count == 0)
              {
            this.IntroduceLocalStringConstant();
            return;
              }

              var menu = new JetPopupMenu();

              var classes = new List<SimpleMenuItem>(classNames.Count + 1);
              foreach (var className in classNames)
              {
            var item = new SimpleMenuItem
            {
              Text = className,
              Style = MenuItemStyle.Enabled
            };

            item.Clicked += delegate { this.MenuItemClicked(item.Text); };

            classes.Add(item);
              }

              var classDeclaration = this.GetClassDeclaration();
              if (classDeclaration != null)
              {
            var item = new SimpleMenuItem
            {
              Text = "<Local>" + GetQualifiedClassDeclarationName(classDeclaration),
              Style = MenuItemStyle.Enabled
            };

            item.Clicked += delegate { this.MenuItemClicked(item.Text); };

            classes.Add(item);
              }

              menu.Caption.Value = WindowlessControl.Create("Introduce String Constant");
              menu.SetItems(classes.ToArray());
              menu.KeyboardAcceleration.SetValue(KeyboardAccelerationFlags.Mnemonics);

              menu.Show();
        }
        public virtual void Execute([NotNull] Lifetime lifetime, [NotNull] ITextControl textControl,
                                [NotNull] IList<PrefixExpressionContext> expressions,
                                [NotNull] string postfixText, [NotNull] string chooserTitle,
                                [NotNull] Action<int> continuation)
        {
            #pragma warning disable 618
              if (Shell.Instance.IsTestShell)
              #pragma warning restore 618
              {
            continuation(0);
            return;
              }

              var popupMenu = myPopupMenus.CreateWithLifetime(lifetime);

              popupMenu.Caption.Value = WindowlessControl.Create(chooserTitle);
              popupMenu.PopupWindowContext = new TextControlPopupWindowContext(
            lifetime, textControl, myShellLocks, myActionManager);

              // advise selected element to highlight expression
              popupMenu.SelectedItemKey.Change.Advise(lifetime, args =>
              {
            if (!args.HasNew) return;

            var menuItem = args.New as SimpleMenuItem;
            if (menuItem == null) return;

            var range = menuItem.Tag as TextRange?;
            if (range != null)
            {
              UpdateHighlighting(textControl, range.Value);
            }
              });

              // build menu items from expressions
              var items = new LocalList<SimpleMenuItem>(expressions.Count);
              var index = 0;

              foreach (var expressionContext in expressions)
              {
            TextRange range;
            var expressionText = PresentExpression(expressionContext, postfixText, out range);

            var itemIndex = index++;
            // ReSharper disable once UseObjectOrCollectionInitializer
            var menuItem = new SimpleMenuItem(
              expressionText, BulbThemedIcons.YellowBulb.Id, () => continuation(itemIndex));

            menuItem.Tag = range;
            items.Add(menuItem);
              }

              popupMenu.SetItems(items.ToArray());

              var definition = Lifetimes.Define(lifetime);

              // handle menu close
              definition.Lifetime.AddAction(() =>
              {
            UpdateHighlighting(textControl, TextRange.InvalidRange);
              });

              popupMenu.Show(JetPopupMenu.ShowWhen.AutoExecuteIfSingleItem, definition);
        }
        /// <summary>
        /// Adds the menu item.
        /// </summary>
        /// <param name="items">The list of items.</param>
        /// <param name="item">The current item.</param>
        private void AddItem(List<SimpleMenuItem> items, ISmartGenerateAction item)
        {
            var text = item.Text;

              SimpleMenuItem simpleMenuItem;

              if (text == "-")
              {
            simpleMenuItem = new SimpleMenuItem
            {
              Style = MenuItemStyle.Separator
            };
              }
              else
              {
            simpleMenuItem = new SimpleMenuItem
            {
              Text = text, Style = MenuItemStyle.Enabled, Tag = item
            };

            if (items.Count < 9)
            {
              simpleMenuItem.Mnemonic = (items.Count + 1).ToString();
              simpleMenuItem.ShortcutText = simpleMenuItem.Mnemonic;
            }

            simpleMenuItem.Clicked += this.Generate;
              }

              items.Add(simpleMenuItem);
        }
        /// <summary>Describes the more menu item.</summary>
        /// <returns>The more menu item.</returns>
        private SimpleMenuItem DescribeOrganizeMenuItem()
        {
            var result = new SimpleMenuItem
              {
            Text = new RichText("Organize...")
              };

              result.Clicked += delegate { Organize(); };

              if (this.currentFile != null)
              {
            result.Style = MenuItemStyle.Enabled;
              }

              return result;
        }
        /// <summary>Shows the popup menu.</summary>
        /// <param name="element">The element.</param>
        /// <param name="rule">The rule.</param>
        /// <param name="name">The name.</param>
        private void ShowPopupMenu(IElement element, Rule rule, string name)
        {
            var menu = new JetPopupMenu();

              var assertions = new List<SimpleMenuItem>(rule.ValueAssertions.Count);

              foreach (var valueAssertion in rule.ValueAssertions)
              {
            var item = new SimpleMenuItem
            {
              Text = string.Format(valueAssertion, name),
              Style = MenuItemStyle.Enabled
            };

            item.Clicked += delegate { this.InsertAssertion(item.Text, element); };

            assertions.Add(item);
              }

              menu.Caption.Value = WindowlessControl.Create("Assert Assignment");
              menu.SetItems(assertions.ToArray());
              menu.KeyboardAcceleration.SetValue(KeyboardAccelerationFlags.Mnemonics);

              menu.Show();
        }
        /// <summary>
        /// Executes action. Called after Update, that set <c>ActionPresentation</c>.Enabled to <c>true</c>.
        /// </summary>
        /// <param name="dataContext">The context.</param>
        private void Execute(IDataContext dataContext)
        {
            this.dataContext = dataContext;

              var solution = dataContext.GetData(JetBrains.IDE.DataConstants.SOLUTION);
              var textControl = dataContext.GetData(JetBrains.IDE.DataConstants.TEXT_CONTROL);

              this.ResetIndex();

              IElement element;
              if (!GetElementAtCaret(solution, textControl, out element))
              {
            return;
              }

              if (element == null)
              {
            return;
              }

              var items = new List<SimpleMenuItem>();

              var range = global::JetBrains.Util.TextRange.InvalidRange;

              var scope = Scope.Populate(element);
              if (scopeIndex >= scope.Count)
              {
            scopeIndex = scope.Count - 1;
              }

              if (scopeIndex < 0)
              {
            scopeIndex = 0;
              }

              foreach (var handler in SmartGenerateManager.Instance.GetHandlers())
              {
            var list =
              handler.GetMenuItems(
            new SmartGenerateParameters
            {
              Solution = solution,
              TextControl = textControl,
              Context = dataContext,
              Element = element,
              Scope = scope,
              ScopeIndex = scopeIndex
            });

            if (list == null)
            {
              continue;
            }

            foreach (var smartGenerateItem in list)
            {
              this.AddItem(items, smartGenerateItem);

              if (!range.IsValid())
              {
            range = smartGenerateItem.SelectionRange;
              }
            }
              }

              var liveTemplates =
            LiveTemplateManager.Instance.GetLiveTemplates(
              new SmartGenerateParameters
              {
            TextControl = textControl,
            Solution = solution,
            Context = dataContext,
            Element = element,
            Scope = scope,
            ScopeIndex = scopeIndex
              });

              if (liveTemplates.Count > 0)
              {
            items.Add(new SimpleMenuItem
            {
              Style = MenuItemStyle.Separator
            });

            var item = new SimpleMenuItem
            {
              Text = "Create live template", Style = MenuItemStyle.Enabled, Tag = liveTemplates
            };

            item.Clicked += this.CreateLiveTemplates_OnClicked;

            items.Add(item);
              }

              ShowPopupMenu(dataContext, items);
        }
        /// <summary>Describes the add menu item.</summary>
        /// <returns>The add menu item.</returns>
        private SimpleMenuItem DescribeAddMenuItem()
        {
            var result = new SimpleMenuItem
              {
            Text = new RichText("Add Current File")
              };

              result.Clicked += delegate { this.AddCurrentFile(); };

              if (this.currentFile != null)
              {
            result.Style = MenuItemStyle.Enabled;
              }

              return result;
        }