/*
* MainFrameServer.java
*
* Created on March 21, 2006, 3:48 PM
*/
package recordsystem;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.io.IOException;
import java.net.*;
import java.util.*;
import java.util.Enumeration;
import java.util.Properties;
import javax.swing.*;
/**
*
* @author julius
*/
public class MainFrameServer extends javax.swing.JFrame {
/** Creates new form MainFrameServer */
public MainFrameServer() {
initComponents();
disableButtons();
setBounds(400,300,410, 300);
new MainClientServer().start();
new AdminServer().start();
setVisible(true);
}
// //GEN-BEGIN:initComponents
private void initComponents() {
connectedUserPane = new javax.swing.JScrollPane();
connectedList = new javax.swing.JList();
connectedUserLabel = new javax.swing.JLabel();
jPanel1 = new javax.swing.JPanel();
addButton = new javax.swing.JButton();
deleteButton = new javax.swing.JButton();
disableButton = new javax.swing.JButton();
enableButton = new javax.swing.JButton();
allUserPane = new javax.swing.JScrollPane();
allUserList = new javax.swing.JList();
allUserLabel = new javax.swing.JLabel();
userOptionsLabel = new javax.swing.JLabel();
menuBar = new javax.swing.JMenuBar();
systemMenu = new javax.swing.JMenu();
loginMI = new javax.swing.JMenuItem();
logoutMI = new javax.swing.JMenuItem();
optionsMenu = new javax.swing.JMenu();
getContentPane().setLayout(null);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Server Master Console");
connectedUserPane.setViewportView(connectedList);
getContentPane().add(connectedUserPane);
connectedUserPane.setBounds(290, 50, 100, 160);
connectedUserLabel.setBackground(new java.awt.Color(0, 153, 255));
connectedUserLabel.setFont(new java.awt.Font("Tahoma", 0, 10));
connectedUserLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
connectedUserLabel.setText(" Connected Users ");
connectedUserLabel.setOpaque(true);
getContentPane().add(connectedUserLabel);
connectedUserLabel.setBounds(290, 30, 100, 13);
jPanel1.setLayout(null);
jPanel1.setBackground(new java.awt.Color(0, 153, 255));
jPanel1.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0)));
addButton.setFont(new java.awt.Font("Arial", 0, 9));
addButton.setText("Add");
addButton.setActionCommand("ADD_USER");
addButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
addButtonActionPerformed(evt);
}
});
jPanel1.add(addButton);
addButton.setBounds(20, 10, 80, 20);
deleteButton.setFont(new java.awt.Font("Arial", 0, 9));
deleteButton.setText("Delete");
deleteButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
deleteButtonActionPerformed(evt);
}
});
jPanel1.add(deleteButton);
deleteButton.setBounds(20, 50, 80, 21);
disableButton.setFont(new java.awt.Font("Arial", 0, 9));
disableButton.setText("Disable");
disableButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
disableButtonActionPerformed(evt);
}
});
jPanel1.add(disableButton);
disableButton.setBounds(20, 90, 80, 21);
enableButton.setFont(new java.awt.Font("Arial", 0, 9));
enableButton.setText("Enable");
enableButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
enableButtonActionPerformed(evt);
}
});
jPanel1.add(enableButton);
enableButton.setBounds(20, 130, 80, 21);
getContentPane().add(jPanel1);
jPanel1.setBounds(20, 50, 120, 160);
allUserPane.setViewportView(allUserList);
getContentPane().add(allUserPane);
allUserPane.setBounds(160, 50, 100, 160);
allUserLabel.setBackground(new java.awt.Color(0, 153, 255));
allUserLabel.setFont(new java.awt.Font("Tahoma", 0, 10));
allUserLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
allUserLabel.setText("All Users ");
allUserLabel.setOpaque(true);
getContentPane().add(allUserLabel);
allUserLabel.setBounds(160, 30, 100, 13);
userOptionsLabel.setBackground(new java.awt.Color(0, 153, 255));
userOptionsLabel.setFont(new java.awt.Font("Tahoma", 0, 10));
userOptionsLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
userOptionsLabel.setText("User Functions ");
userOptionsLabel.setOpaque(true);
getContentPane().add(userOptionsLabel);
userOptionsLabel.setBounds(20, 30, 120, 13);
systemMenu.setText("System");
loginMI.setText("Login");
loginMI.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
loginMIActionPerformed(evt);
}
});
systemMenu.add(loginMI);
logoutMI.setText("Logout");
logoutMI.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
logoutMIActionPerformed(evt);
}
});
systemMenu.add(logoutMI);
menuBar.add(systemMenu);
optionsMenu.setText("Options");
menuBar.add(optionsMenu);
setJMenuBar(menuBar);
pack();
}
// //GEN-END:initComponents
private void deleteButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_deleteButtonActionPerformed
String delUser = (String)allUserList.getSelectedValue();
if (delUser == null) {
JOptionPane.showMessageDialog(this,"No User Selected","Error",JOptionPane.INFORMATION_MESSAGE);
return;
}
users.remove(delUser);
saveUsers();
createAllUserList();
}//GEN-LAST:event_deleteButtonActionPerformed
private void enableButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_enableButtonActionPerformed
//System.out.println("Enable index = " + selectedIndex);
if (allUserList.getSelectedValue() == null) {
JOptionPane.showMessageDialog(this,"No User Selected","Error",JOptionPane.INFORMATION_MESSAGE);
return;
}
String passCode = users.getProperty((String)allUserList.getSelectedValue());
int loc;
if ((loc = passCode.indexOf("$$1")) != -1) { // user is currently disabled
users.setProperty((String)allUserList.getSelectedValue(), passCode.substring(0,loc)+ "$$0");
saveUsers();
createAllUserList();
}
}//GEN-LAST:event_enableButtonActionPerformed
private void addButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addButtonActionPerformed
String newPass = null;
String newUser = null;
newUser = JOptionPane.showInputDialog(this,"Enter New User Name");
if(newUser == null) {
JOptionPane.showMessageDialog(this,"Cancelled by User","Error",JOptionPane.INFORMATION_MESSAGE);
return;
}
if (users.getProperty(newUser) == null) {
newPass = JOptionPane.showInputDialog(this,"Enter New User Password");
if (newPass == null) {
JOptionPane.showMessageDialog(this,"Cancelled by User","Error",JOptionPane.INFORMATION_MESSAGE);
return; }
}
else {
JOptionPane.showMessageDialog(this,"This username already exists","Error",JOptionPane.ERROR_MESSAGE);
return; }
users.setProperty(newUser, newPass + "$$1");
saveUsers();
createAllUserList();
}//GEN-LAST:event_addButtonActionPerformed
private void logoutMIActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_logoutMIActionPerformed
disableButtons();
}//GEN-LAST:event_logoutMIActionPerformed
private void loginMIActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_loginMIActionPerformed
enableButtons();
createAllUserList();
}//GEN-LAST:event_loginMIActionPerformed
private void disableButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_disableButtonActionPerformed
if (allUserList.getSelectedValue() == null) {
JOptionPane.showMessageDialog(this,"No User Selected","Error",JOptionPane.INFORMATION_MESSAGE);
return;
}
String passCode = users.getProperty((String)allUserList.getSelectedValue());
int loc;
if ((loc = passCode.indexOf("$$0")) != -1) { // user is currently enabled
users.setProperty((String)allUserList.getSelectedValue(), passCode.substring(0,loc)+ "$$1");
saveUsers();
createAllUserList();
}
}//GEN-LAST:event_disableButtonActionPerformed
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new MainFrameServer().setVisible(true);
}
});
}
private void enableButtons() {
addButton.setEnabled(true);
deleteButton.setEnabled(true);
disableButton.setEnabled(true);
enableButton.setEnabled(true);
allUserList.setEnabled(true);
connectedList.setEnabled(true);
}
private void disableButtons() {
addButton.setEnabled(false);
deleteButton.setEnabled(false);
disableButton.setEnabled(false);
enableButton.setEnabled(false);
allUserList.setEnabled(false);
connectedList.setEnabled(false);
}
private void createAllUserList() {
Vector vector = new Vector();
try {
users.load(new FileInputStream ("users.txt")); }
catch (IOException ioe) { System.err.println("Cannot load User Properties File"); }
Enumeration enumer = users.propertyNames();
while (enumer.hasMoreElements()) {
vector.add((String)enumer.nextElement());
}
allUserList = new JList(vector);
allUserPane.getViewport().setView(allUserList);
allUserList.addMouseListener(new UserListener());
allUserList.setCellRenderer(new UserListRenderer());
}
private void saveUsers() {
try {
users.store(new FileOutputStream ("users.txt"), "Header"); }
catch (IOException ioe) { System.err.println("Cannot create users.txt File"); }
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton addButton;
private javax.swing.JLabel allUserLabel;
private javax.swing.JList allUserList;
private javax.swing.JScrollPane allUserPane;
private javax.swing.JList connectedList;
private javax.swing.JLabel connectedUserLabel;
private javax.swing.JScrollPane connectedUserPane;
private javax.swing.JButton deleteButton;
private javax.swing.JButton disableButton;
private javax.swing.JButton enableButton;
private javax.swing.JPanel jPanel1;
private javax.swing.JMenuItem loginMI;
private javax.swing.JMenuItem logoutMI;
private javax.swing.JMenuBar menuBar;
private javax.swing.JMenu optionsMenu;
private javax.swing.JMenu systemMenu;
private javax.swing.JLabel userOptionsLabel;
// End of variables declaration//GEN-END:variables
private Properties users = new Properties();
private int selectedIndex = -1;
class UserListener extends MouseAdapter {
public void mousePressed(MouseEvent e) {
selectedIndex = allUserList.getSelectedIndex();
}
}
class UserListRenderer extends JLabel implements ListCellRenderer {
public UserListRenderer() {
setOpaque(true);
}
public Component getListCellRendererComponent(JList allUserList,Object value, int row, boolean isSelected, boolean hasFocus) {
setText(value.toString());
String passcode = users.getProperty(value.toString());
if (passcode.endsWith("1"))
setBackground(Color.red);
else
setBackground(Color.green);
if(isSelected) {
setBackground(getBackground().darker());
setForeground(Color.white);
}
if(! isSelected)
setForeground(Color.black);
return this;
}
}
class MainClientServer extends Thread {
ServerSocket server;
public void run() {
try {
server = new ServerSocket(5000,25);
while (true) {
Socket socket = server.accept();
new ClientServer(socket).start(); }
} // while
catch (IOException ioe) { ioe.printStackTrace(); }
}}
class AdminServer extends Thread {
private ServerSocket server;
public AdminServer() { }
public void run() {
try {
server = new ServerSocket(4000,1);
while (true) {
Socket socket = server.accept();
// take care of admin requests
}
}
catch (IOException ioe) { ioe.printStackTrace(); }
}
}
class ClientServer extends Thread {
private Socket socket;
public ClientServer(Socket socket) {
this.socket = socket;
}
public void run() {
}
}
}