sub_arctic.lib
Class menubar

java.lang.Object
  |
  +--sub_arctic.lib.min_interactor
        |
        +--sub_arctic.lib.base_interactor
              |
              +--sub_arctic.lib.menubar

public class menubar
extends base_interactor
implements pressable, menu_notifier

This class implements a style-neutral menu bar. It should be able to handle mac, windoze, and motif/unix style menu bars, but not NextStep style.


Field Summary
protected  boolean _current_is_left
          This is a boolean which says if the selected item is in the right or the left hand set.
protected  int _currently_depressed
          This is the number of the currently depressed item.
protected  loaded_image bar_image
          Our current menubar image.
protected  java.util.Hashtable button_to_menu
          This hashtable keeps track of the mapping from the menu items to the buttons on the menu.
protected  int cached_width
          This is where we store the cached value of our width
protected  java.util.Vector left_hotspots
          This is where we hold the hotspots for the menubar's left objects
protected  java.util.Vector left_images
          Left hand set of images
protected  java.util.Vector left_items
          Left hand set of items.
protected  java.util.Vector right_hotspots
          This is where we hold the hotspots for the menubar's right objects
protected  java.util.Vector right_images
          Right hand set of images
protected  java.util.Vector right_items
          Right hand set of items.
 
Fields inherited from class sub_arctic.lib.base_interactor
_child_index, _child_list, _clip_bounds, _constraint_flags, _enabled_constraint, _flags, _h, _h_constraint, _parent, _part_a_constraint, _part_b_constraint, _user_data, _visible_constraint, _w, _w_constraint, _x, _x_constraint, _y, _y_constraint, default_child_hint
 
Constructor Summary
menubar(java.util.Vector left, java.util.Vector right, int w)
          Create a menubar from two Vectors of Strings.
 
Method Summary
 void associate_menu(java.lang.Object obj, menu m)
          Set the menu associated with a particular item (String or loaded_image).
 java.awt.Point compute_menu_location(java.awt.Rectangle r, menu m)
          This function computes the menu location given a hotspot rectangle in our coordinate system.
 void configure()
          Configure the object to ensure it has its proper bounds and has declared all its damage.
 boolean current_is_left()
          Retrieve a boolean indicating if the currently selected item is on the left.
 int currently_depressed()
          Which item is currently depressed? This returns -1 if there is no currently depressed item.
 java.awt.Font derive_font(java.awt.Font f)
          This function is called to derive the font from the default font.
 void draw_self_local(drawable d)
          Draw the object on a given drawable.
 int intrinsic_constraints()
          Indicate that we intrinsically constrain height.
 void menu_done()
          This function gets called when the menubar's popped down menu gets finished.
 boolean menu_modify(int x, int y, event evt)
          This function is called to alert the notifier that the interaction is now over their area.
 boolean press(event evt, java.lang.Object user_info)
          Dispatch mouse button press input to the object.
 boolean release(event evt, java.lang.Object user_info)
          Dispatch mouse button release to the object.
 void set_current_is_left(boolean n)
          Set the flag indicating if the currently selected item is on the left.
 void set_currently_depressed(int i, boolean t, event evt)
          Set the currently depressed item.
 void style_changed()
          Make the menubar images, given a set of left and right objects.
 
Methods inherited from class sub_arctic.lib.base_interactor
active_constraints, add_child, add_user_datum, attach_dependent, bound, callback_obj, child_index, child, clear_child_list, clear_constraint_flag_bit, clear_flag_bit, constraint_flag_is_set, constraint_flag_string, constraint_on, custom_fun1, custom_fun2, damage_fixed, damage_from_child, damage_self, damage_self, damage_self, damage_self, damage_self, detach_dependent, do_action, do_action, do_callback, do_callback, drag_feature_point, draw_children, draw_self, enabled_constraint, enabled, enter_local_coordinates, eval_enabled, eval_h, eval_part_a, eval_part_b, eval_visible, eval_w, eval_x, eval_y, eval, exit_local_coords, feature_point_enabled, feature_point, filter_pt, find_child, first_callback_num, fixed_children, flag_is_set, flag_string, focus_set_enter, focus_set_exit, get_awt_component, get_external_constraint, get_part, get_top_level, get_value, global_to_local, global_to_local, h_constraint, h, handle_cycle, inform_ood, insert_child, inside_bounds, into_local, into_local, into_parent, into_parent, is_constrained, last_callback_num, local_to_global, local_to_global, mark_all_ood, mark_enabled_ood, mark_h_ood, mark_ood, mark_part_a_ood, mark_part_b_ood, mark_reparented_ood, mark_visible_ood, mark_w_ood, mark_x_ood, mark_y_ood, marked_ood, move_child_downward, move_child_downward, move_child_to_bottom, move_child_to_bottom, move_child_to_top, move_child_to_top, move_child_upward, move_child_upward, move_downward, move_to_bottom, move_to_top, move_upward, new_look_configure, next_sibling, num_actions, num_children, num_feature_points, ood_inform_all, parent, part_a_constraint, part_a, part_b_constraint, part_b, pick_within_children, pick, picked_by, pos, prev_sibling, register_resource_names, remove_child, remove_child, remove_user_datum, restyle_look_resources, restyle, set_callback_obj, set_child_index, set_child, set_constraint_flag_bit, set_constraint_flag_bit, set_constraint, set_constraint, set_enabled_constraint, set_enabled_constraint, set_enabled_constraint, set_enabled, set_flag_bit, set_flag_bit, set_h_constraint, set_h_constraint, set_h_constraint, set_h, set_intrinsic_h, set_intrinsic_size, set_intrinsic_w, set_parent, set_part_a_constraint, set_part_a_constraint, set_part_a_constraint, set_part_a, set_part_b_constraint, set_part_b_constraint, set_part_b_constraint, set_part_b, set_pos, set_pos, set_raw_enabled, set_raw_h, set_raw_part_a, set_raw_part_b, set_raw_visible, set_raw_w, set_raw_x, set_raw_y, set_size, set_style_lock, set_user_info, set_visible_constraint, set_visible_constraint, set_visible_constraint, set_visible, set_w_constraint, set_w_constraint, set_w_constraint, set_w, set_x_constraint, set_x_constraint, set_x_constraint, set_x, set_y_constraint, set_y_constraint, set_y_constraint, set_y, setup_for_children, setup_for_children, setup_for_fixed_children, size, style_change_local, style_change, supports_children, tag_str, toString, traverse_and_collect_children, traverse_and_collect_parent, traverse_and_collect, trivial_reject, trivial_reject, user_data, user_info, value_ood, visible_constraint, visible, w_constraint, w, x_constraint, x_into_local, x_into_parent, x, y_constraint, y_into_local, y_into_parent, y
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

cached_width

protected int cached_width
This is where we store the cached value of our width

left_hotspots

protected java.util.Vector left_hotspots
This is where we hold the hotspots for the menubar's left objects

right_hotspots

protected java.util.Vector right_hotspots
This is where we hold the hotspots for the menubar's right objects

bar_image

protected loaded_image bar_image
Our current menubar image.

button_to_menu

protected java.util.Hashtable button_to_menu
This hashtable keeps track of the mapping from the menu items to the buttons on the menu.

left_items

protected java.util.Vector left_items
Left hand set of items.

right_items

protected java.util.Vector right_items
Right hand set of items.

left_images

protected java.util.Vector left_images
Left hand set of images

right_images

protected java.util.Vector right_images
Right hand set of images

_currently_depressed

protected int _currently_depressed
This is the number of the currently depressed item. If no item is currently depressed, this value will be -1.

_current_is_left

protected boolean _current_is_left
This is a boolean which says if the selected item is in the right or the left hand set. This value should only be consulted when the value of _current is not -1.
Constructor Detail

menubar

public menubar(java.util.Vector left,
               java.util.Vector right,
               int w)
Create a menubar from two Vectors of Strings.
Parameters:
Vector - left the strings to start the menus with from the left.
Vector - right the strings to start the menus with from the right.
int - w width of the menu bar.
Method Detail

currently_depressed

public int currently_depressed()
Which item is currently depressed? This returns -1 if there is no currently depressed item.
Returns:
int the number of the currently depressed item.

set_currently_depressed

public void set_currently_depressed(int i,
                                    boolean t,
                                    event evt)
Set the currently depressed item. This may involve the popping up of menus.
Parameters:
int - i the item number you want depressed.
boolean - t true if the item is in the left hand set of objects.
event - evt the event which is causing this button to be depressed.

current_is_left

public boolean current_is_left()
Retrieve a boolean indicating if the currently selected item is on the left.
Returns:
boolean returns true if the item is in the left hand set of objects.

set_current_is_left

public void set_current_is_left(boolean n)
Set the flag indicating if the currently selected item is on the left.
Parameters:
boolean - n the new value.

derive_font

public java.awt.Font derive_font(java.awt.Font f)
This function is called to derive the font from the default font. This is here as a hook for easy overriding.
Parameters:
Font - f the default font.
Returns:
Font the font to use on the menubar.

style_changed

public void style_changed()
Make the menubar images, given a set of left and right objects.
Parameters:
Vector - left the array of strings or images for the left menus
Vector - right the array of strings or images for the right menus
int - w the width of the bar

draw_self_local

public void draw_self_local(drawable d)
Draw the object on a given drawable.
Parameters:
drawable - d the surface to draw on
Overrides:
draw_self_local in class base_interactor

intrinsic_constraints

public int intrinsic_constraints()
Indicate that we intrinsically constrain height. Thus, it is not modifiable by either the programmer or user.
Returns:
int return the constant indicating the correct intrinsic dimension
Overrides:
intrinsic_constraints in class base_interactor

press

public boolean press(event evt,
                     java.lang.Object user_info)
Dispatch mouse button press input to the object. Return true if this event was consumed.
Specified by:
press in interface pressable
Parameters:
event - evt the event to dispatch.
Object - user_info the pick-time value.

release

public boolean release(event evt,
                       java.lang.Object user_info)
Dispatch mouse button release to the object. Return true if event was consumed.
Specified by:
release in interface pressable
Parameters:
event - evt the event to dispatch.
Object - user_info the pick-time value.

associate_menu

public void associate_menu(java.lang.Object obj,
                           menu m)
Set the menu associated with a particular item (String or loaded_image). If you try to set a menu for a value that is not in the current set of objects, we ignore this call. This call will break if you have multiple items on the menu which have the same string; however, this is so bad from a UI design standpoint that I am not going to worry about it.
Parameters:
Object - obj the menu item's string or image.
menu - m the menu to associate with that item.

compute_menu_location

public java.awt.Point compute_menu_location(java.awt.Rectangle r,
                                            menu m)
This function computes the menu location given a hotspot rectangle in our coordinate system. This is here as a hook for easy overriding in case you want to put a menubar at the bottom or sides of the screen.
Parameters:
Rectangle - r the rectangle of the hotspot the user moused on.
menu - m the menu to pop up.
Returns:
Point the point to place the menu at (in the coord sys of the top level that this menubar is in).

menu_done

public void menu_done()
This function gets called when the menubar's popped down menu gets finished. This function sets the menu bar back to its default state.
Specified by:
menu_done in interface menu_notifier

menu_modify

public boolean menu_modify(int x,
                           int y,
                           event evt)
This function is called to alert the notifier that the interaction is now over their area. The notifier should return true if it modified the set of objects in the menu focus in response to this call.
Specified by:
menu_modify in interface menu_notifier
Parameters:
int - x the x coordinate (in the notifiers coordinate system) of the cursor.
int - y the y coordinate (in the notifiers coordinate system) of the cursor.
event - evt the event we are testing.
Returns:
boolean true if the notifier modified the focus set of the menu agent in response to this.

configure

public void configure()
Configure the object to ensure it has its proper bounds and has declared all its damage.
Overrides:
configure in class base_interactor