- public BindingGroup(E e) {
- ess.add(e);
- }
- public void add(E e) {
- if (e.bg != null) { merge(e.bg); return; }
- ess.add(e);
- e.bg = this;
- }
- public void merge(BindingGroup bg) {
- for(E e : bg.ess) {
- e.bg = null;
- add(e);
+ public BindingGroup(E e) { add(e, false); }
+ public void add(E e, boolean swap) {
+ if (e.bg != null) {
+ if (e.bg == this) return; /* fixme what if it is in the "other" set? */
+ for(E ex : (!swap ? e.bg.left : e.bg.right)) {
+ ex.bg = this;
+ left.add(ex);
+ }
+ for(E ex : (!swap ? e.bg.right : e.bg.left)) {
+ ex.bg = this;
+ right.add(ex);
+ }
+
+ } else {
+ (!swap ? left : right).add(e);
+ e.bg = this;
+ }
+
+ for(E ex : (!swap ? right : left)) {
+ if (e.next.isBoundTo(ex.next)) {
+ System.out.println("hit!");
+ }