phonepad.java

来自「开源项目openfire的完整源程序」· Java 代码 · 共 192 行

JAVA
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 + -
显示快捷键?