/** @see #compile(String, String, String, boolean) */ public static boolean compile( String jarFile, String mainClass, String javaFiles[], boolean allErrors) { try { String buildDir = ".build"; JarManager.rmDir(new File(buildDir)); new File(buildDir).mkdirs(); JarManager.jarExtract(Core.javascoolJar(), buildDir, "org/javascool"); for (int i = 0; i < javaFiles.length; i++) { String file = javaFiles[i]; javaFiles[i] = buildDir + File.separator + file; JarManager.copyFiles(file, javaFiles[i]); } if (!Java2Class.compile(javaFiles, allErrors)) { return false; } String mfFile = buildDir + File.separator + "manifest.jmf"; Pml manifest = new Pml() .set("Main-Class", mainClass) .set("Implementation-URL", "http://javascool.gforge.inria.fr") .save(mfFile); JarManager.jarCreate(jarFile, mfFile, buildDir); JarManager.rmDir(new File(buildDir)); return true; } catch (IOException e) { throw new RuntimeException("Erreur d'entrées-sorties à la compilation : " + e); } }
private ProgletEngine() { String javascoolJar = Core.javascoolJar(); // Détection des proglets présentes dans le jar try { proglets = new ArrayList<Proglet>(); for (String dir : FileManager.list(javascoolJar, "org.javascool.proglets.[^\\.]+.proglet.pml")) { String name = dir.replaceFirst("jar:[^!]*!(.*)proglet.pml", "$1"); try { Proglet proglet = new Proglet().load(name); proglets.add(proglet); } catch (Exception e) { System.err.println( "Erreur lors de la détection dans le jar de la proglet " + name + " en " + dir + " (" + e + ")"); } } } catch (Exception er) { System.err.println( "Erreur lors de la détection des proglets (" + er + " avec " + javascoolJar + "\n . . vous pouvez quand même utiliser JavaScool"); } // Définit une proglet "vide" pour lancer l'interface if (proglets.isEmpty()) { for (int i = 0; i < 1; i++) { Proglet p = new Proglet(); p.pml.set("name", "Interface"); p.pml.set("icon-location", "org/javascool/widgets/icons/scripts.png"); p.pml.set("help-location", "org/javascool/macros/memo-macros.htm"); proglets.add(p); } } // Tri des proglets par ordre alphabétique Collections.sort( proglets, new Comparator<Proglet>() { @Override public int compare(Proglet p1, Proglet p2) { return p1.getName().compareTo(p2.getName()); } }); }