|
From: <car...@us...> - 2003-03-14 03:27:24
|
Update of /cvsroot/madsserv/madsserv/src/server
In directory sc8-pr-cvs1:/tmp/cvs-serv3022
Added Files:
ErrNoListen.java ServerFrame.java
Log Message:
ajout de classes
--- NEW FILE: ErrNoListen.java ---
import java.lang.Exception;
class ErrNoListen extends Exception {
public String getMessage() {
return ("Impossible de creer le ThreadListenClients");
}
}
--- NEW FILE: ServerFrame.java ---
import javax.swing.*;
import java.awt.*;
import java.net.*;
import java.awt.event.*;
import java.awt.Component.*;
import java.awt.TextComponent.*;
import java.awt.Checkbox.*;
import java.awt.CheckboxGroup.*;
import java.util.*;
public class ServerFrame
extends JFrame {
Container contentPane = null;
ServerInit serverInit = null;
BorderLayout borderLayout1 = new BorderLayout();
GridLayout gridLayout1 = new GridLayout(4, 2, 5, 5);
GridLayout gridLayout2 = new GridLayout(1, 1);
GridBagLayout gridBagLayout2 = new GridBagLayout();
GridBagConstraints c;
Vector clientReports;
JPanel jPanelTitles = new JPanel();
JLabel jLabelID = new JLabel();
JLabel jLabelIP = new JLabel();
JLabel jLabelStatus = new JLabel();
JLabel jLabelMedia = new JLabel();
JLabel jLabelBitRate = new JLabel();
JLabel jLabelQuality = new JLabel();
JTabbedPane jTabbedPane = new JTabbedPane();
JPanel jPanelConfig = new JPanel();
JPanel jPanelReport = new JPanel();
JPanel jPanelFormats = new JPanel();
JPanel jPanelQuality = new JPanel();
JPanel jPanelSouth = new JPanel();
JLabel jLabelPort = new JLabel();
JLabel jLabelPortRTP = new JLabel();
JLabel jLabelNbMax = new JLabel();
JLabel jLabelDebit = new JLabel();
JTextField jTextFieldPort = new JTextField();
JTextField jTextFieldPortRTP = new JTextField();
JTextField jTextFieldNbMax = new JTextField();
JTextField jTextFieldDebit = new JTextField();
JButton jButtonStart = new JButton();
JButton jButtonStop = new JButton();
JButton jButtonQuit = new JButton();
public ServerFrame( /*ServerInit _parent*/) {
//parent = _parent;
contentPane = getContentPane();
contentPane.setLayout(borderLayout1);
this.setSize(new Dimension(600, 500));
this.setTitle("Madsserv Serveur");
clientReports = new Vector();
jPanelReport.setLayout(gridBagLayout2);
jPanelReport.setBackground(Color.black);
c = new GridBagConstraints();
c.weightx = 0.0;
jLabelID.setText("ID Client");
jLabelID.setHorizontalAlignment(SwingConstants.CENTER);
jPanelTitles.add(jLabelID, c);
jLabelIP.setText("IP Client");
jLabelIP.setHorizontalAlignment(SwingConstants.CENTER);
jPanelTitles.add(jLabelIP, c);
jLabelStatus.setText("Statut");
jLabelStatus.setHorizontalAlignment(SwingConstants.CENTER);
jPanelTitles.add(jLabelStatus, c);
jLabelMedia.setText("Media demandé");
jLabelMedia.setHorizontalAlignment(SwingConstants.CENTER);
jPanelTitles.add(jLabelMedia, c);
jLabelBitRate.setText("Débit");
jLabelBitRate.setHorizontalAlignment(SwingConstants.CENTER);
jPanelTitles.add(jLabelBitRate, c);
jLabelQuality.setText("Niveau de qualité");
jLabelQuality.setHorizontalAlignment(SwingConstants.CENTER);
c.gridwidth = GridBagConstraints.REMAINDER;
jPanelTitles.add(jLabelQuality, c);
jPanelReport.add(jPanelTitles);
jTabbedPane.addTab("Configuration", null, jPanelConfig,
"Configure le serveur");
jTabbedPane.addTab("Rapports", null, jPanelReport, "Affiche les connexions");
jTabbedPane.addTab("Formats", null, jPanelFormats,
"Affiche les formats supportés par le serveur");
jTabbedPane.addTab("Qualité", null, jPanelQuality,
"Affiche l'association format/niveau de qualité");
contentPane.add(jTabbedPane, BorderLayout.CENTER);
jLabelPort.setText("Port d'écoute :");
jTextFieldPort.setText("5000");
jLabelPortRTP.setText("Port de base pour RTP :");
jTextFieldPortRTP.setText("40000");
jLabelNbMax.setText("Nombre maximum de clients :");
jTextFieldNbMax.setText("10");
jLabelDebit.setText("Debit minimum en Ko/s :");
jTextFieldDebit.setText("20");
jPanelConfig.setLayout(gridLayout1);
jPanelConfig.add(jLabelPort);
jPanelConfig.add(jTextFieldPort);
jPanelConfig.add(jLabelPortRTP);
jPanelConfig.add(jTextFieldPortRTP);
jPanelConfig.add(jLabelNbMax);
jPanelConfig.add(jTextFieldNbMax);
jPanelConfig.add(jLabelDebit);
jPanelConfig.add(jTextFieldDebit);
jButtonStart.setText("Démarrer");
jButtonStart.setEnabled(true);
jButtonStart.addActionListener(new ServerFrame_Button_Start_ActionAdapter(this));
jPanelSouth.add(jButtonStart);
jButtonStop.setText("Arrêter");
jButtonStop.setEnabled(false);
jButtonStop.addActionListener(new ServerFrame_Button_Stop_ActionAdapter(this));
jPanelSouth.add(jButtonStop);
jButtonQuit.setText("Quitter");
jButtonQuit.addActionListener(new ServerFrame_Button_Quit_ActionAdapter(this));
jPanelSouth.add(jButtonQuit);
contentPane.add(jPanelSouth, BorderLayout.SOUTH);
}
public void Button_Start_actionPerformed(ActionEvent evt) {
int port = 5000;
int portBaseRTP = 40000;
int nbClients = 10;
int debit = 20;
Integer integer1 = null;
Integer integer2 = null;
Integer integer3 = null;
Integer integer4 = null;
try {
integer1 = Integer.valueOf(jTextFieldPort.getText());
integer2 = Integer.valueOf(jTextFieldPortRTP.getText());
integer3 = Integer.valueOf(jTextFieldNbMax.getText());
integer4 = Integer.valueOf(jTextFieldDebit.getText());
if (integer1 == null || integer2 == null || integer3 == null || integer3 == null) {
System.err.println("il y a une erreur");
displayError("Erreur de saisie",
"La valeur d'un champ est incorrecte.\nVeuillez la modifier");
}
else {
port = integer1.intValue();
portBaseRTP = integer2.intValue();
nbClients = integer3.intValue();
debit = integer4.intValue();
}
}
catch (NumberFormatException e) {
displayError("Erreur de saisie",
"La valeur d'un champ est incorrecte.\nVeuillez la modifier");
}
if (serverInit == null) {
try {
serverInit = new ServerInit(port, portBaseRTP, nbClients, debit, this);
serverInit.start();
jButtonStart.setEnabled(false);
jButtonStop.setEnabled(true);
}
catch (ErrNoListen e) {
serverInit = null;
// lancer erreur popup
jButtonStart.setEnabled(true);
jButtonStop.setEnabled(false);
}
}
else {
System.err.println("ServerInit est deja cree");
}
}
public void displayError(String _name, String _message) {
JOptionPane.showMessageDialog(this, _message, _name,
JOptionPane.WARNING_MESSAGE);
}
public void addClientReport(ClientReport _clientReport) {
int rows, columns;
rows = gridLayout2.getRows() + 1;
gridLayout2.setRows(rows);
jPanelReport.add(_clientReport.getGraphics());
}
public void Button_Stop_actionPerformed(ActionEvent evt) {
serverInit.stop();
}
public void Button_Quit_actionPerformed(ActionEvent evt) {
System.exit(0);
}
/**
* processWindowEvent Methode qui permet de quitter le client quand on clique pour fermer la fenetre
* @param e c'est l'evenement qui indique que l'on a clique sur le bouton pour fermer la fenetre
*/
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
Button_Quit_actionPerformed(null);
}
}
public static void main(String[] args) {
ServerFrame serverFrame = new ServerFrame();
serverFrame.pack();
//Center the window
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = serverFrame.getSize();
if (frameSize.height > screenSize.height) {
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width) {
frameSize.width = screenSize.width;
}
serverFrame.setLocation( (screenSize.width - frameSize.width) / 2,
(screenSize.height - frameSize.height) / 2);
serverFrame.show();
}
}
class ServerFrame_Button_Start_ActionAdapter
implements ActionListener {
ServerFrame adaptee;
ServerFrame_Button_Start_ActionAdapter(ServerFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent evt) {
adaptee.Button_Start_actionPerformed(evt);
}
}
class ServerFrame_Button_Stop_ActionAdapter
implements ActionListener {
ServerFrame adaptee;
ServerFrame_Button_Stop_ActionAdapter(ServerFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent evt) {
adaptee.Button_Stop_actionPerformed(evt);
}
}
class ServerFrame_Button_Quit_ActionAdapter
implements ActionListener {
ServerFrame adaptee;
ServerFrame_Button_Quit_ActionAdapter(ServerFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent evt) {
adaptee.Button_Quit_actionPerformed(evt);
}
}
class ClientReport {
private int clientID = -1;
private String clientIP = "";
private String status = "";
private String media = "";
private float debit = 0.0f;
private int qualityLevel = -1;
private JLabel jLabelID = new JLabel();
private JLabel jLabelIP = new JLabel();
private JLabel jLabelStatus = new JLabel();
private JLabel jLabelMedia = new JLabel();
private JLabel jLabelDebit = new JLabel();
private JLabel jLabelQuality = new JLabel();
// constructeurs
public ClientReport(int _clientID, String _IP, String _status) {
clientID = _clientID;
clientIP = _IP;
status = _status;
}
public ClientReport(int _clientID, String _IP, String _status, String _media,
int _qualityLevel) {
clientID = _clientID;
clientIP = _IP;
status = _status;
media = _media;
qualityLevel = _qualityLevel;
}
public synchronized void setStatus(String _status) {
status = _status;
}
public synchronized void setMedia(String _media) {
media = _media;
}
public synchronized void setDebit(float _debit) {
debit = _debit;
}
public synchronized void setQualityLevel(int _quality) {
qualityLevel = _quality;
}
public JPanel getGraphics() {
JPanel jPanelReturn = new JPanel();
GridBagLayout gridBagLayout = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
c.weightx = 1.0;
jLabelID.setText(String.valueOf(clientID));
jLabelID.setHorizontalAlignment(SwingConstants.CENTER);
jPanelReturn.add(jLabelID, c);
jLabelIP.setText(clientIP);
jLabelIP.setHorizontalAlignment(SwingConstants.CENTER);
jPanelReturn.add(jLabelIP, c);
jLabelStatus.setText(status);
jLabelStatus.setHorizontalAlignment(SwingConstants.CENTER);
jPanelReturn.add(jLabelStatus, c);
jLabelMedia.setText(media);
jLabelMedia.setHorizontalAlignment(SwingConstants.CENTER);
jPanelReturn.add(jLabelMedia, c);
jLabelDebit.setText(String.valueOf(debit));
jLabelDebit.setHorizontalAlignment(SwingConstants.CENTER);
jPanelReturn.add(jLabelDebit, c);
jLabelQuality.setText(String.valueOf(qualityLevel));
jLabelQuality.setHorizontalAlignment(SwingConstants.CENTER);
c.gridwidth = GridBagConstraints.REMAINDER;
jPanelReturn.add(jLabelQuality);
return jPanelReturn;
}
public void removeClientReport() {
}
public void updateClientReport() {
}
}
|