sub_arctic.input
Interface snap_draggable

All Known Implementing Classes:
snap_container

public abstract interface snap_draggable
extends move_draggable

This interface provides the input protocol for objects which are dragged and may be snapped to objects which implement the snap_targetable interface. (This is a subclass of move_draggable.) These "drag" objects are moved over the top of snap "target" objects. Where the right conditions occur, feedback is produced which snaps the objects together in some way (typically by pulling the drag object to the target object). The snap is said to occur "from" drag (snap_draggable) objects "to" target (snap_targetable) objects. Both this protocol and the snap_targetable protocol are managed and delivered by the snap_drag_agent.

Snapping requires a two part test. The first part is geometric. In this part we determine if a feature point of the drag object is close enough geometrically to snap to the target. If this test passes, then a second semantic test is performed to determine if the two objects are semantically compatible (this second test by snap_targetable.snap_from_ok() may involve type tests and/or exchange of information between the target object and this object using the protocol of an application specific interface defined elsewhere). If both snapping tests succeed, and the snap is the closest candidate snap, the snap will occur.

If their are no suitable snaps, but some snaps pass the geometric test (i.e., are close enough) then "anti-snaps" will be considered. An anti-snap is designed to provide feedback about a negative condition -- it is typically used to produce a kind of dynamic "error message" that indicates why a geometrically possible snap is not semantically suitable. Anti-snaps must pass a second semantic test (performed by snap_targetable.anti_snap_from_ok()) before they are activated.

See Also:
move_draggable, snap_targetable, snap_drag_agent

Fields inherited from class sub_arctic.lib.interactor_consts
DAMAGED, ENABLED, ENABLED_HAS_EXT_NOTIFY, ENABLED_IN_PROCESS, ENABLED_IS_HORIZONTAL, ENABLED_OOD, FEATURE_BOTTOM_LEFT, FEATURE_BOTTOM_RIGHT, FEATURE_CENTER, FEATURE_NONE, FEATURE_TOP_LEFT, FEATURE_TOP_RIGHT, FIRST_FREE_FEATURE, FIRST_FREE_FLAG, FIXED_CHILDREN, H, H_HAS_EXT_NOTIFY, H_IN_PROCESS, H_OOD, IS_ENABLED, IS_VISIBLE, OOD_BITS, PART_A, PART_A_HAS_EXT_NOTIFY, PART_A_IN_PROCESS, PART_A_IS_HORIZONTAL, PART_A_OOD, PART_B, PART_B_HAS_EXT_NOTIFY, PART_B_IN_PROCESS, PART_B_IS_HORIZONTAL, PART_B_OOD, STYLE_LOCKED, SUPPORTS_CHILDREN, TRAV_DRAW, TRAV_PICK, TRAV_POST, TRAV_PRE, VISIBLE, VISIBLE_HAS_EXT_NOTIFY, VISIBLE_IN_PROCESS, VISIBLE_IS_HORIZONTAL, VISIBLE_OOD, W, W_HAS_EXT_NOTIFY, W_IN_PROCESS, W_OOD, X, X_HAS_EXT_NOTIFY, X_IN_PROCESS, X_OOD, Y, Y_HAS_EXT_NOTIFY, Y_IN_PROCESS, Y_OOD
 
Fields inherited from class sub_arctic.constraints.std_constraint_consts
FIRST_CHILD, LAST_CHILD, MAX_CHILD, MIN_CHILD, NEXT_SIBLING, NO_CONSTRAINT, OTHER, PARENT, PREV_SIBLING, SELF, ZERO
 
Method Summary
 boolean anti_snap_feedback(event evt, java.awt.Point orig_pt, java.awt.Point snap_pt, int feature_pt_indx, snap_targetable target_obj, java.lang.Object anti_snap_info, java.lang.Object user_info)
          Perform feedback while an anti-snap is active.
 boolean anti_snap_to(event evt, java.awt.Point orig_pt, java.awt.Point snap_pt, int feature_pt_indx, snap_targetable target_obj, java.lang.Object anti_snap_info, java.lang.Object user_info)
          Indicate that the object should anti-snap to a given target object.
 boolean snap_feedback(event evt, java.awt.Point orig_pt, java.awt.Point snap_pt, int feature_pt_indx, snap_targetable target_obj, java.lang.Object user_info)
          Perform feedback while a snap is active.
 boolean snap_to(event evt, java.awt.Point orig_pt, java.awt.Point snap_pt, int feature_pt_indx, snap_targetable target_obj, java.lang.Object user_info)
          Indicate that the object should snap to a given target object.
 boolean unanti_snap_to(event evt, java.awt.Point orig_pt, java.awt.Point snap_pt, int feature_pt_indx, snap_targetable target_obj, java.lang.Object anti_snap_info, java.lang.Object user_info)
          Indicate that the object is no longer anti-snapped to a given target object.
 boolean unsnap_to(event evt, java.awt.Point orig_pt, java.awt.Point snap_pt, int feature_pt_indx, snap_targetable target_obj, java.lang.Object user_info)
          Indicate that the object is no longer snapped to a given target object.
 
Methods inherited from interface sub_arctic.input.move_draggable
drag_end, drag_feedback, drag_start
 
Methods inherited from interface sub_arctic.input.focusable
focus_set_enter, focus_set_exit
 
Methods inherited from interface sub_arctic.lib.interactor
active_constraints, add_child, add_user_datum, attach_dependent, bound, child_index, child, configure, constraint_flag_is_set, constraint_on, custom_fun1, custom_fun2, damage_from_child, damage_self, damage_self, damage_self, damage_self, damage_self, detach_dependent, do_action, do_action, drag_feature_point, draw_self, enabled_constraint, enabled, eval_enabled, eval_h, eval_part_a, eval_part_b, eval_visible, eval_w, eval_x, eval_y, eval, feature_point_enabled, feature_point, find_child, fixed_children, flag_is_set, 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, next_sibling, num_actions, num_children, num_feature_points, parent, part_a_constraint, part_a, part_b_constraint, part_b, pick, picked_by, pos, prev_sibling, remove_child, remove_child, remove_user_datum, restyle, set_child_index, set_child, set_constraint, set_constraint, set_enabled_constraint, set_enabled_constraint, set_enabled_constraint, set_enabled, set_h_constraint, set_h_constraint, set_h_constraint, set_h, 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_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, size, style_change, supports_children, tag_str, toString, traverse_and_collect, 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
 

Method Detail

snap_to

public boolean snap_to(event evt,
                       java.awt.Point orig_pt,
                       java.awt.Point snap_pt,
                       int feature_pt_indx,
                       snap_targetable target_obj,
                       java.lang.Object user_info)
Indicate that the object should snap to a given target object.
Parameters:
event - evt the event "causing" the snap.
Point - orig_pt where this object would be without the snap.
Point - snap_pt where this object is with the snap.
int - feature_pt_indx the feature point of this object that we are snapping with.
snap_targetable - target_obj the target object we are snapping to.
Object - user_info the user info for this input.
Returns:
boolean indicating if the input has been consumed.

snap_feedback

public boolean snap_feedback(event evt,
                             java.awt.Point orig_pt,
                             java.awt.Point snap_pt,
                             int feature_pt_indx,
                             snap_targetable target_obj,
                             java.lang.Object user_info)
Perform feedback while a snap is active.
Parameters:
event - evt the event "causing" the snap.
Point - orig_pt where this object would be without the snap.
Point - snap_pt where this object is with the snap.
int - feature_pt_indx the feature point of this object that we are snapping with.
snap_targetable - target_obj the target object we are snapping to.
Object - user_info the user info for this input.
Returns:
boolean indicating if the input has been consumed.

unsnap_to

public boolean unsnap_to(event evt,
                         java.awt.Point orig_pt,
                         java.awt.Point snap_pt,
                         int feature_pt_indx,
                         snap_targetable target_obj,
                         java.lang.Object user_info)
Indicate that the object is no longer snapped to a given target object.
Parameters:
event - evt the event "causing" the unsnap.
Point - orig_pt where this object should be without the snap.
Point - snap_pt where this object was with the snap.
int - feature_pt_indx the feature point of this object that we were snapping with.
snap_targetable - target_obj the target object we were snapping to.
Object - user_info the user info for this input.
Returns:
boolean indicating if the input has been consumed.

anti_snap_to

public boolean anti_snap_to(event evt,
                            java.awt.Point orig_pt,
                            java.awt.Point snap_pt,
                            int feature_pt_indx,
                            snap_targetable target_obj,
                            java.lang.Object anti_snap_info,
                            java.lang.Object user_info)
Indicate that the object should anti-snap to a given target object.
Parameters:
event - evt the event "causing" the anti-snap.
Point - orig_pt where this object would be without the anti-snap.
Point - snap_pt where this object is with the anti-snap.
int - feature_pt_indx the feature point of this object that we are anti-snapping with.
snap_targetable - target_obj the target object we are anti-snapping to.
Object - user_info the user info for this input.
Returns:
boolean indicating if the input has been consumed.

anti_snap_feedback

public boolean anti_snap_feedback(event evt,
                                  java.awt.Point orig_pt,
                                  java.awt.Point snap_pt,
                                  int feature_pt_indx,
                                  snap_targetable target_obj,
                                  java.lang.Object anti_snap_info,
                                  java.lang.Object user_info)
Perform feedback while an anti-snap is active.
Parameters:
event - evt the event "causing" the anti-snap.
Point - orig_pt where this object would be without the anti-snap.
Point - snap_pt where this object is with the anti-snap.
int - feature_pt_indx the feature point of this object that we are anti-snapping with.
snap_targetable - target_obj the target object we are anti-snapping to.
Object - user_info the user info for this input.
Returns:
boolean indicating if the input has been consumed.

unanti_snap_to

public boolean unanti_snap_to(event evt,
                              java.awt.Point orig_pt,
                              java.awt.Point snap_pt,
                              int feature_pt_indx,
                              snap_targetable target_obj,
                              java.lang.Object anti_snap_info,
                              java.lang.Object user_info)
Indicate that the object is no longer anti-snapped to a given target object.
Parameters:
event - evt the event "causing" the unanti-snap.
Point - orig_pt where this object should be without the anti-snap.
Point - snap_pt where this object was with the anti-snap.
int - feature_pt_indx the feature point of this object that we were anti-snapping with.
snap_targetable - target_obj the target object we were anti-snapping to.
Object - user_info the user info for this input.
Returns:
boolean indicating if the input has been consumed.