diff --git a/build.gradle.kts b/build.gradle.kts index d3bd997..a734b83 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -20,6 +20,22 @@ dependencies { // (in a separate module for demo project and in testMain). // With compose.desktop.common you will also lose @Preview functionality implementation(compose.desktop.currentOs) + implementation(kotlin("stdlib")) + implementation("mysql:mysql-connector-java:8.0.23") + implementation("org.jetbrains.compose.material:material:1.0.0-beta-02") + implementation("org.jetbrains.compose.ui:ui:1.0.0-beta-02") + implementation("org.jetbrains.compose.foundation:foundation:1.0.0-beta-02") + implementation("org.jetbrains.compose.desktop:desktop:1.0.0-beta-02") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.2") + implementation("io.ktor:ktor-client-cio:1.6.3") + implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.5.30") + implementation("com.almworks.sqlite4java:sqlite4java:1.0.392") + implementation("io.ktor:ktor-server-netty:1.6.3") + implementation("io.ktor:ktor-html-builder:1.6.3") + + + + } compose.desktop { diff --git a/src/main/kotlin/DataBase.kt b/src/main/kotlin/DataBase.kt deleted file mode 100644 index 2e78a8e..0000000 --- a/src/main/kotlin/DataBase.kt +++ /dev/null @@ -1,15 +0,0 @@ -import java.sql.DriverManager - -// the model class -data class User(val id: Int, val name: String) - -fun main(){ - - - val connection = DriverManager.getConnection( - "jdbc:mysql://localhost:3306/sae", - "root", "0000"); - - // prints true if the connection is valid - println(connection.isValid(0)) -} \ No newline at end of file diff --git a/src/main/kotlin/database/DataBase.kt b/src/main/kotlin/database/DataBase.kt new file mode 100644 index 0000000..bcd8d4f --- /dev/null +++ b/src/main/kotlin/database/DataBase.kt @@ -0,0 +1,45 @@ +package database + +import java.sql.Connection +import java.sql.DriverManager +import java.sql.SQLException + + +object DatabaseManager { + private var connection: Connection? = null + // Chargez le pilote JDBC + fun connect() { + try + { + Class.forName("com.mysql.cj.jdbc.Driver") + } catch (e: ClassNotFoundException) + { + println("Erreur lors du chargement du pilote JDBC") + e.printStackTrace() + return + } + + // Informations de connexion à la base de données + val url = "jdbc:mysql://qualinommedb.odabasioglu.fr:3307" + val utilisateur = "QualiNommeUser" + val motDePasse = "QualiNommeDB" + + try + { + connection = DriverManager.getConnection(url, utilisateur, motDePasse) + + } catch (e: SQLException) + { + println("Erreur lors de la connexion à la base de données") + e.printStackTrace() + } + } + + fun getConnection(): Connection? { + return connection + } + +} +fun main() { + DatabaseManager.connect() +} diff --git a/src/main/kotlin/Main.kt b/src/main/kotlin/main/Main.kt similarity index 67% rename from src/main/kotlin/Main.kt rename to src/main/kotlin/main/Main.kt index 1713563..5c7810a 100644 --- a/src/main/kotlin/Main.kt +++ b/src/main/kotlin/main/Main.kt @@ -1,5 +1,7 @@ +package main + import androidx.compose.desktop.ui.tooling.preview.Preview -import androidx.compose.foundation.hoverable +import androidx.compose.foundation.Image import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember @@ -13,22 +15,17 @@ import androidx.compose.material.icons.filled.Check import androidx.compose.material.icons.filled.Close import java.awt.FileDialog import java.awt.Frame -import androidx.compose.ui.draw.clip -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.drawscope.DrawScope -import androidx.compose.ui.unit.dp -import androidx.compose.foundation.background -import androidx.compose.foundation.layout.* -import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.Button import androidx.compose.material.MaterialTheme -import androidx.compose.material.lightColors import androidx.compose.runtime.* import androidx.compose.ui.ExperimentalComposeUiApi -import androidx.compose.ui.input.pointer.pointerMoveFilter +import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.painterResource import androidx.compose.ui.window.* +import database.DatabaseManager +val connection = DatabaseManager.getConnection() +val customRedColor = Color(0xFFB70D1B) @OptIn(ExperimentalComposeUiApi::class) @Composable @@ -52,16 +49,29 @@ fun HomePage( horizontalArrangement = Arrangement.spacedBy(16.dp) ) { Button( - onClick = onGlossaireClick + onClick = onGlossaireClick, + colors = ButtonDefaults.buttonColors( + backgroundColor = customRedColor, + contentColor = Color.White + ) ) { Text("Glossaire") } - Button(onClick = onCodeAVerifierClick ) { + Button(onClick = onCodeAVerifierClick, + colors = ButtonDefaults.buttonColors( + backgroundColor = customRedColor, + contentColor = Color.White + ) ) { Text("Code à Vérifier") } - Button(onClick = { /* Action de Comparer */ }) { + Button(onClick = { /* Action de Comparer */ }, + colors = ButtonDefaults.buttonColors( + backgroundColor = customRedColor, + contentColor = Color.White + ) + ) { Text("Comparer") } } @@ -196,15 +206,31 @@ fun ChoixLangagePage( horizontalAlignment = Alignment.CenterHorizontally ) { - Button(onClick = onPythonClick) { + Button( + onClick = onPythonClick, + colors = ButtonDefaults.buttonColors( + backgroundColor = customRedColor, + contentColor = Color.White + ) + ) { Text("Python") } - Button(onClick = onJavaClick) { + Button( + onClick = onJavaClick, + colors = ButtonDefaults.buttonColors( + backgroundColor = customRedColor, + contentColor = Color.White + )) { Text("Java") } - Button(onClick = onJavaScriptClick) { + Button( + onClick = onJavaScriptClick, + colors = ButtonDefaults.buttonColors( + backgroundColor = customRedColor, + contentColor = Color.White + )) { Text("JavaScript") } } @@ -215,7 +241,12 @@ fun ChoixLangagePage( verticalArrangement = Arrangement.Bottom, horizontalAlignment = Alignment.CenterHorizontally ) { - Button(onClick = onRetourClick) { + Button( + onClick = onRetourClick, + colors = ButtonDefaults.buttonColors( + backgroundColor = customRedColor, + contentColor = Color.White + )) { Text("Retour") } } @@ -247,15 +278,30 @@ fun glossairePage( ) { - Button(onClick = onAjouterMotClick) { + Button( + onClick = onAjouterMotClick, + colors = ButtonDefaults.buttonColors( + backgroundColor = customRedColor, + contentColor = Color.White + )) { Text("Ajouter un mot") } - Button(onClick = onImporterClick) { + Button( + onClick = onImporterClick, + colors = ButtonDefaults.buttonColors( + backgroundColor = customRedColor, + contentColor = Color.White + )) { Text("Importer un fichier CSV") } - Button(onClick = onExporterClick) { + Button( + onClick = onExporterClick, + colors = ButtonDefaults.buttonColors( + backgroundColor = customRedColor, + contentColor = Color.White + )) { Text("Exporter un fichier CSV") } @@ -267,7 +313,12 @@ fun glossairePage( verticalArrangement = Arrangement.Bottom, horizontalAlignment = Alignment.CenterHorizontally ) { - Button(onClick = onRetourClick) { + Button( + onClick = onRetourClick, + colors = ButtonDefaults.buttonColors( + backgroundColor = customRedColor, + contentColor = Color.White + )) { Text("Retour") } } @@ -286,64 +337,101 @@ fun FormulairePage(onAnnulerClick: () -> Unit) { ) { Text(text = "Nouveau contexte métier", style = MaterialTheme.typography.h5) - val mot = remember { mutableStateOf("") } + val nom = remember { mutableStateOf("") } TextField( - value = mot.value, - onValueChange = { mot.value = it }, - label = { Text("Mot") } + value = nom.value, + onValueChange = { nom.value = it }, + label = { Text("Mot") }, + colors = TextFieldDefaults.textFieldColors( + focusedIndicatorColor = customRedColor, // Change this to the color you want + unfocusedIndicatorColor = Color.Gray // Change this to the color you want + ) ) val description = remember { mutableStateOf("") } TextField( value = description.value, onValueChange = { description.value = it }, - label = { Text("Description") } + label = { Text("Description") }, + colors = TextFieldDefaults.textFieldColors( + focusedIndicatorColor = customRedColor, // Change this to the color you want + unfocusedIndicatorColor = Color.Gray // Change this to the color you want + ) ) val contextePrincipal = remember { mutableStateOf("") } TextField( value = contextePrincipal.value, onValueChange = { contextePrincipal.value = it }, - label = { Text("Contexte principal") } + label = { Text("Contexte principal") }, + colors = TextFieldDefaults.textFieldColors( + focusedIndicatorColor = customRedColor, // Change this to the color you want + unfocusedIndicatorColor = Color.Gray // Change this to the color you want + ) ) val contexte2 = remember { mutableStateOf("") } TextField( value = contexte2.value, onValueChange = { contexte2.value = it }, - label = { Text("Contexte 2") } + label = { Text("Contexte 2") }, + colors = TextFieldDefaults.textFieldColors( + focusedIndicatorColor = customRedColor, // Change this to the color you want + unfocusedIndicatorColor = Color.Gray // Change this to the color you want + ) ) val lieA = remember { mutableStateOf("") } TextField( value = lieA.value, onValueChange = { lieA.value = it }, - label = { Text("Lié à") } + label = { Text("Lié à") }, + colors = TextFieldDefaults.textFieldColors( + focusedIndicatorColor = customRedColor, // Change this to the color you want + unfocusedIndicatorColor = Color.Gray // Change this to the color you want + ) ) val synonyme = remember { mutableStateOf("") } TextField( value = synonyme.value, onValueChange = { synonyme.value = it }, - label = { Text("Synonyme") } + label = { Text("Synonyme") }, + colors = TextFieldDefaults.textFieldColors( + focusedIndicatorColor = customRedColor, // Change this to the color you want + unfocusedIndicatorColor = Color.Gray // Change this to the color you want + ) ) val antonyme = remember { mutableStateOf("") } TextField( value = antonyme.value, onValueChange = { antonyme.value = it }, - label = { Text("Antonyme") } + label = { Text("Antonyme") }, + colors = TextFieldDefaults.textFieldColors( + focusedIndicatorColor = customRedColor, // Change this to the color you want + unfocusedIndicatorColor = Color.Gray // Change this to the color you want + ) ) Row( modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceEvenly ) { - Button(onClick = onAnnulerClick) { + Button( + onClick = onAnnulerClick, + colors = ButtonDefaults.buttonColors( + backgroundColor = customRedColor, + contentColor = Color.White + )) { Icon(imageVector = Icons.Default.Close, contentDescription = null) Text("Annuler") } - Button(onClick = { /* Action de validation */ }) { + Button(onClick = { /* Action de validation */ }, + colors = ButtonDefaults.buttonColors( + backgroundColor = customRedColor, + contentColor = Color.White + )) { Icon(imageVector = Icons.Default.Check, contentDescription = null) Text("Valider") }