/**
 * Copyright (C) 2004-2011 Jive Software. All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.jivesoftware.sparkimpl.preference.groupchat;

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;

import javax.swing.BorderFactory;
import javax.swing.JCheckBox;
import javax.swing.JPanel;

import org.jivesoftware.resource.Res;
import org.jivesoftware.spark.component.VerticalFlowLayout;
import org.jivesoftware.spark.util.ResourceUtils;

/**
 * The Preference UI used to handle changing of Chat Preferences.
 */
public class GroupChatPreferencePanel extends JPanel {
    private final JCheckBox highlightMyName 		= new JCheckBox();
    private final JCheckBox highlightMyText 		= new JCheckBox();
    private final JCheckBox highlightPopName		= new JCheckBox();
    private final JCheckBox showjoinleavemessage 	= new JCheckBox();
    private final JCheckBox showroleicons 	= new JCheckBox();
    private final JCheckBox _autoAcceptInvites = new JCheckBox();
    private final JCheckBox _randomcolors = new JCheckBox();
    private final JCheckBox inviteToBookmark = new JCheckBox();

    private final JPanel gCPanel = new JPanel();

    public GroupChatPreferencePanel() {
        // Build the UI
        createUI();
    }

    private void createUI() {
        setLayout(new VerticalFlowLayout());

        ResourceUtils.resButton(highlightMyName		, Res.getString("menuitem.add.groupchat.myname"));
        ResourceUtils.resButton(highlightMyText		, Res.getString("menuitem.add.groupchat.mytext"));
        ResourceUtils.resButton(highlightPopName	, Res.getString("menuitem.add.groupchat.popname"));
        ResourceUtils.resButton(showjoinleavemessage	, Res.getString("menuitem.add.groupchat.showjoinleavemessage"));
        ResourceUtils.resButton(showroleicons		, Res.getString("menuitem.add.groupchat.showrolesinsteadofstatus"));
        ResourceUtils.resButton(_autoAcceptInvites 	, Res.getString("menuitem.add.groupchat.auto.accept.invite"));
        ResourceUtils.resButton(_randomcolors	 	, Res.getString("menuitem.add.groupchat.random.colors"));
        ResourceUtils.resButton(inviteToBookmark       , Res.getString("menuitem.add.groupchat.invitetobookmark"));

        gCPanel.setBorder(BorderFactory.createTitledBorder(Res.getString("title.group.chat.settings")));

        add(gCPanel);

        gCPanel.setLayout(new GridBagLayout());

        gCPanel.add(highlightMyName	, new GridBagConstraints(0, 0, 2, 1, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
        gCPanel.add(highlightMyText	, new GridBagConstraints(0, 1, 2, 1, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
        gCPanel.add(_randomcolors	, new GridBagConstraints(0, 2, 2, 1, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
        gCPanel.add(highlightPopName	, new GridBagConstraints(0, 3, 2, 1, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
        gCPanel.add(showjoinleavemessage, new GridBagConstraints(0, 4, 2, 1, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
        gCPanel.add(showroleicons	, new GridBagConstraints(0, 5, 2, 1, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
        gCPanel.add(_autoAcceptInvites	, new GridBagConstraints(0, 6, 2, 1, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
        gCPanel.add(inviteToBookmark  , new GridBagConstraints(0, 7, 2, 1, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
    }

    public void setMucHighNameEnabled(boolean mucNHigh) {
        highlightMyName.setSelected(mucNHigh);
    }

    public void setMucHighTextEnabled(boolean mucTHigh) {
        highlightMyText.setSelected(mucTHigh);
    }

    public void setMuchHighToastEnabled(boolean mucPHigh) {
        highlightPopName.setSelected(mucPHigh);
    }

    public void setShowJoinLeaveMessagesEnabled(boolean mucPHigh) {
	showjoinleavemessage.setSelected(mucPHigh);
    }

    public void setShowRoleIconInsteadStatusIcon(boolean roleicons){
	showroleicons.setSelected(roleicons);
    }

    public boolean isShowJoinLeaveMessagesEnabled() {
        return showjoinleavemessage.isSelected();
    }

    public boolean isMucHighNameEnabled() {
        return highlightMyName.isSelected();
    }

    public boolean isMucHighTextEnabled() {
        return highlightMyText.isSelected();
    }

    public boolean isMucHighToastEnabled() {
        return highlightPopName.isSelected();
    }

    public boolean isShowingRoleIcons() {
	return showroleicons.isSelected();
    }

    public void setAutoAcceptMuc(boolean accept) {
	_autoAcceptInvites.setSelected(accept);
    }

    public boolean isAutoAcceptMuc() {
	return _autoAcceptInvites.isSelected();
    }

    public void setRandomColors(boolean random) {
	_randomcolors.setSelected(random);
    }

    public boolean isRandomColors() {
	return _randomcolors.isSelected();
    }

    public void setInviteToBookmark(boolean invite) {
        inviteToBookmark.setSelected(invite);
    }

    public boolean isInviteToBookmark() {
        return inviteToBookmark.isSelected();
    }
}
