package Applications.ClientsFactory; import org.omg.CosEventCommImpl.*; import org.omg.CosEventChannelAdminImpl.*; import java.awt.event.*; import java.awt.*; import javax.swing.*; import org.omg.CORBA.*; import java.util.*; public class PushSupplierPanel extends JPanel implements EventChannelMonitor, ActionListener { private PushSupplierImpl pushsupplierimpl = new PushSupplierImpl (this); private Any data; private int enviados = 0; private Misc varios = new Misc(); private JTextArea textArea = new JTextArea (); private JButton Conectar = new JButton ("Conectar"); private JButton Desconectar = new JButton ("Desconectar"); private JButton Evento = new JButton ("Evento"); private JButton Rafaga = new JButton ("Rafaga"); private JTextField Canal = new JTextField(); private JTextField Tipo = new JTextField(); private JTextField Direccion= new JTextField(); private JTextField Puerto = new JTextField(); private JTextField Enviados = new JTextField(); private JSplitPane panel_2 = new JSplitPane (JSplitPane.VERTICAL_SPLIT); private JPanel panel_2_1 = (new JPanel () {public Insets getInsets () { return new Insets ( 4, 4, 4, 4 );}} ); private JScrollPane panel_2_2 = new JScrollPane(); private JComboBox comboBox = new JComboBox (); public PushSupplierPanel() { try { this.setPreferredSize(new Dimension(650, 175)); this.setLayout(new BorderLayout()); this.add ( panel_2, BorderLayout.CENTER ); panel_2.add ( panel_2_2, JSplitPane.RIGHT ); panel_2.add ( panel_2_1, JSplitPane.LEFT ); panel_2.setEnabled(false); panel_2_2.getViewport().add ( textArea, null ); panel_2_1.setLayout (new GridLayout(5, 2, 2, 2)); panel_2_1.add (varios.CreaLabelTexto ("Canal:" , "Nombre del canal al que se va a conectar." , Canal ,"CANAL" , true), null); panel_2_1.add (varios.CreaLabelTexto ("Tipo de canal:", "Tipo del canal al que se va a conectar." , Tipo ,"" , true), null); panel_2_1.add (varios.CreaLabelTexto ("Dirección:" , "Dirección del servidor de nombres." , Direccion, "127.0.0.1", true), null); panel_2_1.add (varios.CreaLabelTexto ("Puerto:" , "Puerto de escucha del servidor de nombres." , Puerto , "900" , true), null); JPanel aux = new JPanel (); JLabel jLabel = new JLabel ( "Enviar mi referencia:" ); jLabel.setToolTipText ( "Enviar o no la propia referencia al canal de eventos." ); aux.add (jLabel, null); comboBox.addItem ( "Sí" ); comboBox.addItem ( "No" ); comboBox.setToolTipText ( "Enviar o no la propia referencia al canal de eventos." ); aux.add (comboBox, null); panel_2_1.add ( aux, null ); panel_2_1.add (varios.CreaLabelTexto ("Eventos enviados:", "Número global de eventos enviados.", Enviados, "0", false), null); Conectar.setToolTipText ("Conectar el Push Supplier al canal de eventos."); Conectar.addActionListener(this); panel_2_1.add ( Conectar , null ); Desconectar.setToolTipText ( "Desconectar el Push Supplier del canal de eventos."); Desconectar.addActionListener(this); panel_2_1.add ( Desconectar , null ); Evento.setToolTipText ("Enviar un evento al canal."); Evento.addActionListener(this); panel_2_1.add ( Evento , null ); Rafaga.setToolTipText ("Enviar una ráfaga de 2000 eventos consecutivos al canal."); Rafaga.setNextFocusableComponent(Canal); Rafaga.addActionListener(this); panel_2_1.add ( Rafaga , null ); } catch(Exception exx) { varios.PopUpError (this, "ERROR en constructor de PushSupplierPanel: " + exx); System.out.println ("Error en clase PushSupplierPanel." + exx); } } public void actionPerformed (ActionEvent e) { try { if ( e.getActionCommand().equals("Conectar")) { if ( comboBox.getSelectedItem().toString().equals("Sí") ) pushsupplierimpl.connect ( Canal.getText(), Tipo.getText(), Direccion.getText(), Puerto.getText(), true ); else pushsupplierimpl.connect ( Canal.getText(), Tipo.getText(), Direccion.getText(), Puerto.getText(), false ); } else if ( e.getActionCommand().equals("Desconectar")) { pushsupplierimpl.disconnect(); enviados = 0; Enviados.setText("0"); } else if ( e.getActionCommand().equals("Evento")) { Vector v = new Vector (); v.addElement(new String ("Push")); v.addElement(new Integer (0)); v.addElement(new Date()); data = ORB.init().create_any(); data.insert_Value(v); pushsupplierimpl.push ( data ); } else if ( e.getActionCommand().equals("Rafaga")) { for ( int i=1; i<2001 ; i++ ) { Vector v = new Vector (); v.addElement(new String ("Push")); v.addElement(new Integer (i)); v.addElement(new Date()); data = ORB.init().create_any(); data.insert_Value(v); pushsupplierimpl.push ( data ); System.out.println ("Push rafaga " + i ); } } } catch ( org.omg.CORBA.SystemException ex ) { Mensaje (ERROR, "PullConsumerPanel", varios.TraduceSystemException(ex)); } catch(Exception exx) { Mensaje (ERROR, "PullConsumerPanel", exx.toString()); } } public void Destruir () { try { pushsupplierimpl.disconnect(); } catch(Exception exx){} } /* Ahora viene la parte en la que se implementa el interfaz MessageMonitor */ public void Mensaje ( int tipo, String origen, String mensaje ) { if ( tipo == this._ERROR ) mensaje = "Error en " + origen + ". "+ mensaje; textArea.append ( mensaje + "\n" ); } public void Accion ( int accion ) { switch ( accion ) { case ENVIADO_PUSH: enviados ++; Enviados.setText(""+ enviados); break; case CANAL_DESCONECTA: Mensaje ( INFO, "PushSupplierPanel", "El canal ha desconectado al push Supplier." ); break; } } public void insert ( Any data ) { } }