src/Tools/jEdit/src/context_menu.scala
changeset 58548 d0ee64efd624
parent 58546 72e2b2a609c4
child 58549 d4d97b79f1fb
equal deleted inserted replaced
58547:6080615b8b96 58548:d0ee64efd624
     8 
     8 
     9 
     9 
    10 import isabelle._
    10 import isabelle._
    11 
    11 
    12 
    12 
    13 import java.awt.event.{ActionListener, ActionEvent, MouseEvent}
    13 import java.awt.event.MouseEvent
    14 import javax.swing.{JMenu, JMenuItem}
    14 
       
    15 import javax.swing.JMenuItem
    15 
    16 
    16 import org.gjt.sp.jedit.menu.EnhancedMenuItem
    17 import org.gjt.sp.jedit.menu.EnhancedMenuItem
    17 import org.gjt.sp.jedit.gui.DynamicContextMenuService
    18 import org.gjt.sp.jedit.gui.DynamicContextMenuService
    18 import org.gjt.sp.jedit.{jEdit, Buffer}
    19 import org.gjt.sp.jedit.{jEdit, Buffer}
    19 import org.gjt.sp.jedit.textarea.{JEditTextArea, TextArea}
    20 import org.gjt.sp.jedit.textarea.JEditTextArea
    20 
    21 
    21 
    22 
    22 class Context_Menu extends DynamicContextMenuService
    23 class Context_Menu extends DynamicContextMenuService
    23 {
    24 {
    24   /* spell checker menu */
    25   /* spell checker menu */
    65       case None => Nil
    66       case None => Nil
    66     }
    67     }
    67   }
    68   }
    68 
    69 
    69 
    70 
    70   /* bibtex menu */
       
    71 
       
    72   def bibtex_menu(text_area0: JEditTextArea): List[JMenuItem] =
       
    73   {
       
    74     text_area0 match {
       
    75       case text_area: TextArea =>
       
    76         text_area.getBuffer match {
       
    77           case buffer: Buffer
       
    78           if (Bibtex_JEdit.check(buffer) && buffer.isEditable) =>
       
    79             val menu = new JMenu("BibTeX entries")
       
    80             for (entry <- Bibtex.entries) {
       
    81               val item = new JMenuItem(entry.kind)
       
    82               item.addActionListener(new ActionListener {
       
    83                 def actionPerformed(evt: ActionEvent): Unit =
       
    84                   Isabelle.insert_line_padding(text_area, entry.template)
       
    85               })
       
    86               menu.add(item)
       
    87             }
       
    88             List(menu)
       
    89           case _ => Nil
       
    90         }
       
    91       case _ => Nil
       
    92     }
       
    93   }
       
    94 
       
    95 
       
    96   /* menu service */
    71   /* menu service */
    97 
    72 
    98   def createMenu(text_area: JEditTextArea, evt: MouseEvent): Array[JMenuItem] =
    73   def createMenu(text_area: JEditTextArea, evt: MouseEvent): Array[JMenuItem] =
    99   {
    74   {
   100     PIDE.dismissed_popups(text_area.getView)
    75     PIDE.dismissed_popups(text_area.getView)
   105         if (offset >= 0) spell_checker_menu(text_area, offset)
    80         if (offset >= 0) spell_checker_menu(text_area, offset)
   106         else Nil
    81         else Nil
   107       }
    82       }
   108       else Nil
    83       else Nil
   109 
    84 
   110     val items2 = bibtex_menu(text_area)
    85     val items2 = Bibtex_JEdit.context_menu(text_area)
   111 
    86 
   112     val items = items1 ::: items2
    87     val items = items1 ::: items2
   113     if (items.isEmpty) null else items.toArray
    88     if (items.isEmpty) null else items.toArray
   114   }
    89   }
   115 }
    90 }