src/Tools/jEdit/src/jedit/VFS.scala
author wenzelm
Sun, 07 Jun 2009 20:17:27 +0200
changeset 34605 378537df7fff
parent 34443 f2e13329cc49
child 34614 25b178e4faaf
permissions -rw-r--r--
static IsabelleSystem.charset (cf. http://isabelle.in.tum.de/repos/isabelle/rev/be0f7f4f9e12);
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
34407
aad6834ba380 added some headers and comments;
wenzelm
parents: 34363
diff changeset
     1
/*
aad6834ba380 added some headers and comments;
wenzelm
parents: 34363
diff changeset
     2
 * Isabelle virtual file system for jEdit.
aad6834ba380 added some headers and comments;
wenzelm
parents: 34363
diff changeset
     3
 *
aad6834ba380 added some headers and comments;
wenzelm
parents: 34363
diff changeset
     4
 * This filesystem passes every operation on to FileVFS. Just the read and write
aad6834ba380 added some headers and comments;
wenzelm
parents: 34363
diff changeset
     5
 * operations are overwritten to convert Isabelle symbols to unicode on read and
aad6834ba380 added some headers and comments;
wenzelm
parents: 34363
diff changeset
     6
 * unicode to Isabelle symbols on write.
aad6834ba380 added some headers and comments;
wenzelm
parents: 34363
diff changeset
     7
 *
aad6834ba380 added some headers and comments;
wenzelm
parents: 34363
diff changeset
     8
 * @author Johannes Hölzl, TU Munich
aad6834ba380 added some headers and comments;
wenzelm
parents: 34363
diff changeset
     9
 */
aad6834ba380 added some headers and comments;
wenzelm
parents: 34363
diff changeset
    10
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    11
package isabelle.jedit
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    12
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    13
34436
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
    14
import java.io.{InputStream, OutputStream, ByteArrayInputStream, ByteArrayOutputStream, InputStreamReader}
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    15
import java.awt.Component
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    16
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    17
import org.gjt.sp.jedit.Buffer
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    18
import org.gjt.sp.jedit.View
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    19
import org.gjt.sp.jedit.io
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    20
import org.gjt.sp.jedit.io.VFSFile
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    21
import org.gjt.sp.jedit.io.VFSManager
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    22
34436
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
    23
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
    24
object VFS {  
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    25
  val BUFFER_SIZE = 1024
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    26
  
34605
378537df7fff static IsabelleSystem.charset (cf. http://isabelle.in.tum.de/repos/isabelle/rev/be0f7f4f9e12);
wenzelm
parents: 34443
diff changeset
    27
  def input_converter(in: InputStream) = {
378537df7fff static IsabelleSystem.charset (cf. http://isabelle.in.tum.de/repos/isabelle/rev/be0f7f4f9e12);
wenzelm
parents: 34443
diff changeset
    28
    val reader = new InputStreamReader(in, IsabelleSystem.charset)
34436
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
    29
    val buffer = new StringBuilder
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    30
    val array = new Array[Char](BUFFER_SIZE)
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    31
    
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    32
    var finished = false
34436
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
    33
    while (!finished) {
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    34
      val length = reader.read(array, 0, array.length)
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    35
      if (length == -1)
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    36
        finished = true
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    37
      else
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    38
        buffer.append(array, 0, length)
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    39
    }
34363
0fec381fb51e use utf-8 charset encoding
immler@in.tum.de
parents: 34337
diff changeset
    40
34440
561a6d19bd95 renamed object Plugin to Isabelle;
wenzelm
parents: 34436
diff changeset
    41
    val str = Isabelle.symbols.decode(buffer.toString)
34605
378537df7fff static IsabelleSystem.charset (cf. http://isabelle.in.tum.de/repos/isabelle/rev/be0f7f4f9e12);
wenzelm
parents: 34443
diff changeset
    42
    new ByteArrayInputStream(str.getBytes(IsabelleSystem.charset))
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    43
  }
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    44
  
34436
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
    45
  class OutputConverter(out: OutputStream) extends ByteArrayOutputStream {
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    46
    override def close() {
34440
561a6d19bd95 renamed object Plugin to Isabelle;
wenzelm
parents: 34436
diff changeset
    47
      out.write(Isabelle.symbols.encode(new String(buf, 0, count)).getBytes)
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    48
      out.close()
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    49
    }
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    50
  }
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    51
  
34436
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
    52
  def map_file(vfs: VFS, base: VFSFile) =
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    53
    if (base == null) null else new File(vfs, base)
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    54
  
34436
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
    55
  class File(vfs: VFS, base: VFSFile) extends VFSFile {
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
    56
    // FIXME redundant overriding (!??)
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
    57
    
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    58
    override def getColor() = 
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    59
      base.getColor()
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    60
    
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    61
    override def getDeletePath() = 
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    62
      base.getDeletePath()
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    63
    
34436
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
    64
    override def getExtendedAttribute(name: String) =
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    65
      base.getExtendedAttribute(name)
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    66
34436
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
    67
    override def getIcon(expanded: Boolean, openBuffer: Boolean) = 
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    68
      base.getIcon(expanded, openBuffer)
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    69
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    70
    override def getLength() = 
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    71
      base.getLength()  
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    72
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    73
    override def getName() =
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    74
      base.getName()
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    75
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    76
    override def getPath() =
34440
561a6d19bd95 renamed object Plugin to Isabelle;
wenzelm
parents: 34436
diff changeset
    77
      Isabelle.VFS_PREFIX + base.getPath()
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    78
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    79
    override def getSymlinkPath() =
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    80
      base.getSymlinkPath()
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    81
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    82
    override def getType() =
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    83
      base.getType()
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    84
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    85
    override def getVFS() =
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    86
      vfs
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    87
34436
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
    88
    override def isBinary(session: Object) =
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    89
      base.isBinary(session)
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    90
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    91
    override def isHidden() =
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    92
      base.isHidden()
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    93
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    94
    override def isReadable() =
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    95
      base.isReadable()
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    96
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    97
    override def isWriteable() =
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    98
      base.isWriteable()
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    99
34436
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
   100
    override def setDeletePath(path: String) =
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   101
      base.setDeletePath(path)
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   102
    
34436
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
   103
    override def setHidden(hidden: Boolean) =
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   104
      base.setHidden(hidden)
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   105
      
34436
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
   106
    override def setLength(length: Long) =
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   107
      base.setLength(length)
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   108
      
34436
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
   109
    override def setName(name: String) =
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   110
      base.setName(name)
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   111
      
34436
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
   112
    override def setPath(path: String) =
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   113
      base.setPath(path)
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   114
      
34436
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
   115
    override def setReadable(readable: Boolean) =
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   116
      base.setReadable(readable)
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   117
      
34436
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
   118
    override def setWriteable(writeable: Boolean) =
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   119
      base.setWriteable(writeable)
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   120
      
34436
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
   121
    override def setSymlinkPath(symlinkPath: String) =
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   122
      base.setSymlinkPath(symlinkPath)
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   123
      
34436
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
   124
    override def setType(fType: Int) =
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   125
      base.setType(fType)
34436
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
   126
  }  
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   127
}
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   128
34436
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
   129
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
   130
class VFS extends io.VFS("isabelle", VFSManager.getVFSForProtocol("file").getCapabilities) {
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
   131
  private var baseVFS = VFSManager.getVFSForProtocol("file")
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   132
34436
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
   133
  private def cutPath(path: String) = 
34440
561a6d19bd95 renamed object Plugin to Isabelle;
wenzelm
parents: 34436
diff changeset
   134
    if (path.startsWith(Isabelle.VFS_PREFIX)) path.substring(Isabelle.VFS_PREFIX.length)
34436
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
   135
    else path
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   136
  
34436
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
   137
  override def createVFSSession(path: String, comp: Component) = 
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   138
    baseVFS.createVFSSession(cutPath(path), comp)
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   139
  
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   140
  override def getCapabilities() = 
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   141
    baseVFS.getCapabilities()
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   142
  
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   143
  override def getExtendedAttributes() = 
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   144
    baseVFS.getExtendedAttributes()
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   145
  
34436
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
   146
  override def getParentOfPath(path: String) = 
34440
561a6d19bd95 renamed object Plugin to Isabelle;
wenzelm
parents: 34436
diff changeset
   147
    Isabelle.VFS_PREFIX + baseVFS.getParentOfPath(cutPath(path))
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   148
  
34436
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
   149
  override def constructPath(parent: String, path: String) = 
34440
561a6d19bd95 renamed object Plugin to Isabelle;
wenzelm
parents: 34436
diff changeset
   150
    Isabelle.VFS_PREFIX + baseVFS.constructPath(cutPath(parent), path)
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   151
  
34436
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
   152
  override def getFileName(path: String) = 
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   153
    baseVFS.getFileName(path)
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   154
  
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   155
  override def getFileSeparator() = 
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   156
    baseVFS.getFileSeparator()
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   157
  
34436
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
   158
  override def getTwoStageSaveName(path: String) = 
34440
561a6d19bd95 renamed object Plugin to Isabelle;
wenzelm
parents: 34436
diff changeset
   159
    Isabelle.VFS_PREFIX + baseVFS.getTwoStageSaveName(cutPath(path))
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   160
  
34436
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
   161
  override def _canonPath(session: Object, path: String, comp: Component) =
34440
561a6d19bd95 renamed object Plugin to Isabelle;
wenzelm
parents: 34436
diff changeset
   162
    Isabelle.VFS_PREFIX + baseVFS._canonPath(session, cutPath(path), comp)
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   163
  
34436
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
   164
  override def _createInputStream(session: Object, path: String,
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
   165
      ignoreErrors: Boolean, comp: Component) =
34605
378537df7fff static IsabelleSystem.charset (cf. http://isabelle.in.tum.de/repos/isabelle/rev/be0f7f4f9e12);
wenzelm
parents: 34443
diff changeset
   166
    VFS.input_converter(baseVFS._createInputStream(session, cutPath(path), ignoreErrors, comp))
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   167
  
34436
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
   168
  override def _createOutputStream(session: Object, path: String, comp: Component) =
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   169
    new VFS.OutputConverter(baseVFS._createOutputStream(session, cutPath(path), comp))
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   170
  
34436
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
   171
  override def _delete(session: Object, path: String, comp: Component) =
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   172
    baseVFS._delete(session, cutPath(path), comp)
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   173
  
34436
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
   174
  override def _getFile(session: Object, path: String, comp: Component) =
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
   175
    VFS.map_file(this, baseVFS._getFile(session, cutPath(path), comp))
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   176
34436
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
   177
  override def _listFiles(session: Object, path: String, comp:  Component): Array[VFSFile] =
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
   178
    (baseVFS._listFiles(session, cutPath(path), comp).map(file => VFS.map_file(this, file)))
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   179
34436
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
   180
  override def _mkdir(session: Object, path: String, comp: Component) =
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   181
    baseVFS._mkdir(session, cutPath(path), comp)
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   182
34436
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
   183
  override def _rename(session: Object, from: String, to: String, comp: Component) =
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   184
    baseVFS._rename(session, cutPath(from), cutPath(to), comp)
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   185
34436
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
   186
  override def _backup(session: Object, path: String, comp: Component) =
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
   187
    baseVFS._backup(session, cutPath(path), comp)
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   188
34436
a77cfbe18a31 use Plugin.self.symbols;
wenzelm
parents: 34407
diff changeset
   189
  override def _saveComplete(session: Object, buffer: Buffer, path: String, comp: Component) =
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   190
    baseVFS._saveComplete(session, buffer, cutPath(path), comp)
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
   191
}