package org.limewire.ui.swing.advanced;

import java.awt.BorderLayout;
import java.awt.Color;

import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.SwingConstants;

import org.limewire.ui.swing.util.I18n;
import org.limewire.ui.swing.util.LogUtils;

import com.google.inject.Inject;

/**
 * An Advanced Tools tab panel that displays the console.
 */
public class ConsolePanel extends TabPanel {
    
    private BorderLayout panelLayout = new BorderLayout();
    private JLabel naLabel = new JLabel();
    
    private Console console;

    /**
     * Constructs a ConsolePanel with the specified Console component. 
     */
    @Inject
    public ConsolePanel(Console console) {
        this.console = console;
        initComponents();
    }
    
    /**
     * Initializes the components in the container.
     */
    private void initComponents() {
        setBorder(BorderFactory.createEmptyBorder(12, 12, 12, 12));
        setLayout(panelLayout);
        
        if (LogUtils.isLog4JAvailable()) {
            console.setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY));
            add(console, BorderLayout.CENTER);
            
        } else {
            naLabel.setText(I18n.tr("Console not available"));
            naLabel.setHorizontalAlignment(SwingConstants.CENTER);
            naLabel.setVerticalAlignment(SwingConstants.CENTER);
            add(naLabel, BorderLayout.CENTER);
        }
    }
    
    /**
     * Sets the background color for the panel.
     */
    @Override
    public void setBackground(Color bgColor) {
        super.setBackground(bgColor);
        if (console != null) {
            console.setBackground(bgColor);
        }
    }
    
    @Override
    public boolean isTabEnabled() {
        return true;
    }

    @Override
    public void initData() {
        console.attachLogs();
    }

    @Override
    public void dispose() {
        console.removeLogs();
    }
}
