@SuppressWarnings("serial")
  private void initComponents() {
    mainSplitPane = new JSplitPane();
    mainSplitPane.setBorder(BorderFactory.createEmptyBorder());
    listSplitPane = new JSplitPane();
    listSplitPane.setBorder(BorderFactory.createEmptyBorder());

    bottomPanel = new JPanel();

    defaultViewImagePanel = new JPanel();
    propertySheetPanel.setTable(new VizMapPropertySheetTable());

    vsSelectPanel = new JPanel();

    buttonPanel = new JPanel();

    initializeVisualStyleComboBox();

    optionButton =
        new DropDownMenuButton(
            new AbstractAction() {
              public void actionPerformed(ActionEvent ae) {
                DropDownMenuButton b = (DropDownMenuButton) ae.getSource();
                menuMgr.getMainMenu().show(b, 0, b.getHeight());
              }
            });

    GridBagLayout gridbag = new GridBagLayout();
    GridBagConstraints constraints = new GridBagConstraints();
    buttonPanel.setLayout(gridbag);
    constraints.gridx = 0;
    constraints.gridy = 0;
    constraints.gridwidth = 1;
    constraints.gridheight = GridBagConstraints.REMAINDER;

    addButton = new JButton();

    addButton.setUI(new BlueishButtonUI());

    gridbag.setConstraints(addButton, constraints);
    buttonPanel.add(addButton);

    constraints.gridx = 2;
    constraints.gridy = 0;

    mainSplitPane.setDividerLocation(160);
    mainSplitPane.setDividerSize(4);
    // TODO why do we have to do this?
    mainSplitPane.setSize(new Dimension(100, 160));

    listSplitPane.setDividerLocation(400);
    listSplitPane.setDividerSize(5);
    listSplitPane.setOrientation(JSplitPane.VERTICAL_SPLIT);

    // Default View Panel
    // defaultViewImagePanel.setMinimumSize(new Dimension(200, 200));
    defaultViewImagePanel.setPreferredSize(
        new Dimension(mainSplitPane.getWidth(), mainSplitPane.getDividerLocation()));
    defaultViewImagePanel.setSize(defaultViewImagePanel.getPreferredSize());
    defaultViewImagePanel.setLayout(new BorderLayout());

    noMapListScrollPane = new JScrollPane();
    noMapListScrollPane.setBorder(
        BorderFactory.createTitledBorder(
            null,
            "Unused Visual Properties",
            TitledBorder.CENTER,
            TitledBorder.DEFAULT_POSITION,
            new Font("SansSerif", 1, 12)));
    noMapListScrollPane.setToolTipText("To Create New Mapping, Drag & Drop List Item to Browser.");

    GroupLayout bottomPanelLayout = new GroupLayout(bottomPanel);
    bottomPanel.setLayout(bottomPanelLayout);
    bottomPanelLayout.setHorizontalGroup(
        bottomPanelLayout
            .createParallelGroup(GroupLayout.Alignment.LEADING)
            .addComponent(noMapListScrollPane, GroupLayout.DEFAULT_SIZE, 272, Short.MAX_VALUE)
            .addComponent(
                buttonPanel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE));
    bottomPanelLayout.setVerticalGroup(
        bottomPanelLayout
            .createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGroup(
                bottomPanelLayout
                    .createSequentialGroup()
                    .addComponent(
                        buttonPanel, GroupLayout.PREFERRED_SIZE, 25, GroupLayout.PREFERRED_SIZE)
                    .addComponent(
                        noMapListScrollPane, GroupLayout.DEFAULT_SIZE, 135, Short.MAX_VALUE)));

    listSplitPane.setLeftComponent(mainSplitPane);
    listSplitPane.setRightComponent(bottomPanel);

    mainSplitPane.setOrientation(JSplitPane.VERTICAL_SPLIT);
    defaultViewImagePanel.setBorder(
        BorderFactory.createTitledBorder(
            null,
            "Defaults (Click to edit)",
            TitledBorder.DEFAULT_JUSTIFICATION,
            TitledBorder.DEFAULT_POSITION,
            new Font("SansSerif", 1, 12),
            Color.darkGray));

    mainSplitPane.setLeftComponent(defaultViewImagePanel);

    propertySheetPanel.setBorder(
        BorderFactory.createTitledBorder(
            null,
            "Visual Mapping Browser",
            TitledBorder.DEFAULT_JUSTIFICATION,
            TitledBorder.DEFAULT_POSITION,
            new Font("SansSerif", 1, 12),
            Color.darkGray));

    mainSplitPane.setRightComponent(propertySheetPanel);

    vsSelectPanel.setBorder(
        BorderFactory.createTitledBorder(
            null,
            "Current Visual Style",
            TitledBorder.DEFAULT_JUSTIFICATION,
            TitledBorder.DEFAULT_POSITION,
            new Font("SansSerif", 1, 12),
            Color.darkGray));

    optionButton.setToolTipText("Options...");
    optionButton.setIcon(iconMgr.getIcon("optionIcon"));
    optionButton.setMargin(new Insets(2, 2, 2, 2));
    optionButton.setComponentPopupMenu(menuMgr.getMainMenu());

    GroupLayout vsSelectPanelLayout = new GroupLayout(vsSelectPanel);
    vsSelectPanel.setLayout(vsSelectPanelLayout);
    vsSelectPanelLayout.setHorizontalGroup(
        vsSelectPanelLayout
            .createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGroup(
                vsSelectPanelLayout
                    .createSequentialGroup()
                    .addContainerGap()
                    .addComponent(visualStyleComboBox, 0, 146, Short.MAX_VALUE)
                    .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(
                        optionButton, GroupLayout.PREFERRED_SIZE, 64, GroupLayout.PREFERRED_SIZE)
                    .addContainerGap()));
    vsSelectPanelLayout.setVerticalGroup(
        vsSelectPanelLayout
            .createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGroup(
                vsSelectPanelLayout
                    .createSequentialGroup()
                    .addGroup(
                        vsSelectPanelLayout
                            .createParallelGroup(GroupLayout.Alignment.BASELINE)
                            .addComponent(
                                visualStyleComboBox,
                                GroupLayout.PREFERRED_SIZE,
                                GroupLayout.DEFAULT_SIZE,
                                GroupLayout.PREFERRED_SIZE)
                            .addComponent(optionButton)) // .addContainerGap(
                // GroupLayout.DEFAULT_SIZE,
                // Short.MAX_VALUE)
                ));

    GroupLayout layout = new GroupLayout(this);
    this.setLayout(layout);
    layout.setHorizontalGroup(
        layout
            .createParallelGroup(GroupLayout.Alignment.LEADING)
            .addComponent(
                vsSelectPanel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(mainSplitPane, GroupLayout.DEFAULT_SIZE, 280, Short.MAX_VALUE));
    layout.setVerticalGroup(
        layout
            .createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGroup(
                layout
                    .createSequentialGroup()
                    .addComponent(
                        vsSelectPanel,
                        GroupLayout.PREFERRED_SIZE,
                        GroupLayout.DEFAULT_SIZE,
                        GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(mainSplitPane, GroupLayout.DEFAULT_SIZE, 510, Short.MAX_VALUE)));
  } // </editor-fold>