www.pudn.com > sms.rar > CMainWindow.java
// jSMSEngine API.
// An open-source API package for sending and receiving SMS via a GSM device.
// Copyright (C) 2002-2006, Thanasis Delenikas, Athens/GREECE
// Web Site: http://www.jsmsengine.org
//
// jSMSEngine is a package which can be used in order to add SMS processing
// capabilities in an application. jSMSEngine is written in Java. It allows you
// to communicate with a compatible mobile phone or GSM Modem, and
// send / receive SMS messages.
//
// jSMSEngine is distributed under the LGPL license.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
//
// jSMSServer GUI Application.
// This application is based on the old jSMSServer GUI, and provides a general purpose
// graphical interface. It can be used for a quick-start, if you don't want
// to mess around with the API itself.
// Please read jSMSServer.txt for further information.
//
import java.io.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;
import javax.swing.event.*;
class CMainWindow extends JFrame
{
private CSettings settings;
private jSMSServer jSmsServer;
private CMainThread service;
private CAboutDialog aboutDialog = null;
private JMenuBar menuBar;
private JMenu fileMenu, aboutMenu;
private JMenuItem mniConnect, mniDisconnect, mniExit;
private JMenuItem mniAbout;
private JLabel lblManuf, lblModel, lblSerialNo, lblIMSI, lblSwVersion, lblBattery, lblSignal, lblStatus;
private JTextField txtManuf, txtModel, txtSerialNo, txtIMSI, txtSwVersion, txtStatus;
private JProgressBar pgbBattery, pgbSignal;
private JLabel lblInFrom, lblInDate, lblInText;
private JTextField txtInFrom, txtInDate;
private JTextArea txtInText;
private JLabel lblOutTo, lblOutDate, lblOutText;
private JTextField txtOutTo, txtOutDate;
private JTextArea txtOutText;
private JLabel lblUpSince, lblTraffic, lblTrafficIn, lblTrafficOut;
private JTextField txtUpSince, txtTrafficIn, txtTrafficOut;
private JLabel lblInterfaces, lblInterfaceDB, lblInterfaceXML, lblInterfaceRMI;
private JLabel lblRawLogs, lblRawInLog, lblRawOutLog;
public CMainWindow(jSMSServer jSmsServer, CSettings settings)
{
this.jSmsServer = jSmsServer;
this.settings = settings;
this.settings.setMainWindow(this);
service = new CUserThread(jSmsServer, this, settings);
setTitle(CConstants.MAIN_WINDOW_TITLE);
setSize(750, 580);
setLocation(5, 5);
getContentPane().setLayout(new GridBagLayout());
menuBar = new JMenuBar();
fileMenu = new JMenu(CConstants.MENU_FILE_MAIN);
mniConnect = new JMenuItem(CConstants.MENU_FILE_OPTION_01);
mniConnect.addActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
service.connect(true);
}
});
mniDisconnect = new JMenuItem(CConstants.MENU_FILE_OPTION_02);
mniDisconnect.addActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
service.disconnect(true);
}
});
mniExit = new JMenuItem(CConstants.MENU_FILE_OPTION_99);
mniExit.addActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
System.exit(0);
}
});
fileMenu.add(mniConnect);
fileMenu.add(mniDisconnect);
fileMenu.addSeparator();
fileMenu.add(mniExit);
menuBar.add(fileMenu);
aboutMenu = new JMenu(CConstants.MENU_ABOUT_MAIN);
mniAbout = new JMenuItem(CConstants.MENU_ABOUT_OPTION_01);
mniAbout.addActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
if (aboutDialog == null) aboutDialog = new CAboutDialog(CMainWindow.this);
aboutDialog.setVisible(true);
}
});
aboutMenu.add(mniAbout);
menuBar.add(aboutMenu);
setJMenuBar(menuBar);
GridBagConstraints gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.WEST;
gbc.weightx = 100;
gbc.weighty = 100;
gbc.gridx = 0;
gbc.gridy = 0;
gbc.gridwidth = 1;
gbc.gridheight = 1;
gbc.insets.left = 5; gbc.insets.top = 5; gbc.insets.right = 5;
JPanel statusPanel = new JPanel();
statusPanel.setLayout(new GridBagLayout());
lblManuf = new JLabel(CConstants.LABEL_MANUFACTURER, JLabel.LEFT);
txtManuf = new JTextField("", 16);
txtManuf.setEditable(false);
gbc.gridx = 0;
gbc.gridy = 0;
statusPanel.add(lblManuf, gbc);
gbc.gridx = 1;
gbc.gridy = 0;
statusPanel.add(txtManuf, gbc);
lblModel = new JLabel(CConstants.LABEL_MODEL, JLabel.LEFT);
txtModel = new JTextField("", 16);
txtModel.setEditable(false);
gbc.gridx = 0;
gbc.gridy = 1;
statusPanel.add(lblModel, gbc);
gbc.gridx = 1;
gbc.gridy = 1;
statusPanel.add(txtModel, gbc);
lblSerialNo = new JLabel(CConstants.LABEL_SERIALNO, JLabel.LEFT);
txtSerialNo = new JTextField("", 20);
txtSerialNo.setEditable(false);
gbc.gridx = 0;
gbc.gridy = 2;
statusPanel.add(lblSerialNo, gbc);
gbc.gridx = 1;
gbc.gridy = 2;
statusPanel.add(txtSerialNo, gbc);
lblIMSI = new JLabel(CConstants.LABEL_IMSI, JLabel.LEFT);
txtIMSI = new JTextField("", 20);
txtIMSI.setEditable(false);
gbc.gridx = 0;
gbc.gridy = 3;
statusPanel.add(lblIMSI, gbc);
gbc.gridx = 1;
gbc.gridy = 3;
statusPanel.add(txtIMSI, gbc);
lblSwVersion = new JLabel(CConstants.LABEL_SWVERSION, JLabel.LEFT);
txtSwVersion = new JTextField("", 20);
txtSwVersion.setEditable(false);
gbc.gridx = 0;
gbc.gridy = 4;
statusPanel.add(lblSwVersion, gbc);
gbc.gridx = 1;
gbc.gridy = 4;
statusPanel.add(txtSwVersion, gbc);
gbc.insets.top = 15;
lblBattery = new JLabel(CConstants.LABEL_BATTERY, JLabel.LEFT);
pgbBattery = new JProgressBar(0, 100);
pgbBattery.setStringPainted(true);
gbc.gridx = 0;
gbc.gridy = 5;
statusPanel.add(lblBattery, gbc);
gbc.gridx = 1;
gbc.gridy = 5;
statusPanel.add(pgbBattery, gbc);
gbc.insets.top = 5;
lblSignal = new JLabel(CConstants.LABEL_SIGNAL, JLabel.LEFT);
pgbSignal = new JProgressBar(0, 100);
pgbSignal.setStringPainted(true);
gbc.gridx = 0;
gbc.gridy = 6;
statusPanel.add(lblSignal, gbc);
gbc.gridx = 1;
gbc.gridy = 6;
statusPanel.add(pgbSignal, gbc);
gbc.insets.top = 15;
gbc.insets.bottom = 8;
lblStatus = new JLabel(CConstants.LABEL_STATUS, JLabel.LEFT);
txtStatus = new JTextField(CConstants.STATUS_DISCONNECTED, 20);
txtStatus.setEditable(false);
txtStatus.setHorizontalAlignment(JTextField.CENTER);
txtStatus.setFont(new Font("SansSerif", Font.BOLD, 12));
gbc.gridx = 0;
gbc.gridy = 7;
statusPanel.add(lblStatus, gbc);
gbc.gridx = 1;
gbc.gridy = 7;
statusPanel.add(txtStatus, gbc);
statusPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), CConstants.BORDER_MOBILE_INFORMATION));
gbc.anchor = GridBagConstraints.NORTH;
gbc.weightx = 100;
gbc.weighty = 100;
gbc.gridx = 0;
gbc.gridy = 0;
gbc.gridwidth = 1;
gbc.gridheight = 1;
gbc.insets.left = 5; gbc.insets.top = 5;
getContentPane().add(statusPanel, gbc);
gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.WEST;
gbc.weightx = 100;
gbc.weighty = 100;
gbc.gridx = 0;
gbc.gridy = 0;
gbc.gridwidth = 1;
gbc.gridheight = 1;
gbc.insets.left = 5; gbc.insets.top = 5; gbc.insets.right = 5;
JPanel incomingPanel = new JPanel();
incomingPanel.setLayout(new GridBagLayout());
lblInFrom = new JLabel(CConstants.LABEL_INCOMING_FROM, JLabel.LEFT);
txtInFrom = new JTextField("", 16);
txtInFrom.setEditable(false);
gbc.gridx = 0;
gbc.gridy = 0;
incomingPanel.add(lblInFrom, gbc);
gbc.gridx = 1;
gbc.gridy = 0;
incomingPanel.add(txtInFrom, gbc);
lblInDate = new JLabel(CConstants.LABEL_INCOMING_DATE, JLabel.LEFT);
txtInDate = new JTextField("", 20);
txtInDate.setEditable(false);
gbc.gridx = 0;
gbc.gridy = 1;
incomingPanel.add(lblInDate, gbc);
gbc.gridx = 1;
gbc.gridy = 1;
incomingPanel.add(txtInDate, gbc);
gbc.insets.bottom = 19;
lblInText = new JLabel(CConstants.LABEL_INCOMING_TEXT, JLabel.LEFT);
txtInText = new JTextArea(8, 20);
txtInText.setEditable(false);
txtInText.setLineWrap(true);
gbc.gridx = 0;
gbc.gridy = 2;
incomingPanel.add(lblInText, gbc);
gbc.gridx = 1;
gbc.gridy = 2;
gbc.gridheight = 8;
incomingPanel.add(txtInText, gbc);
incomingPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), CConstants.BORDER_INCOMING_MESSAGES));
gbc.anchor = GridBagConstraints.NORTH;
gbc.weightx = 100;
gbc.weighty = 100;
gbc.gridx = 1;
gbc.gridy = 0;
gbc.gridwidth = 1;
gbc.gridheight = 1;
gbc.insets.left = 5; gbc.insets.top = 5; gbc.insets.bottom = 5;
getContentPane().add(incomingPanel, gbc);
gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.WEST;
gbc.weightx = 100;
gbc.weighty = 100;
gbc.gridx = 0;
gbc.gridy = 0;
gbc.gridwidth = 1;
gbc.gridheight = 1;
gbc.insets.left = 5; gbc.insets.top = 5; gbc.insets.right = 5;
JPanel outgoingPanel = new JPanel();
outgoingPanel.setLayout(new GridBagLayout());
lblOutTo = new JLabel(CConstants.LABEL_OUTGOING_TO, JLabel.LEFT);
txtOutTo = new JTextField("", 16);
txtOutTo.setEditable(false);
gbc.gridx = 0;
gbc.gridy = 0;
outgoingPanel.add(lblOutTo, gbc);
gbc.gridx = 1;
gbc.gridy = 0;
outgoingPanel.add(txtOutTo, gbc);
lblOutDate = new JLabel(CConstants.LABEL_OUTGOING_DATE, JLabel.LEFT);
txtOutDate = new JTextField("", 20);
txtOutDate.setEditable(false);
gbc.gridx = 0;
gbc.gridy = 1;
outgoingPanel.add(lblOutDate, gbc);
gbc.gridx = 1;
gbc.gridy = 1;
outgoingPanel.add(txtOutDate, gbc);
gbc.insets.bottom = 19;
lblOutText = new JLabel(CConstants.LABEL_OUTGOING_TEXT, JLabel.LEFT);
txtOutText = new JTextArea(8, 20);
txtOutText.setEditable(false);
txtOutText.setLineWrap(true);
gbc.gridx = 0;
gbc.gridy = 2;
outgoingPanel.add(lblOutText, gbc);
gbc.gridx = 1;
gbc.gridy = 2;
gbc.gridheight = 8;
outgoingPanel.add(txtOutText, gbc);
outgoingPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), CConstants.BORDER_OUTGOING_MESSAGES));
gbc.anchor = GridBagConstraints.NORTH;
gbc.weightx = 150;
gbc.weighty = 150;
gbc.gridx = 1;
gbc.gridy = 1;
gbc.gridwidth = 1;
gbc.gridheight = 1;
gbc.insets.left = 5; gbc.insets.top = 5; gbc.insets.bottom = 5;
getContentPane().add(outgoingPanel, gbc);
gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.WEST;
gbc.weightx = 100;
gbc.weighty = 100;
gbc.gridx = 0;
gbc.gridy = 0;
gbc.gridwidth = 1;
gbc.gridheight = 1;
gbc.insets.left = 5; gbc.insets.top = 5; gbc.insets.right = 5;
JPanel statsPanel = new JPanel();
statsPanel.setLayout(new GridBagLayout());
lblUpSince = new JLabel(CConstants.LABEL_UP_SINCE, JLabel.LEFT);
txtUpSince = new JTextField("", 17);
txtUpSince.setEditable(false);
gbc.gridx = 0;
gbc.gridy = 0;
statsPanel.add(lblUpSince, gbc);
gbc.gridx = 1;
gbc.gridy = 0;
gbc.anchor = GridBagConstraints.EAST;
statsPanel.add(txtUpSince, gbc);
gbc.anchor = GridBagConstraints.WEST;
lblTraffic = new JLabel(CConstants.LABEL_TRAFFIC, JLabel.LEFT);
lblTrafficIn = new JLabel(CConstants.LABEL_TRAFFIC_IN, JLabel.LEFT);
lblTrafficOut = new JLabel(CConstants.LABEL_TRAFFIC_OUT, JLabel.LEFT);
txtTrafficIn = new JTextField(CConstants.TEXT_ZERO, 5);
txtTrafficIn.setEditable(false);
txtTrafficIn.setHorizontalAlignment(JTextField.RIGHT);
txtTrafficOut = new JTextField(CConstants.TEXT_ZERO, 5);
txtTrafficOut.setEditable(false);
txtTrafficOut.setHorizontalAlignment(JTextField.RIGHT);
JPanel tempPanel = new JPanel();
tempPanel.add(lblTrafficIn);
tempPanel.add(txtTrafficIn);
tempPanel.add(lblTrafficOut);
tempPanel.add(txtTrafficOut);
gbc.gridx = 0;
gbc.gridy = 1;
statsPanel.add(lblTraffic, gbc);
gbc.gridx = 1;
gbc.gridy = 1;
gbc.anchor = GridBagConstraints.EAST;
statsPanel.add(tempPanel, gbc);
lblInterfaces = new JLabel(CConstants.LABEL_INTERFACES, JLabel.LEFT);
lblInterfaceDB = new JLabel(CConstants.LABEL_INTERFACE_DB_OFF, JLabel.LEFT);
lblInterfaceXML = new JLabel(CConstants.LABEL_INTERFACE_XML_OFF, JLabel.LEFT);
lblInterfaceRMI = new JLabel(CConstants.LABEL_INTERFACE_RMI_OFF, JLabel.LEFT);
JPanel tempPanel1 = new JPanel();
tempPanel1.add(lblInterfaceDB);
tempPanel1.add(lblInterfaceXML);
tempPanel1.add(lblInterfaceRMI);
gbc.anchor = GridBagConstraints.WEST;
gbc.gridx = 0;
gbc.gridy = 2;
statsPanel.add(lblInterfaces, gbc);
gbc.anchor = GridBagConstraints.EAST;
gbc.gridx = 1;
gbc.gridy = 2;
statsPanel.add(tempPanel1, gbc);
lblRawLogs = new JLabel(CConstants.LABEL_RAW_LOGS, JLabel.LEFT);
lblRawInLog = new JLabel(CConstants.LABEL_IN_RAW_LOG_OFF, JLabel.LEFT);
lblRawOutLog = new JLabel(CConstants.LABEL_OUT_RAW_LOG_OFF, JLabel.LEFT);
JPanel tempPanel2 = new JPanel();
tempPanel2.add(lblRawInLog);
tempPanel2.add(lblRawOutLog);
gbc.anchor = GridBagConstraints.WEST;
gbc.gridx = 0;
gbc.gridy = 3;
statsPanel.add(lblRawLogs, gbc);
gbc.anchor = GridBagConstraints.EAST;
gbc.gridx = 1;
gbc.gridy = 3;
statsPanel.add(tempPanel2, gbc);
statsPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), CConstants.BORDER_STATISTICS));
gbc.anchor = GridBagConstraints.CENTER;
gbc.weightx = 100;
gbc.weighty = 100;
gbc.gridx = 0;
gbc.gridy = 1;
gbc.gridwidth = 1;
gbc.gridheight = 1;
gbc.insets.left = 5; gbc.insets.top = 5; gbc.insets.bottom = 5;
getContentPane().add(statsPanel, gbc);
service.initialize();
}
public void setStatusText(String text) { this.txtStatus.setText(text); repaint(); }
public void setManufText(String text) { this.txtManuf.setText(text); }
public void setModelText(String text) { this.txtModel.setText(text); }
public void setSerialNoText(String text) { this.txtSerialNo.setText(text); }
public void setIMSIText(String text) { this.txtIMSI.setText(text); }
public void setSwVersionText(String text) { this.txtSwVersion.setText(text); }
public void setBatteryIndicator(int battery) { this.pgbBattery.setValue(battery); }
public void setSignalIndicator(int signal) { this.pgbSignal.setValue(signal); }
public void setInFrom(String inFrom) { this.txtInFrom.setText(inFrom); }
public void setInDate(String inDate) { this.txtInDate.setText(inDate); }
public void setInText(String inText) { this.txtInText.setText(inText); }
public void setOutTo(String outTo) { this.txtOutTo.setText(outTo); }
public void setOutDate(String outDate) { this.txtOutDate.setText(outDate); }
public void setOutText(String outText) { this.txtOutText.setText(outText); }
public void setTrafficIn(int number) { txtTrafficIn.setText("" + number); }
public void setTrafficOut(int number) { txtTrafficOut.setText("" + number); }
public void setInterfaceDB(boolean on) { this.lblInterfaceDB.setText((on ? CConstants.LABEL_INTERFACE_DB_ON : CConstants.LABEL_INTERFACE_DB_OFF)); }
public void setInterfaceXML(boolean on) { this.lblInterfaceXML.setText((on ? CConstants.LABEL_INTERFACE_XML_ON : CConstants.LABEL_INTERFACE_XML_OFF)); }
public void setRawInLog(boolean on) { this.lblRawInLog.setText((on ? CConstants.LABEL_IN_RAW_LOG_ON : CConstants.LABEL_IN_RAW_LOG_OFF)); }
public void setRawOutLog(boolean on) { this.lblRawOutLog.setText((on ? CConstants.LABEL_OUT_RAW_LOG_ON : CConstants.LABEL_OUT_RAW_LOG_OFF)); }
public void setConnected(boolean connected)
{
if (connected)
{
mniConnect.setEnabled(false);
mniDisconnect.setEnabled(true);
setStatusText(CConstants.STATUS_CONNECTED);
txtUpSince.setText(new java.util.Date().toString());
}
else
{
mniConnect.setEnabled(true);
mniDisconnect.setEnabled(false);
setStatusText(CConstants.STATUS_DISCONNECTED);
setTrafficIn(0);
setTrafficOut(0);
txtUpSince.setText("");
setManufText("");
setModelText("");
setSerialNoText("");
setIMSIText("");
setSwVersionText("");
setBatteryIndicator(0);
setSignalIndicator(0);
setInFrom("");
setInDate("");
setInText("");
setOutTo("");
setOutDate("");
setOutText("");
}
}
public CMainThread getService() { return service; }
class CAboutDialog extends JDialog
{
public CAboutDialog(JFrame owner)
{
super(owner, "About jSMSEngine", true);
JPanel buttonPanel;
JPanel infoPanel1, infoPanel11, infoPanel2, infoPanel3, infoPanel4, infoPanel5;
Box vBox;
Container contentPane;
JButton btnOk;
contentPane = getContentPane();
infoPanel1 = new JPanel();
infoPanel1.setLayout(new FlowLayout());
infoPanel1.add(new JLabel(CConstants.ABOUT_VERSION));
infoPanel11 = new JPanel();
infoPanel11.setLayout(new FlowLayout());
infoPanel11.add(new JLabel(CConstants.ABOUT_BASED));
infoPanel2 = new JPanel();
infoPanel2.setLayout(new FlowLayout());
infoPanel2.add(new JLabel(CConstants.ABOUT_BY));
infoPanel3 = new JPanel();
infoPanel3.setLayout(new FlowLayout());
infoPanel3.add(new JLabel(CConstants.ABOUT_WEBPAGE));
infoPanel4 = new JPanel();
infoPanel4.setLayout(new FlowLayout());
infoPanel4.add(new JLabel(CConstants.ABOUT_EMAIL));
infoPanel5 = new JPanel();
infoPanel5.setLayout(new FlowLayout());
infoPanel5.add(new JLabel(CConstants.ABOUT_OTHER));
vBox = Box.createVerticalBox();
vBox.add(infoPanel1);
vBox.add(infoPanel11);
vBox.add(infoPanel2);
vBox.add(Box.createVerticalStrut(5));
vBox.add(infoPanel3);
vBox.add(infoPanel4);
vBox.add(Box.createVerticalStrut(10));
vBox.add(infoPanel5);
contentPane.add(vBox, BorderLayout.CENTER);
buttonPanel = new JPanel();
btnOk = new JButton("Ok");
buttonPanel.add(btnOk);
contentPane.add(buttonPanel, BorderLayout.SOUTH);
btnOk.addActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
setVisible(false);
}
});
setSize(350, 300);
setResizable(false);
setLocation(owner.getLocation().x + 170, owner.getLocation().y + 30);
}
}
}