package cis600.client; import java.awt.*; import java.awt.event.*; import org.omg.CosNaming.*; public class ClientApplet extends java.applet.Applet implements ActionListener { private TextField _rangeField, _higherRangeField, _numberField; private TextArea messageArea; private Button lowerRange, higherRange, _numberGenerated, timer; private cis600.util.RandomGen _randomGen; private int _lowRange=100; private int _highRange=1000; public void init() { Panel p; Font lbl; GridBagLayout g; GridBagConstraints c; lbl = new Font("Helvetica", Font.BOLD, 14); g = new GridBagLayout(); c = new GridBagConstraints(); c.fill = GridBagConstraints.NONE; c.weightx = 1.0; c.gridwidth = GridBagConstraints.REMAINDER; /* This GUI uses a 3 by 2 grid of widgets. */ setLayout(g); /* Add the Six widgets. */ p = new Panel(); g.setConstraints(p, c); add(p); p.add(lowerRange = new Button("Lower Range")); lowerRange.setActionCommand("Lower"); lowerRange.addActionListener(this); p.add(_rangeField = new TextField(6)); _rangeField.setText("0"); p.add(higherRange=new Button("Higher Range")); higherRange.setActionCommand("Higher"); higherRange.addActionListener(this); p.add(_higherRangeField = new TextField(6)); _higherRangeField.setText("1000"); p = new Panel(); g.setConstraints(p, c); add(p); p.add(messageArea = new TextArea(5,30)); p = new Panel(); g.setConstraints(p, c); add(p); p.add(_numberGenerated = new Button("Generate Number")); _numberGenerated.setActionCommand("Generate"); _numberGenerated.addActionListener(this); p.add(_numberField = new TextField(8)); p.add(timer= new Button("Timer")); timer.setActionCommand("Timer"); timer.addActionListener(this); /* make the number text field non-editable.*/ _numberField.setEditable(false); getRandomizerHandle(); } private void getRandomizerHandle() { try { /* Initialize the ORB.*/ org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(this, null); /* Get a reference to the Naming Service */ org.omg.CORBA.Object nameServiceObj = orb.resolve_initial_references("NameService"); /* Check to see if the operation involving getting a reference to the NameService was successful */ if (nameServiceObj == null) { System.out.println("Name Service Object = null"); return; } org.omg.CosNaming.NamingContext nameService = org.omg.CosNaming.NamingContextHelper.narrow(nameServiceObj); if (nameService == null) { System.out.println("nameService = null"); return; } NameComponent[] collabName = { new NameComponent("Utilities", "Randomizer")}; _randomGen= cis600.util.RandomGenHelper.narrow(nameService.resolve(collabName)); System.out.println("Received Generator Handle"); } catch(Exception e) { System.out.println("Exception: " + e); } } public void actionPerformed(ActionEvent event) { String command = event.getActionCommand(); if (command.equals("Lower")) { try { _lowRange = Integer.parseInt(_rangeField.getText()); } catch (java.lang.NumberFormatException e) { _lowRange=0; _rangeField.setText("0"); } } if (command.equals("Higher")) { try { _highRange=Integer.parseInt(_higherRangeField.getText()); } catch (java.lang.NumberFormatException e) { _highRange=1000; _higherRangeField.setText("1000"); } } if(command.equals("Generate")) { System.out.println("Accessing Remote Object"); if (_lowRange >1) { try { _numberField.setText("Gen " +_randomGen.nextIntInRange(_lowRange,_highRange)); } catch (cis600.util.InvalidOperationException e) { messageArea.insert(e.toString()+ "\n", messageArea.getText().length()); } } else _numberField.setText("Gen" +_randomGen.nextInt(_highRange)); } if(command.equals("Timer")) { messageArea.insert("Invocation 1000 times"+ "\n", messageArea.getText().length()); long startTime = System.currentTimeMillis(); if (_lowRange >1) { try { for (int i=0 ; i <1000 ; i++) _numberField.setText("Gen " +_randomGen.nextIntInRange(_lowRange,_highRange)); } catch (cis600.util.InvalidOperationException e) { messageArea.insert(e.toString()+ "\n", messageArea.getText().length()); } } else for (int i=0 ; i <1000 ; i++) _numberField.setText("Gen" +_randomGen.nextInt(_highRange)); long stopTime = System.currentTimeMillis(); messageArea.insert("Avg Invocation Ping= "+ ((stopTime - startTime)/1000f) + " msecs" + "\n", messageArea.getText().length()); } } }