######################################################################
##
## Copyright (c) LIFL 1999
## The GOODE team of the LIFL
## University of Lille, France
## All rights reserved
##
## The CorbaWeb script associated to the OMG IDL Computer interface.
##
######################################################################

# Each action must have two arguments: the first one refers to the
# current CORBA object and the second one refers to a CorbaWeb
# ActionContext instance.

######################################################################
## This action generates forms to execute Computer operations.
######################################################################

proc view(computer, ac)
{
  # generates <h1>...</h1>
  ac.h1("Basic Actions on this Computer object")

  # generates a HTML form referring the do_is_prime_number action.
  ac.action_form(computer,"do_is_prime_number")
    # generates the submit button.
    ac.submit_button("Compute")
    ac.print("if the number ")
    # generates the text field input for the variable "a_number".
    ac.text_input("a_number", 5)
    ac.println(" is prime.")
  ac.end_form()

  # generates a HTML form referring the do_prime_numbers action.
  ac.action_form(computer,"do_prime_numbers")
    # generates the submit button.
    ac.submit_button("Compute")
    ac.print("the prime numbers less than the number ")
    # generates the text field input for the variable "a_number".
    ac.text_input("a_number", 5)
  ac.end_form()

  # generates a HTML form referring the do_prime_factors action.
  ac.action_form(computer,"do_prime_factors")
    # generates the submit button.
    ac.submit_button("Compute")
    ac.print("the prime factors of the number ")
    # generates the text field input for the variable "a_number".
    ac.text_input("a_number", 5)
  ac.end_form()
}

######################################################################
## This action executes the is_prime_number operation on a Computer.
######################################################################

proc do_is_prime_number(computer, ac)
{
  # gets the form variable "a_number".
  a_number = ac.getLong("a_number")

  # executes the remote is_prime_number operation.
  result = computer.is_prime_number(a_number)

  # displays the result.
  ac.print(a_number)
  if (result) {
    ac.println(" is a prime number.")
  } else {
    ac.println(" is not a prime number.")
  }

  # generates the forms.
  view(computer, ac)
}

######################################################################
## This action executes the prime_numbers operation on a Computer.
######################################################################

proc do_prime_numbers(computer, ac)
{
  # gets the form variable "a_number".
  a_number = ac.getLong("a_number")

  # executes the remote prime_numbers operation.
  result = computer.prime_numbers(a_number)

  # displays the result.
  ac.print("The prime numbers less than ")
  ac.print(a_number)
  ac.println(" are:<BR>")
  ac.println("<UL>")
  for i in result {
    ac.print("<LI> ")
    ac.println(i)
  }
  ac.println("</UL>")

  # generates the forms.
  view(computer, ac)
}

######################################################################
## This action executes the prime_factors operation on a Computer.
######################################################################

proc do_prime_factors(computer, ac)
{
  # gets the form variable "a_number".
  a_number = ac.getLong("a_number")

  # executes the remote prime_factorss operation.
  result = computer.prime_factors(a_number)

  # displays the result.
  ac.print("The prime factors of ")
  ac.print(a_number)
  ac.print(" are:<BR>")
  ac.println("<UL>")
  for i in result {
    ac.print("<LI> ")
    ac.println(i)
  }
  ac.println("</UL>")

  # generates the forms.
  view(computer, ac)
}

######################################################################
## Declaration of these actions into the CorbaWeb ActionRepository.
######################################################################

declareAction("view", view, "Views the Computer")
declareAction("do_is_prime_number", do_is_prime_number,
              "Executes the is_prime_number operation")
declareAction("do_prime_numbers", do_prime_numbers,
              "Executes the prime_numbers operation")
declareAction("do_prime_factors", do_prime_factors,
              "Executes the prime_factors operation")

######################################################################
# end of file 'CorbaWeb/actions/Computer'
######################################################################
