//Copyright © 2009 by JMethod.com. All rights
reserved.
import java.awt.Font;
import java.awt.Insets;
import java.awt.Toolkit;
import javax.swing.DefaultListModel;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import javax.swing.ListSelectionModel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import com.jmethod.jdialup.JDNotification;
import com.jmethod.jdialup.JDState;
import com.jmethod.jdialup.JDial;
import com.jmethod.jdialup.JDException;
import java.awt.BorderLayout;
import com.jmethod.jdialup.*;
public class JDialSample extends javax.swing.JFrame {
private class SampleNotification implements JDNotification {
public void notify( String entry, int state, int error ) {
String mes;
if ( state == JDState.DIAL_TIMEOUT ) {
mes = entry + ": state[" + state + "] --> DIAL
TIMEOUT";
} else {
mes = entry + ": state[" + state + "] --> " + JDState.getStateString(
state );
}
if ( error != 0 ) {
// if there is error
mes = entry + ": error[" + error + "] --> " + JDial.getErrorMessage(
error );
}
final String mes2 = mes;
System.out.println( mes );
SwingUtilities.invokeLater(
// to be executed in Swing thread
new Runnable() {
public void run() {
textArea.setText( textArea.getText() + mes2 + "\r\n" );
textArea.setCaretPosition( textArea.getText().length() );
}
});
} // notify
} //
class SampleNotification
private JDial jd
= null;
private SampleNotification
sampleNotification = new SampleNotification();
private DefaultListModel
entryListModel = new DefaultListModel();
public JDialSample() {
initComponents();
entryList.setModel( entryListModel );
try {
// create JDial instance and set
sampleNotification as a feedback class (notifier)
jd = new JDial( sampleNotification );
} catch ( JDException ex ) {
System.err.println( ex );
System.err.println( ex.getCause() );
System.exit( 0 );
} // try
this.updateList();
int wFrame = 450;
int hFrame = 220 + 154;
this.setSize( new java.awt.Dimension( wFrame, hFrame ) );
// --------------------- Center the window
-----------------------
int wScreen = (int)
Toolkit.getDefaultToolkit().getScreenSize().getWidth();
int hScreen = (int)
Toolkit.getDefaultToolkit().getScreenSize().getHeight();
this.setLocation( ( wScreen - wFrame ) / 2, ( hScreen -
hFrame ) / 2 );
//
---------------------------------------------------------------
this.setResizable( false );
entryList.setSelectedIndex( 0 );
// setting ShutDownHook
Runtime.getRuntime().addShutdownHook( new Thread() {
public void run() {
endApp();
}
});
} //
JDialSample
//
ShutDownHook method
private void endApp() {
String[] conns = jd.getDialingConns();
if ( conns != null ) {
for ( int i = 0; i < conns.length; i++ ) {
jd.hangUp( conns[i] );
} // for
} // if
} //
endApp
private void initComponents() {
createButton = new javax.swing.JButton();
editButton = new javax.swing.JButton();
deleteButton = new javax.swing.JButton();
renameButton = new javax.swing.JButton();
updateButton = new javax.swing.JButton();
connectButton = new javax.swing.JButton();
hangupButton = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
jScrollPane2 = new javax.swing.JScrollPane();
entryList = new javax.swing.JList();
textArea = new javax.swing.JTextArea();
textArea.setEditable( false );
textArea.setFont( new Font("Monospaced", 0, 12 ) );
createModemButton = new javax.swing.JButton();
getContentPane().setLayout(null);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("JDialUp API Sample");
createModemButton.setText("Create Modem
Entry");
createModemButton.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
createModemButtonAp(evt);
}
});
getContentPane().add(createModemButton);
createModemButton.setMargin( new Insets( 0, 0, 0, 0 ) );
createModemButton.setBounds(315, 10, 110, 23);
createButton.setText("Create Entry");
createButton.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
createButtonAp(evt);
}
});
getContentPane().add(createButton);
createButton.setBounds(315, 40, 110, 23);
editButton.setText("Edit Entry");
editButton.addActionListener(new
java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent
evt) {
editButtonAp(evt);
}
});
getContentPane().add(editButton);
editButton.setBounds(315, 70, 110, 23);
deleteButton.setText("Delete Entry");
deleteButton.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
deleteButtonAp(evt);
}
});
getContentPane().add(deleteButton);
deleteButton.setBounds(315, 130, 110, 23);
renameButton.setText("Rename Entry");
renameButton.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
renameButtonAp(evt);
}
});
getContentPane().add(renameButton);
renameButton.setBounds(315, 100, 110, 23);
updateButton.setText("Update Entries");
updateButton.addActionListener(new
java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent
evt) {
updateButtonAp(evt);
}
});
getContentPane().add(updateButton);
updateButton.setBounds(315, 165, 110, 23);
connectButton.setText("Connect");
connectButton.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
connectButtonAp(evt);
}
});
getContentPane().add(connectButton);
connectButton.setBounds(10, 314, 100, 23);
hangupButton.setText("Hang up");
hangupButton.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
hangupButtonAp(evt);
}
});
getContentPane().add(hangupButton);
hangupButton.setBounds(117, 314, 110, 23);
jScrollPane1.setViewportView(entryList);
jScrollPane2.setViewportView(textArea);
getContentPane().add(jScrollPane1);
jScrollPane1.setBounds(10, 10, 290, 143);
getContentPane().add(jScrollPane2);
jScrollPane2.setBounds(10, 165, 290, 143);
} //
initComponents
private void updateList() {
SwingUtilities.invokeLater(
// to be executed in Swing thread
new Runnable() {
public void run() {
entryListModel.clear();
try {
String[]
names = jd.getEntries();
for ( int i=0; i < names.length;
i++ ) {
entryListModel.addElement( names[i] );
} // for
entryList.repaint();
} catch ( Exception e ) {
} // try
entryList.setSelectedIndex(
0 );
}
});
} //
updateList
private void hangupButtonAp(java.awt.event.ActionEvent
evt) {
int savedIndex = this.entryList.getSelectedIndex();
Object[] entries = this.entryList.getSelectedValues();
if ( entries == null
) return;
for ( int i = 0; i < entries.length; i++ ) {
jd.hangUp( (String) entries[i] );
} // for
entryList.setSelectedIndex( savedIndex );
} //
hangupButtonAp
private void
connectButtonAp(java.awt.event.ActionEvent evt) {
int savedIndex = this.entryList.getSelectedIndex();
Object[] entries = this.entryList.getSelectedValues();
if ( entries == null
) return;
for ( int i = 0; i < entries.length; i++ ) {
jd.dialAsyncProcess( (String)
entries[i] );
} // for
entryList.setSelectedIndex( savedIndex );
} //
connectButtonAp
private void updateButtonAp(java.awt.event.ActionEvent
evt) {
this.updateList();
} //
updateButtonAp
private void renameButtonAp(java.awt.event.ActionEvent
evt) {
Object[] entries = this.entryList.getSelectedValues();
if ( entries == null
) return;
String message = "New entry name";
for ( int i = 0; i < entries.length; i++ ) {
String newname = (String)
JOptionPane.showInputDialog( this, message, "Rename entry",
JOptionPane.PLAIN_MESSAGE, null, null, (String) entries[i] );
if ( newname != null && !newname.equals( (String)
entries[i] ) ) {
jd.renameEntry( (String)
entries[i], newname );
} // if
} // for
this.updateList();
} //
renameButtonAp
private void deleteButtonAp(java.awt.event.ActionEvent
evt) {
Object[] entries = this.entryList.getSelectedValues();
if ( entries == null
) return;
for ( int i = 0; i < entries.length; i++ ) {
int reply = JOptionPane.showConfirmDialog( this,
"Delete
" +
entries[i] + "?",
"Confirm" ,
JOptionPane.YES_NO_OPTION,
JOptionPane.PLAIN_MESSAGE);
if ( reply == JOptionPane.YES_OPTION ) {
jd.deleteEntry( (String)
entries[i] );
} // if
} // for
this.updateList();
} //
deleteButtonAp
private void editButtonAp(java.awt.event.ActionEvent
evt) {
Thread runner = new Thread() {
public void run() {
SwingUtilities.invokeLater(
// to be executed in Swing
thread
new Runnable() {
public void run() {
int savedIndex = JDialSample.this.entryList.getSelectedIndex();
String entry = (String) JDialSample.this.entryList.getSelectedValue();
if (entry == null) return;
jd.showEditEntryDialog( entry );
entryList.setSelectedIndex( savedIndex );
}
});
} // run
}; // class
runner.start();
} //
editButtonAp
private void createButtonAp(java.awt.event.ActionEvent
evt) {
Thread runner = new Thread() {
public void run() {
jd.showCreateEntryDialog();
updateList();
} // run
}; // class
runner.start();
} //
createButtonAp
private void
createModemButtonAp(java.awt.event.ActionEvent evt) {
if ( jd.getModemDeviceNames() == null ||
jd.getModemDeviceNames().length == 0
) {
javax.swing.JOptionPane.showMessageDialog(
this, "There are no modem devices" );
return;
} // if
ModemEntryDialog modemDialog = new ModemEntryDialog( jd );
modemDialog.setModal( true );
modemDialog.setSize( new java.awt.Dimension( 300, 340 ) );
modemDialog.setLocationRelativeTo( this );
modemDialog.updateModemList();
modemDialog.setVisible( true );
modemDialog.dispose();
this.updateList();
} //
createModemButtonAp
public static void main( String args[] ){
try {
UIManager.setLookAndFeel( "com.sun.java.swing.plaf.windows.WindowsLookAndFeel" );
} catch( Exception ex ) {
} // try
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new JDialSample().setVisible(true);
}
});
} //
main
private javax.swing.JButton
connectButton;
private javax.swing.JButton
deleteButton;
private javax.swing.JButton
hangupButton;
private javax.swing.JButton
editButton;
private javax.swing.JList
entryList;
private javax.swing.JScrollPane
jScrollPane1;
private javax.swing.JButton
createButton;
private javax.swing.JButton
updateButton;
private javax.swing.JButton
renameButton;
private javax.swing.JScrollPane
jScrollPane2;
private javax.swing.JTextArea
textArea;
private javax.swing.JButton
createModemButton;
} // class JDialSample
class ModemEntryDialog extends JDialog {
private JDial jd = null;
protected ModemEntryDialog( JDial jd
) {
this.jd = jd;
initComponents();
setTitle( "Fill in data fields" );
this.setResizable( false );
} //
ModemEntryDialog
private void okButtonAp(java.awt.event.ActionEvent
evt) {
jd.createModemEntry( this.newModemEntryName.getText(),
(String)this.modemList.getSelectedValue(),
this.modemLoginField.getText(),
this.modemPasswordField.getText(),
this.phoneField.getText() );
this.setVisible( false );
} //
okButtonAp
private void cancelButtonAp(java.awt.event.ActionEvent
evt) {
this.setVisible( false );
} //
cancelButtonAp
private void initComponents() {
modemList = new javax.swing.JList();
scrollPane = new javax.swing.JScrollPane();
phoneLabel = new javax.swing.JLabel();
phoneField = new javax.swing.JTextField();
modemNameLabel = new javax.swing.JLabel();
newModemEntryName = new javax.swing.JTextField();
newModemEntryLabel = new javax.swing.JLabel();
modemLoginField = new javax.swing.JTextField();
loginLabel = new javax.swing.JLabel();
modemPasswordField = new javax.swing.JTextField();
modelPasswordLabel = new javax.swing.JLabel();
okButton = new javax.swing.JButton();
cancelButton = new javax.swing.JButton();
this.getContentPane().setLayout(null);
modemNameLabel.setText("Choose modem");
this.getContentPane().add(modemNameLabel);
modemNameLabel.setBounds(20, 10, 100, 14);
this.getContentPane().add(newModemEntryName);
newModemEntryName.setBounds(20, 100, 250, 20);
newModemEntryLabel.setText("Entry name");
this.getContentPane().add(newModemEntryLabel);
newModemEntryLabel.setBounds(20, 80, 90, 14);
this.getContentPane().add(modemLoginField);
modemLoginField.setBounds(20, 150, 250, 20);
loginLabel.setText("Login");
this.getContentPane().add(loginLabel);
loginLabel.setBounds(20, 130, 25, 14);
this.getContentPane().add(modemPasswordField);
modemPasswordField.setBounds(20, 200, 250, 20);
modelPasswordLabel.setText("Password");
this.getContentPane().add(modelPasswordLabel);
modelPasswordLabel.setBounds(20, 180, 60, 14);
modemListModel = new DefaultListModel();
modemList.setModel( modemListModel );
modemList.setSelectionMode(
ListSelectionModel.SINGLE_SELECTION );
scrollPane.setViewportView( modemList );
this.getContentPane().add( modemList );
modemList.setBounds(20, 30, 250, 40);
phoneLabel.setText("Phone #");
this.getContentPane().add(phoneLabel);
phoneLabel.setBounds(20, 230, 100, 14);
this.getContentPane().add(phoneField);
phoneField.setBounds(20, 250, 250, 20);
okButton.setText( "OK" );
this.getContentPane().add( okButton );
okButton.setBounds( 20, 279, 100, 23);
okButton.addActionListener(new java.awt.event.ActionListener()
{
public void
actionPerformed(java.awt.event.ActionEvent evt) {
okButtonAp(evt);
}
});
cancelButton.setText( "Cancel" );
this.getContentPane().add( cancelButton );
cancelButton.setBounds( 127, 279, 100, 23);
cancelButton.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
cancelButtonAp(evt);
}
});
} //
initComponents
protected void updateModemList() {
modemListModel.clear();
try {
String[] names =
jd.getModemDeviceNames();
for ( int i=0; i < names.length; i++ ) {
modemListModel.addElement( names[i] );
} // for
this.modemList.repaint();
this.modemList.setSelectedIndex( 0 );
} catch ( Exception e ) {
} // try
} //
updateModemList
private javax.swing.JLabel
phoneLabel;
private javax.swing.JTextField
phoneField;
private javax.swing.JLabel
loginLabel;
private javax.swing.JLabel
modelPasswordLabel;
private javax.swing.JTextField
modemLoginField;
private javax.swing.JLabel
modemNameLabel;
private javax.swing.JTextField
modemPasswordField;
private javax.swing.JLabel
newModemEntryLabel;
private javax.swing.JTextField
newModemEntryName;
private javax.swing.JScrollPane
scrollPane;
private DefaultListModel
modemListModel;
private javax.swing.JList
modemList;
private javax.swing.JButton
okButton;
private javax.swing.JButton
cancelButton;
} // class ModemEntryDialog