sub_arctic.lib
Class drag_container

java.lang.Object
  |
  +--sub_arctic.lib.min_interactor
        |
        +--sub_arctic.lib.base_interactor
              |
              +--sub_arctic.lib.base_parent_interactor
                    |
                    +--sub_arctic.lib.shrink_wrap_container
                          |
                          +--sub_arctic.lib.drag_container
Direct Known Subclasses:
backdrop_drag_container, horiz_drag_container, shadow_drag_container, snap_container, vert_drag_container

public class drag_container
extends shrink_wrap_container
implements pressable, move_draggable, does_callback

This class provides a container for dragging. You can put any subtree inside it to make that subtree draggable. The container handles the pick process correctly so that it only initiates a drag if you actually click over an object inside the an object in the sub-tree (not simply anywhere inside the bounds of the container). The container will "shrink-wrap" around the objects it contains, and can optionally draw a bounding rectangle as drag feedback.


Field Summary
protected  callback_object _callback_obj
          Object we make callbacks to.
protected static int DO_BB_FEEDBACK
          Flag bit position for flag indicating whether to do bounding box drag feedback.
protected static int DOING_DRAG
          Flag bit position for flag indicating whether we are currently in the middle of a drag.
static int END_MOVE_CALLBACK
          Constant for "end" callback (called only at end of move).
static int MOVE_CALLBACK
          Constant for "move" callback (called on every move, including last).
 
Fields inherited from class sub_arctic.lib.shrink_wrap_container
_border, DRAW_BORDER
 
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
drag_container(int x, int y, boolean do_bb_feedback)
          Nearly full constructor.
drag_container(int x, int y, boolean do_bb_feedback, callback_object cbo)
          full constructor.
 
Method Summary
 boolean bounding_box_feedback()
          Is the object currently set to do bounding box drag feedback?
 callback_object callback_obj()
          Retrieve the object we make callbacks to.
 boolean drag_end(event evt, int x_pos, int y_pos, int st_x, int st_y, int grab_x, int grab_y, java.lang.Object user_info)
          Handle input corresponding to the end of a drag.
 boolean drag_feedback(event evt, int x_pos, int y_pos, int st_x, int st_y, int grab_x, int grab_y, java.lang.Object user_info)
          Handle a movement during a drag.
 boolean drag_start(event evt, int x_pos, int y_pos, int grab_x, int grab_y, java.lang.Object user_info)
          Handle the start of a drag to the object.
protected  void draw_self_local(drawable d)
          Draw the object's current appearance.
 int first_callback_num()
          First valid callback number
 int last_callback_num()
          First valid callback number
 void pick(int pt_x, int pt_y, pick_collector pick_list)
          Determine if this object is "picked" by the the given point.
 boolean press(event evt, java.lang.Object user_info)
          Handle mouse button press input to the object.
 boolean release(event evt, java.lang.Object user_info)
          Companion to press().
 void set_bounding_box_feedback(boolean do_bbf)
          Set object to do or not do bounding box drag feedback.
 void set_callback_obj(callback_object cbo)
          Set the object we make callbacks to.
 
Methods inherited from class sub_arctic.lib.shrink_wrap_container
border, draw_border, set_border, set_draw_border, setup_constraints
 
Methods inherited from class sub_arctic.lib.base_interactor
active_constraints, add_child, add_user_datum, attach_dependent, bound, child_index, child, clear_child_list, clear_constraint_flag_bit, clear_flag_bit, configure, 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, 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, intrinsic_constraints, is_constrained, 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, picked_by, pos, prev_sibling, register_resource_names, remove_child, remove_child, remove_user_datum, restyle_look_resources, restyle, 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

DO_BB_FEEDBACK

protected static final int DO_BB_FEEDBACK
Flag bit position for flag indicating whether to do bounding box drag feedback.

DOING_DRAG

protected static final int DOING_DRAG
Flag bit position for flag indicating whether we are currently in the middle of a drag.

_callback_obj

protected callback_object _callback_obj
Object we make callbacks to.

END_MOVE_CALLBACK

public static final int END_MOVE_CALLBACK
Constant for "end" callback (called only at end of move). This callback provides a Point object with the position of the container in its parent's coordinates.

MOVE_CALLBACK

public static final int MOVE_CALLBACK
Constant for "move" callback (called on every move, including last). This callback provides a Point object with the position of the container in its parent's coordinates.
Constructor Detail

drag_container

public drag_container(int x,
                      int y,
                      boolean do_bb_feedback,
                      callback_object cbo)
full constructor.
Parameters:
int - x initial x position of the container.
int - y initial y position of the container.
boolean - do_bb_feedback whether we do bounding box feedback.
callback_object - cbo object to make callbacks to.

drag_container

public drag_container(int x,
                      int y,
                      boolean do_bb_feedback)
Nearly full constructor. This provides a null callback.
Parameters:
int - x initial x position of the container.
int - y initial y position of the container.
boolean - do_bb_feedback whether we do bounding box feedback.
Method Detail

bounding_box_feedback

public boolean bounding_box_feedback()
Is the object currently set to do bounding box drag feedback?

set_bounding_box_feedback

public void set_bounding_box_feedback(boolean do_bbf)
Set object to do or not do bounding box drag feedback.
Parameters:
boolean - do_bbf passed true if the object should do bounding box feedback during drag.

callback_obj

public callback_object callback_obj()
Retrieve the object we make callbacks to.
Specified by:
callback_obj in interface does_callback
Returns:
callback_object the callback object.
Overrides:
callback_obj in class base_interactor

set_callback_obj

public void set_callback_obj(callback_object cbo)
Set the object we make callbacks to.
Specified by:
set_callback_obj in interface does_callback
Parameters:
callback_object - cbo the new callback object.
Overrides:
set_callback_obj in class base_interactor

first_callback_num

public int first_callback_num()
First valid callback number
Specified by:
first_callback_num in interface does_callback
Overrides:
first_callback_num in class base_interactor

last_callback_num

public int last_callback_num()
First valid callback number
Specified by:
last_callback_num in interface does_callback
Overrides:
last_callback_num in class base_interactor

press

public boolean press(event evt,
                     java.lang.Object user_info)
Handle mouse button press input to the object. Here, we start dragging.
Specified by:
press in interface pressable
Parameters:
event - evt press event being dispatched.
Object - user_info information provided by this object at pick time (in this case ignored).

release

public boolean release(event evt,
                       java.lang.Object user_info)
Companion to press(). Here we ignore this.
Specified by:
release in interface pressable
Parameters:
event - evt release event being dispatched.
Object - user_info information provided by this object at pick time

drag_start

public boolean drag_start(event evt,
                          int x_pos,
                          int y_pos,
                          int grab_x,
                          int grab_y,
                          java.lang.Object user_info)
Handle the start of a drag to the object.
Specified by:
drag_start in interface move_draggable
Parameters:
event - evt the event "causing" the start of the drag.
int - x_pos x position of new position (in parent's coords).
int - y_pos y position of new position (in parent's coords).
int - grab_x x position where we started the drag (in local coords).
int - grab_y y position where we started the drag (in local coords).
Object - user_info information provided when this object requested focus.
Returns:
boolean indicating whether the input was consumed (in this case it always is).

drag_feedback

public boolean drag_feedback(event evt,
                             int x_pos,
                             int y_pos,
                             int st_x,
                             int st_y,
                             int grab_x,
                             int grab_y,
                             java.lang.Object user_info)
Handle a movement during a drag. Here we just set our position to follow the event location and do the move callback.
Specified by:
drag_feedback in interface move_draggable
Parameters:
event - evt the event "causing" the start of the drag.
int - x_pos x position of new position (in parent's coords).
int - y_pos y position of new position (in parent's coords).
int - start_x x position where we started the drag (in parent's coords).
int - start_y y position where we started the drag (in parent's coords).
int - grab_x x position where we started the grab (in local coords).
int - grab_y y position where we started the grab (in local coords).
Object - user_info information provided when this object requested focus.
Returns:
boolean indicating whether the input was consumed (in this case it always is).

drag_end

public boolean drag_end(event evt,
                        int x_pos,
                        int y_pos,
                        int st_x,
                        int st_y,
                        int grab_x,
                        int grab_y,
                        java.lang.Object user_info)
Handle input corresponding to the end of a drag.
Specified by:
drag_end in interface move_draggable
Parameters:
event - evt the event "causing" the start of the drag.
int - x_pos x position of new position (in parent's coords).
int - y_pos y position of new position (in parent's coords).
int - start_x x position where we started the drag (in parent's coords).
int - start_y y position where we started the drag (in parent's coords).
int - grab_x x position where we started the grab (in local coords).
int - grab_y y position where we started the grab (in local coords).
Object - user_info information provided when this object requested focus.
Returns:
boolean indicating whether the input was consumed (in this case it always is).

pick

public void pick(int pt_x,
                 int pt_y,
                 pick_collector pick_list)
Determine if this object is "picked" by the the given point. In this case, we are only picked if at least one of our descendents is picked, but we need to be in the pick list before our children so we can intercept input intended for them. To do this, we do a "local" pick within our children, then merge that back into the "real" pick as needed. putting ourselves first then picks from our children.
Parameters:
int - pt_x x of point we are testing for pick.
int - pt_y y of point we are testing for pick.
pick_collector - pick_list the collector for our result.
Overrides:
pick in class base_interactor

draw_self_local

protected void draw_self_local(drawable d)
Draw the object's current appearance. This draws the children and then the optional border rectangle if we are being dragged.
Parameters:
drawable - d the surface we draw on.
Overrides:
draw_self_local in class shrink_wrap_container