Placing IntelliJ plugin in status bar









up vote
1
down vote

favorite












I'm just starting playing around with the plugin SDK for IntelliJ IDEA. However I already have some trouble with the first step.



I'd like to place an action in the lower status bar, next to the Git actions.



How can I place that action there?



Screenshot showing desired position










share|improve this question





















  • look how the existing ones are implemented?
    – Meo
    Nov 9 at 17:43











  • Actually, I'm trying. Looked at the source code of "git4idea" plugin. However, I have difficulties understanding how they put the plugin there.
    – Robert Strauch
    Nov 9 at 21:02














up vote
1
down vote

favorite












I'm just starting playing around with the plugin SDK for IntelliJ IDEA. However I already have some trouble with the first step.



I'd like to place an action in the lower status bar, next to the Git actions.



How can I place that action there?



Screenshot showing desired position










share|improve this question





















  • look how the existing ones are implemented?
    – Meo
    Nov 9 at 17:43











  • Actually, I'm trying. Looked at the source code of "git4idea" plugin. However, I have difficulties understanding how they put the plugin there.
    – Robert Strauch
    Nov 9 at 21:02












up vote
1
down vote

favorite









up vote
1
down vote

favorite











I'm just starting playing around with the plugin SDK for IntelliJ IDEA. However I already have some trouble with the first step.



I'd like to place an action in the lower status bar, next to the Git actions.



How can I place that action there?



Screenshot showing desired position










share|improve this question













I'm just starting playing around with the plugin SDK for IntelliJ IDEA. However I already have some trouble with the first step.



I'd like to place an action in the lower status bar, next to the Git actions.



How can I place that action there?



Screenshot showing desired position







intellij-idea intellij-plugin






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 9 at 17:03









Robert Strauch

3,626105599




3,626105599











  • look how the existing ones are implemented?
    – Meo
    Nov 9 at 17:43











  • Actually, I'm trying. Looked at the source code of "git4idea" plugin. However, I have difficulties understanding how they put the plugin there.
    – Robert Strauch
    Nov 9 at 21:02
















  • look how the existing ones are implemented?
    – Meo
    Nov 9 at 17:43











  • Actually, I'm trying. Looked at the source code of "git4idea" plugin. However, I have difficulties understanding how they put the plugin there.
    – Robert Strauch
    Nov 9 at 21:02















look how the existing ones are implemented?
– Meo
Nov 9 at 17:43





look how the existing ones are implemented?
– Meo
Nov 9 at 17:43













Actually, I'm trying. Looked at the source code of "git4idea" plugin. However, I have difficulties understanding how they put the plugin there.
– Robert Strauch
Nov 9 at 21:02




Actually, I'm trying. Looked at the source code of "git4idea" plugin. However, I have difficulties understanding how they put the plugin there.
– Robert Strauch
Nov 9 at 21:02












1 Answer
1






active

oldest

votes

















up vote
2
down vote



accepted










This type of UI is called EditorBasedWidget. If you like to explore how it works in git4idea plugin, I can suggest you to start with GitBranchWidget and DvcsStatusWidget classes.



Here is the code for the simplest example:



MyWidget.java



public class MyWidget extends EditorBasedWidget 
public MyWidget(@NotNull Project project)
super(project);


@NotNull
@Override
public String ID()
return "MyWidget";


@Nullable
@Override
public WidgetPresentation getPresentation(@NotNull PlatformType type)
return new MyPresentation();




MyPresentation.java



public class MyPresentation implements StatusBarWidget.MultipleTextValuesPresentation 
@Nullable("null means the widget is unable to show the popup")
@Override
public ListPopup getPopupStep()
return null;


@Nullable
@Override
public String getSelectedValue()
return "Selected value";


@NotNull
@Override
public String getMaxValue()
return "Max value";


@Nullable
@Override
public String getTooltipText()
return "Tooltip text";


@Nullable
@Override
public Consumer<MouseEvent> getClickConsumer()
return null;




Somewhere, for example in ProjectComponent



ApplicationManager.getApplication().invokeLater(() -> 
StatusBar statusBar = WindowManager.getInstance().getStatusBar(myProject);
if (statusBar != null)
statusBar.addWidget(new MyWidget(myProject));

);


And here is the result:



enter image description here






share|improve this answer




















    Your Answer






    StackExchange.ifUsing("editor", function ()
    StackExchange.using("externalEditor", function ()
    StackExchange.using("snippets", function ()
    StackExchange.snippets.init();
    );
    );
    , "code-snippets");

    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "1"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













     

    draft saved


    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53230271%2fplacing-intellij-plugin-in-status-bar%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes








    up vote
    2
    down vote



    accepted










    This type of UI is called EditorBasedWidget. If you like to explore how it works in git4idea plugin, I can suggest you to start with GitBranchWidget and DvcsStatusWidget classes.



    Here is the code for the simplest example:



    MyWidget.java



    public class MyWidget extends EditorBasedWidget 
    public MyWidget(@NotNull Project project)
    super(project);


    @NotNull
    @Override
    public String ID()
    return "MyWidget";


    @Nullable
    @Override
    public WidgetPresentation getPresentation(@NotNull PlatformType type)
    return new MyPresentation();




    MyPresentation.java



    public class MyPresentation implements StatusBarWidget.MultipleTextValuesPresentation 
    @Nullable("null means the widget is unable to show the popup")
    @Override
    public ListPopup getPopupStep()
    return null;


    @Nullable
    @Override
    public String getSelectedValue()
    return "Selected value";


    @NotNull
    @Override
    public String getMaxValue()
    return "Max value";


    @Nullable
    @Override
    public String getTooltipText()
    return "Tooltip text";


    @Nullable
    @Override
    public Consumer<MouseEvent> getClickConsumer()
    return null;




    Somewhere, for example in ProjectComponent



    ApplicationManager.getApplication().invokeLater(() -> 
    StatusBar statusBar = WindowManager.getInstance().getStatusBar(myProject);
    if (statusBar != null)
    statusBar.addWidget(new MyWidget(myProject));

    );


    And here is the result:



    enter image description here






    share|improve this answer
























      up vote
      2
      down vote



      accepted










      This type of UI is called EditorBasedWidget. If you like to explore how it works in git4idea plugin, I can suggest you to start with GitBranchWidget and DvcsStatusWidget classes.



      Here is the code for the simplest example:



      MyWidget.java



      public class MyWidget extends EditorBasedWidget 
      public MyWidget(@NotNull Project project)
      super(project);


      @NotNull
      @Override
      public String ID()
      return "MyWidget";


      @Nullable
      @Override
      public WidgetPresentation getPresentation(@NotNull PlatformType type)
      return new MyPresentation();




      MyPresentation.java



      public class MyPresentation implements StatusBarWidget.MultipleTextValuesPresentation 
      @Nullable("null means the widget is unable to show the popup")
      @Override
      public ListPopup getPopupStep()
      return null;


      @Nullable
      @Override
      public String getSelectedValue()
      return "Selected value";


      @NotNull
      @Override
      public String getMaxValue()
      return "Max value";


      @Nullable
      @Override
      public String getTooltipText()
      return "Tooltip text";


      @Nullable
      @Override
      public Consumer<MouseEvent> getClickConsumer()
      return null;




      Somewhere, for example in ProjectComponent



      ApplicationManager.getApplication().invokeLater(() -> 
      StatusBar statusBar = WindowManager.getInstance().getStatusBar(myProject);
      if (statusBar != null)
      statusBar.addWidget(new MyWidget(myProject));

      );


      And here is the result:



      enter image description here






      share|improve this answer






















        up vote
        2
        down vote



        accepted







        up vote
        2
        down vote



        accepted






        This type of UI is called EditorBasedWidget. If you like to explore how it works in git4idea plugin, I can suggest you to start with GitBranchWidget and DvcsStatusWidget classes.



        Here is the code for the simplest example:



        MyWidget.java



        public class MyWidget extends EditorBasedWidget 
        public MyWidget(@NotNull Project project)
        super(project);


        @NotNull
        @Override
        public String ID()
        return "MyWidget";


        @Nullable
        @Override
        public WidgetPresentation getPresentation(@NotNull PlatformType type)
        return new MyPresentation();




        MyPresentation.java



        public class MyPresentation implements StatusBarWidget.MultipleTextValuesPresentation 
        @Nullable("null means the widget is unable to show the popup")
        @Override
        public ListPopup getPopupStep()
        return null;


        @Nullable
        @Override
        public String getSelectedValue()
        return "Selected value";


        @NotNull
        @Override
        public String getMaxValue()
        return "Max value";


        @Nullable
        @Override
        public String getTooltipText()
        return "Tooltip text";


        @Nullable
        @Override
        public Consumer<MouseEvent> getClickConsumer()
        return null;




        Somewhere, for example in ProjectComponent



        ApplicationManager.getApplication().invokeLater(() -> 
        StatusBar statusBar = WindowManager.getInstance().getStatusBar(myProject);
        if (statusBar != null)
        statusBar.addWidget(new MyWidget(myProject));

        );


        And here is the result:



        enter image description here






        share|improve this answer












        This type of UI is called EditorBasedWidget. If you like to explore how it works in git4idea plugin, I can suggest you to start with GitBranchWidget and DvcsStatusWidget classes.



        Here is the code for the simplest example:



        MyWidget.java



        public class MyWidget extends EditorBasedWidget 
        public MyWidget(@NotNull Project project)
        super(project);


        @NotNull
        @Override
        public String ID()
        return "MyWidget";


        @Nullable
        @Override
        public WidgetPresentation getPresentation(@NotNull PlatformType type)
        return new MyPresentation();




        MyPresentation.java



        public class MyPresentation implements StatusBarWidget.MultipleTextValuesPresentation 
        @Nullable("null means the widget is unable to show the popup")
        @Override
        public ListPopup getPopupStep()
        return null;


        @Nullable
        @Override
        public String getSelectedValue()
        return "Selected value";


        @NotNull
        @Override
        public String getMaxValue()
        return "Max value";


        @Nullable
        @Override
        public String getTooltipText()
        return "Tooltip text";


        @Nullable
        @Override
        public Consumer<MouseEvent> getClickConsumer()
        return null;




        Somewhere, for example in ProjectComponent



        ApplicationManager.getApplication().invokeLater(() -> 
        StatusBar statusBar = WindowManager.getInstance().getStatusBar(myProject);
        if (statusBar != null)
        statusBar.addWidget(new MyWidget(myProject));

        );


        And here is the result:



        enter image description here







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 10 at 15:18









        Axel P

        82421124




        82421124



























             

            draft saved


            draft discarded















































             


            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53230271%2fplacing-intellij-plugin-in-status-bar%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown