Package lcmc.cluster.ui

Source Code of lcmc.cluster.ui.ClusterTab

/*
* This file is part of DRBD Management Console by LINBIT HA-Solutions GmbH
* written by Rasto Levrinc.
*
* Copyright (C) 2009, LINBIT HA-Solutions GmbH.
* Copyright (C) 2011-2012, Rastislav Levrinc.
*
* DRBD Management Console is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as published
* by the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* DRBD Management Console is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with drbd; see the file COPYING.  If not, write to
* the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
*/

package lcmc.cluster.ui;

import java.awt.BorderLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.inject.Inject;
import javax.inject.Named;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;

import lcmc.cluster.ui.widget.WidgetFactory;
import lcmc.cluster.domain.Cluster;
import lcmc.common.ui.Browser;
import lcmc.cluster.ui.wizard.ClusterPresenter;
import lcmc.common.ui.utils.MyButton;
import lcmc.common.domain.util.Tools;

/**
* An implementation of a cluster tab, that contains host views of the hosts,
* that are in the cluster.
*/
@Named
public final class ClusterTab extends JPanel {
    private Cluster cluster;
    private JLabel labelTitle;
    @Inject
    private EmptyViewPanel emptyViewPanel;
    @Inject
    private ClusterPresenter clusterPresenter;
    @Inject
    private ClusterViewPanel clusterViewPanel;

    public static final ImageIcon CLUSTER_ICON = Tools.createImageIcon(Tools.getDefault("ClustersPanel.ClusterIcon"));
    @Inject
    private WidgetFactory widgetFactory;

    public void initWithCluster(final Cluster cluster0) {
        this.cluster = cluster0;
        if (cluster != null) {
            cluster.setClusterTab(this);
            labelTitle = new JLabel(cluster.getName());
        }

        setLayout(new BorderLayout());
        setBackground(Tools.getDefaultColor("ViewPanel.Status.Background"));
        if (cluster == null) {
            emptyViewPanel.setDisabledDuringLoad(false);
            emptyViewPanel.init();
            add(emptyViewPanel);
        }
    }

    public void addClusterView() {
        if (cluster.hostsCount() > 0) {
            clusterViewPanel.init(cluster);
            add(clusterViewPanel);
        }
        repaint();
    }

    public Cluster getCluster() {
        return cluster;
    }

    @Override
    public String getName() {
        return getClusterName();
    }

    public JLabel getLabelTitle() {
        return labelTitle;
    }

    private String getClusterName() {
        if (cluster == null) {
            return null;
        }
        return cluster.getName();
    }

    public JPanel createTabComponentWithCloseButton() {
        final JPanel tabPanel = new JPanel(new GridBagLayout());
        tabPanel.setOpaque(false);
        final JLabel iconLabel = new JLabel(CLUSTER_ICON);

        final MyButton clusterButton = getCloseButton();

        final GridBagConstraints gbc = new GridBagConstraints();
        gbc.gridx = 0;
        gbc.gridy = 0;
        gbc.weightx = 0.0;
        tabPanel.add(iconLabel, gbc);

        gbc.gridx++;
        gbc.weightx = 1.0;
        tabPanel.add(labelTitle, gbc);

        gbc.gridx++;
        gbc.weightx = 0.0;
        tabPanel.add(clusterButton, gbc);
        return tabPanel;
    }

    private MyButton getCloseButton() {
        final MyButton closeButton = widgetFactory.createButton("X");
        closeButton.setBackgroundColor(Browser.STATUS_BACKGROUND);
        closeButton.setMargin(new Insets(0, 0, 0, 0));
        closeButton.setIconTextGap(0);

        final ActionListener closeAction =
                new ActionListener() {
                    @Override
                    public void actionPerformed(final ActionEvent e) {
                        clusterPresenter.onCloseCluster(cluster);
                    }
                };
        closeButton.addActionListener(closeAction);
        return closeButton;
    }
}
TOP

Related Classes of lcmc.cluster.ui.ClusterTab

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.