< prev index next >

src/java.base/share/classes/jdk/internal/jrtfs/jrtfsviewer.js

Print this page




  36     print("Usage:");
  37     print("jdk9+: jjs -fx jrtfsviewer.js");
  38     print("jdk8+: jjs -fx -cp <path-of jrt-fs.jar> jrtfsviewer.js");
  39     exit(1);
  40 }
  41 
  42 if (! $OPTIONS._fx) {
  43     usage();
  44 }
  45 
  46 // shows the jrt file system as a JavaFX tree view.
  47 
  48 // Using JavaFX from Nashorn. See also:
  49 // http://docs.oracle.com/javase/8/docs/technotes/guides/scripting/nashorn/javafx.html
  50 
  51 // Java classes used
  52 var FileSystems = Java.type("java.nio.file.FileSystems");
  53 var Files = Java.type("java.nio.file.Files");
  54 var System = Java.type("java.lang.System");
  55 var URI = Java.type("java.net.URI");

  56 
  57 // JavaFX classes used
  58 var StackPane = Java.type("javafx.scene.layout.StackPane");
  59 var Scene     = Java.type("javafx.scene.Scene");
  60 var TreeItem  = Java.type("javafx.scene.control.TreeItem");
  61 var TreeView  = Java.type("javafx.scene.control.TreeView");
  62 
  63 // Create a javafx TreeItem to view nio Path
  64 function treeItemForPath(path) {
  65     var item = new TreeItem(path.toString());
  66   
  67     if (Files.isDirectory(path)) {
  68         var stream = Files.newDirectoryStream(path);
  69         try {
  70             var itr = stream.iterator();
  71             while (itr.hasNext()) {
  72                 var childPath = itr.next();
  73                 if (Files.isDirectory(childPath)) {
  74                     var subitem = treeItemForPath(childPath);
  75                 } else {


  83     }
  84     return item;
  85 }
  86 
  87 function getJrtFileSystem() {
  88     var isJdk9 = System.getProperty("java.version").startsWith("1.9.0");
  89     var uri = URI.create("jrt:/");
  90 
  91     if (isJdk9) {
  92         return FileSystems.getFileSystem(uri);
  93     } else {
  94         // pass jrt-fs.jar in -classpath but running on jdk8+
  95         var cls;
  96         try {
  97             cls = Java.type("jdk.internal.jrtfs.JrtFileSystem").class;
  98         } catch (e) {
  99             print(e);
 100             print("did you miss specifying jrt-fs.jar with -cp option?");
 101             usage();
 102         }
 103         return FileSystems.newFileSystem(uri, null, cls.classLoader);
 104     }
 105 }
 106 
 107 // JavaFX start method
 108 function start(stage) {
 109     var jrtfs = getJrtFileSystem();
 110     var root = jrtfs.getPath('/');
 111     stage.title = "jrt fs viewer";
 112     var rootItem = treeItemForPath(root);
 113     var tree = new TreeView(rootItem);
 114     var root = new StackPane();
 115     root.children.add(tree);
 116     stage.scene = new Scene(root, 300, 450);
 117     stage.show();
 118 }


  36     print("Usage:");
  37     print("jdk9+: jjs -fx jrtfsviewer.js");
  38     print("jdk8+: jjs -fx -cp <path-of jrt-fs.jar> jrtfsviewer.js");
  39     exit(1);
  40 }
  41 
  42 if (! $OPTIONS._fx) {
  43     usage();
  44 }
  45 
  46 // shows the jrt file system as a JavaFX tree view.
  47 
  48 // Using JavaFX from Nashorn. See also:
  49 // http://docs.oracle.com/javase/8/docs/technotes/guides/scripting/nashorn/javafx.html
  50 
  51 // Java classes used
  52 var FileSystems = Java.type("java.nio.file.FileSystems");
  53 var Files = Java.type("java.nio.file.Files");
  54 var System = Java.type("java.lang.System");
  55 var URI = Java.type("java.net.URI");
  56 var Collections = Java.type("java.util.Collections");
  57 
  58 // JavaFX classes used
  59 var StackPane = Java.type("javafx.scene.layout.StackPane");
  60 var Scene     = Java.type("javafx.scene.Scene");
  61 var TreeItem  = Java.type("javafx.scene.control.TreeItem");
  62 var TreeView  = Java.type("javafx.scene.control.TreeView");
  63 
  64 // Create a javafx TreeItem to view nio Path
  65 function treeItemForPath(path) {
  66     var item = new TreeItem(path.toString());
  67   
  68     if (Files.isDirectory(path)) {
  69         var stream = Files.newDirectoryStream(path);
  70         try {
  71             var itr = stream.iterator();
  72             while (itr.hasNext()) {
  73                 var childPath = itr.next();
  74                 if (Files.isDirectory(childPath)) {
  75                     var subitem = treeItemForPath(childPath);
  76                 } else {


  84     }
  85     return item;
  86 }
  87 
  88 function getJrtFileSystem() {
  89     var isJdk9 = System.getProperty("java.version").startsWith("1.9.0");
  90     var uri = URI.create("jrt:/");
  91 
  92     if (isJdk9) {
  93         return FileSystems.getFileSystem(uri);
  94     } else {
  95         // pass jrt-fs.jar in -classpath but running on jdk8+
  96         var cls;
  97         try {
  98             cls = Java.type("jdk.internal.jrtfs.JrtFileSystem").class;
  99         } catch (e) {
 100             print(e);
 101             print("did you miss specifying jrt-fs.jar with -cp option?");
 102             usage();
 103         }
 104         return FileSystems.newFileSystem(uri, Collections.emptyMap(), cls.classLoader);
 105     }
 106 }
 107 
 108 // JavaFX start method
 109 function start(stage) {
 110     var jrtfs = getJrtFileSystem();
 111     var root = jrtfs.getPath('/');
 112     stage.title = "jrt fs viewer";
 113     var rootItem = treeItemForPath(root);
 114     var tree = new TreeView(rootItem);
 115     var root = new StackPane();
 116     root.children.add(tree);
 117     stage.scene = new Scene(root, 300, 450);
 118     stage.show();
 119 }
< prev index next >