MainWindow() {
        this.setLayout(new BorderLayout()); 
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        this.setSize(WINDOW_DEFAULT_WIDTH, WINDOW_DEFAULT_HEIGTH); 
        this.setTitle(WINDOW_TITLE);
        this.setMinimumSize(new Dimension(WINDOW_MIN_WIDTH, WINDOW_MIN_HEIGTH));
        frame = this;
        settings.get(frame);
        clipboard = new ClipboardUtils();

        //Test area
        Dimension d1234 = new Dimension(12, 20);
        settings.put("A", d1234);
        settings.save();
        Dimension d1111 = new Dimension(0, 0);
        d1111 = settings.getDimension("A");
        System.out.println("CMP::" + d1234);
        System.out.println("CMP::" + d1111);

        mainWindowHeaderPanel = getHeader();
        //settings.get(MAIN_PANEL_TITLE, mainWindowHeaderPanelSize);
        //System.err.println("BOOTmainWindowHeaderPanelSize" + mainWindowHeaderPanelSize);
        add(mainWindowHeaderPanel, BorderLayout.NORTH);
        add(getMainContentPanel(), BorderLayout.CENTER);
        add(getFooter(), BorderLayout.SOUTH);
        this.setVisible(true); 

        addWindowListener(new WindowAdapter(){	
            public void windowClosing(WindowEvent event){
                settings.put(frame);
                settings.put(MAIN_PANEL_TITLE, mainWindowHeaderPanelSize);
                settings.save();
            }
        });

        addComponentListener(new ComponentListener() {
                public void componentResized(ComponentEvent evt) {
                    Dimension size = mainWindowHeaderPanel.getSize();
                    if (size != null && size.height > 0 && size.width > 0) {
                        mainWindowHeaderPanelSize = size;
                    }
                    remove(mainWindowHeaderPanel);
                    mainWindowHeaderPanel = getHeader();
                    add(mainWindowHeaderPanel, BorderLayout.NORTH);
                    System.out.println("componentResized::" + mainWindowHeaderPanelSize);
                }
                @Override
                public void componentMoved(ComponentEvent e) {}
                @Override
                public void componentShown(ComponentEvent e) {}
                @Override
                public void componentHidden(ComponentEvent e) {}
        });
    }