diff options
Diffstat (limited to 'TAO/examples/Simulator/DOVEBrowser/DemoCore.java')
-rw-r--r-- | TAO/examples/Simulator/DOVEBrowser/DemoCore.java | 243 |
1 files changed, 243 insertions, 0 deletions
diff --git a/TAO/examples/Simulator/DOVEBrowser/DemoCore.java b/TAO/examples/Simulator/DOVEBrowser/DemoCore.java new file mode 100644 index 00000000000..272e84f7c84 --- /dev/null +++ b/TAO/examples/Simulator/DOVEBrowser/DemoCore.java @@ -0,0 +1,243 @@ +// $Id$ +// +// = FILENAME +// DemoCore.java +// +// = AUTHOR +// Michael Kircher (mk1@cs.wustl.edu) +// +// = DESCRIPTION +// This class servers as the core class of the simulation demo. +// It connects the push consumer of the event service with +// one or several Java Beans. +// +// ============================================================================ + + +import java.awt.*; +import java.awt.event.*; + +public class DemoCore extends Frame { + + private static final int MAX_VIS_COMPS = 10; + + private PushConsumerFactory pushConsumerFactory_; + private VisCompFactory visCompFactory_; + private DataHandler dataHandler_; + private java.util.Vector vis_comp_list_; + private int countVisComp_ = 0; + private GridBagLayout gridbag_; + private GridBagConstraints constraints_; + private boolean use_queueing_ = false; + private boolean connections_established_ = false; + + DemoCore (String nameServiceIOR, + String nameServicePort, + String[] args, + boolean use_queueing, + java.applet.Applet applet) { + super (); + + use_queueing = use_queueing; + + setSize (600,400); + setBounds (new Rectangle (50,50,800,500)); + setVisible (true); + + gridbag_ = new GridBagLayout(); + constraints_ = new GridBagConstraints(); + constraints_.fill = GridBagConstraints.BOTH; + constraints_.weightx = 1.0; + constraints_.weighty = 1.0; + this.setLayout (gridbag_); + + // Instantiate the DataHandler and the PushConsumer + dataHandler_ = new NavWeapDataHandler (); + pushConsumerFactory_ = new PushConsumerFactory (dataHandler_, + nameServiceIOR, + nameServicePort, + args, + use_queueing_, + applet); + + // List of Visualization Components + vis_comp_list_ = new java.util.Vector(); + + MenuBar menubar_ = new MenuBar (); + Menu menu_ = new Menu ("File"); + MenuItem menu_quit_item_ = new MenuItem ("Quit"); + menu_quit_item_.setEnabled (true); + MenuItem menu_add_item_ = new MenuItem ("Add"); + menu_add_item_.setEnabled (true); + menu_.add (menu_add_item_); + menu_.add (menu_quit_item_); + menubar_.add (menu_); + + setMenuBar (menubar_); + + menu_quit_item_.addActionListener (new ActionListener () + { + public void actionPerformed (ActionEvent e) { + System.exit (0); + } + }); + + menu_add_item_.addActionListener (new ActionListener () + { + public void actionPerformed (ActionEvent e) { + ObservablesDialog obsDialog_ = + new ObservablesDialog (DemoCore.this, + dataHandler_.getObservablesList()); + obsDialog_.addAnswerListener (new AnswerListener () + { + public void ok (AnswerEvent e) + { + DemoCore.this.addConnection (e.selected_); + } + }); + obsDialog_.setVisible (true); + } + }); + + // instantiate the Factory for Visualization Components + visCompFactory_ = new VisCompFactory (); + + // Traverse the args looking for switches that determine connections. + int arg_index = 0; + while (args.length > arg_index) + { + if (args[arg_index].equals ("-dualECdemo") || + args[arg_index].equals ("-dualECdemo1") || + args[arg_index].equals ("-dualECdemo2")) + { + // Use monotonic scales in the double precision data windows + DoubleVisComp.monotonic_scale (true); + + // Establish connections + if (! connections_established_) + { + connections_established_ = true; + addConnection ("Weapons"); + addConnection ("Weapons Latency (100 ns)"); + addConnection ("Weapons Latency Jitter (100 ns)"); + addConnection ("Navigation"); + addConnection ("Navigation Latency (100 ns)"); + addConnection ("Navigation Latency Jitter (100 ns)"); + break; + } + } + if (args[arg_index].equals ("-dualECdemo") || + args[arg_index].equals ("-dualECdemo1") || + args[arg_index].equals ("-dualECdemo2")) + { + // Use monotonic scales in the double precision data windows + DoubleVisComp.monotonic_scale (true); + + // Establish connections + if (! connections_established_) + { + connections_established_ = true; + addConnection ("Weapons"); + addConnection ("Weapons Latency (100 ns)"); + addConnection ("Weapons Latency Jitter (100 ns)"); + addConnection ("Navigation"); + addConnection ("Navigation Latency (100 ns)"); + addConnection ("Navigation Latency Jitter (100 ns)"); + break; + } + } + + else if (args[arg_index].equals ("-PRdemo")) + { + // Establish connections + if (! connections_established_) + { + connections_established_ = true; + addConnection ("High Consumer Persian Recursion", 2); + addConnection ("Low Consumer Persian Recursion", 2); + // addConnection ("High Consumer Execution Time (100 ns)", 2); + // addConnection ("Low Consumer Execution Time (100 ns)", 2); + break; + } + } + + // Skip over anything else. + else + { + arg_index ++; + } + } + + + // If connections have not been established, set up defaults + if (! connections_established_) + { + connections_established_ = true; + addConnection ("Weapons"); + addConnection ("Weapons Latency (100 ns)"); + addConnection ("Navigation"); + addConnection ("Navigation Latency (100 ns)"); + } + } + + + public boolean addConnection (String selected, int max_in_a_row) { + // to not fill too many into it + if (countVisComp_ < MAX_VIS_COMPS) { + + // get a reference to the Observable + DemoObservable observable_ = dataHandler_.getObservable (selected); + + if (observable_ != null) { + + VisComp visComp_ = visCompFactory_.getNewVisComp (observable_.getProperty (), selected); + + if (visComp_ != null) { + vis_comp_list_.addElement (visComp_); + + // connect the Observer with the Observable + observable_.addObserver (visComp_); + + countVisComp_++; + + // not more than three in a row + if (countVisComp_ == max_in_a_row){ + constraints_.gridwidth = GridBagConstraints.REMAINDER; + } + if (countVisComp_ > max_in_a_row) { + constraints_.gridwidth = 1; + } + + gridbag_.setConstraints ((java.awt.Component) visComp_, constraints_); + + // add the Visualization Component to the Frame + DemoCore.this.add ((java.awt.Component) visComp_); + DemoCore.this.show (); + + return true; + } + } + } + return false; + } + + public boolean addConnection (String selected) { + return addConnection (selected, 3); + } + + public void init () + { + } + + public void paint (Graphics g) + { + } + + public void run () + { + // Wait passive until events come in + pushConsumerFactory_.run (); + } +} + + |