/* * 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 javax.swing.*; import net.java.sip.communicator.impl.gui.utils.*; /** * The <tt>DialpadDialog</tt> is a popup dialog containing a dialpad. * * @author Yana Stamcheva * @author Lyubomir Marinov */ public class DialpadDialog extends JDialog implements WindowFocusListener { /** * Creates a new instance of this class using the specified * <tt>dialPanel</tt>. * * @param dialPanel the <tt>DialPanel</tt> that we'd like to wrap. */ private DialpadDialog(DialPanel dialPanel) { dialPanel.setOpaque(false); BackgroundPanel bgPanel = new BackgroundPanel(); bgPanel.setLayout(new BorderLayout()); bgPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); bgPanel.add(dialPanel, BorderLayout.CENTER); Container contentPane = getContentPane(); contentPane.setLayout(new BorderLayout()); contentPane.add(bgPanel, BorderLayout.CENTER); this.setUndecorated(true); this.pack(); } /** * Creates an instance of the <tt>DialpadDialog</tt>. * * @param dtmfHandler handles DTMFs. */ public DialpadDialog(final DTMFHandler dtmfHandler) { this(new DialPanel(dtmfHandler)); this.setModal(false); addWindowListener( new WindowAdapter() { @Override public void windowClosed(WindowEvent e) { dtmfHandler.removeParent(DialpadDialog.this); } @Override public void windowOpened(WindowEvent e) { dtmfHandler.addParent(DialpadDialog.this); } }); } /** * New panel used as background for the dialpad which would be painted with * round corners and a gradient background. */ private static class BackgroundPanel extends JPanel { /** * Calls <tt>super</tt>'s <tt>paintComponent</tt> method and then adds * background with gradient. * * @param g a reference to the currently valid <tt>Graphics</tt> object */ @Override public void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2 = (Graphics2D) g; int width = getWidth(); int height = getHeight(); GradientPaint p = new GradientPaint(width / 2, 0, Constants.GRADIENT_DARK_COLOR, width / 2, height, Constants.GRADIENT_LIGHT_COLOR); g2.setPaint(p); g2.fillRoundRect(0, 0, width, height, 10, 10); g2.setColor(Constants.GRADIENT_DARK_COLOR); g2.drawRoundRect(0, 0, width - 1, height - 1, 10, 10); } } /** * Dummy implementation. * * @param e unused */ public void windowGainedFocus(WindowEvent e) { } /** * Dummy implementation. * * @param e unused */ public void windowLostFocus(WindowEvent e) { this.removeWindowFocusListener(this); this.setVisible(false); } }