/*
* Jitsi, the OpenSource Java VoIP and Instant Messaging client.
*
* Copyright @ 2015 Atlassian Pty Ltd
*
* 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 net.java.sip.communicator.impl.gui.main.call;
import java.awt.*;
import java.awt.event.*;
import net.java.sip.communicator.impl.gui.utils.*;
/**
* Implements a <tt>Button</tt> which allows closing/hiding the visual
* <tt>Component</tt> displaying the video streaming from the local peer/user to
* the remote peers.
*
* @author Yana Stamcheva
* @author Lyubomir Marinov
*/
public class CloseLocalVisualComponentButton
extends Button
implements MouseListener
{
private static final long serialVersionUID = 0L;
private final Image image;
/**
* The facility which aids this instance in the dealing with the
* video-related information. Since this <tt>Button</tt> is displayed on top
* of the visual <tt>Component</tt> depicting the video streaming from the
* local peer/user to the remote peer(s), it only invokes
* {@link UIVideoHandler2#setLocalVideoVisible(boolean)} with <tt>false</tt>
* in order to close/hide the <tt>Component</tt> in question.
*/
private final UIVideoHandler2 uiVideoHandler;
/**
* Initializes a new <tt>CloseLocalVisualComponentButton</tt> instance which
* is to allow closing/hiding the visual <tt>Component</tt> displaying the
* video streaming from the local peer/user to the remote peer(s).
*
* @param uiVideoHandler the facility which is to aid the new instance in
* the dealing with the video-related information and which represents the
* indicator which determines whether the visual <tt>Component</tt>
* displaying the video streaming from the local peer/user to the remote
* peer(s) is to be visible
*/
public CloseLocalVisualComponentButton(UIVideoHandler2 uiVideoHandler)
{
if (uiVideoHandler == null)
throw new NullPointerException("uiVideoHandler");
this.uiVideoHandler = uiVideoHandler;
image = ImageLoader.getImage(ImageLoader.CLOSE_VIDEO);
int buttonWidth = image.getWidth(this) + 5;
int buttonHeight = image.getHeight(this) + 5;
setPreferredSize(new Dimension(buttonWidth, buttonHeight));
setSize(new Dimension(buttonWidth, buttonHeight));
addMouseListener(this);
}
@Override
public void paint(Graphics g)
{
g.setColor(Color.GRAY);
g.fillRect(0, 0, getWidth(), getHeight());
g.drawImage(image,
getWidth()/2 - image.getWidth(this)/2,
getHeight()/2 - image.getHeight(this)/2, this);
}
public void mouseClicked(MouseEvent event)
{
uiVideoHandler.setLocalVideoVisible(false);
}
public void mouseEntered(MouseEvent event) {}
public void mouseExited(MouseEvent event) {}
public void mousePressed(MouseEvent event) {}
public void mouseReleased(MouseEvent event) {}
}