meyfa/structogram2byob

View on GitHub
src/main/java/structogram2byob/gui/frame/SwingFrameManager.java

Summary

Maintainability
A
0 mins
Test Coverage
F
0%
package structogram2byob.gui.frame;

import java.awt.BorderLayout;
import java.awt.Dimension;

import javax.swing.JFrame;
import javax.swing.JScrollPane;

import structogram2byob.gui.menu.IMenuBuilder;
import structogram2byob.gui.menu.SwingMenuBuilder;
import structogram2byob.gui.units.IUnitsManager;
import structogram2byob.gui.units.SwingUnitsManager;


/**
 * Implementation of a frame manager for the Swing GUI.
 */
public class SwingFrameManager implements IFrameManager
{
    private final SwingUnitsManager units;
    private final SwingMenuBuilder menu;

    private final JFrame frame;

    /**
     * Constructor.
     */
    public SwingFrameManager()
    {
        this.units = new SwingUnitsManager();
        this.menu = new SwingMenuBuilder();

        frame = new JFrame("structogram2byob");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setMinimumSize(new Dimension(540, 360));
        frame.setPreferredSize(new Dimension(1280, 720));

        frame.setLayout(new BorderLayout());

        frame.add(menu.getPanel(), BorderLayout.NORTH);

        JScrollPane contentScroller = new JScrollPane(units.getPanel());
        contentScroller.getHorizontalScrollBar().setUnitIncrement(16);
        contentScroller.getVerticalScrollBar().setUnitIncrement(16);
        contentScroller.setBorder(null);
        frame.add(contentScroller, BorderLayout.CENTER);
    }

    @Override
    public void show()
    {
        frame.pack();
        frame.setLocationRelativeTo(null);

        frame.setVisible(true);
    }

    @Override
    public IMenuBuilder getMenu()
    {
        return menu;
    }

    @Override
    public IUnitsManager getUnits()
    {
        return units;
    }
}