Saturday, October 4, 2025

2nd pass of Test Frame

 Scrollbar slider = new Scrollbar(Scrollbar.HORIZONTAL, 50, 10, 0, 100);

slider.addAdjustmentListener(e -> {

    int value = e.getValue();

    statusBar.setText("Slider value: " + value);

    // Optional: update font size, zoom, etc.

});

frame.add(slider, BorderLayout.SOUTH);

==============

import java.awt.*;
import java.awt.event.*;

public class BareFrameWithSlider {
    public static void main(String[] args) {
        Frame frame = new Frame("Bare AWT Frame");
        frame.setSize(600, 400);
        frame.setLayout(new BorderLayout());

        // Menu Bar
        MenuBar menuBar = new MenuBar();
        Menu fileMenu = new Menu("File");
        fileMenu.add(new MenuItem("Exit"));
        menuBar.add(fileMenu);
        frame.setMenuBar(menuBar);

        // Status Bar (South)
        Label statusBar = new Label("Ready");
        frame.add(statusBar, BorderLayout.SOUTH);

        // Central Canvas or TextArea (Placeholder)
        TextArea textArea = new TextArea("Main content here...");
        frame.add(textArea, BorderLayout.CENTER);

        // Horizontal Slider (South, above status bar)
        Panel sliderPanel = new Panel(new BorderLayout());
        Scrollbar hSlider = new Scrollbar(Scrollbar.HORIZONTAL, 50, 10, 0, 100);
        sliderPanel.add(hSlider, BorderLayout.CENTER);
        frame.add(sliderPanel, BorderLayout.NORTH); // Or EAST/WEST depending on ritual

        // Event Handling
        hSlider.addAdjustmentListener(e -> {
            int val = e.getValue();
            statusBar.setText("Slider value: " + val);
            // Optional: update font size, zoom, etc.
        });

        // Window Close Protocol
        frame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent we) {
                frame.dispose();
            }
        });

        frame.setVisible(true);
    }
}

===========

try {
    Class<?> clazz = Class.forName("com.example.MyTestClass");
    Runnable testInstance = (Runnable) clazz.getDeclaredConstructor().newInstance();
    testInstance.run(); // or pass to your frame logic
} catch (Exception e) {
    statusBar.setText("Failed to load class: " + e.getMessage());
}


============

Map<String, Supplier<Runnable>> testRegistry = new HashMap<>();
testRegistry.put("TestA", TestA::new);
testRegistry.put("TestB", TestB::new);

=========

frame.remove(testPanel);
frame.validate();
frame.repaint();
statusBar.setText("Test dismissed.");

============

// Pre-instantiated test panels
Panel testA = new TestA();
Panel testB = new TestB();
Panel testC = new TestC();

Panel currentTest = null;

Button activateA = new Button("Run Test A");
activateA.addActionListener(e -> {
    clearCurrentTest();
    currentTest = testA;
    frame.add(currentTest, BorderLayout.CENTER);
    frame.validate();
});

void clearCurrentTest() {
    if (currentTest != null) {
        frame.remove(currentTest);
        currentTest = null;
        frame.validate();
        frame.repaint();
    }
}

========

TestA testA = new TestA(param1, param2);
TestB testB = new TestB(paramX);
TestC testC = new TestC();

========

Supplier<Panel> testAFactory = () -> new TestA(param1, param2);

============

Menu testMenu = new Menu("Run Test");
MenuItem runA = new MenuItem("Test A");
runA.addActionListener(e -> activateTest(testA));

=============

MenuItem clean = new MenuItem("Clean");
clean.addActionListener(e -> {
    if (currentTest != null) {
        frame.remove(currentTest);
        currentTest = null;
        frame.validate();
        frame.repaint();
        statusBar.setText("Cleaned.");
    }
});

==========

public class TestModule extends Panel {
    public TestModule() {
        // Default ritual
    }

    public TestModule(String config) {
        // Config-based ritual
    }

    public TestModule(int level, boolean verbose) {
        // Parameterized ritual
    }
}

===========

MenuItem runDefault = new MenuItem("Run Default");
runDefault.addActionListener(e -> activateTest(new TestModule()));

MenuItem runConfig = new MenuItem("Run Config");
runConfig.addActionListener(e -> activateTest(new TestModule("Alpha")));

MenuItem runVerbose = new MenuItem("Run Verbose");
runVerbose.addActionListener(e -> activateTest(new TestModule(3, true)));

===========

import java.awt.*;
import java.awt.event.*;

public class AboutBox extends Dialog {
    public AboutBox(Frame parent) {
        super(parent, "About", true);
        setLayout(new BorderLayout());
        setSize(300, 150);
        setLocationRelativeTo(parent);

        Label aboutText = new Label("BareFrame v1.0\nModular UI Test Harness", Label.CENTER);
        add(aboutText, BorderLayout.CENTER);

        Button ok = new Button("OK");
        ok.addActionListener(e -> setVisible(false));
        add(ok, BorderLayout.SOUTH);
    }
}

==========

Menu helpMenu = new Menu("Help");
MenuItem aboutItem = new MenuItem("About");
helpMenu.add(aboutItem);
menuBar.add(helpMenu);

aboutItem.addActionListener(e -> {
    AboutBox about = new AboutBox(frame);
    about.setVisible(true);
});

==========