Skip to content

Commit 6ea7e97

Browse files
committed
split feedback: error message and drawing
1 parent f297832 commit 6ea7e97

File tree

3 files changed

+88
-89
lines changed

3 files changed

+88
-89
lines changed

src/main/java/net/itarray/automotion/internal/Errors.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,6 @@ public void add(String message) {
2828
messages.add(details);
2929
}
3030

31-
public void add(String message, UIElement element) {
32-
add(message);
33-
draw(element);
34-
}
35-
3631
public void draw(UIElement element) {
3732
int x = element.getOrigin().getX().intValue();
3833
int y = element.getOrigin().getY().intValue();

src/main/java/net/itarray/automotion/internal/ResponsiveUIChunkValidatorBase.java

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,8 @@ private void validateElementsAreNotOverlapped(List<UIElement> elements) {
279279
for (int secondIndex = firstIndex+1; secondIndex < elements.size(); secondIndex++) {
280280
UIElement second = elements.get(secondIndex);
281281
if (first.overlaps(second)) {
282-
errors.add("Elements are overlapped", first);
282+
errors.add("Elements are overlapped");
283+
errors.draw(first);
283284
break;
284285
}
285286
}
@@ -372,8 +373,10 @@ private void validateSameWidth(List<UIElement> elements) {
372373
UIElement element = elements.get(i);
373374
UIElement elementToCompare = elements.get(i + 1);
374375
if (!element.hasSameWidthAs(elementToCompare, getContext())) {
375-
errors.add(String.format("Element %s has different width than element %s.", element.getQuotedName(), elementToCompare.getQuotedName()), element);
376-
errors.add(String.format("Element %s has different width than element %s.", elementToCompare.getQuotedName(), element.getQuotedName()), elementToCompare);
376+
errors.add(String.format("Element %s has different width than element %s.", element.getQuotedName(), elementToCompare.getQuotedName()));
377+
errors.draw(element);
378+
errors.add(String.format("Element %s has different width than element %s.", elementToCompare.getQuotedName(), element.getQuotedName()));
379+
errors.draw(elementToCompare);
377380
}
378381
}
379382
}
@@ -383,8 +386,10 @@ private void validateSameHeight(List<UIElement> elements) {
383386
UIElement element = elements.get(i);
384387
UIElement elementToCompare = elements.get(i + 1);
385388
if (!element.hasSameHeightAs(elementToCompare, getContext())) {
386-
errors.add(String.format("Element %s has different height than element %s.", element.getQuotedName(), elementToCompare.getQuotedName()), element);
387-
errors.add(String.format("Element %s has different height than element %s.", elementToCompare.getQuotedName(), element.getQuotedName()), elementToCompare);
389+
errors.add(String.format("Element %s has different height than element %s.", element.getQuotedName(), elementToCompare.getQuotedName()));
390+
errors.draw(element);
391+
errors.add(String.format("Element %s has different height than element %s.", elementToCompare.getQuotedName(), element.getQuotedName()));
392+
errors.draw(elementToCompare);
388393
}
389394
}
390395
}
@@ -395,8 +400,10 @@ private void validateSameSize(List<UIElement> elements) {
395400
UIElement elementToCompare = elements.get(i + 1);
396401
if (!element.hasSameSizeAs(elementToCompare, getContext())) {
397402
// todo: one error message + visual feedback
398-
errors.add(String.format("Element %s has different size than element %s.", element.getQuotedName(), elementToCompare.getQuotedName()), element);
399-
errors.add(String.format("Element %s has different size than element %s.", elementToCompare.getQuotedName(), element.getQuotedName()), elementToCompare);
403+
errors.add(String.format("Element %s has different size than element %s.", element.getQuotedName(), elementToCompare.getQuotedName()));
404+
errors.draw(element);
405+
errors.add(String.format("Element %s has different size than element %s.", elementToCompare.getQuotedName(), element.getQuotedName()));
406+
errors.draw(elementToCompare);
400407
}
401408

402409
}
@@ -408,8 +415,10 @@ private void validateHaveDifferentSizes(List<UIElement> elements) {
408415
for (int secondIndex = firstIndex+1; secondIndex < elements.size(); secondIndex++) {
409416
UIElement elementToCompare = elements.get(secondIndex);
410417
if (element.hasSameSizeAs(elementToCompare, getContext())) {
411-
errors.add(String.format("Element #%d has same size. Element size is: [%s, %s]", (firstIndex + 1), element.getWidth(), element.getHeight()), element);
412-
errors.add(String.format("Element #%d has same size. Element size is: [%s, %s]", (secondIndex + 1), elementToCompare.getWidth(), elementToCompare.getHeight()), elementToCompare);
418+
errors.add(String.format("Element #%d has same size. Element size is: [%s, %s]", (firstIndex + 1), element.getWidth(), element.getHeight()));
419+
errors.draw(element);
420+
errors.add(String.format("Element #%d has same size. Element size is: [%s, %s]", (secondIndex + 1), elementToCompare.getWidth(), elementToCompare.getHeight()));
421+
errors.draw(elementToCompare);
413422
}
414423
}
415424
}
@@ -421,8 +430,10 @@ private void validateHaveDifferentWidths(List<UIElement> elements) {
421430
for (int secondIndex = firstIndex+1; secondIndex < elements.size(); secondIndex++) {
422431
UIElement elementToCompare = elements.get(secondIndex);
423432
if (element.hasSameWidthAs(elementToCompare, getContext())) {
424-
errors.add(String.format("Element #%d has same width. Element width is: [%s, %s]", (firstIndex + 1), element.getWidth(), element.getHeight()), element);
425-
errors.add(String.format("Element #%d has same width. Element width is: [%s, %s]", (secondIndex + 2), elementToCompare.getWidth(), elementToCompare.getHeight()), elementToCompare);
433+
errors.add(String.format("Element #%d has same width. Element width is: [%s, %s]", (firstIndex + 1), element.getWidth(), element.getHeight()));
434+
errors.draw(element);
435+
errors.add(String.format("Element #%d has same width. Element width is: [%s, %s]", (secondIndex + 2), elementToCompare.getWidth(), elementToCompare.getHeight()));
436+
errors.draw(elementToCompare);
426437
}
427438
}
428439
}
@@ -434,8 +445,10 @@ private void validateNotSameHeight(List<UIElement> elements) {
434445
for (int secondIndex = firstIndex+1; secondIndex < elements.size(); secondIndex++) {
435446
UIElement elementToCompare = elements.get(secondIndex);
436447
if (element.hasSameHeightAs(elementToCompare, getContext())) {
437-
errors.add(String.format("Element #%d has same height. Element height is: [%s, %s]", (firstIndex + 1), element.getWidth(), element.getHeight()), element);
438-
errors.add(String.format("Element #%d has same height. Element height is: [%s, %s]", (secondIndex + 2), elementToCompare.getWidth(), elementToCompare.getHeight()), elementToCompare);
448+
errors.add(String.format("Element #%d has same height. Element height is: [%s, %s]", (firstIndex + 1), element.getWidth(), element.getHeight()));
449+
errors.draw(element);
450+
errors.add(String.format("Element #%d has same height. Element height is: [%s, %s]", (secondIndex + 2), elementToCompare.getWidth(), elementToCompare.getHeight()));
451+
errors.draw(elementToCompare);
439452
}
440453
}
441454
}

src/main/java/net/itarray/automotion/internal/UIElement.java

Lines changed: 62 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -223,12 +223,11 @@ public void validateBottomAlignedWith(UIElement element, Errors errors) {
223223

224224
public void validateEqualEnd(Direction direction, UIElement element, Errors errors) {
225225
if (!hasEqualEnd(element, direction)) {
226-
errors.add(
227-
String.format("Element %s has not the same %s offset as element %s",
228-
getQuotedName(),
229-
direction.endName(),
230-
element.getQuotedName()),
231-
element);
226+
errors.add(String.format("Element %s has not the same %s offset as element %s",
227+
getQuotedName(),
228+
direction.endName(),
229+
element.getQuotedName()));
230+
errors.draw(element);
232231
}
233232
}
234233

@@ -246,33 +245,31 @@ public void validateSameWidth(UIElement element, Context context, Errors errors)
246245

247246
public <V extends MetricSpace<V>> void validateSameExtend(ExtendGiving<V> direction, UIElement element, Context context, Errors errors) {
248247
if (!hasEqualExtendAs(element, direction, context)) {
249-
errors.add(
250-
String.format("Element %s has not the same %s as element %s. %s of %s is %s. %s of element is %s",
251-
getQuotedName(),
252-
direction.extendName(),
253-
element.getQuotedName(),
254-
capitalize(direction.extendName()),
255-
getQuotedName(),
256-
direction.extend(rectangle).toStringWithUnits(PIXELS),
257-
capitalize(direction.extendName()),
258-
direction.extend(element.rectangle).toStringWithUnits(PIXELS)),
259-
element);
248+
errors.add(String.format("Element %s has not the same %s as element %s. %s of %s is %s. %s of element is %s",
249+
getQuotedName(),
250+
direction.extendName(),
251+
element.getQuotedName(),
252+
capitalize(direction.extendName()),
253+
getQuotedName(),
254+
direction.extend(rectangle).toStringWithUnits(PIXELS),
255+
capitalize(direction.extendName()),
256+
direction.extend(element.rectangle).toStringWithUnits(PIXELS)));
257+
errors.draw(element);
260258
}
261259
}
262260

263261
public <V extends MetricSpace<V>> void validateNotSameExtend(ExtendGiving<V> direction, UIElement element, Context context, Errors errors) {
264262
if (hasEqualExtendAs(element, direction, context)) {
265-
errors.add(
266-
String.format("Element %s has the same %s as element %s. %s of %s is %s. %s of element is %s",
267-
getQuotedName(),
268-
direction.extendName(),
269-
element.getQuotedName(),
270-
capitalize(direction.extendName()),
271-
getQuotedName(),
272-
direction.extend(rectangle).toStringWithUnits(PIXELS),
273-
capitalize(direction.extendName()),
274-
direction.extend(element.rectangle).toStringWithUnits(PIXELS)),
275-
element);
263+
errors.add(String.format("Element %s has the same %s as element %s. %s of %s is %s. %s of element is %s",
264+
getQuotedName(),
265+
direction.extendName(),
266+
element.getQuotedName(),
267+
capitalize(direction.extendName()),
268+
getQuotedName(),
269+
direction.extend(rectangle).toStringWithUnits(PIXELS),
270+
capitalize(direction.extendName()),
271+
direction.extend(element.rectangle).toStringWithUnits(PIXELS)));
272+
errors.draw(element);
276273
}
277274
}
278275

@@ -300,32 +297,29 @@ public void validateIsAbove(UIElement element, Condition<Scalar> condition, Cont
300297
public void validateSuccessor(Direction direction, UIElement toBeValidatedSuccessor, Condition<Scalar> condition, Context context, Errors errors) {
301298
Scalar signedDistance = signedDistanceToSuccessor(direction, toBeValidatedSuccessor);
302299
if (!signedDistance.satisfies(condition, context, direction)) {
303-
errors.add(
304-
String.format("%s element aligned not properly. Expected margin should be %s. Actual margin is %s",
305-
direction.afterName(),
306-
condition.getDescription(context, direction),
307-
signedDistance.toStringWithUnits(PIXELS)),
308-
toBeValidatedSuccessor);
300+
errors.add(String.format("%s element aligned not properly. Expected margin should be %s. Actual margin is %s",
301+
direction.afterName(),
302+
condition.getDescription(context, direction),
303+
signedDistance.toStringWithUnits(PIXELS)));
304+
errors.draw(toBeValidatedSuccessor);
309305
}
310306
}
311307

312308
public void validateOverlappingWithElement(UIElement element, Errors errors) {
313309
if (!overlaps(element)) {
314-
errors.add(
315-
String.format("Element %s is not overlapped with element %s but should be",
316-
getQuotedName(),
317-
element.getQuotedName()),
318-
element);
310+
errors.add(String.format("Element %s is not overlapped with element %s but should be",
311+
getQuotedName(),
312+
element.getQuotedName()));
313+
errors.draw(element);
319314
}
320315
}
321316

322317
public void validateNotOverlappingWithElement(UIElement element, Errors errors) {
323318
if (overlaps(element)) {
324-
errors.add(
325-
String.format("Element %s is overlapped with element %s but should not",
326-
getQuotedName(),
327-
element.getQuotedName()),
328-
element);
319+
errors.add(String.format("Element %s is overlapped with element %s but should not",
320+
getQuotedName(),
321+
element.getQuotedName()));
322+
errors.draw(element);
329323
}
330324
}
331325

@@ -368,16 +362,15 @@ public void validateCenteredOnHorizontally(UIElement page, Context context, Erro
368362
private void validateCentered(Direction direction, UIElement page, Context context, Errors errors) {
369363
Direction opposite = direction.opposite();
370364
if (!hasEqualOppositeOffsets(direction, page, context)) {
371-
errors.add(
372-
String.format("Element %s has not equal %s and %s offset. %s offset is %s, %s is %s",
373-
getQuotedName(),
374-
opposite.endName(),
375-
direction.endName(),
376-
capitalize(opposite.endName()),
377-
getOffset(opposite, page).toStringWithUnits(PIXELS),
378-
direction.endName(),
379-
getOffset(direction, page).toStringWithUnits(PIXELS)),
380-
this);
365+
errors.add(String.format("Element %s has not equal %s and %s offset. %s offset is %s, %s is %s",
366+
getQuotedName(),
367+
opposite.endName(),
368+
direction.endName(),
369+
capitalize(opposite.endName()),
370+
getOffset(opposite, page).toStringWithUnits(PIXELS),
371+
direction.endName(),
372+
getOffset(direction, page).toStringWithUnits(PIXELS)));
373+
errors.draw(this);
381374
}
382375
}
383376

@@ -436,11 +429,10 @@ public void validateHasCssValue(String cssProperty, String[] args, Errors errors
436429

437430
public void validateInsideOfContainer(UIElement containerElement, Errors errors) {
438431
if (!containerElement.contains(this)) {
439-
errors.add(
440-
String.format("Element '%s' is not inside of '%s'",
441-
getName(),
442-
containerElement.getName()),
443-
containerElement);
432+
errors.add(String.format("Element '%s' is not inside of '%s'",
433+
getName(),
434+
containerElement.getName()));
435+
errors.draw(containerElement);
444436
}
445437
}
446438

@@ -456,18 +448,17 @@ public void validateInsideOfContainer(UIElement element, Errors errors, Scalar t
456448
Vector cornerOffset = getCorner().minus(element.getCorner());
457449

458450
if (!element.contains(paddedRoot)) {
459-
errors.add(
460-
String.format("Padding of element %s is incorrect. Expected padding: top[%s], right[%s], bottom[%s], left[%s]. Actual padding: top[%s], right[%s], bottom[%s], left[%s]",
461-
getQuotedName(),
462-
originPadding.getY(),
463-
cornerPadding.getX(),
464-
cornerPadding.getY(),
465-
originPadding.getX(),
466-
originOffset.getY(),
467-
cornerOffset.getX(),
468-
cornerOffset.getY(),
469-
originOffset.getX()),
470-
element);
451+
errors.add(String.format("Padding of element %s is incorrect. Expected padding: top[%s], right[%s], bottom[%s], left[%s]. Actual padding: top[%s], right[%s], bottom[%s], left[%s]",
452+
getQuotedName(),
453+
originPadding.getY(),
454+
cornerPadding.getX(),
455+
cornerPadding.getY(),
456+
originPadding.getX(),
457+
originOffset.getY(),
458+
cornerOffset.getX(),
459+
cornerOffset.getY(),
460+
originOffset.getX()));
461+
errors.draw(element);
471462
}
472463
}
473464

0 commit comments

Comments
 (0)