lib/jedit/plugin/isabelle/IsabelleParser.scala
author wenzelm
Sun, 24 Aug 2008 18:11:20 +0200
changeset 27985 fb774d10ea4c
parent 27659 e40273830fa6
permissions -rw-r--r--
repackaged as isabelle.jedit;
wenzelm@25851
     1
/*  Title:      jedit/plugin/IsabelleParser.scala
wenzelm@25851
     2
    ID:         $Id$
wenzelm@25851
     3
    Author:     Makarius
wenzelm@25851
     4
wenzelm@25851
     5
Isabelle parser setup for Sidekick plugin.
wenzelm@25851
     6
*/
wenzelm@25851
     7
wenzelm@27985
     8
package isabelle.jedit
wenzelm@25851
     9
wenzelm@27659
    10
import javax.swing.text.Position
wenzelm@27659
    11
import javax.swing.tree.DefaultMutableTreeNode
wenzelm@27659
    12
import javax.swing.tree.DefaultTreeModel
wenzelm@27659
    13
wenzelm@25851
    14
import org.gjt.sp.jedit.Buffer
wenzelm@25851
    15
import org.gjt.sp.util.Log
wenzelm@25851
    16
wenzelm@27659
    17
import sidekick.Asset
wenzelm@25851
    18
import sidekick.SideKickParsedData
wenzelm@25851
    19
import sidekick.SideKickParser
wenzelm@25851
    20
import errorlist.DefaultErrorSource
wenzelm@25851
    21
wenzelm@25851
    22
wenzelm@27659
    23
private class IsabelleAsset(name: String, content: String) extends Asset(name)
wenzelm@27659
    24
{
wenzelm@27659
    25
  override def getShortString() = { name }
wenzelm@27659
    26
  override def getLongString() = { content }
wenzelm@27659
    27
  override def getIcon() = { null }
wenzelm@27659
    28
}
wenzelm@27659
    29
wenzelm@27659
    30
wenzelm@25851
    31
class IsabelleParser extends SideKickParser("isabelle") {
wenzelm@27659
    32
  private var stopped = false
wenzelm@25851
    33
wenzelm@27659
    34
  override def stop () { stopped = true }
wenzelm@27659
    35
wenzelm@27659
    36
  def parse(buffer: Buffer, e: DefaultErrorSource): SideKickParsedData = {
wenzelm@27659
    37
    stopped = false
wenzelm@27659
    38
wenzelm@27659
    39
    var text: String = null
wenzelm@27659
    40
    var data: SideKickParsedData = null
wenzelm@27659
    41
wenzelm@27659
    42
    try {
wenzelm@27659
    43
      buffer.readLock()
wenzelm@27659
    44
      text = buffer.getText(0, buffer.getLength())
wenzelm@27659
    45
      data = new SideKickParsedData(buffer.getName())
wenzelm@27659
    46
wenzelm@27659
    47
      val asset = new IsabelleAsset("theory", null)
wenzelm@27659
    48
      asset.setStart(buffer.createPosition(0))
wenzelm@27659
    49
      asset.setEnd(buffer.createPosition(buffer.getLength()))
wenzelm@27659
    50
wenzelm@27659
    51
      val node = new DefaultMutableTreeNode(asset)
wenzelm@27659
    52
      data.root.insert(node, node.getChildCount())
wenzelm@27659
    53
wenzelm@27659
    54
    } finally {
wenzelm@27659
    55
      buffer.readUnlock()
wenzelm@27659
    56
    }
wenzelm@27659
    57
wenzelm@25851
    58
    data
wenzelm@25851
    59
  }
wenzelm@25851
    60
}
wenzelm@25851
    61