### VARIABLES ###

JC = javac
JCFLAGS = -encoding UTF-8 -implicit:none

JVM = java
JVMFLAGS = 

# Chemins des dossiers
SRC_CONTROLLER = Controller
SRC_MODEL = Model
SRC_VIEW = View

# Cibles pour chaque fichier .class avec leurs chemins respectifs
CONTROLLER_CLASS = $(SRC_CONTROLLER)/MenuController.class
MODEL_CLASS = $(SRC_MODEL)/MenuModel.class
VIEW_CLASS = $(SRC_VIEW)/MenuView.class
PANEL_CLASS = $(SRC_VIEW)/PanneauImage.class
TITRE_CLASS = $(SRC_VIEW)/TitreView.class  
BOUTON_CLASS = $(SRC_VIEW)/BoutonView.class
### REGLES ESSENTIELLES ###

# Règle pour compiler MenuController
$(CONTROLLER_CLASS): $(SRC_CONTROLLER)/MenuController.java $(MODEL_CLASS) $(VIEW_CLASS) $(PANEL_CLASS) $(TITRE_CLASS) $(BOUTON_CLASS)
	${JC} ${JCFLAGS} -d . $(SRC_CONTROLLER)/MenuController.java

# Règle pour compiler MenuModel
$(MODEL_CLASS): $(SRC_MODEL)/MenuModel.java
	${JC} ${JCFLAGS} -d . $(SRC_MODEL)/MenuModel.java

# Règle pour compiler MenuView
$(VIEW_CLASS): $(SRC_VIEW)/MenuView.java $(PANEL_CLASS) $(TITRE_CLASS) $(BOUTON_CLASS)  
	${JC} ${JCFLAGS} -d . $(SRC_VIEW)/MenuView.java

# Règle pour compiler PanneauImage
$(PANEL_CLASS): $(SRC_VIEW)/PanneauImage.java
	${JC} ${JCFLAGS} -d . $(SRC_VIEW)/PanneauImage.java

# Règle pour compiler TitreView
$(TITRE_CLASS): $(SRC_VIEW)/TitreView.java  # Règle pour compiler TitreView
	${JC} ${JCFLAGS} -d . $(SRC_VIEW)/TitreView.java

# Règle pour compiler BoutonView
$(TITRE_CLASS): $(SRC_VIEW)/BoutonView.java  # Règle pour compiler TitreView
	${JC} ${JCFLAGS} -d . $(SRC_VIEW)/BoutonView.java

### REGLES OPTIONNELLES ###

# Règle pour exécuter l'application
run: $(CONTROLLER_CLASS)
	${JVM} ${JVMFLAGS} Controller.MenuController

# Règle pour nettoyer les fichiers .class
clean:
	-rm -f $(SRC_CONTROLLER)/*.class $(SRC_MODEL)/*.class $(SRC_VIEW)/*.class

# Règle pour tout nettoyer et recompiler
mrproper: clean $(CONTROLLER_CLASS)

### BUTS FACTICES ###

.PHONY: run clean mrproper
