class BannerComponent extends javax.swing.JPanel {

    private final transient PerspectiveController perspectiveController;
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JPanel buttonsPanel;
    private javax.swing.JPanel mainPanel;
    private javax.swing.ButtonGroup perspectivesButtonGroup;
    private javax.swing.JPanel workspacePanel;
    // End of variables declaration//GEN-END:variables

    public BannerComponent() {
        initComponents();

        // Make the workspace tab stand out well
        if (UIUtils.isFlatLafLightLookAndFeel()) {
            mainPanel.setBackground(Color.WHITE);
            workspacePanel.setBackground(Color.WHITE);
        } else if (UIUtils.isFlatLafDarkLookAndFeel()) {
            Color cl = UIManager.getColor("EditorTab.background");
            mainPanel.setBackground(cl);
            workspacePanel.setBackground(cl);
        }

        // Button panel border so it matches with the workspace panel
        buttonsPanel.setBorder(BorderFactory.createCompoundBorder(
            BorderFactory.createMatteBorder(0, 0, 1, 0, UIManager.getColor("Component.borderColor")),
            BorderFactory.createEmptyBorder(6, 0, 6, 5)));
        workspacePanel.setBorder(BorderFactory.createEmptyBorder(12, 0, 0, 0));

        //Init perspective controller
        perspectiveController = Lookup.getDefault().lookup(PerspectiveController.class);

        addGroupTabs();
    }

    private void addGroupTabs() {
        JToggleButton[] buttons = new JToggleButton[perspectiveController.getPerspectives().length];
        int i = 0;

        //Add tabs
        for (final Perspective perspective : perspectiveController.getPerspectives()) {
            JToggleButton toggleButton =
                new JToggleButton(perspective.getDisplayName(), perspective.getIcon());
            toggleButton.setFocusPainted(false);
            toggleButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));

            toggleButton.addActionListener(e -> perspectiveController.selectPerspective(perspective));
            perspectivesButtonGroup.add(toggleButton);
            buttonsPanel.add(toggleButton);
            buttons[i++] = toggleButton;
        }

        //Set currently selected button
        perspectivesButtonGroup.setSelected(buttons[getSelectedPerspectiveIndex()].getModel(), true);
    }

    public int getSelectedPerspectiveIndex() {
        int i = 0;
        for (Perspective p : perspectiveController.getPerspectives()) {
            if (p.equals(perspectiveController.getSelectedPerspective())) {
                return i;
            }
            i++;
        }
        return -1;
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {<FILL_FUNCTION_BODY>}// </editor-fold>//GEN-END:initComponents
}


        perspectivesButtonGroup = new javax.swing.ButtonGroup();
        mainPanel = new javax.swing.JPanel();
        workspacePanel = new org.gephi.desktop.banner.workspace.WorkspacePanel();
        buttonsPanel = new javax.swing.JPanel();

        setBackground(new java.awt.Color(255, 255, 255));
        setLayout(new java.awt.BorderLayout());

        mainPanel.setLayout(new java.awt.BorderLayout());

        workspacePanel.setBorder(javax.swing.BorderFactory.createEmptyBorder(6, 0, 0, 0));
        mainPanel.add(workspacePanel, java.awt.BorderLayout.CENTER);

        buttonsPanel.setOpaque(false);
        buttonsPanel.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.CENTER, 6, 0));
        mainPanel.add(buttonsPanel, java.awt.BorderLayout.WEST);

        add(mainPanel, java.awt.BorderLayout.CENTER);
    
<methods>public void <init>() ,public void <init>(java.awt.LayoutManager) ,public void <init>(boolean) ,public void <init>(java.awt.LayoutManager, boolean) ,public javax.accessibility.AccessibleContext getAccessibleContext() ,public javax.swing.plaf.PanelUI getUI() ,public java.lang.String getUIClassID() ,public void setUI(javax.swing.plaf.PanelUI) ,public void updateUI() <variables>private static final java.lang.String uiClassID