Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package server; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartFrame; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.PiePlot; import org.jfree.data.general.DefaultPieDataset; /** * * @author phawzy */ public class ServerUI extends javax.swing.JFrame { /** * Creates new form ServerUI */ ServerController serverControllerObj; public ServerUI(ServerController controller) { serverControllerObj = controller; initComponents(); } void displayNumOfOnlineOfflineUsers(int onlineNum, int offlineNum) { onlineUsersNumTxt.setText(String.valueOf(onlineNum)); offlineUsersNumTxt.setText(String.valueOf(offlineNum)); } void displayUsersStatusChart(int availableNum, int busyNum, int awayNum, int offlineNum) { DefaultPieDataset pieDataset = new DefaultPieDataset(); pieDataset.setValue("Avaliable", new Integer(availableNum)); pieDataset.setValue("Away", new Integer(awayNum)); pieDataset.setValue("Busy", new Integer(busyNum)); pieDataset.setValue("Offline", new Integer(offlineNum)); JFreeChart chart = ChartFactory.createPieChart("Users Statistics", pieDataset, true, true, true); PiePlot p; p = (PiePlot) chart.getPlot(); ChartFrame chartPanelObj = new ChartFrame("USERS", chart); chartPanelObj.setVisible(true); chartPanelObj.setSize(450, 500); } public void lookAndFeel() { try { for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { javax.swing.UIManager.setLookAndFeel(info.getClassName()); break; } } } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | javax.swing.UnsupportedLookAndFeelException ex) { java.util.logging.Logger.getLogger(ServerUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jSlider1 = new javax.swing.JSlider(); jPanel1 = new javax.swing.JPanel(); onBtn = new javax.swing.JButton(); offBtn = new javax.swing.JButton(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jScrollPane1 = new javax.swing.JScrollPane(); msgTxtArea = new javax.swing.JTextArea(); broadcastBtn = new javax.swing.JButton(); refreshBtn = new javax.swing.JButton(); jScrollPane2 = new javax.swing.JScrollPane(); onlineUsersNumTxt = new javax.swing.JTextPane(); jScrollPane3 = new javax.swing.JScrollPane(); offlineUsersNumTxt = new javax.swing.JTextPane(); jLabel1 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); jLabel6 = new javax.swing.JLabel(); jPanel1.setBackground(new java.awt.Color(0, 0, 51)); jPanel1.setForeground(new java.awt.Color(0, 0, 38)); onBtn.setFont(new java.awt.Font("Tempus Sans ITC", 2, 24)); // NOI18N onBtn.setForeground(new java.awt.Color(0, 0, 38)); onBtn.setText("ON"); onBtn.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(java.awt.event.ActionEvent evt) { serverControllerObj.startServer(); } }); offBtn.setFont(new java.awt.Font("Tempus Sans ITC", 2, 24)); // NOI18N offBtn.setForeground(new java.awt.Color(0, 0, 38)); offBtn.setText("OFF"); offBtn.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(java.awt.event.ActionEvent evt) { serverControllerObj.stopServer(); } }); jLabel2.setFont(new java.awt.Font("Tempus Sans ITC", 2, 24)); // NOI18N jLabel2.setForeground(new java.awt.Color(255, 255, 255)); jLabel2.setText("Online"); jLabel3.setFont(new java.awt.Font("Tempus Sans ITC", 2, 24)); // NOI18N jLabel3.setForeground(new java.awt.Color(255, 255, 255)); jLabel3.setText("Offline"); msgTxtArea.setColumns(20); msgTxtArea.setRows(5); jScrollPane1.setViewportView(msgTxtArea); broadcastBtn.setFont(new java.awt.Font("Tempus Sans ITC", 2, 24)); // NOI18N broadcastBtn.setForeground(new java.awt.Color(0, 0, 38)); broadcastBtn.setText("Broadcast"); broadcastBtn.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(java.awt.event.ActionEvent evt) { if (!msgTxtArea.getText().equals("")) { serverControllerObj.broadcastMsg(msgTxtArea.getText()); } } }); refreshBtn.setFont(new java.awt.Font("Tempus Sans ITC", 2, 24)); // NOI18N refreshBtn.setForeground(new java.awt.Color(0, 0, 38)); refreshBtn.setText("Refresh"); refreshBtn.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(java.awt.event.ActionEvent evt) { refreshBtnActionPerformed(evt); } }); onlineUsersNumTxt.setFont(new java.awt.Font("Tahoma", 0, 24)); // NOI18N jScrollPane2.setViewportView(onlineUsersNumTxt); offlineUsersNumTxt.setFont(new java.awt.Font("Tahoma", 0, 24)); // NOI18N jScrollPane3.setViewportView(offlineUsersNumTxt); jLabel1.setFont(new java.awt.Font("Stencil", 2, 36)); // NOI18N jLabel1.setForeground(new java.awt.Color(255, 255, 255)); jLabel1.setText("JAVA Messanger Admin"); jLabel5.setIcon(new javax.swing.ImageIcon("C:\\Users\\User\\Desktop\\kkkkk.jpg")); // NOI18N jLabel4.setIcon(new javax.swing.ImageIcon("C:\\Users\\User\\Desktop\\lll.png")); // NOI18N jLabel6.setIcon(new javax.swing.ImageIcon("C:\\Users\\User\\Desktop\\a.png")); // NOI18N javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup(jPanel1Layout .createParallelGroup( javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 436, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jLabel6).addGap(6, 6, 6).addComponent(jLabel4).addGap(6, 6, 6) .addComponent(jLabel5)) .addGroup(jPanel1Layout.createSequentialGroup() .addComponent(onBtn, javax.swing.GroupLayout.PREFERRED_SIZE, 86, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(offBtn, javax.swing.GroupLayout.PREFERRED_SIZE, 92, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(77, 77, 77) .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 84, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 84, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 53, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGroup(jPanel1Layout.createSequentialGroup().addComponent(broadcastBtn) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 340, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(refreshBtn, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))); jPanel1Layout.setVerticalGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel6) .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(56, 56, 56) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jScrollPane2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel2) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(offBtn, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(onBtn, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(231, 231, 231) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(broadcastBtn, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(refreshBtn, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap())); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup().addContainerGap().addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap())); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap())); pack(); }// </editor-fold> private void refreshBtnActionPerformed(java.awt.event.ActionEvent evt) { serverControllerObj.displayChart(); } /** * @param args the command line arguments */ // Variables declaration - do not modify private javax.swing.JButton broadcastBtn; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JPanel jPanel1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JScrollPane jScrollPane3; private javax.swing.JSlider jSlider1; private javax.swing.JTextArea msgTxtArea; private javax.swing.JButton offBtn; private javax.swing.JTextPane offlineUsersNumTxt; private javax.swing.JButton onBtn; private javax.swing.JTextPane onlineUsersNumTxt; private javax.swing.JButton refreshBtn; // End of variables declaration private String str(int onlineNum) { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } }