public void InitGUI() {
        
        cmActionListener listener = new cmActionListener();

        Container m_container = getContentPane();
        m_container.setLayout(new FlowLayout());
        
        JPanel optionsPanel = new JPanel(new GridLayout(UI_ROW,UI_COL));
        m_container.add(optionsPanel);

        JLabel dropboxText = new JLabel("Select colour scheme: ");
        optionsPanel.add(dropboxText);

        String[] colourMaps = new String[MAPCOUNT];
        for (int i=0; i<MAPCOUNT; i++) {
            colourMaps[i] = GetMap(i).GetMapName();
        }
		
        m_mapList = new JComboBox(colourMaps);
		m_mapList.setEnabled(true);
        m_mapList.setPreferredSize(new Dimension(UI_WIDTH, UI_HEIGHT));
        m_mapList.addActionListener(listener);
        optionsPanel.add(m_mapList);

        JLabel blankLabel1 = new JLabel("");
        optionsPanel.add(blankLabel1);

        m_previewContainer = new JPanel();
        optionsPanel.add(m_previewContainer);

        m_previewPanel = DrawSwatches(m_mapList.getSelectedIndex());
        m_previewContainer.add(m_previewPanel);

        JPanel spacerPanel1 = new JPanel();
        spacerPanel1.setSize(new Dimension(CP_WIDTH, CP_HEIGHT));
        optionsPanel.add(spacerPanel1);

		
		
        JPanel spacerPanel2 = new JPanel();
        spacerPanel2.setSize(new Dimension(CP_WIDTH, CP_HEIGHT));
        optionsPanel.add(spacerPanel2);
		
		m_CustomButton = new JButton("Custom Colours");
		m_CustomButton.addActionListener(listener);
		spacerPanel2.add(m_CustomButton);
		
        JLabel blankLabel2 = new JLabel("");
        optionsPanel.add(blankLabel2);

		
		
        JPanel buttonPanel = new JPanel(new FlowLayout());
        optionsPanel.add(buttonPanel);
				
        m_saveButton = new JButton("OK");
        m_saveButton.addActionListener(listener);
        buttonPanel.add(m_saveButton);

        m_closeButton = new JButton("Cancel");
        m_closeButton.addActionListener(listener);
        buttonPanel.add(m_closeButton);

        pack();
        setResizable(false);
        setLocationRelativeTo(null);

        if (m_cmFirstTimeOpen) { 
            setVisible(false);
            m_cmFirstTimeOpen = false;
        } else {
            setVisible(true);
        }
    }