view src/Main.java @ 0:4e9f2e87eb7b

Repository start, basic interface mockups
author Fox
date Fri, 01 Apr 2022 00:32:11 +0200
parents
children
line wrap: on
line source


import java.awt.Dimension;
import java.awt.Font;

import javax.swing.JFrame;
import javax.swing.JPanel;

import java.awt.CardLayout;
import java.awt.BorderLayout;
import javax.swing.BoxLayout;

import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JTextField;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;


public class Main {

    public enum Tab {
	SEARCH,
	EDIT,
    };

    public static final String PROGRAM_NAME = "Junotu";

    private static final String[] TAB_NAMES = {
	"Search",
	"Edit",
    };
    
    private static JFrame window;

    private static JPanel tabs;
    private static CardLayout tabsLayout;
    private static JPanel search;
    private static JPanel edit;

    private static int activeTab = 0;
    
    public static void main(String[] args)
    {

	window = new JFrame();
	panelsCreate();
	tabSwitch(Tab.EDIT.ordinal());

	window.setSize(384, 384);
	//window.setLayout(null);
	window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	window.setVisible(true);
    }

    public static void tabSwitch( int tab )
    {
	tabsLayout.show(tabs, TAB_NAMES[tab]);
	activeTab = tab;
	window.setTitle(preferredTitle());
    }
    
    private static void panelsCreate()
    {

	tabsLayout = new CardLayout();
	tabs = new JPanel( tabsLayout );

	panelsCreateSearch();
	panelsCreateEdit();

	window.add(tabs);
	tabs.add(search);
	tabs.add(edit);
	tabsLayout.addLayoutComponent( search, TAB_NAMES[Tab.SEARCH.ordinal()] );
	tabsLayout.addLayoutComponent( edit,   TAB_NAMES[Tab.EDIT.ordinal()] );
	
    }

    private static void panelsCreateSearch()
    {
	search = new JPanel( new BorderLayout() );

	JPanel top = new JPanel( new BorderLayout() );
	JTextField field = new JTextField("Type here..");
	JButton submit = new JButton("Search");

	field.setPreferredSize( new Dimension(32, 32) );
	
	search.add( top, BorderLayout.NORTH );
	top.add( field, BorderLayout.CENTER );
	top.add( submit, BorderLayout.EAST );
        
    }

    private static void panelsCreateEdit()
    {
	edit = new JPanel( new BorderLayout() );

	Box scrollContent = Box.createVerticalBox();
	JScrollPane scroll = new JScrollPane( scrollContent );
	JTextField title = new JTextField( "Title" );
	JTextArea content = new JTextArea( "Here you go. Some text." );

        Box bottom = Box.createHorizontalBox();
	JButton back = new JButton("Cancel");
	JButton save = new JButton("Save");

	title.setFont( new Font( "Monospaced", Font.PLAIN, 32 ) );
	content.setFont( new Font( "Monospaced", Font.PLAIN, 16 ) );

        scroll.getVerticalScrollBar().setUnitIncrement(16);

	title.setMaximumSize( new Dimension( 1000000, 64 ) );

	edit.add( scroll, BorderLayout.CENTER );
	scrollContent.add( title );
	scrollContent.add( Box.createVerticalStrut(10) );
	scrollContent.add( content );

	edit.add( bottom, BorderLayout.SOUTH );
	bottom.add( back );
	bottom.add( Box.createHorizontalGlue() );
	bottom.add( save );

	//scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
	
    }

    private static String preferredTitle()
    {
	return PROGRAM_NAME+" - "+TAB_NAMES[activeTab];
    }
    
}