view src/junotu/Window.java @ 86:2a93d2a65b0f

TabCalendarBoard: Saving and loading of calendar board card Also started on column saving.
author Fox
date Mon, 06 Feb 2023 23:58:57 +0100
parents e476baaaab2c
children 778130f1a4c4
line wrap: on
line source

package junotu;

import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.WindowEvent;

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;

import junotu.TabEdit;
import junotu.TabSimpleSearch;
import junotu.TabBoard;
import junotu.TabCalendarBoard;

public class Window extends JFrame {

    public static interface TabInterface {
	void onSwitchedTo();
    }
    
    public enum Tab {
	SEARCH,
	EDIT,
	BOARD,
	CALENDAR_BOARD,
    };

    private static final String[] TAB_NAMES = {
	"Search",
	"Edit",
	"Board",
	"Calendar board",
    };

    public TabSimpleSearch  tabSearch;
    public TabEdit          tabEdit;
    public TabBoard         tabBoard;
    public TabCalendarBoard tabCalendarBoard;
    
    private JPanel tabs;
    private CardLayout tabsLayout;

    private Tab activeTab;
    
    public Window( Tab tab )
    {

	panelsCreate();
	tabSwitch( tab );

        this.setSize(512, 384);
	this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	this.setVisible(true);
	
    }

    @Override
    protected void processWindowEvent( WindowEvent e )
    {
	switch( e.getID() ) {
	    case WindowEvent.WINDOW_CLOSING: {
		Main.windowClose(this);
	    }
	}
    }

    public void tabSwitch( Tab tab )
    {
	if( tab == activeTab ) {
	    return;
	}
	tabsLayout.show(tabs, TAB_NAMES[tab.ordinal()]);
	Object tabObject = tabs.getComponent(tab.ordinal());
	if( tabObject instanceof TabInterface ) {
	    TabInterface tabInterface = (TabInterface)tabObject;
	    tabInterface.onSwitchedTo();
	}
	activeTab = tab;
	this.setTitle(preferredTitle(TAB_NAMES[activeTab.ordinal()]));
    }

    public Tab tabCurrent()
    {
	return activeTab;
    }

    public String preferredTitle( String tabStatus )
    {
	return Main.PROGRAM_NAME+" - "+tabStatus;
    }
    
    private void panelsCreate()
    {

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

	tabSearch = new TabSimpleSearch();
	tabEdit = new TabEdit();
	tabBoard = new TabBoard();
	tabCalendarBoard = new TabCalendarBoard();

	this.add(tabs);
	tabs.add(tabSearch);
	tabs.add(tabEdit);
	tabs.add(tabBoard);
	tabs.add(tabCalendarBoard);
	tabsLayout.addLayoutComponent( tabSearch,        TAB_NAMES[Tab.SEARCH.ordinal()] );
	tabsLayout.addLayoutComponent( tabEdit,          TAB_NAMES[Tab.EDIT.ordinal()] );
	tabsLayout.addLayoutComponent( tabBoard,         TAB_NAMES[Tab.BOARD.ordinal()] );
	tabsLayout.addLayoutComponent( tabCalendarBoard, TAB_NAMES[Tab.CALENDAR_BOARD.ordinal()] );
	
    }

}