1/*  Title:      Tools/jEdit/src/context_menu.scala
2    Author:     Makarius
3
4Common context menu for Isabelle/jEdit.
5*/
6
7package isabelle.jedit
8
9
10import isabelle._
11
12
13import java.awt.event.MouseEvent
14
15import javax.swing.JMenuItem
16
17import org.gjt.sp.jedit.gui.DynamicContextMenuService
18import org.gjt.sp.jedit.textarea.JEditTextArea
19
20
21class Context_Menu extends DynamicContextMenuService
22{
23  def createMenu(text_area: JEditTextArea, evt: MouseEvent): Array[JMenuItem] =
24    if (evt == null) null
25    else {
26      Isabelle.dismissed_popups(text_area.getView)
27
28      val items1 =
29        if (evt != null && evt.getSource == text_area.getPainter) {
30          val offset = text_area.xyToOffset(evt.getX, evt.getY)
31          if (offset >= 0)
32            JEdit_Spell_Checker.context_menu(text_area, offset) :::
33            Debugger_Dockable.context_menu(text_area, offset)
34          else Nil
35        }
36        else Nil
37
38      val items2 = JEdit_Bibtex.context_menu(text_area)
39
40      val items = items1 ::: items2
41      if (items.isEmpty) null else items.toArray
42  }
43}
44