/* * 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() { } } }