MainWindow.java

package com.kapil.verbametrics.ui;

import com.kapil.verbametrics.ui.panels.MLModelPanel;
import com.kapil.verbametrics.ui.panels.TextAnalysisPanel;
import com.kapil.verbametrics.ui.util.GuiConstants;
import org.springframework.context.ConfigurableApplicationContext;

import javax.swing.*;
import java.awt.*;

/**
 * Main application window for the Verba Metrics GUI.
 * Sets up the primary JFrame and integrates various UI components.
 *
 * @author Kapil Garg
 */
public class MainWindow extends JFrame {

    private final ConfigurableApplicationContext applicationContext;

    /**
     * Constructor to initialize the main window.
     *
     * @param applicationContext the Spring application context
     */
    public MainWindow(ConfigurableApplicationContext applicationContext) {
        super(GuiConstants.WINDOW_TITLE);
        this.applicationContext = applicationContext;
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(GuiConstants.WINDOW_WIDTH, GuiConstants.WINDOW_HEIGHT);
        setMinimumSize(new Dimension(GuiConstants.MIN_WINDOW_WIDTH, GuiConstants.MIN_WINDOW_HEIGHT));
        setLocationRelativeTo(null);
        initUi();
    }

    /**
     * Initialize the UI components and layout.
     */
    private void initUi() {
        JTabbedPane tabs = new JTabbedPane();
        tabs.addTab("Text Analysis", new TextAnalysisPanel(applicationContext));
        tabs.addTab("ML Models", new MLModelPanel(applicationContext));
        getContentPane().setLayout(new BorderLayout());
        getContentPane().add(tabs, BorderLayout.CENTER);
    }

}