From 0e9ffd63118314d7277356f0c548670b19760850 Mon Sep 17 00:00:00 2001
From: vitawrap <thevitawrap@gmail.com>
Date: Wed, 10 May 2023 11:12:04 +0200
Subject: [PATCH] Java: JNI + FXML

---
 Makefile                         |   2 +-
 include/Scheduling.h             |  21 ++++++++++++++
 java/application/App.java        |  19 ++++++++----
 java/application/Scheduling.java |   5 ++++
 java/bin/App.class               | Bin 964 -> 1484 bytes
 java/bin/Scheduling.class        | Bin 0 -> 322 bytes
 java/resources/ProjetView.fxml   |  48 +++++++++++++++++++++++++++++++
 src/Scheduling.c                 |   9 ++++++
 src/application_Scheduling.c     |   4 ---
 9 files changed, 98 insertions(+), 10 deletions(-)
 create mode 100644 include/Scheduling.h
 create mode 100644 java/application/Scheduling.java
 create mode 100644 java/bin/Scheduling.class
 create mode 100644 java/resources/ProjetView.fxml
 create mode 100644 src/Scheduling.c
 delete mode 100644 src/application_Scheduling.c

diff --git a/Makefile b/Makefile
index 300e4db..003e6a6 100644
--- a/Makefile
+++ b/Makefile
@@ -61,7 +61,7 @@ testmemorycheck : $(TEST)
 $(ODIR)/%.o : $(SDIR)/%.c $(DEP)
 	$(CC) $(FLAGS) -o $@ $<
 
-$(ODIR)/application_Scheduling.o : $(SDIR)/application_Scheduling.c $(DEP)
+$(ODIR)/Scheduling.o : $(SDIR)/Scheduling.c $(DEP)
 	$(CC) $(FLAGS) $(JINCLUDES) -o $@ $<
 
 $(PROG) : $(OBJ) $(ODIR)/main.o
diff --git a/include/Scheduling.h b/include/Scheduling.h
new file mode 100644
index 0000000..8809de0
--- /dev/null
+++ b/include/Scheduling.h
@@ -0,0 +1,21 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class Scheduling */
+
+#ifndef _Included_Scheduling
+#define _Included_Scheduling
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class:     Scheduling
+ * Method:    runSchedule
+ * Signature: (Ljava/lang/String;Ljava/lang/String;III)V
+ */
+JNIEXPORT void JNICALL Java_Scheduling_runSchedule
+  (JNIEnv *, jclass, jstring, jstring, jint, jint, jint);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/java/application/App.java b/java/application/App.java
index 6aebc1d..044fede 100644
--- a/java/application/App.java
+++ b/java/application/App.java
@@ -1,6 +1,9 @@
+import java.io.IOException;
+
 import javafx.application.Application;
+import javafx.fxml.FXMLLoader;
 import javafx.scene.Scene;
-import javafx.scene.layout.StackPane;
+import javafx.scene.control.SplitPane;
 import javafx.stage.Stage;
 
 public class App extends Application {
@@ -10,9 +13,15 @@ public class App extends Application {
 
     @Override
     public void start(Stage primaryStage) throws Exception {
-        StackPane root = new StackPane();
-        primaryStage.setTitle("Hello World");
-        primaryStage.setScene(new Scene(root, 800, 600));
-        primaryStage.show();
+        try {
+            SplitPane root = FXMLLoader.load(getClass().getResource("resources/ProjetView.fxml"));
+            primaryStage.setTitle("Hello World");
+            primaryStage.setScene(new Scene(root, 800, 600));
+            primaryStage.show();
+        }
+        catch (IOException e)
+        {
+            System.err.println("FXML indisponible.");
+        }
     }
 }
diff --git a/java/application/Scheduling.java b/java/application/Scheduling.java
new file mode 100644
index 0000000..b92b4d1
--- /dev/null
+++ b/java/application/Scheduling.java
@@ -0,0 +1,5 @@
+public class Scheduling {
+    
+    public static native void runSchedule(String instanceInFile, String scheduleOutFile, int m, int preemption, int balanced);
+
+}
diff --git a/java/bin/App.class b/java/bin/App.class
index 8a8f1bb7264cf9255ed4fd5f89b037f3a2818016..85d39015b0d6e7806c05b76d73db4e8db4f6fbb0 100644
GIT binary patch
delta 871
zcmX@YeukUt)W2Q(7#J9A84@;fNi)`SF-SAWvNOmqG6-ZPmL=-vB<7{-`zK|kCYSIq
z$T7$>GH|4)mN@4m78f%z2y1BiAXI?`tvMJJ85tytQj7CTi;`1|^#h9Xvr<dKGE>X-
z(kgOuxEPcfRM{C+7#aA{bn-B$F{sxwGH|D-mIOhyGcqV?AlVRHQk0pOZVk0GFSSHJ
zG|0!Ai$Rk?o1H<6kwFY(WLkwj$Rd5W2wxwc{KS;hA|3`E23<x5mYn>=6oiQ|?NHMo
z9*qV2)S8_^pOHZhYFcq}YF?^-a(-S(QGSkoa6wLHNkC#=DhGohBLlZbYEDkRLU?{r
zP6`);F@q^Pg9#&p5KL!DVtT56Fo@(~Fk>*E+`y>HXgPTqqb7$1gFO!eD}%%2>x}Xo
z#tcq849*NLlm9WQ*Bdjq@i4eEurV^Q6ldg@b24}`c(XHjp+rb<WpPPrE)RnbgD)ck
zb81l$BZDX;oHFzE1Bx>9N`gy@QWJBnIT-vI8H7MVp^%xEl384kpO=}Gld8wX5XcbB
z&Je`NAPjP=K0=!gNFNVF2!lBz1A76;sGK}@hA<?Bp8l>C$*Bb;nfZB>O_=n36~H#9
zRp{dgC~HOr##CenA{k)K$iN$1l9-(Bn^+K%n3R(`xtYn2k#q7TCO1}Y1{MaM$+FCv
z^_v(t7?>Ft7%a86F-Qq1Y-3Q`!Ju(~LC;rP$Y2|Tk@ju|i%1<21}hN;o9zsC+ZY_R
zw=uXbXW;SO#NZ+1w~ZlSBLgD?1A`8OK0_!2GXoa`1A`I+2Ll6xAcFvd5Q7+lFoOnz
z2!jrTD1$zO7=r<W1cL>G6azN{1A`U=3xgd4gCzqG11|#zSTck&L@+Qi2r$SnL^4D%
nFfkY~a4<wO#4s>1#4<22urn~_vonNpFfcO2F)%PNF~kD^SMt__

delta 347
zcmX@ZeT1Fs)W2Q(7#J9A8LT&QNi#;XGe|Qs$Yv#$C8kyA7bmCYrRwJ-R_2$M=m(c1
zCT9mE=B08mNHK77Fvu}7aC@ZY<m4-a=NILqa4{$_D6umrGBOCkbeANir-HPlr}8i;
zGpI~%U{YmNo4kxklS7q3hlhccL3i?XCV37827Mj|0|vv%|CrSI6&Q?p7)%)07#UcK
zGxEzPUtrc(koSR^h}AvTlYLnH7}+MzW^rTXU|?b3ocxSMv#ywdgMpcWfkAaQgH+^p
z1{q&%A=zyV^4hx@R3mjn7}P}=G`BNoZ)4EY-o{|Gk%57MiGhoOfkBLcm4ShQmw|(U
zkAaVYpFx2^fI)>pkb#?lfk6RcAOjBrF9QguGMF-$F)%W4Fvv2PGgvS%F)%V%f=#jl
E0H1kB8vp<R

diff --git a/java/bin/Scheduling.class b/java/bin/Scheduling.class
new file mode 100644
index 0000000000000000000000000000000000000000..9e872064c688ae13b0f7e44c3aaa7677c80a8ead
GIT binary patch
literal 322
zcmX^0Z`VEs1_oOOA$A5PMh33n<c!pm(wxk^ban<7Mh1bb#Ii*FoW#6zegCAa)Z`LI
z1~!|_yv!0iMh0dL%`ip=7U%qwR4xW)22LIZRt7dk27aH+yi~u^+@#c^ki?{%R7M6N
zpZw&+oUp{AOb{O`$WoG#S<J}5<Abo#nvsFKs5B2MkjluQrQw6HKe(hQGcVm5Q^eEL
z6XX!C;QZ2}<W#pzkd^#ULo)Ny^*}~2C^9fIFf)Jv69Xg2p$v=+><kPH`V5Q=j0_A6
ztXkU{I5sjcFfcK2F)%Q&fdv^ExEUB2c))B{1|9}p1_nk>20jLU1_lO31_7{YK>(-t
BMU?;m

literal 0
HcmV?d00001

diff --git a/java/resources/ProjetView.fxml b/java/resources/ProjetView.fxml
new file mode 100644
index 0000000..46ba8d1
--- /dev/null
+++ b/java/resources/ProjetView.fxml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.canvas.Canvas?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.CheckBox?>
+<?import javafx.scene.control.Separator?>
+<?import javafx.scene.control.Spinner?>
+<?import javafx.scene.control.SplitPane?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.BorderPane?>
+<?import javafx.scene.layout.Pane?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Text?>
+
+<SplitPane dividerPositions="0.29797979797979796" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/19">
+  <items>
+    <AnchorPane maxWidth="-Infinity" minHeight="0.0" minWidth="172.0" prefHeight="160.0" prefWidth="172.0">
+         <children>
+            <VBox prefHeight="398.4" prefWidth="175.2" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+               <padding>
+                  <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
+               </padding>
+               <children>
+                  <Text strokeType="OUTSIDE" strokeWidth="0.0" text="File path:" />
+                  <TextField fx:id="_filename" promptText="Scheduling instance file" />
+                  <Separator prefWidth="200.0" />
+                  <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Machine count:" />
+                  <Spinner fx:id="_machineCount" editable="true" />
+                  <Separator prefWidth="200.0" />
+                  <CheckBox fx:id="_balanced" mnemonicParsing="false" selected="true" text="Use balanced trees" />
+                  <CheckBox fx:id="_preemptive" mnemonicParsing="false" text="Use SRPT over SPT" />
+                  <Pane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="0.0" prefWidth="0.0" VBox.vgrow="ALWAYS" />
+                  <Button alignment="BOTTOM_CENTER" defaultButton="true" mnemonicParsing="false" onAction="#submitToDiagram" text="Display and Save" />
+               </children>
+            </VBox>
+         </children></AnchorPane>
+    <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0">
+         <children>
+            <BorderPane prefHeight="398.4" prefWidth="417.6" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+               <center>
+                  <Canvas fx:id="_canvas" height="380.0" width="400.0" BorderPane.alignment="CENTER" />
+               </center>
+            </BorderPane>
+         </children></AnchorPane>
+  </items>
+</SplitPane>
diff --git a/src/Scheduling.c b/src/Scheduling.c
new file mode 100644
index 0000000..8767d77
--- /dev/null
+++ b/src/Scheduling.c
@@ -0,0 +1,9 @@
+#include <jni.h>
+#include "schedule.h"
+#include "Scheduling.h"
+
+JNIEXPORT void JNICALL Java_Scheduling_runSchedule
+	(JNIEnv * env, jclass , jstring, jstring, jint, jint, jint)
+{
+	//const char * mystring = (* env )->GetStringUTFChars(env, s, NULL);
+}
diff --git a/src/application_Scheduling.c b/src/application_Scheduling.c
deleted file mode 100644
index 43f1e5b..0000000
--- a/src/application_Scheduling.c
+++ /dev/null
@@ -1,4 +0,0 @@
-#include <jni.h>
-#include "schedule.h"
-
-
-- 
GitLab