⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 featurecallscreening.java

📁 这是一个用java和xml编写的流媒体服务器管理软件
💻 JAVA
字号:
/* * ==================================================================== * The Vovida Software License, Version 1.0 *  * Copyright (c) 2000 Vovida Networks, Inc.  All rights reserved. *  * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: *  * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. *  * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. *  * 3. The names "VOCAL", "Vovida Open Communication Application Library", * and "Vovida Open Communication Application Library (VOCAL)" must * not be used to endorse or promote products derived from this * software without prior written permission. For written * permission, please contact vocal@vovida.org. *  * 4. Products derived from this software may not be called "VOCAL", nor * may "VOCAL" appear in their name, without prior written * permission of Vovida Networks, Inc. *  * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND * NON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL VOVIDA * NETWORKS, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT DAMAGES * IN EXCESS OF $1,000, NOR FOR ANY INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. *  * ==================================================================== *  * This software consists of voluntary contributions made by Vovida * Networks, Inc. and many individuals on behalf of Vovida Networks, * Inc.  For more information on Vovida Networks, Inc., please see * <http://www.vovida.org/>. *  */package vocal.userEditor;import javax.swing.AbstractAction;import javax.swing.Box;import javax.swing.JPopupMenu;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.event.ChangeEvent;import javax.swing.event.ChangeListener;import javax.swing.table.DefaultTableModel;import java.awt.Dimension;import java.awt.event.ActionEvent;import java.awt.event.InputEvent;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.util.StringTokenizer;class FeatureCallScreening extends Feature{  private DefaultTableModel model;  private JTable table;  private JPopupMenu menu;  private CallScreeningTableEditor tableEditor =     new CallScreeningTableEditor();  private MouseAdapter listener;  private JScrollPane scroller;  protected FeatureCallScreening(String[] newGroups, String featureName,           PServerInterface psInt)  {    super(newGroups, featureName, psInt);    model = new DefaultTableModel(new String[]    {      "Name", "Number"    }, 0)    {      public boolean isCellEditable(int row, int column)      {        return false;      }    };    table = new JTable(model);    table.setPreferredScrollableViewportSize(new Dimension(this.getWidth(),             50));    table.setCellSelectionEnabled(false);    table.setColumnSelectionAllowed(false);    scroller = new JScrollPane(table);    scroller.setToolTipText("right-click to edit list of phone numbers to screen");    userLayout.add(Box.createVerticalStrut(5));    userLayout.add(scroller);    menu = new JPopupMenu();    AbstractAction action = new AbstractAction("Add")    {      public void actionPerformed(ActionEvent e)      {        tableEditor.pack();        tableEditor.setVisible(true);        if (tableEditor.isOkClicked())        {          String name = tableEditor.getName();          String number = tableEditor.getNumber();          model.addRow(new String[]          {            name, number          });          model.fireTableDataChanged();        }        tableEditor.clear();      }    };    menu.add(action);    action = new AbstractAction("Remove")    {      public void actionPerformed(ActionEvent e)      {        while (table.getSelectedRowCount() > 0)        {          int row = table.getSelectedRow();          model.removeRow(row);        }        model.fireTableDataChanged();      }    };    menu.add(action);    class ScreeningTableListener extends MouseAdapter    {      public void mouseReleased(MouseEvent e)      {        if ((e.getModifiers() & InputEvent.BUTTON3_MASK)             == InputEvent.BUTTON3_MASK)        {          FeatureCallScreening.this.menu.show(FeatureCallScreening.this,                   e.getX(), e.getY());        }      }    }    listener = new ScreeningTableListener();    table.addMouseListener(listener);    scroller.addMouseListener(listener);    addChangeListener();  }  public String getData(int dataId)  {    switch (dataId)    {      case UserTableModel.CALL_SCREEN_ADMIN_ENABLED:      {        if (adminEnabledChanged)        {          return adminEnabled.isSelected() + "";        }      }                                 // end case admin enabled      case UserTableModel.CALL_SCREEN_GROUP:      {        if (!featureGroups.getSelectedItem().equals(""))        {          return featureGroups.getSelectedItem().toString();        }      }                                 // end case group        break;      case UserTableModel.CALL_SCREEN_NUMBERS:      {        String callScreenData = "";        for (int row = 0; row < model.getRowCount(); row++)        {          if (!model.getValueAt(row,                   0).equals(""))        // don't add blank lines as aliases          {            callScreenData += model.getValueAt(row, 0) + ",";            callScreenData += model.getValueAt(row, 1) + ";";          }        }        return callScreenData;      }                                 // end case numbers    }                                   // end switch    return null;  }     // end getData  public boolean setData(int dataId, String data)  {    switch (dataId)    {      case UserTableModel.CALL_SCREEN_ADMIN_ENABLED:      {        if (data.equalsIgnoreCase("true"))        {          adminEnabled.setSelected(true);          enableUserFields(true);        }        else        {          adminEnabled.setSelected(false);          enableUserFields(false);        }        return true;      }      case UserTableModel.CALL_SCREEN_GROUP:      {        featureGroups.setSelectedItem(data);        return true;      }      case UserTableModel.CALL_SCREEN_NUMBERS:      {        StringTokenizer tokenizer = new StringTokenizer(data, ",;", false);        String name;        String number;        while (tokenizer.hasMoreTokens())        {          name = tokenizer.nextToken();          number = tokenizer.nextToken();          model.addRow(new String[]          {            name, number          });        }        model.fireTableDataChanged();        return true;      }    }    return false;  }     // end method setData  public void clearFeatureSpecificFields()  {    if (model.getRowCount() > 0)    {      int numRows = model.getRowCount();      for (int i = 0; i < numRows; i++)      {        model.removeRow(0);      }    }  }     // end method clearFeatureSpecificFields  public void setMode(int mode)  {    // nothing to do so far  }  protected void addChangeListener()  {    adminEnabled.addChangeListener(new ChangeListener()    {      public void stateChanged(ChangeEvent e)      {        if (adminEnabled.isSelected())        {          enableUserFields(true);        }        else        {          enableUserFields(false);        }      }    });  }  private void enableUserFields(boolean enable)  {    table.setEnabled(enable);    scroller.setEnabled(enable);    if (!enable)    {      table.removeMouseListener(listener);      scroller.removeMouseListener(listener);      table.removeMouseListener(listener);      scroller.removeMouseListener(listener);      table.setRowSelectionAllowed(false);    }    else    {      table.addMouseListener(listener);      scroller.addMouseListener(listener);      table.setRowSelectionAllowed(true);    }  }  protected void disableFeature()  {    enableUserFields(false);    // This feature will be set ON if there are any items in the call screening    // table. So remove them all.    int rows = table.getRowCount();    for (int i = 0; i < rows; i++)    {      model.removeRow(0);    }  }  protected void enableFeature()  {    enableUserFields(adminEnabled.isSelected());  }  public boolean isDataValid()  {    return true;        // no validating fields avaliable for this component yet  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -