如何从RelatedItemLineMarkerInfo中听鼠标点击?

时间:2016-10-02 21:01:10

标签: intellij-plugin

单击我的标记时,我需要运行自定义操作。

根据教程,我试过了

$(".qty1").on("change", function() {
   sum=0;
   $(".qty1").each(function() {
       myval=$(this).val();
       if (myval==="") return;
       sum += parseInt($(this).val());
       console.log("Sum is: "+sum);
       $(".total").val(sum);
   });
});

但我无法弄清楚如何到达标记的导航处理程序,或以其他方式收听此标记的事件。 (光标移动到&#34的开头;这个"元素是一个稍微不受欢迎但不重要的副作用,可以很好地抑制)。

然后我尝试了这个:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class="qty1" value="" />
    <input type="text" class="qty1" value="" />
    <input type="text" class="qty1" value="" />
    <input type="text" class="qty1" value="" />
    <input type="text" class="qty1" value="" />
    <input type="text" class="qty1" value="" />

    <input type="text" class="total" value="" />

这种方法可以让我听到标记的鼠标点击。但是,现在我遇到了一个特殊的问题:无论何时编辑标记的代码行,都会在装订线中产生重复,重复等标记。

正确的方法是什么?

1 个答案:

答案 0 :(得分:0)

原来我需要指定一个传球。

int pass = Pass.UPDATE_OVERRIDEN_MARKERS;

RelatedItemLineMarkerInfo marker =  new RelatedItemLineMarkerInfo(this, getTextRange(), MyIcons.VOLUME, pass, tooltipProvider, handler, GutterIconRenderer.Alignment.CENTER, new ArrayList<GotoRelatedItem>());

我必须使用Pass.UPDATE_OVERRIDEN_MARKERS,即使IntelliJ将其标记为已弃用,并表示它将很快删除(请参阅下面的链接)。但是,IntelliJ建议的常量Pass.LINE_MARKERS会导致重复的标记。

https://github.com/JetBrains/intellij-community/blob/master/platform/analysis-impl/src/com/intellij/codeHighlighting/Pass.java