# Use an official OpenJDK base image
FROM openjdk:23-jdk-slim

# Install necessary dependencies (e.g., X11 libraries for GUI)
RUN apt-get update && apt-get install -y \
    libx11-dev \
    libxext-dev \
    libxrender-dev \
    libxtst-dev \
    libxi6 \
    xauth \
    libx11-xcb1 \
    libxrandr2 \
    libxrender1 \
    libxxf86vm1 \  
    libgtk-3-0 \    
    libgl1-mesa-glx \
    wget \
    unzip \
    && apt-get clean

# Download and install OpenJFX 23.0.1 SDK for Linux
RUN wget https://download2.gluonhq.com/openjfx/23.0.1/openjfx-23.0.1_linux-x64_bin-sdk.zip -O /tmp/openjfx.zip \
    && mkdir -p /opt/openjfx \
    && unzip /tmp/openjfx.zip -d /opt/openjfx \
    && rm /tmp/openjfx.zip

# Download and install PMD 7.7.0
RUN wget https://github.com/pmd/pmd/releases/download/pmd_releases%2F7.7.0/pmd-dist-7.7.0-bin.zip -O /tmp/pmd.zip \
    && mkdir -p /opt/pmd \
    && unzip /tmp/pmd.zip -d /opt/pmd \
    && rm /tmp/pmd.zip

# Set environment variables for Java, OpenJFX, and PMD
ENV JAVA_HOME=/usr/lib/jvm/java-23-openjdk
ENV PATH=$JAVA_HOME/bin:$PATH
ENV JAVAFX_HOME=/opt/openjfx/javafx-sdk-23.0.1
ENV PMD_HOME=/opt/pmd/pmd-bin-7.7.0

# Expose necessary ports for the X server (if running on a host machine)
EXPOSE 6000

# Command to run PMD Designer with OpenJFX 23.0.1
CMD ["/opt/pmd/pmd-bin-7.7.0/bin/pmd", "designer"]
