📄 vectorpanel.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 + -