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

📄 vectorpanel.java

📁 java 开发的sip软电话 源码 jain sip
💻 JAVA
字号:
package net.java.mais.media.jmf;

/**
 * <p>Title: SIP Communicator</p>
 *
 * <p>Description: A SIP UA</p>
 *
 * <p>Copyright: Copyright (c) 2004</p>
 *
 * <p>Company: Network Research Team, Louis Pasteur University</p>
 *
 * @author Emil Ivov
 * @version 1.0
 */

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

import com.sun.media.util.JMFI18N;

import jmapps.registry.VectorEditor;
import jmapps.ui.MessageDialog;


public class VectorPanel extends JMPanel implements ListSelectionListener, ActionListener {

    VectorEditor        editor;
    int                 code;

    JTextField           textAdd;
    Vector              values;
    JList                listBox;

    JButton              buttonAdd;
    JButton              buttonUp;
    JButton              buttonDown;
    JButton              buttonRemove;
    JButton              buttonRestore;
    JButton              buttonCommit;


    public VectorPanel ( String title, VectorEditor ve, int code ) {
        super();

        int     i;
        int     nCount;
        JPanel   panelButtons;
        JPanel   panelValues;
        JPanel   panelAdd;
        JPanel   panel;
        JLabel   label;
        Object  objValue;

        this.editor = ve;
        this.code = code;

        setLayout ( new BorderLayout(6,6) );

        panelValues = new JPanel ( new BorderLayout(6,6) );
        this.add ( panelValues, BorderLayout.CENTER );
        panel = new JPanel ( new BorderLayout(6,6) );
        this.add ( panel, BorderLayout.EAST );
        panelButtons = new JPanel ( new GridLayout(0,1,6,6) );
        panel.add ( panelButtons, BorderLayout.NORTH );

        panelAdd = new JPanel ( new BorderLayout(6,6) );
        panelValues.add ( panelAdd, BorderLayout.NORTH );
        label = new JLabel ( title );
        panelAdd.add ( label, BorderLayout.NORTH );
        textAdd = new JTextField ( 20 );
        textAdd.addActionListener ( this );
        panelAdd.add ( textAdd, BorderLayout.CENTER );

        listBox = new JList (new DefaultListModel());
        listBox.addListSelectionListener ( this );
        panelValues.add ( new JScrollPane(listBox), BorderLayout.CENTER );
        values = editor.getList ( code );
        nCount = values.size ();
        for ( i = 0;  i < nCount;  i++ ) {
            objValue = values.elementAt ( i );
            ((DefaultListModel)listBox.getModel()).addElement ( objValue.toString() );
        }

        buttonAdd = new JButton(JMFI18N.getResource("jmfregistry.vector.add"));
        buttonAdd.addActionListener(this);
        panelButtons.add(buttonAdd);

        buttonUp = new JButton(JMFI18N.getResource("jmfregistry.vector.moveup"));
        buttonUp.addActionListener(this);
        panelButtons.add(buttonUp);

        buttonDown = new JButton(JMFI18N.getResource("jmfregistry.vector.movedown"));
        buttonDown.addActionListener(this);
        panelButtons.add(buttonDown);

        buttonRemove = new JButton(JMFI18N.getResource("jmfregistry.vector.remove"));
        buttonRemove.addActionListener(this);
        panelButtons.add(buttonRemove);

        buttonRestore = new JButton(JMFI18N.getResource("jmfregistry.vector.restore"));
        buttonRestore.addActionListener(this);
        panelButtons.add(buttonRestore);

        buttonCommit = new JButton(JMFI18N.getResource("jmfregistry.vector.commit"));
        buttonCommit.addActionListener(this);
        panelButtons.add(buttonCommit);

        updateButtons ();
    }

    private void refresh() {
        int     i;
        int     nCount;
        Object  objValue;

        listBox.removeAll();
        nCount = values.size ();
        for ( i = 0;  i < nCount;  i++ ) {
            objValue = values.elementAt ( i );
            ((DefaultListModel)listBox.getModel()).addElement ( objValue.toString() );
        }
        repaint ();
    }

    private void addNew() {
        String value = textAdd.getText();
        if ( value != null  &&  value.length() > 0  &&  editor.addToList(code,value)  ) {
            values.addElement(value);
            refresh();
        }
        else {
            MessageDialog.createErrorDialog ( getFrame(),
                                JMFI18N.getResource("jmfregistry.appname"),
                                JMFI18N.getResource("jmfregistry.error.additem") );
        }
        updateButtons ();
    }

    public void actionPerformed(ActionEvent ae) {
        Object source = ae.getSource();
        if (source == textAdd || source == buttonAdd)
            addNew();
        else if (source == buttonUp)
            moveUp();
        else if (source == buttonDown)
            moveDown();
        else if (source == buttonRemove)
            remove();
        else if (source == buttonRestore)
            restore();
        else if (source == buttonCommit)
            commit();
        updateButtons ();
    }

    public void valueChanged ( ListSelectionEvent event ) {
        int     index;

        index = listBox.getSelectedIndex ();
        editor.selectedIndex ( code, index );
        updateButtons ();
    }

    public void moveUp() {
        int     index;
        Object  element;

        index = listBox.getSelectedIndex ();
    if (index == 0)
        return;
        element = values.elementAt(index);
        values.removeElementAt(index);
        values.insertElementAt(element, index - 1);
        refresh();
        editor.setList ( code, values );
        listBox.setSelectedIndex ( index - 1 );
        updateButtons ();
    }

    public void moveDown() {
        int     index;
        Object  element;

        index = listBox.getSelectedIndex ();
    if (index == listBox.getModel().getSize() - 1)
        return;
        element = values.elementAt(index);
        values.removeElementAt(index);
        values.insertElementAt(element, index + 1);
        refresh();
        editor.setList(code, values);
        listBox.setSelectedIndex(index + 1);
        updateButtons ();
    }

    public void remove() {
        int     index;
        int     nCount;

        index = listBox.getSelectedIndex ();
        if ( index < 0 )
        {
            updateButtons ();
            return;
        }

        values.removeElementAt(index);
        refresh();
        editor.setList(code,values);
        nCount = values.size ();
        if ( index >= nCount )
            index--;

        if ( nCount > 0 ) {
            listBox.setSelectedIndex ( index );
        }
        else {
            index = -1;
        }

        editor.selectedIndex ( code, index );
        updateButtons ();
    }

    public void restore() {
        System.err.println("restoring");
        values = editor.getList(code);
        System.err.println("value = " + values);
        refresh();
        updateButtons ();
    }

    public void commit() {
        editor.commit(code);
        updateButtons ();
    }

    private void updateButtons () {
        int     index;
        int     nCount;

        nCount = values.size();
        index = listBox.getSelectedIndex();

        if ( index < 1 )
            buttonUp.setEnabled ( false );
        else
            buttonUp.setEnabled ( true );

        if ( index >= nCount - 1  ||  index < 0 )
            buttonDown.setEnabled ( false );
        else
            buttonDown.setEnabled ( true );

        if ( index < 0 )
            buttonRemove.setEnabled ( false );
        else
            buttonRemove.setEnabled ( true );
    }

}

⌨️ 快捷键说明

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