phonepad.java.svn-base
来自「开源项目openfire的完整源程序」· SVN-BASE 代码 · 共 192 行
SVN-BASE
192 行
/** * $Revision: $ * $Date: $ * * Copyright (C) 2007 Jive Software. All rights reserved. * * This software is published under the terms of the GNU Lesser Public License (LGPL), * a copy of which is included in this distribution. */package org.jivesoftware.sparkplugin.ui;import org.jivesoftware.sparkplugin.components.DialButton;import net.java.sipmack.softphone.SoftPhoneManager;import org.jivesoftware.spark.component.BackgroundPanel;import java.awt.Color;import java.awt.Component;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.Insets;import java.awt.event.ActionEvent;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import java.util.ArrayList;import java.util.List;import javax.swing.AbstractAction;import javax.swing.Action;import javax.swing.BorderFactory;import javax.swing.JPopupMenu;/** * */public class PhonePad extends BackgroundPanel { private TelephoneTextField callField; final List<DialButton> list = new ArrayList<DialButton>(); private JPopupMenu menu; public PhonePad() { setLayout(new GridBagLayout()); setOpaque(false); // Create First Row DialButton oneButton = new DialButton("", new DigitAction("1")); DialButton twoButton = new DialButton("ABC", new DigitAction("2")); DialButton threeButton = new DialButton("DEF", new DigitAction("3")); add(oneButton, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0)); add(twoButton, new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0)); add(threeButton, new GridBagConstraints(2, 1, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0)); // Create Second Row DialButton fourButton = new DialButton("GHI", new DigitAction("4")); DialButton fiveButton = new DialButton("JKL", new DigitAction("5")); DialButton sixButton = new DialButton("MNO", new DigitAction("6")); add(fourButton, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0)); add(fiveButton, new GridBagConstraints(1, 2, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0)); add(sixButton, new GridBagConstraints(2, 2, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0)); // Create Third Row DialButton sevenButton = new DialButton("PQRS", new DigitAction("7")); DialButton eightButton = new DialButton("TUV", new DigitAction("8")); DialButton nineButton = new DialButton("WXYZ", new DigitAction("9")); add(sevenButton, new GridBagConstraints(0, 3, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0)); add(eightButton, new GridBagConstraints(1, 3, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0)); add(nineButton, new GridBagConstraints(2, 3, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0)); // Create fourth Row DialButton asterisksButton = new DialButton("", new DigitAction("*")); DialButton zeroButton = new DialButton("", new DigitAction("0")); DialButton poundButton = new DialButton("", new DigitAction("#")); add(asterisksButton, new GridBagConstraints(0, 4, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0)); add(zeroButton, new GridBagConstraints(1, 4, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0)); add(poundButton, new GridBagConstraints(2, 4, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0)); list.add(zeroButton); list.add(oneButton); list.add(twoButton); list.add(threeButton); list.add(fourButton); list.add(fiveButton); list.add(sixButton); list.add(sevenButton); list.add(eightButton); list.add(nineButton); list.add(asterisksButton); list.add(poundButton); setBorder(BorderFactory.createLineBorder(new Color(197, 213, 230))); addKeyListener(new KeyAdapter() { public void keyTyped(KeyEvent keyEvent) { if (keyEvent.getKeyChar() == KeyEvent.VK_ESCAPE) { menu.setVisible(false); } else { numberEntered(keyEvent.getKeyChar()); } } }); } public String getNumber() { return callField.getText(); } public void setNumber(String number) { callField.setText(number); } public void numberEntered(char ch) { String number = String.valueOf(ch); for (DialButton button : list) { String name = button.getNumber(); if (name.equals(number)) { button.setBlock(true); button.doClick(); SoftPhoneManager.getInstance().getDTMFSounds().play(name); button.setBlock(false); } } } /** * Private Class that handles the Digit Button actions */ private class DigitAction extends AbstractAction { public DigitAction(String name) { super(name); } public void actionPerformed(ActionEvent e) { String number = (String)getValue(Action.NAME); if (callField != null) { callField.appendNumber(number); } SoftPhoneManager.getInstance().getDefaultGuiManager().sendDTMF(number); SoftPhoneManager.getInstance().getDTMFSounds().play(getValue(Action.NAME).toString()); } } public void showDialpad(TelephoneTextField callField) { menu = new JPopupMenu(); menu.setFocusable(false); menu.add(this); menu.pack(); this.callField = callField; menu.show(callField, 0, callField.getHeight()); } public void showDialpad(Component comp, boolean rightAligned) { menu = new JPopupMenu(); menu.setFocusable(false); menu.add(this); menu.pack(); if (rightAligned) { int width = (int)menu.getPreferredSize().getWidth(); menu.show(comp, -width + comp.getWidth(), comp.getHeight()); } else { menu.show(comp, 0, comp.getHeight()); } this.requestFocus(); } public void hide(){ if(menu != null){ menu.setVisible(false); } }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?