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. * eben julho de 2015, no h problema nenhm, kkkkkkkkkk... */ package interface_grafica; import audio.Tocar; import com.jgoodies.forms.layout.CellConstraints; import com.jgoodies.forms.layout.FormLayout; import com.jgoodies.forms.layout.RowSpec; import com.jgoodies.forms.layout.Sizes; import java.awt.Color; import java.awt.Font; import java.awt.Frame; import java.awt.Graphics; import java.awt.Point; import procurando_hosts.ConnectionMannager; import java.awt.event.KeyEvent; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; import java.net.UnknownHostException; import java.util.ArrayList; import javax.swing.BorderFactory; import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.border.Border; import objectos.Constantes; import objectos.Conversa; import objectos.Mensagem; import objectos.Utilizador; import programando_sockets.Chat; /** * * @author eben */ public class Principal extends javax.swing.JFrame { /** * Creates new form Principal */ Chat chat; Graphics g; public Multimedia multimedia; public volatile boolean isMutimideaOn; public boolean isNomeFormOn = false; public boolean isUserFormOn = false; public static ArrayList<UtilizadorForm> utlizadoresForm = new ArrayList(); public static ArrayList<Conversa> conversas = new ArrayList(); static Point mouseDownCompCoords; public Thread chamar; public volatile int novasSMS; public Principal(Chat chat) throws IOException, ClassNotFoundException { isMutimideaOn = false; initComponents(); this.chat = chat; inicializarLabels(); init(); desabilitar(); initBaixo(); mouseDownCompCoords = null; } private void initBaixo() { jLabel5.setText(Chat.utilizador_0.getNome()); } private void init() { jPanel2.setVisible(true); jPanel7.setVisible(false); } //desabilitar private void desabilitar() { if (jTabbedPane1.getTabCount() == 0) { if (jTabbedPane1.isVisible()) { jTabbedPane1.setVisible(false); } jScrollPane2.setVisible(false); jLabel2.setVisible(false); } } //desabilitar private void abilitar() { if (!jTabbedPane1.isVisible()) { jTabbedPane1.setVisible(true); jScrollPane2.setVisible(true); jLabel2.setVisible(true); } } //abilitar form de sms public void abilitarSMSForm(boolean value) { jTextPane1.setVisible(value); jLabel2.setVisible(value); } //retornar indece da tabpane public int retornarTabIndice(Utilizador utilizador) { for (int i = 0; i < jTabbedPane1.getTabCount(); i++) { Conversa convarsa = (Conversa) jTabbedPane1.getComponentAt(i); if (convarsa.getUtilizador().getIp().equals(utilizador.getIp())) { return i; } } return -1; } //public inprimir todos private void imprimirListaUtilizadoresForm() { jPanel2.removeAll(); jPanel2.add(jLabel11); jPanel2.add(jLabel12); jPanel2.add(jLabel13); for (int i = 0; i < utlizadoresForm.size(); i++) { jPanel2.add(utlizadoresForm.get(i)); validarEinvalidarTab(i); } jPanel2.revalidate(); jPanel2.repaint(); } // verificar private void validarEinvalidarTab(int i) { try { Conversa conversa = (Conversa) jTabbedPane1.getSelectedComponent(); if (utlizadoresForm.get(i).getUtilizador().getIp().equals(conversa.getUtilizador().getIp())) { if (utlizadoresForm.get(i).getUtilizador().getEstado().equals(Constantes.activo)) { abilitarSMSForm(true); } else { abilitarSMSForm(false); } } } catch (NullPointerException ex) { } } //public inprimir todos private void imprimirListaUtilizadoresFormActivos() { jPanel2.removeAll(); jPanel2.add(jLabel11); jPanel2.add(jLabel12); jPanel2.add(jLabel13); for (int i = 0; i < utlizadoresForm.size(); i++) { if (utlizadoresForm.get(i).getUtilizador().getEstado().equals(Constantes.activo)) { jPanel2.add(utlizadoresForm.get(i)); validarEinvalidarTab(i); } } jPanel2.revalidate(); jPanel2.repaint(); } //public inprimir todos private void imprimirListaUtilizadoresFormInactivos() { jPanel2.removeAll(); jPanel2.add(jLabel11); jPanel2.add(jLabel12); jPanel2.add(jLabel13); for (int i = 0; i < utlizadoresForm.size(); i++) { if (utlizadoresForm.get(i).getUtilizador().getEstado().equals(Constantes.inactivo)) { jPanel2.add(utlizadoresForm.get(i)); validarEinvalidarTab(i); } } jPanel2.revalidate(); jPanel2.repaint(); } //remover user da tela e da lista public void removerUserDaTela(int i) { if (-1 == i) { } else { jPanel2.remove(utlizadoresForm.get(i)); jPanel2.revalidate(); jPanel2.repaint(); } } //listar Users public void actualizarUsers() { atualizarListaUtilizadoresForm(ConnectionMannager.listarUtilizadores()); } //retornar usersForm dado um utilizador public int retornarUserForm(Utilizador utilizador) { for (int i = 0; i < utlizadoresForm.size(); i++) { if (utlizadoresForm.get(i).getUtilizador().getIp().equals(utilizador.getIp())) { return i; } } return -1; } public void atualizarListaUtilizadoresForm(ArrayList<Utilizador> utilizadores) { utlizadoresForm.clear(); for (int i = 0; i < utilizadores.size(); i++) { utlizadoresForm.add(new UtilizadorForm(this, utilizadores.get(i))); } imprimirListaUtilizadoresForm(); } /** * 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">//GEN-BEGIN:initComponents private void initComponents() { jPanel1 = new javax.swing.JPanel(); jLayeredPane1 = new javax.swing.JLayeredPane(); jPanel2 = new javax.swing.JPanel(); jLabel11 = new javax.swing.JLabel(); jLabel12 = new javax.swing.JLabel(); jLabel13 = new javax.swing.JLabel(); jPanel7 = new javax.swing.JPanel(); jTextField1 = new javax.swing.JTextField(); jLabel6 = new javax.swing.JLabel(); jPanel4 = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); jSeparator1 = new javax.swing.JSeparator(); jPanel5 = new javax.swing.JPanel(); jLabel5 = new javax.swing.JLabel(); jPanel3 = new javax.swing.JPanel(); jTabbedPane1 = new javax.swing.JTabbedPane(); jScrollPane2 = new javax.swing.JScrollPane(); jTextPane1 = new javax.swing.JTextPane(); jLabel2 = new javax.swing.JLabel(); jPanel8 = new javax.swing.JPanel(); jLabel7 = new javax.swing.JLabel(); jLabel8 = new javax.swing.JLabel(); jLabel9 = new javax.swing.JLabel(); jLabel10 = new javax.swing.JLabel(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("LanChat"); setBackground(new java.awt.Color(225, 232, 240)); setBounds(new java.awt.Rectangle(410, 180, 0, 0)); setMinimumSize(new java.awt.Dimension(540, 380)); setUndecorated(true); setPreferredSize(new java.awt.Dimension(540, 380)); setResizable(false); addMouseMotionListener(new java.awt.event.MouseMotionAdapter() { public void mouseDragged(java.awt.event.MouseEvent evt) { formMouseDragged(evt); } }); addMouseListener(new java.awt.event.MouseAdapter() { public void mousePressed(java.awt.event.MouseEvent evt) { formMousePressed(evt); } public void mouseReleased(java.awt.event.MouseEvent evt) { formMouseReleased(evt); } }); addComponentListener(new java.awt.event.ComponentAdapter() { public void componentHidden(java.awt.event.ComponentEvent evt) { formComponentHidden(evt); } }); addWindowListener(new java.awt.event.WindowAdapter() { public void windowActivated(java.awt.event.WindowEvent evt) { formWindowActivated(evt); } public void windowClosing(java.awt.event.WindowEvent evt) { formWindowClosing(evt); } public void windowDeactivated(java.awt.event.WindowEvent evt) { formWindowDeactivated(evt); } public void windowOpened(java.awt.event.WindowEvent evt) { formWindowOpened(evt); } }); getContentPane().setLayout(null); jPanel1.setBackground(new java.awt.Color(232, 205, 197)); jPanel1.setMinimumSize(new java.awt.Dimension(400, 340)); jPanel1.setPreferredSize(new java.awt.Dimension(400, 350)); jPanel1.setLayout(null); jPanel2.setBackground(new java.awt.Color(232, 205, 197)); jPanel2.setMaximumSize(new java.awt.Dimension(190, 320)); jPanel2.setMinimumSize(new java.awt.Dimension(190, 320)); jPanel2.setPreferredSize(new java.awt.Dimension(190, 320)); jPanel2.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.CENTER, 0, 0)); jLabel11.setBackground(new java.awt.Color(220, 220, 251)); jLabel11.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel11.setText("Todos"); jLabel11.setMaximumSize(new java.awt.Dimension(63, 24)); jLabel11.setMinimumSize(new java.awt.Dimension(63, 24)); jLabel11.setOpaque(true); jLabel11.setPreferredSize(new java.awt.Dimension(63, 24)); jLabel11.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jLabel11MouseClicked(evt); } public void mouseEntered(java.awt.event.MouseEvent evt) { jLabel11MouseEntered(evt); } public void mouseExited(java.awt.event.MouseEvent evt) { jLabel11MouseExited(evt); } }); jPanel2.add(jLabel11); jLabel12.setBackground(new java.awt.Color(213, 233, 220)); jLabel12.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel12.setText("Activos"); jLabel12.setMaximumSize(new java.awt.Dimension(64, 24)); jLabel12.setMinimumSize(new java.awt.Dimension(64, 24)); jLabel12.setOpaque(true); jLabel12.setPreferredSize(new java.awt.Dimension(64, 24)); jLabel12.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jLabel12MouseClicked(evt); } public void mouseEntered(java.awt.event.MouseEvent evt) { jLabel12MouseEntered(evt); } public void mouseExited(java.awt.event.MouseEvent evt) { jLabel12MouseExited(evt); } }); jPanel2.add(jLabel12); jLabel13.setBackground(new java.awt.Color(249, 224, 224)); jLabel13.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel13.setText("Inactivos"); jLabel13.setMaximumSize(new java.awt.Dimension(63, 24)); jLabel13.setMinimumSize(new java.awt.Dimension(63, 24)); jLabel13.setOpaque(true); jLabel13.setPreferredSize(new java.awt.Dimension(63, 24)); jLabel13.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jLabel13MouseClicked(evt); } public void mouseEntered(java.awt.event.MouseEvent evt) { jLabel13MouseEntered(evt); } public void mouseExited(java.awt.event.MouseEvent evt) { jLabel13MouseExited(evt); } }); jPanel2.add(jLabel13); jPanel7.setBackground(new java.awt.Color(204, 204, 255)); jPanel7.setOpaque(false); jTextField1.setBackground(new java.awt.Color(202, 198, 198)); jTextField1.setBorder(null); jLabel6.setBackground(new java.awt.Color(202, 198, 198)); jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel6.setIcon(new javax.swing.ImageIcon(getClass().getResource("/recursos/icons/save_user.png"))); // NOI18N jLabel6.setOpaque(true); jLabel6.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jLabel6MouseClicked(evt); } public void mouseEntered(java.awt.event.MouseEvent evt) { jLabel6MouseEntered(evt); } public void mouseExited(java.awt.event.MouseEvent evt) { jLabel6MouseExited(evt); } }); javax.swing.GroupLayout jPanel7Layout = new javax.swing.GroupLayout(jPanel7); jPanel7.setLayout(jPanel7Layout); jPanel7Layout.setHorizontalGroup(jPanel7Layout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel7Layout.createSequentialGroup().addContainerGap() .addComponent(jTextField1, javax.swing.GroupLayout.DEFAULT_SIZE, 131, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap())); jPanel7Layout .setVerticalGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel7Layout.createSequentialGroup().addGap(55, 55, 55) .addGroup(jPanel7Layout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jTextField1).addComponent(jLabel6, javax.swing.GroupLayout.DEFAULT_SIZE, 33, Short.MAX_VALUE)) .addContainerGap(232, Short.MAX_VALUE))); javax.swing.GroupLayout jLayeredPane1Layout = new javax.swing.GroupLayout(jLayeredPane1); jLayeredPane1.setLayout(jLayeredPane1Layout); jLayeredPane1Layout.setHorizontalGroup( jLayeredPane1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(jLayeredPane1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanel7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))); jLayeredPane1Layout .setVerticalGroup(jLayeredPane1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(jLayeredPane1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanel7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))); jLayeredPane1.setLayer(jPanel2, javax.swing.JLayeredPane.DEFAULT_LAYER); jLayeredPane1.setLayer(jPanel7, javax.swing.JLayeredPane.DEFAULT_LAYER); jPanel1.add(jLayeredPane1); jLayeredPane1.setBounds(0, 0, 190, 320); getContentPane().add(jPanel1); jPanel1.setBounds(40, 20, 190, 320); jPanel4.setBackground(new java.awt.Color(238, 231, 216)); jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/recursos/icons/users.png"))); // NOI18N jLabel1.setMinimumSize(new java.awt.Dimension(32, 32)); jLabel1.setPreferredSize(new java.awt.Dimension(32, 32)); jLabel1.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jLabel1MouseClicked(evt); } public void mouseEntered(java.awt.event.MouseEvent evt) { jLabel1MouseEntered(evt); } public void mouseExited(java.awt.event.MouseEvent evt) { jLabel1MouseExited(evt); } }); jLabel3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/recursos/icons/def.png"))); // NOI18N jLabel3.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseEntered(java.awt.event.MouseEvent evt) { jLabel3MouseEntered(evt); } public void mouseExited(java.awt.event.MouseEvent evt) { jLabel3MouseExited(evt); } }); jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel4.setIcon(new javax.swing.ImageIcon(getClass().getResource("/recursos/icons/edit.png"))); // NOI18N jLabel4.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jLabel4MouseClicked(evt); } public void mouseEntered(java.awt.event.MouseEvent evt) { jLabel4MouseEntered(evt); } public void mouseExited(java.awt.event.MouseEvent evt) { jLabel4MouseExited(evt); } }); jSeparator1.setBackground(new java.awt.Color(232, 205, 197)); jSeparator1.setForeground(new java.awt.Color(232, 205, 197)); javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4); jPanel4.setLayout(jPanel4Layout); jPanel4Layout.setHorizontalGroup(jPanel4Layout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel4Layout.createSequentialGroup() .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(jPanel4Layout .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addComponent(jLabel1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jLabel3, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jLabel4, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))); jPanel4Layout.setVerticalGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel4Layout.createSequentialGroup() .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 174, Short.MAX_VALUE) .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(jLabel3) .addContainerGap())); getContentPane().add(jPanel4); jPanel4.setBounds(0, 20, 40, 320); jPanel5.setBackground(new java.awt.Color(216, 235, 249)); jPanel5.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1)); jPanel5.setMinimumSize(new java.awt.Dimension(480, 33)); jPanel5.setPreferredSize(new java.awt.Dimension(480, 33)); jPanel5.setLayout(null); jLabel5.setFont(new java.awt.Font("MS Reference Sans Serif", 0, 11)); // NOI18N jLabel5.setForeground(new java.awt.Color(79, 75, 75)); jLabel5.setText("jLabel5"); jPanel5.add(jLabel5); jLabel5.setBounds(10, 0, 120, 30); getContentPane().add(jPanel5); jPanel5.setBounds(0, 340, 230, 40); jPanel3.setBackground(new java.awt.Color(216, 235, 249)); jPanel3.setLayout(null); jTabbedPane1.setBackground(new java.awt.Color(255, 255, 255)); jPanel3.add(jTabbedPane1); jTabbedPane1.setBounds(0, 0, 310, 300); jScrollPane2.setBorder(null); jTextPane1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(125, 130, 217))); jTextPane1.setMinimumSize(new java.awt.Dimension(3, 16)); jTextPane1.addKeyListener(new java.awt.event.KeyAdapter() { public void keyPressed(java.awt.event.KeyEvent evt) { jTextPane1KeyPressed(evt); } }); jScrollPane2.setViewportView(jTextPane1); jPanel3.add(jScrollPane2); jScrollPane2.setBounds(10, 310, 240, 40); jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/recursos/icons/interface (1).png"))); // NOI18N jLabel2.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(125, 130, 217))); jLabel2.setMinimumSize(new java.awt.Dimension(50, 40)); jLabel2.setPreferredSize(new java.awt.Dimension(50, 40)); jLabel2.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jLabel2MouseClicked(evt); } public void mouseEntered(java.awt.event.MouseEvent evt) { jLabel2MouseEntered(evt); } public void mouseExited(java.awt.event.MouseEvent evt) { jLabel2MouseExited(evt); } }); jPanel3.add(jLabel2); jLabel2.setBounds(260, 310, 40, 40); getContentPane().add(jPanel3); jPanel3.setBounds(230, 20, 310, 360); jPanel8.setBackground(new java.awt.Color(229, 230, 230)); jPanel8.setLayout(null); jLabel7.setBackground(new java.awt.Color(244, 244, 244)); jLabel7.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N jLabel7.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel7.setIcon(new javax.swing.ImageIcon(getClass().getResource("/recursos/icons/arrows (1).png"))); // NOI18N jLabel7.setOpaque(true); jLabel7.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jLabel7MouseClicked(evt); } public void mouseEntered(java.awt.event.MouseEvent evt) { jLabel7MouseEntered(evt); } public void mouseExited(java.awt.event.MouseEvent evt) { jLabel7MouseExited(evt); } }); jPanel8.add(jLabel7); jLabel7.setBounds(480, 0, 30, 20); jLabel8.setBackground(new java.awt.Color(244, 244, 244)); jLabel8.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N jLabel8.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel8.setIcon(new javax.swing.ImageIcon(getClass().getResource("/recursos/icons/square (3).png"))); // NOI18N jLabel8.setOpaque(true); jLabel8.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jLabel8MouseClicked(evt); } public void mouseEntered(java.awt.event.MouseEvent evt) { jLabel8MouseEntered(evt); } public void mouseExited(java.awt.event.MouseEvent evt) { jLabel8MouseExited(evt); } }); jPanel8.add(jLabel8); jLabel8.setBounds(510, 0, 30, 20); jLabel9.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel9.setIcon(new javax.swing.ImageIcon(getClass().getResource("/recursos/icons/shapes.png"))); // NOI18N jPanel8.add(jLabel9); jLabel9.setBounds(0, 0, 30, 20); jLabel10.setBackground(new java.awt.Color(102, 102, 102)); jLabel10.setFont(new java.awt.Font("MS Reference Sans Serif", 0, 11)); // NOI18N jLabel10.setForeground(new java.awt.Color(51, 51, 51)); jLabel10.setText("LanChat"); jPanel8.add(jLabel10); jLabel10.setBounds(30, 0, 60, 20); getContentPane().add(jPanel8); jPanel8.setBounds(0, 0, 540, 20); pack(); }// </editor-fold>//GEN-END:initComponents //Metodo para adicionar conversa public int adicionarConversa(Conversa conversa) { for (int i = 0; i < conversas.size(); i++) { if (conversas.get(i).getUtilizador().getIp().equals(conversa.getUtilizador().getIp())) { return i; } } conversas.add(conversa); return -1; } //imprimit mensagem public void imprimirSMS(String sms, String usuarioTipo, Conversa convers, Utilizador utilizador) { Conversa conversa = null; if (usuarioTipo.equals("usuario_remoto")) { conversa = retornarConversaPorUtilizador(utilizador); colocarConversaNaTela(conversa); } else { conversa = convers; } CellConstraints cc = new CellConstraints(); JLabel vazio = new JLabel(" "); vazio.setFont(new Font("Ariel", Font.PLAIN, 3)); conversa.getLayout().appendRow(new RowSpec(Sizes.DEFAULT)); conversa.getPainel().add(vazio, cc.xy(1, conversa.getLayout().getRowCount())); conversa.getLayout().appendRow(new RowSpec(Sizes.DEFAULT)); if (usuarioTipo.equals("usuario_remoto")) { conversa.getPainel().add(new DesignComponentes().xyBalao(g, sms, usuarioTipo), cc.xy(1, conversa.getLayout().getRowCount(), CellConstraints.LEFT, CellConstraints.DEFAULT)); Tocar.tocarSom(getClass().getResource("/audio/audio_files/sms.wav")); } else { conversa.getPainel().add(new DesignComponentes().xyBalao(g, sms, usuarioTipo), cc.xy(1, conversa.getLayout().getRowCount())); } conversa.validate(); conversa.getVerticalScrollBar().setValue(conversa.getVerticalScrollBar().getMaximum()); } public Conversa retornarConversaPorUtilizador(Utilizador utilizador) { for (int i = 0; i < conversas.size(); i++) { if (conversas.get(i).getUtilizador().getIp().equals(utilizador.getIp())) { return conversas.get(i); } } return null; } public void colocarConversaNaTela(Conversa conversa) { if (conversa.isConversaNaTela) { jTabbedPane1.setSelectedComponent(conversa); } else { jTabbedPane1.add(conversa.getUtilizador().getNome(), conversa); } } //adicionar conversa na tela public void novaConversa(Utilizador utilizador, int totalTabs) { Border paddingBorder = BorderFactory.createEmptyBorder(5, 5, 5, 5); Border scrollBorder = BorderFactory.createEmptyBorder(0, 0, 0, 0); FormLayout layout = new FormLayout("right:pref:grow", "fill:default:grow,default"); JPanel painel = new JPanel(layout); Conversa conversa = new Conversa(layout, painel, utilizador, this); conversa.getVerticalScrollBar().setBorder(null); conversa.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); conversa.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); conversa.setBorder(BorderFactory.createCompoundBorder(null, scrollBorder)); conversa.getPainel().setBorder(BorderFactory.createCompoundBorder(null, paddingBorder)); int index = adicionarConversa(conversa); if (index == -1) { jTabbedPane1.add(utilizador.getNome(), conversa); jTabbedPane1.setSelectedIndex(totalTabs); jTabbedPane1.setIconAt(totalTabs, new ImageIcon(getClass().getResource("/recursos/icons/close_tab.png"))); } else { jTabbedPane1.add(utilizador.getNome(), conversas.get(index)); jTabbedPane1.setIconAt(jTabbedPane1.indexOfComponent(conversas.get(index)), new ImageIcon(getClass().getResource("/recursos/icons/close_tab.png"))); jTabbedPane1.setSelectedIndex(jTabbedPane1.indexOfComponent(conversas.get(index))); } } private void formWindowOpened(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowOpened }//GEN-LAST:event_formWindowOpened private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing }//GEN-LAST:event_formWindowClosing public void abrirTab_0(Utilizador utilizador) { abilitar(); int totalTabs = jTabbedPane1.getTabCount(); novaConversa(utilizador, totalTabs); } private void mandarMensagem() { Conversa conversa = (Conversa) jTabbedPane1.getComponentAt(jTabbedPane1.getSelectedIndex()); imprimirSMS(jTextPane1.getText(), "usuario_local", conversa, null); chat.cliente.escrever(new Mensagem(Mensagem.sms_simples, jTextPane1.getText(), Chat.utilizador_0), conversa.getUtilizador()); jTextPane1.setText(null); } public void iniciarMultimediaChat(Utilizador utilizador, String chamarOUatender) { if ("atender".equals(chamarOUatender)) { abrirJanelaMultimidea(utilizador, chamarOUatender); } else if ("chamar".equals(chamarOUatender)) { abrirJanelaMultimidea(utilizador, chamarOUatender); } else if ("atender_widget".equals(chamarOUatender)) { abrirJanelaMultimidea(utilizador, chamarOUatender); } } private void abrirJanelaMultimidea(Utilizador utilizador, String chamarOUatender) { if (isMutimideaOn == false) { isMutimideaOn = true; switch (chamarOUatender) { case "chamar": chamar = null; multimedia = new Multimedia(this, utilizador); multimedia.setVisible(true); multimedia.emissor(); chamar = new Chamar(utilizador, multimedia); chamar.start(); break; case "atender": multimedia = new Multimedia(this, utilizador); multimedia.setVisible(true); break; case "atender_widget": multimedia = new Multimedia(this, utilizador); chat.widgetChamada = new WidgetChamada(utilizador, chat); chat.widgetChamada.setVisible(true); break; } } } private class Chamar extends Thread { Utilizador utilizador; Multimedia multimedia; public Chamar(Utilizador utilizador, Multimedia multimedia) { this.utilizador = utilizador; this.multimedia = multimedia; } @Override public void run() { try { chat.cliente.escrever(new Mensagem(Mensagem.sms_multimedia_chat_chamada, Chat.utilizador_0), utilizador); Thread.sleep(20000); multimedia.fecharMultimedia(); return; } catch (InterruptedException ex) { return; } } } private void inicializarLabels() { jLabel1.setBackground(new Color(222, 196, 189)); jLabel2.setBackground(new Color(222, 196, 189)); jLabel3.setBackground(new Color(222, 196, 189)); jLabel4.setBackground(new Color(222, 196, 189)); } private void jLabel1MouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel1MouseEntered jLabel1.setOpaque(true); jLabel1.repaint(); }//GEN-LAST:event_jLabel1MouseEntered private void jLabel4MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel4MouseClicked jTextField1.setText(Chat.utilizador_0.getNome()); jPanel2.setVisible(false); jPanel7.setVisible(true); }//GEN-LAST:event_jLabel4MouseClicked private void jLabel1MouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel1MouseExited jLabel1.setOpaque(false); jLabel1.repaint(); }//GEN-LAST:event_jLabel1MouseExited private void jLabel4MouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel4MouseEntered jLabel4.setOpaque(true); jLabel4.repaint(); }//GEN-LAST:event_jLabel4MouseEntered private void jLabel4MouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel4MouseExited jLabel4.setOpaque(false); jLabel4.repaint(); }//GEN-LAST:event_jLabel4MouseExited private void jLabel3MouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel3MouseEntered jLabel3.setOpaque(true); jLabel3.repaint(); }//GEN-LAST:event_jLabel3MouseEntered private void jLabel3MouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel3MouseExited jLabel3.setOpaque(false); jLabel3.repaint(); }//GEN-LAST:event_jLabel3MouseExited private void jLabel2MouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel2MouseEntered jLabel2.setOpaque(true); jLabel2.repaint(); }//GEN-LAST:event_jLabel2MouseEntered private void jLabel2MouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel2MouseExited jLabel2.setOpaque(false); jLabel2.repaint(); }//GEN-LAST:event_jLabel2MouseExited private void jLabel2MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel2MouseClicked mandarMensagem(); }//GEN-LAST:event_jLabel2MouseClicked private void jTextPane1KeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTextPane1KeyPressed if (evt.getExtendedKeyCode() == KeyEvent.VK_ENTER) { mandarMensagem(); } }//GEN-LAST:event_jTextPane1KeyPressed private void jLabel1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel1MouseClicked jPanel7.setVisible(false); jPanel2.setVisible(true); }//GEN-LAST:event_jLabel1MouseClicked public boolean editarUtilizador(String nome) throws IOException { if (!nome.isEmpty()) { try (BufferedWriter ficheiro_nome = new BufferedWriter(new FileWriter("id.txt"))) { try { ficheiro_nome.write(" " + nome); ficheiro_nome.close(); Chat.utilizador_0.setNome(nome); initBaixo(); } catch (IOException ex) { Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex); } } } else { return false; } return true; } private void jLabel6MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel6MouseClicked try { if (editarUtilizador(jTextField1.getText())) { jPanel2.setVisible(true); jPanel7.setVisible(false); } } catch (IOException ex) { Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex); } }//GEN-LAST:event_jLabel6MouseClicked private void jLabel6MouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel6MouseEntered jLabel6.setBackground(new Color(153, 153, 153)); jLabel6.setOpaque(true); jLabel6.repaint(); }//GEN-LAST:event_jLabel6MouseEntered private void jLabel6MouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel6MouseExited jLabel6.setBackground(new Color(202, 198, 198)); jLabel6.setOpaque(true); jLabel6.repaint(); }//GEN-LAST:event_jLabel6MouseExited private void formMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_formMouseReleased mouseDownCompCoords = null; }//GEN-LAST:event_formMouseReleased private void formMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_formMousePressed mouseDownCompCoords = evt.getPoint(); }//GEN-LAST:event_formMousePressed private void formMouseDragged(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_formMouseDragged Point currCoords = evt.getLocationOnScreen(); this.setLocation(currCoords.x - mouseDownCompCoords.x, currCoords.y - mouseDownCompCoords.y); }//GEN-LAST:event_formMouseDragged private void jLabel8MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel8MouseClicked this.setVisible(false); this.dispose(); }//GEN-LAST:event_jLabel8MouseClicked private void jLabel8MouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel8MouseEntered jLabel8.setBackground(new Color(195, 193, 193)); jLabel8.setOpaque(true); jLabel8.repaint(); }//GEN-LAST:event_jLabel8MouseEntered private void jLabel8MouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel8MouseExited jLabel8.setBackground(new Color(244, 244, 244)); jLabel8.setOpaque(true); jLabel8.repaint(); }//GEN-LAST:event_jLabel8MouseExited private void jLabel7MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel7MouseClicked this.setState(Frame.ICONIFIED); }//GEN-LAST:event_jLabel7MouseClicked private void jLabel7MouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel7MouseEntered jLabel7.setBackground(new Color(195, 193, 193)); jLabel7.setOpaque(true); jLabel7.repaint(); }//GEN-LAST:event_jLabel7MouseEntered private void jLabel7MouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel7MouseExited jLabel7.setBackground(new Color(244, 244, 244)); jLabel7.setOpaque(true); jLabel7.repaint(); }//GEN-LAST:event_jLabel7MouseExited private void formComponentHidden(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_formComponentHidden }//GEN-LAST:event_formComponentHidden private void formWindowActivated(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowActivated if (this.isVisible()) { chat.principal.novasSMS = 0; chat.widget.redimencionarWidget(-1); } }//GEN-LAST:event_formWindowActivated private void formWindowDeactivated(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowDeactivated if (!this.isVisible()) { novasSMS = 0; chat.widget.redimencionarWidget(1); } }//GEN-LAST:event_formWindowDeactivated private void jLabel11MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel11MouseClicked imprimirListaUtilizadoresForm(); }//GEN-LAST:event_jLabel11MouseClicked private void jLabel12MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel12MouseClicked imprimirListaUtilizadoresFormActivos(); }//GEN-LAST:event_jLabel12MouseClicked private void jLabel13MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel13MouseClicked imprimirListaUtilizadoresFormInactivos(); }//GEN-LAST:event_jLabel13MouseClicked private void jLabel11MouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel11MouseEntered jLabel11.setBackground(new Color(194, 195, 233)); jLabel11.setOpaque(true); jLabel11.repaint(); }//GEN-LAST:event_jLabel11MouseEntered private void jLabel11MouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel11MouseExited jLabel11.setBackground(new Color(220, 220, 251)); jLabel11.setOpaque(true); jLabel11.repaint(); }//GEN-LAST:event_jLabel11MouseExited private void jLabel12MouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel12MouseExited // TODO add your handling code here:[213,233,220] jLabel12.setBackground(new Color(213, 233, 220)); jLabel12.setOpaque(true); jLabel12.repaint(); }//GEN-LAST:event_jLabel12MouseExited private void jLabel12MouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel12MouseEntered jLabel12.setBackground(new Color(162, 224, 175)); jLabel12.setOpaque(true); jLabel12.repaint(); }//GEN-LAST:event_jLabel12MouseEntered private void jLabel13MouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel13MouseExited jLabel13.setBackground(new Color(249, 224, 224)); jLabel13.setOpaque(true); jLabel13.repaint(); }//GEN-LAST:event_jLabel13MouseExited private void jLabel13MouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel13MouseEntered jLabel13.setBackground(new Color(230, 167, 158)); jLabel13.setOpaque(true); jLabel13.repaint(); }//GEN-LAST:event_jLabel13MouseEntered // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel10; private javax.swing.JLabel jLabel11; private javax.swing.JLabel jLabel12; private javax.swing.JLabel jLabel13; 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.JLabel jLabel7; private javax.swing.JLabel jLabel8; private javax.swing.JLabel jLabel9; private javax.swing.JLayeredPane jLayeredPane1; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; private javax.swing.JPanel jPanel4; private javax.swing.JPanel jPanel5; private javax.swing.JPanel jPanel7; private javax.swing.JPanel jPanel8; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JSeparator jSeparator1; private javax.swing.JTabbedPane jTabbedPane1; private javax.swing.JTextField jTextField1; private javax.swing.JTextPane jTextPane1; // End of variables declaration//GEN-END:variables }