package org.uva.student.calinwouter.qlqls.ql.gui; import javax.swing.*; import java.awt.*; /** * This abstract GUI renderer makes no assumption about the behaviour of the implemented GUI, * except that the rendering takes place on a JFrame and uses Swing. */ public abstract class AbstractSwingGUI{ private static final Integer DEFAULT_WINDOW_WIDTH = 800, DEFAULT_WINDOW_HEIGHT = 600; protected JFrame frame; protected Integer getDefaultWidth() { return DEFAULT_WINDOW_WIDTH; } protected Integer getDefaultHeight() { return DEFAULT_WINDOW_HEIGHT; } /** * Render a form embedded with the provided component. */ public void render() { frame = new JFrame(getFrameTitle()); final Dimension windowDimension = new Dimension(getDefaultWidth(), getDefaultHeight()); final Container contentPane = frame.getContentPane(); frame.setPreferredSize(windowDimension); frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); contentPane.add(renderFrameContent()); frame.pack(); frame.setVisible(true); } protected abstract String getFrameTitle(); protected abstract Component renderFrameContent(); }