/*
 * Aleph Toolkit
 *
 * Copyright 1999, Brown University, Providence, RI.
 * 
 *                         All Rights Reserved
 * 
 * Permission to use, copy, modify, and distribute this software and its
 * documentation for any purpose other than its incorporation into a
 * commercial product is hereby granted without fee, provided that the
 * above copyright notice appear in all copies and that both that
 * copyright notice and this permission notice appear in supporting
 * documentation, and that the name of Brown University not be used in
 * advertising or publicity pertaining to distribution of the software
 * without specific, written prior permission.
 * 
 * BROWN UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ANY
 * PARTICULAR PURPOSE.  IN NO EVENT SHALL BROWN UNIVERSITY BE LIABLE FOR
 * ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

package aleph.gui;

import aleph.Aleph;
import aleph.Config;
import java.awt.CheckboxMenuItem;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;


/**
 * Menu that controls run-time options.
 * @see aleph.gui.Console
 *
 * @author Maurice Herlihy
 * @date January 1999
 **/

public class RuntimeMenu extends Menu {

  private CheckboxMenuItem profileBox; // profile
  private CheckboxMenuItem java_gBox; // java_g
  private CheckboxMenuItem logBox; // log console

  private State state;

  /**
   * Sole constructor.
   **/
  public RuntimeMenu(State state) {
    super("Runtime", true);	// tear-off
    this.state = state;

    // Profiling?
    boolean profile = Boolean.getBoolean("aleph.profile");
    profileBox = new CheckboxMenuItem("Profiling", profile);
    profileBox.addItemListener(new ItemListener() {
      public void itemStateChanged(ItemEvent e) {
	RuntimeMenu.this.state.profile = RuntimeMenu.this.profileBox.getState();
      }
    });
    add(profileBox);

    // use java_g?
    boolean java_g = Boolean.getBoolean("aleph.java_g");
    java_gBox = new CheckboxMenuItem("Use java_g", java_g);
    java_gBox.addItemListener(new ItemListener() {
      public void itemStateChanged(ItemEvent e) {
	RuntimeMenu.this.state.java_g = RuntimeMenu.this.java_gBox.getState();
      }
    });
    add(java_gBox);

    // log console?
    boolean logging = Boolean.getBoolean("aleph.logging");
    logBox = new CheckboxMenuItem("Log console", logging);
    logBox.addItemListener(new ItemListener() {
      public void itemStateChanged(ItemEvent e) {
	RuntimeMenu.this.state.logging = RuntimeMenu.this.logBox.getState();
      }
    });
    add(logBox);
  }

}
