116 |
dims[dim].connect(w.cursor, dir, other.cursor); |
dims[dim].connect(w.cursor, dir, other.cursor); |
117 |
else { |
else { |
118 |
c = w.cursor; |
c = w.cursor; |
119 |
|
|
120 |
|
Set alreadyConnected = new HashSet(); |
121 |
|
if(c.s(dims[dim], dir) != null) |
122 |
|
alreadyConnected.add(c); |
123 |
|
|
124 |
|
for(Iterator i=marks.iterator(); i.hasNext();) { |
125 |
|
Mark m = (Mark)i.next(); |
126 |
|
if(m.cell.s(dims[dim], -dir) != null) |
127 |
|
alreadyConnected.add(m.cell); |
128 |
|
|
129 |
|
if(i.hasNext() && m.cell.s(dims[dim], dir) != null) |
130 |
|
alreadyConnected.add(m.cell); |
131 |
|
} |
132 |
|
|
133 |
|
if(!alreadyConnected.isEmpty()) { |
134 |
|
// XXX should show cell(s) in the apology! |
135 |
|
|
136 |
|
String dimStr = fallback.dimList[w.dimsIndices[dim]].name; |
137 |
|
|
138 |
|
throw new ClientException( |
139 |
|
"Sorry, I couldn't connect, because "+ |
140 |
|
(alreadyConnected.size() == 1 ? "one " : "some ")+ |
141 |
|
"of the cells already has a connection "+ |
142 |
|
"on "+dimStr+"."); |
143 |
|
} |
144 |
|
|
145 |
for(Iterator i=marks.iterator(); i.hasNext();) { |
for(Iterator i=marks.iterator(); i.hasNext();) { |
146 |
Mark m = (Mark)i.next(); |
Mark m = (Mark)i.next(); |
147 |
c.connect(dims[dim], dir, m.cell); |
c.connect(dims[dim], dir, m.cell); |
148 |
c = m.cell; |
c = m.cell; |
149 |
} |
} |
150 |
marks = new ArrayList(); |
marks = new ArrayList(); |
151 |
markedCells = new HashSet(); |
markedCells = new HashSet(); |
152 |
} |
} |