IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

Demande d'aide pour tester AL - Swing - JavaFX


Sujet :

AWT/Swing Java

  1. #1
    Rédacteur
    Avatar de CyaNnOrangehead
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    777
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2008
    Messages : 777
    Points : 1 731
    Points
    1 731
    Par défaut Demande d'aide pour tester AL - Swing - JavaFX
    Bonjour à tous,

    Comme vous le savez sans doute, je travail pas mal en ce moment sur mon petit projet AL et plus particulièrement sur l'implémentation du JSR-223 que j'ai appelé AL-Script.
    Grâce à pas mal d'introspection etc, je parvient maintenant à créer des fenêtre swing directement depuis AL et même créer des écrans en JavaFX.

    Seulement voilà quand on est seul, on n'arrive pas à tout tester, et comme je sais que parmis vous il y a des gens super calé dans ces technos, je voulais savoir si ça en intéréssez certains à m'aider à tester un peu tout ça ?????

    Pour mieux comprendre, voici les code sources que j'obtiens pour créer du swing :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    public static void main(String[] args) throws ScriptException {
    	String source = ""
    			+ ""
    			+ "set UIManager = java.newObject (\"javax.swing.UIManager\", \"FrameDemo\");"
    			+ "UIManager.setLookAndFeel(\"com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel\");"
    			+ ""
    			+ "set frame = java.newObject (\"javax.swing.JFrame\", \"FrameDemo\");"
    			+ "frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);"
    			+ ""
    			+ "set pane = frame.getContentPane();"
    			+ "pane.setLayout(java.null);"
    			+ ""
    			+ "set insets = frame.getInsets();"
    			+ "print (insets.getTop());"
    			+ "insets.setTop(15);"
    			+ "insets.setBottom(15);"
    			+ "insets.setLeft(15);"
    			+ "insets.setRight(15);"
    			+ ""
    			+ "set button = java.newObject (\"javax.swing.JButton\", \"Say Al'O !\n\");"
    			+ "button.addActionListener(function (e, name) {"
    			+ "	print (\"Action Command \" .. e.getActionCommand());"
    			+ "	print (\"From method \" .. name);"
    			+ "	print (\"Al'O world !\");"
    			+ "	textArea.append(\"Al'O world!\n\");"
    			+ "	"
    			+ "});"
    			+ ""
    			+ "set size = button.getPreferredSize();"
    			+ "button.setBounds(25 + insets.getLeft(), 25 + insets.getTop(), size.getWidth(), size.getHeight());"
    			+ "pane.add (button);"
    			+ ""
    			+ "set textArea = java.newObject (\"javax.swing.JTextArea\");"
    			+ "textArea.setBounds(25 + insets.getLeft(), 75 + insets.getTop(), 700, 400);"
    			+ "pane.add (textArea);"
    			+ ""
    			+ ""
    			+ "frame.setSize(800, 600);"
    			+ "frame.setVisible(true);"
    			+ ""
    			+ "";
     
    	ScriptEngineManager manager = new ScriptEngineManager();
    	ScriptEngine alEngine = manager.getEngineByName("al");
     
    	alEngine.eval(source);
    }
    et du JavaFX
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    public class JavaFXApplication3 extends Application {
     
    	@Override
    	public void start(Stage primaryStage) throws ScriptException {
     
    		String source = ""
    			+ "set btn = java.newObject (\"javafx.scene.control.Button\");"
    			+ "btn.setText (\"Say Al'O world !\");"
    			+ "btn.setOnAction (function () {"
    			+ "	print (\"Say Al'O world !\");"
    			+ "});"
    			+ ""
    			+ "set root = java.newObject (\"javafx.scene.layout.StackPane\");"
    			+ "root.getChildren().add(btn);"
    			+ "print (root.getChildren());"
    			+ ""
    			+ "set scene = java.newObject (\"javafx.scene.Scene\", root, 300, 250);"
    			+ "primaryStage.setScene(scene);"
    			+ "primaryStage.setTitle(\"Al'O World!\")"
    			+ "primaryStage.show();"
    			+ "";
     
    		ALScriptEngine alEngine = new ALScriptEngine();
    		alEngine.put("primaryStage", primaryStage);
     
    		alEngine.eval(source);
    	}
     
    	public static void main(String[] args) {
    		launch(args);
    	}
     
    }
    Voilà....
    Alors, les intéressés, faites vous connaître.
    Merci d'avance ;-)
    Retrouvez tous mes tutoriels : http://caron-yann.developpez.com/

    Et mon projet en cours : Algoid - programming language

    N'oubliez pas de consulter les FAQ Java (http://java.developpez.com/faq/) et les cours et tutoriels Java (http://java.developpez.com/cours/)

  2. #2
    Rédacteur
    Avatar de CyaNnOrangehead
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    777
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2008
    Messages : 777
    Points : 1 731
    Points
    1 731
    Par défaut
    Pour ce qui est des testes swing et autres introspections, j'ai créé un petit projet Netbeans ici :
    https://bitbucket.org/yann_caron/alscriptexamples
    Il reste juste à supprimer la dépendance avec AL - dist/AL.jar (je m'en sers juste pour faire du teste rapide)

    Pour la petite explication du comment ça marche, voici le futur tuto : http://caron-yann.developpez.com/tut...ava/al-script/
    Et du coup le forum pour si tu as des remarques http://www.developpez.net/forums/d14...-223-sauce-al/

    Ce soir j'éssaie de poster les sources pour le JavaFX.

    Si vous avez des soucis pour faire marcher tout ça, n'hésitez pas ;-)
    Merci encore
    Retrouvez tous mes tutoriels : http://caron-yann.developpez.com/

    Et mon projet en cours : Algoid - programming language

    N'oubliez pas de consulter les FAQ Java (http://java.developpez.com/faq/) et les cours et tutoriels Java (http://java.developpez.com/cours/)

  3. #3
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Aucun soucis pour exécuter les exemples fournis avec NetBeans 7.4 et JDK 1.7.0_51 et JDK 1.8.0 b129
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  4. #4
    Rédacteur
    Avatar de CyaNnOrangehead
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    777
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2008
    Messages : 777
    Points : 1 731
    Points
    1 731
    Par défaut
    Super, merci Bouye.

    Maintenant, l'idée c'est que tu puisse créer tes propres GUI et me faire un petit retour (s'il te plaît et si tu as un peu de temps, bien entendu), sur ce qui manque, où ce qui n'est pas simple à mettre en place*/*élégant / bonnes idées, etc.... etc....
    Retrouvez tous mes tutoriels : http://caron-yann.developpez.com/

    Et mon projet en cours : Algoid - programming language

    N'oubliez pas de consulter les FAQ Java (http://java.developpez.com/faq/) et les cours et tutoriels Java (http://java.developpez.com/cours/)

  5. #5
    Rédacteur
    Avatar de CyaNnOrangehead
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    777
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2008
    Messages : 777
    Points : 1 731
    Points
    1 731
    Par défaut
    Voilà, j'ai fait un petit netoyage du repository des examples / Swing :
    https://bitbucket.org/yann_caron/als...mples/overview

    Et voici le petit projet JavaFX :
    https://bitbucket.org/yann_caron/alscriptfx/overview


    Merci encore ;-)
    Retrouvez tous mes tutoriels : http://caron-yann.developpez.com/

    Et mon projet en cours : Algoid - programming language

    N'oubliez pas de consulter les FAQ Java (http://java.developpez.com/faq/) et les cours et tutoriels Java (http://java.developpez.com/cours/)

  6. #6
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Bon alors, tout s'abord j'ai fait quelques tests direct pour voir comment charger un script, la syntaxe et comment déclarer une fonction :

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    public class ScriptRunner {
     
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) throws IOException, ScriptException {
            final ScriptEngineManager manager = new ScriptEngineManager();
            final ScriptEngine alEngine = manager.getEngineByName("al");
            final URL scriptURL = ScriptRunner.class.getResource("TestScript.al");
            try (final InputStream input = scriptURL.openStream()) {
    //            try (Reader reader =new InputStreamReader(input)) { // ERROR when file has multiple lines.
                try (Reader reader = new LineNumberReader(new InputStreamReader(input))) {
                    alEngine.eval(reader);
                }
            }
        }
    }
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    print("Hello world!");
     
    set a = 10;
    set b = 10;
    set c = 10;
     
    print(a);
    print(b);
    print(c);
     
    set sayHello = function(event) {
     print("Hello world!");
    }
     
    sayHello();

    Ensuite j'ai voulu voir s'il etait possible d'appeler directement Al depuis du FXML pour realiser l'action d'un bouton comme il est possible de le faire avec JavaScript:

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    public class AlInFXML extends Application {
     
        @Override
        public void start(final Stage primaryStage) throws IOException {
            loadTest(primaryStage, "JavaScript");
            final Stage stage = new Stage();
            stage.initOwner(primaryStage);
            loadTest(primaryStage, "Al");
        }
     
        private void loadTest(final Stage stage, final String language) throws IOException {
            final URL fxmlURL = getClass().getResource(language + "InFXML.fxml");
            final FXMLLoader fxmlLoader = new FXMLLoader(fxmlURL);
            final Node control = (Node) fxmlLoader.load();
            AnchorPane.setTopAnchor(control, 0d);
            AnchorPane.setLeftAnchor(control, 0d);
            AnchorPane.setBottomAnchor(control, 0d);
            AnchorPane.setRightAnchor(control, 0d);
            final AnchorPane root = new AnchorPane();
            root.getChildren().add(control);
            final Scene scene = new Scene(root, 500, 500);
            stage.setTitle("Language: " + language);
            stage.setScene(scene);
            stage.show();
     
        }
     
        /**
         * The main() method is ignored in correctly deployed JavaFX 
         * application. main() serves only as fallback in case the 
         * application can not be launched through deployment artifacts,
         * e.g., in IDEs with limited FX support. NetBeans ignores main().
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            launch(args);
        }
    }

    Pour la version JavaScript :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?xml version="1.0" encoding="UTF-8"?>
     
    <?import java.lang.*?>
    <?import java.util.*?>
    <?import javafx.scene.*?>
    <?import javafx.scene.control.*?>
    <?import javafx.scene.layout.*?>
    <?language javascript?>
     
    <AnchorPane id="AnchorPane" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2">
        <fx:script>
            function sayHello() {
                println("Hello Word!");
            }
        </fx:script>
      <children>
        <Button layoutX="14.0" layoutY="14.0" mnemonicParsing="false" text="Button" onAction="sayHello(event);" />
      </children>
    </AnchorPane>

    Pour la version Al :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?xml version="1.0" encoding="UTF-8"?>
     
    <?import java.lang.*?>
    <?import java.util.*?>
    <?import javafx.scene.*?>
    <?import javafx.scene.control.*?>
    <?import javafx.scene.layout.*?>
    <?language al?>
     
    <AnchorPane id="AnchorPane" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2">
        <fx:script>
            set sayHello = function(event) {
                print("Hello world!");
            }
        </fx:script>
      <children>
        <Button layoutX="14.0" layoutY="14.0" mnemonicParsing="false" text="Button" onAction="sayHello(event);" />
      </children>
    </AnchorPane>

    Cependant l'erreur suivante est produite au chargement du FXML contenant du code Al :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    Executing C:\Fabriceb\Devel\Java\test\Java 8\0600 AL\AlInFXML\dist\run1895903597\AlInFXML.jar using platform C:\Program Files\Java\jdk1.7.0_51/bin/java
    java.lang.NullPointerException
    file:/C:/Fabriceb/Devel/Java/test/Java%208/0600%20AL/AlInFXML/dist/run1895903597/AlInFXML.jar!/alinfxml/AlInFXML.fxml:11
      at fr.cyann.al.ALScriptEngine.eval(ALScriptEngine.java:135)
      at fr.cyann.al.ALScriptEngine.eval(ALScriptEngine.java:114)
      at javafx.fxml.FXMLLoader$ScriptElement.processEndElement(FXMLLoader.java:1360)
      at javafx.fxml.FXMLLoader.processEndElement(FXMLLoader.java:2472)
      at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2177)
      at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2069)
      at alinfxml.AlInFXML.loadTest(AlInFXML.java:34)
      at alinfxml.AlInFXML.start(AlInFXML.java:28)
      at com.sun.javafx.application.LauncherImpl$5.run(LauncherImpl.java:319)
      at com.sun.javafx.application.PlatformImpl$5.run(PlatformImpl.java:219)
      at com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:182)
      at com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:179)
      at java.security.AccessController.doPrivileged(Native Method)
      at com.sun.javafx.application.PlatformImpl$4.run(PlatformImpl.java:179)
      at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:76)
      at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
      at com.sun.glass.ui.win.WinApplication.access$100(WinApplication.java:17)
      at com.sun.glass.ui.win.WinApplication$3$1.run(WinApplication.java:67)
      at java.lang.Thread.run(Thread.java:744)
     
    Exception in Application start method
    Exception in thread "main" java.lang.RuntimeException: Exception in Application start method
    	at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:403)
    	at com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java:47)
    	at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:115)
    	at java.lang.Thread.run(Thread.java:744)
    Caused by: java.lang.NullPointerException
    	at fr.cyann.al.ALScriptEngine.eval(ALScriptEngine.java:135)
    	at fr.cyann.al.ALScriptEngine.eval(ALScriptEngine.java:114)
    	at javafx.fxml.FXMLLoader$ScriptElement.processEndElement(FXMLLoader.java:1360)
    	at javafx.fxml.FXMLLoader.processEndElement(FXMLLoader.java:2472)
    	at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2177)
    	at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2069)
    	at alinfxml.AlInFXML.loadTest(AlInFXML.java:34)
    	at alinfxml.AlInFXML.start(AlInFXML.java:28)
    	at com.sun.javafx.application.LauncherImpl$5.run(LauncherImpl.java:319)
    	at com.sun.javafx.application.PlatformImpl$5.run(PlatformImpl.java:219)
    	at com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:182)
    	at com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:179)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at com.sun.javafx.application.PlatformImpl$4.run(PlatformImpl.java:179)
    	at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:76)
    	at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    	at com.sun.glass.ui.win.WinApplication.access$100(WinApplication.java:17)
    	at com.sun.glass.ui.win.WinApplication$3$1.run(WinApplication.java:67)
    	... 1 more
    Java Result: 1
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  7. #7
    Rédacteur
    Avatar de CyaNnOrangehead
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    777
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2008
    Messages : 777
    Points : 1 731
    Points
    1 731
    Par défaut
    Yeah ! Excellent travail !
    Pourrais tu, s'il te plaît, m'envoyer ton projet que je regarde un peu ça? Il y a encore pas mal de trucs non gérés dans ma lib de réflexion visiblement.
    Retrouvez tous mes tutoriels : http://caron-yann.developpez.com/

    Et mon projet en cours : Algoid - programming language

    N'oubliez pas de consulter les FAQ Java (http://java.developpez.com/faq/) et les cours et tutoriels Java (http://java.developpez.com/cours/)

  8. #8
    Rédacteur
    Avatar de CyaNnOrangehead
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    777
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2008
    Messages : 777
    Points : 1 731
    Points
    1 731
    Par défaut
    ok, t'embète pas, j'ai recréer l'exemple (j'ignorai cette feature de fx ! Sympa !)
    J'ai corrigé mais j'ai maintenant d'autres soucis. Je corrige et te redit.
    Retrouvez tous mes tutoriels : http://caron-yann.developpez.com/

    Et mon projet en cours : Algoid - programming language

    N'oubliez pas de consulter les FAQ Java (http://java.developpez.com/faq/) et les cours et tutoriels Java (http://java.developpez.com/cours/)

  9. #9
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Tien, il faudra voir a un moment si on peut faire quelques chose de similaire au code poste dans "How to load FXML dynamically from webserver?", qui était un poste référencé comme réponse possible a "is it supported to have a controller in javascript?"
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  10. #10
    Rédacteur
    Avatar de CyaNnOrangehead
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    777
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2008
    Messages : 777
    Points : 1 731
    Points
    1 731
    Par défaut
    Je pense que ce qu'il risque ce coincé c'est que le langage doit être installé sur le poste coté client.
    A moins qu'il y ai un moyen de le déployer depuis le serveur !!!!

    De toute évidence je ne connais vraiment pas assez bien le Fxml.... il va falloir que je m'y penche sérieusement.
    Retrouvez tous mes tutoriels : http://caron-yann.developpez.com/

    Et mon projet en cours : Algoid - programming language

    N'oubliez pas de consulter les FAQ Java (http://java.developpez.com/faq/) et les cours et tutoriels Java (http://java.developpez.com/cours/)

  11. #11
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Non je pensais plutôt à la logique de mettre le script dans un fichier al à part plutôt que des lignes de code includes dans le FXML lui-même, ce qui était la question du second topic : est-il possible de faire un contrôleur 100% JavaScript. Je ne fais rien en JEE donc tout le coté serveur c'est pas mon truc, je vois toujours les choses dans une optique 100% coté client.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  12. #12
    Rédacteur
    Avatar de CyaNnOrangehead
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    777
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2008
    Messages : 777
    Points : 1 731
    Points
    1 731
    Par défaut
    Oui mais justement dans ce cas là, si tu exécute ton fxml coté client, il faut que ton moteur de script y soit également.

    Je met un peu une pause à ce topic pour me concentré sur le design pattern injector visitor. Une fois fini, je corrige les souci d'intégration avec JFX et je relance celui-ci. J'ai du mal à tout faire ne même temps
    Retrouvez tous mes tutoriels : http://caron-yann.developpez.com/

    Et mon projet en cours : Algoid - programming language

    N'oubliez pas de consulter les FAQ Java (http://java.developpez.com/faq/) et les cours et tutoriels Java (http://java.developpez.com/cours/)

  13. #13
    Rédacteur
    Avatar de CyaNnOrangehead
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    777
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2008
    Messages : 777
    Points : 1 731
    Points
    1 731
    Par défaut
    Bouye..... Ca y est j'ai trouvé les deux petites chose qui se passaient mal :

    1 - JavaFX passait un objet de type Context null, du coup pour utiliser l'introspection (genre object.getClass())....

    2 - Un truc de dingue. Quand je passe des objets Java en AL, le principe réside dans le fait de créer dynamiquement des objets AL qui sont des coquilles vides des objets Java....
    Et voilà l'objet Java qui posait problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public class EventType<T extends Event> {
     
    	public static final EventType<Event> ROOT;
    .....
    On voie que l'objet static ROOT est de type EventType et que EventType contient ROOT, d'ou un magnifique stack overflow.....
    Pour le moment j'ai by-passer pour voir si ça fonctionne, et ça marche. Je corrige proprement et je renvoie tous les exemples sur bitbucket pour que tu puisse continuer si tu le souhaite....

    En tous cas, grand merci, j'ignorais ces fonctionnalités de FX.
    Retrouvez tous mes tutoriels : http://caron-yann.developpez.com/

    Et mon projet en cours : Algoid - programming language

    N'oubliez pas de consulter les FAQ Java (http://java.developpez.com/faq/) et les cours et tutoriels Java (http://java.developpez.com/cours/)

  14. #14
    Rédacteur
    Avatar de CyaNnOrangehead
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    777
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2008
    Messages : 777
    Points : 1 731
    Points
    1 731
    Par défaut
    Héhé....

    Voilà les deux repository avec la lib AL-Script corrigée :

    pour la partie FX
    https://bitbucket.org/yann_caron/alscriptfx/src

    et pour la partie FXML
    https://bitbucket.org/yann_caron/alscriptfxml/src


    C'te classe. Suis content tout plein que ça fonctionne....
    Retrouvez tous mes tutoriels : http://caron-yann.developpez.com/

    Et mon projet en cours : Algoid - programming language

    N'oubliez pas de consulter les FAQ Java (http://java.developpez.com/faq/) et les cours et tutoriels Java (http://java.developpez.com/cours/)

  15. #15
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    for (ScriptEngineFactory factory : new ScriptEngineManager().getEngineFactories()) {
                try {
                    System.out.printf("%s (%s) - engine: %s (%s)", factory.getLanguageName(), factory.getLanguageVersion(), factory.getEngineName(), factory.getEngineVersion());
                    for (String name : factory.getNames()) {
                        System.out.printf("\t%s", name);
                    }
                    System.out.println();
                } catch (Exception ex) {
                    final String message = String.format("Error loading factory %s", factory);
                    Logger.getLogger(AlInFXML.class.getName()).log(Level.SEVERE, message, ex);
                }
            }
    J'ai droit a un magnifique (Al est concerne a partir de la ligne 2, la ligne precedente c'est une erreur lors du chargement de l'interpreteur scala) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    ScriptEngineManager providers.next(): javax.script.ScriptEngineFactory: Provider scala.tools.nsc.interpreter.IMain$Factory could not be instantiated: java.lang.NoClassDefFoundError: scala/reflect/internal/settings/AbsSettings
    Mar 07, 2014 10:59:01 AM alinfxml.AlInFXML start
    SEVERE: Error loading factory fr.cyann.al.ALScriptEngineFactory@197a64f2
    java.lang.NullPointerException
    	at fr.cyann.al.ALScriptEngineFactory.getLanguageName(ALScriptEngineFactory.java:68)
    	at alinfxml.AlInFXML.start(AlInFXML.java:35)
    	at com.sun.javafx.application.LauncherImpl$5.run(LauncherImpl.java:319)
    	at com.sun.javafx.application.PlatformImpl$5.run(PlatformImpl.java:219)
    	at com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:182)
    	at com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:179)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at com.sun.javafx.application.PlatformImpl$4.run(PlatformImpl.java:179)
    	at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:76)
    	at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    	at com.sun.glass.ui.win.WinApplication.access$100(WinApplication.java:17)
    	at com.sun.glass.ui.win.WinApplication$3$1.run(WinApplication.java:67)
    	at java.lang.Thread.run(Thread.java:744)
    Et la sortie actuelle* avec les autres languages :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ruby (jruby 1.7.11) - engine: JSR 223 JRuby Engine (1.7.11)	ruby	jruby
    R (2.14.2) - engine: Renjin (017)	Renjin
    python (2.7) - engine: jython (2.7.0)	python	jython
    ECMAScript (1.8) - engine: Mozilla Rhino (1.7 release 3 PRERELEASE)	js	rhino	JavaScript	javascript	ECMAScript	ecmascript
    *Ouaip je suis en train de voir quels autres langages de script peuvent etre utilises facilement avec FXML.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  16. #16
    Rédacteur
    Avatar de CyaNnOrangehead
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    777
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2008
    Messages : 777
    Points : 1 731
    Points
    1 731
    Par défaut
    Cool, merci.
    Tu as raison de regarder un peu tout.
    Concernant cette exception, oui j'ai due bricoler le binding pour pas qu'il vienne me rajouter des valeurs dans le rootScope du langage. Je vais y jeter un œil.
    Retrouvez tous mes tutoriels : http://caron-yann.developpez.com/

    Et mon projet en cours : Algoid - programming language

    N'oubliez pas de consulter les FAQ Java (http://java.developpez.com/faq/) et les cours et tutoriels Java (http://java.developpez.com/cours/)

  17. #17
    Rédacteur
    Avatar de CyaNnOrangehead
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    777
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2008
    Messages : 777
    Points : 1 731
    Points
    1 731
    Par défaut
    Tiens ! C'est quoi comme langage ça "R" ?
    Retrouvez tous mes tutoriels : http://caron-yann.developpez.com/

    Et mon projet en cours : Algoid - programming language

    N'oubliez pas de consulter les FAQ Java (http://java.developpez.com/faq/) et les cours et tutoriels Java (http://java.developpez.com/cours/)

  18. #18
    Rédacteur
    Avatar de CyaNnOrangehead
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    777
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2008
    Messages : 777
    Points : 1 731
    Points
    1 731
    Par défaut
    Mince, en fait non.... encore des erreurs.... RHAAAAA !!!!
    Retrouvez tous mes tutoriels : http://caron-yann.developpez.com/

    Et mon projet en cours : Algoid - programming language

    N'oubliez pas de consulter les FAQ Java (http://java.developpez.com/faq/) et les cours et tutoriels Java (http://java.developpez.com/cours/)

  19. #19
    Rédacteur
    Avatar de CyaNnOrangehead
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    777
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2008
    Messages : 777
    Points : 1 731
    Points
    1 731
    Par défaut
    Ca y est, normalement j'ai corrigé toutes les petites choses qui n'allaient pas.
    Les projects sont tous là :
    https://bitbucket.org/yann_caron/alscriptexamples
    https://bitbucket.org/yann_caron/alscriptfx
    https://bitbucket.org/yann_caron/alscriptfxml

    Pour acceder à des controles depuis le script en FXML voilà ce qu'il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    	<fx:script>
    		set sayHello = function (event) {
    		print("AL'O Word!");
    		print (event);
    		print (controller);
    		print (controller.getLabel) //
    		controller.getLabel().setText("Calling the AL-Script");
    		}
    	</fx:script>
    Malheureusement, lorsque le script est initialisé, les composants ne le sont pas, du coup je ne récupère que des valeurs null et je n'arrive pas à créer des variables sur les controles présents (normalement ici ça devrait être "label" plutôt que "controller.getLabel()")....

    Vala
    Retrouvez tous mes tutoriels : http://caron-yann.developpez.com/

    Et mon projet en cours : Algoid - programming language

    N'oubliez pas de consulter les FAQ Java (http://java.developpez.com/faq/) et les cours et tutoriels Java (http://java.developpez.com/cours/)

  20. #20
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    R c'est la version OpenSource gratuite de S et S-plus, un langage pour les mathématiciens et statisticiens.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

Discussions similaires

  1. [xsl][xalan]Demande d'aide pour un comptage
    Par HomoErectus dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 19/09/2005, 09h22
  2. Demande d'aide pour query difficile
    Par ericjean514 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 22/02/2005, 18h52
  3. Demande d'aide pour une requête
    Par arkzor dans le forum Requêtes
    Réponses: 3
    Dernier message: 28/12/2004, 02h40
  4. [TPW][cours]Demande d'aide pour finir un programme
    Par jf dans le forum Turbo Pascal
    Réponses: 21
    Dernier message: 16/06/2003, 18h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo