private static Rectangle fitToScreen( @NotNull Dimension newDim, @NotNull RelativePoint popupPosition, JTable table) { Rectangle rectangle = new Rectangle(popupPosition.getScreenPoint(), newDim); ScreenUtil.fitToScreen(rectangle); if (rectangle.getHeight() != newDim.getHeight()) { int newHeight = (int) rectangle.getHeight(); int roundedHeight = newHeight - newHeight % table.getRowHeight(); rectangle.setSize((int) rectangle.getWidth(), Math.max(roundedHeight, table.getRowHeight())); } return rectangle; }
// ------------------------------ public void scrollToCaret() { // not called - fixed with putting visible scrollbars on JScrollPane // Rectangle rect1 = scroller1.getViewport().getViewRect(); double x1 = rect1.getX(); double y1 = rect1.getY(); double r1height = rect1.getHeight(); double r1width = rect1.getWidth(); Caret caret1 = editor1.getCaret(); Point pt2 = caret1.getMagicCaretPosition(); // the end of the string double x2 = pt2.getX(); double y2 = pt2.getY(); if (((x2 > x1) && (x2 < (x1 + r1width))) && ((y2 > y1) && (y2 < (y1 + r1height)))) { // inview } else { double newheight = r1height / 2; double newwidth = r1width / 2; double x3 = pt2.getX() - newwidth; double y3 = pt2.getY() - newheight; if (x3 < 0) x3 = 0; if (y3 < 0) y3 = 0; Rectangle rect3 = new Rectangle((int) x3, (int) y3, (int) newwidth, (int) newheight); editor1.scrollRectToVisible(rect3); } } // end scrollToCaret
private void removeNeighbours(List<Road> headRoads) { Set<Road> toRemove = new FastSet<Road>(); Rectangle rec1; Rectangle rec2; for (Road road : headRoads) { for (Road r : roadHelper.getConnectedRoads(road.getID())) { if (headRoads.contains(r)) { rec1 = r.getShape().getBounds(); rec2 = road.getShape().getBounds(); if (rec1.getHeight() * rec1.getWidth() > rec2.getHeight() * rec2.getWidth()) { toRemove.add(r); } else { toRemove.add(road); } } } } headRoads.removeAll(toRemove); }
public void dupliquer() { for (Shape s : shapeSelect) { Point p = new Point(s.getOrigin()); p.y += 100; if (s instanceof Rectangle) { Rectangle r = (Rectangle) s; shapes.add(new Rectangle(p, r.getWidth(), r.getHeight(), r.getColor())); cpt++; notifyObservers(); } if (s instanceof Circle) { Circle c = (Circle) s; shapes.add(new Circle(p, c.getRadius(), c.getColor())); cpt++; notifyObservers(); } } shapeSelect.clear(); this.repaint(); }
@NotNull private static List<EditorWindow> findWindowsInRow( @NotNull EditorWindow anchor, @NotNull List<EditorWindow> windows, final boolean vertical) { final Rectangle anchorRect = getEditorWindowRectangle(anchor); if (anchorRect != null) { final List<EditorWindow> result = new ArrayList<EditorWindow>(); final double coord = vertical ? anchorRect.getX() : anchorRect.getY(); for (EditorWindow window : windows) { final Rectangle rect = getEditorWindowRectangle(window); if (rect != null) { final double min = vertical ? rect.getX() : rect.getY(); final double max = min + (vertical ? rect.getWidth() : rect.getHeight()); if (coord >= min && coord <= max) { result.add(window); } } } Collections.sort( result, new Comparator<EditorWindow>() { @Override public int compare(EditorWindow window1, EditorWindow window2) { final Rectangle rect1 = getEditorWindowRectangle(window1); final Rectangle rect2 = getEditorWindowRectangle(window2); if (rect1 != null && rect2 != null) { final double diff = vertical ? (rect1.getY() - rect2.getY()) : (rect1.getX() - rect2.getX()); return diff < 0 ? -1 : diff > 0 ? 1 : 0; } return 0; } }); return result; } return Collections.singletonList(anchor); }
DOTItemDialog() { super(); _primitiveForm = primitiveForm; _property = property; _dynamicDefinitionComponent = new DynamicDefinitionComponent(_configuration, new DOTPointPlugin()); final Object propertyValue = initDynamicDefinitionComponent(); final JPanel panel = new JPanel(); panel.setLayout(new SpringLayout()); JLabel aLabel = null; if (_property == DOTProperty.DURCHMESSER) { aLabel = new JLabel("Durchmesser: "); if (propertyValue != null) { _diameterSpinner.setValue(propertyValue); } _component = _diameterSpinner; } else if (_property == DOTProperty.FARBE || _property == DOTProperty.FUELLUNG) { aLabel = new JLabel("Farbe: "); if (propertyValue != null) { _colorComboBox.setSelectedItem(propertyValue); } _component = _colorComboBox; } else if (_property == DOTProperty.GROESSE) { aLabel = new JLabel("Schriftgröße: "); if (propertyValue != null) { _textSizeSpinner.setValue(propertyValue); } _component = _textSizeSpinner; } else if (_property == DOTProperty.STRICHBREITE) { aLabel = new JLabel("Strichbreite: "); if (propertyValue != null) { _strokeWidthSpinner.setValue(propertyValue); } _component = _strokeWidthSpinner; } else if (_property == DOTProperty.TEXT) { aLabel = new JLabel("Text: "); prepareTextComboBox(propertyValue); _component = _textComboBox; } else if (_property == DOTProperty.TEXTSTIL) { aLabel = new JLabel("Textstil: "); if (propertyValue != null) { _textStyleComboBox.setSelectedItem(propertyValue); } _component = _textStyleComboBox; } else if (_property == DOTProperty.TRANSPARENZ) { aLabel = new JLabel("Tranzparenz: "); if (propertyValue != null) { _transparencySpinner.setValue(propertyValue); } _component = _transparencySpinner; } panel.add(aLabel); panel.add(_component); panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 0)); SpringUtilities.makeCompactGrid(panel, 2, 20, 5); final JButton saveButton = new JButton("Speichern"); saveButton.setEnabled(_dotDefinitionDialogFrame.isEditable()); final JButton cancelButton = new JButton("Dialog schließen"); final JPanel buttonsPanel = new JPanel(); buttonsPanel.setLayout(new SpringLayout()); buttonsPanel.add(saveButton); buttonsPanel.add(cancelButton); buttonsPanel.setBorder(BorderFactory.createEmptyBorder(5, 10, 5, 10)); SpringUtilities.makeCompactGrid(buttonsPanel, 2, 20, 5); addButtonListeners(saveButton, cancelButton); setTitle("GND: Darstellungsfestlegung für Punkte"); setLayout(new BorderLayout()); add(new JScrollPane(panel), BorderLayout.NORTH); add(new JScrollPane(_dynamicDefinitionComponent), BorderLayout.CENTER); add(buttonsPanel, BorderLayout.SOUTH); pack(); setSize(700, 550); final Rectangle bounds = getBounds(); setLocation( new Point((int) (bounds.getHeight() / 1.5 + 300), (int) (bounds.getWidth() / 1.5))); }
@Override protected void paintComponent(Graphics g) { JRibbonFrame ribbonFrame = (JRibbonFrame) SwingUtilities.getWindowAncestor(this); if (!ribbonFrame.isShowingKeyTips()) return; // don't show keytips on inactive windows if (!ribbonFrame.isActive()) return; Collection<KeyTipManager.KeyTipLink> keyTips = KeyTipManager.defaultManager().getCurrentlyShownKeyTips(); if (keyTips != null) { Graphics2D g2d = (Graphics2D) g.create(); RenderingUtils.installDesktopHints(g2d); for (KeyTipManager.KeyTipLink keyTip : keyTips) { // don't display keytips on components in popup panels if (SwingUtilities.getAncestorOfClass(JPopupPanel.class, keyTip.comp) != null) continue; // don't display key tips on hidden components Rectangle compBounds = keyTip.comp.getBounds(); if (!keyTip.comp.isShowing() || (compBounds.getWidth() == 0) || (compBounds.getHeight() == 0)) continue; Dimension pref = KeyTipRenderingUtilities.getPrefSize(g2d.getFontMetrics(), keyTip.keyTipString); Point prefCenter = keyTip.prefAnchorPoint; Point loc = SwingUtilities.convertPoint(keyTip.comp, prefCenter, this); Container bandControlPanel = SwingUtilities.getAncestorOfClass(AbstractBandControlPanel.class, keyTip.comp); if (bandControlPanel != null) { // special case for controls in threesome // ribbon band rows if (hasClientPropertySetToTrue(keyTip.comp, BasicBandControlPanelUI.TOP_ROW)) { loc = SwingUtilities.convertPoint(keyTip.comp, prefCenter, bandControlPanel); loc.y = 0; loc = SwingUtilities.convertPoint(bandControlPanel, loc, this); // prefCenter.y = 0; } if (hasClientPropertySetToTrue(keyTip.comp, BasicBandControlPanelUI.MID_ROW)) { loc = SwingUtilities.convertPoint(keyTip.comp, prefCenter, bandControlPanel); loc.y = bandControlPanel.getHeight() / 2; loc = SwingUtilities.convertPoint(bandControlPanel, loc, this); // prefCenter.y = keyTip.comp.getHeight() / 2; } if (hasClientPropertySetToTrue(keyTip.comp, BasicBandControlPanelUI.BOTTOM_ROW)) { loc = SwingUtilities.convertPoint(keyTip.comp, prefCenter, bandControlPanel); loc.y = bandControlPanel.getHeight(); loc = SwingUtilities.convertPoint(bandControlPanel, loc, this); // prefCenter.y = keyTip.comp.getHeight(); } } KeyTipRenderingUtilities.renderKeyTip( g2d, this, new Rectangle( loc.x - pref.width / 2, loc.y - pref.height / 2, pref.width, pref.height), keyTip.keyTipString, keyTip.enabled); } g2d.dispose(); } }
/** tests the basic shapes. */ public void testBasicShapes() throws Exception { Circle circle = new Circle(); circle.setColor(Color.BLUE); circle.setId("someid"); circle.setLineStyle(LineStyle.solid); circle.setPositionX(8); circle.setPositionY(9); circle.setRadius(10); JacksonJaxbJsonProvider provider = new JacksonJaxbJsonProvider(); ObjectMapper circleMapper = provider.locateMapper(Circle.class, MediaType.APPLICATION_JSON_TYPE); ObjectMapper clientMapper = new ObjectMapper(); ByteArrayOutputStream out = new ByteArrayOutputStream(); circleMapper.writeValue(out, circle); ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()); shapes.json.Circle clientCircle = clientMapper.readValue(in, shapes.json.Circle.class); assertSame(shapes.json.Color.BLUE, clientCircle.getColor()); assertEquals("someid", clientCircle.getId()); assertEquals(shapes.json.LineStyle.solid, clientCircle.getLineStyle()); assertEquals(8, clientCircle.getPositionX()); assertEquals(9, clientCircle.getPositionY()); assertEquals(10, clientCircle.getRadius()); out = new ByteArrayOutputStream(); clientMapper.writeValue(out, clientCircle); in = new ByteArrayInputStream(out.toByteArray()); circle = circleMapper.readValue(in, Circle.class); assertSame(Color.BLUE, circle.getColor()); assertEquals("someid", circle.getId()); assertEquals(LineStyle.solid, circle.getLineStyle()); assertEquals(8, circle.getPositionX()); assertEquals(9, circle.getPositionY()); assertEquals(10, circle.getRadius()); ObjectMapper rectangleMapper = provider.locateMapper(Rectangle.class, MediaType.APPLICATION_JSON_TYPE); Rectangle rectangle = new Rectangle(); rectangle.setColor(Color.GREEN); rectangle.setId("rectid"); rectangle.setHeight(500); rectangle.setWidth(1000); rectangle.setLineStyle(LineStyle.dotted); rectangle.setPositionX(-100); rectangle.setPositionY(-300); out = new ByteArrayOutputStream(); rectangleMapper.writeValue(out, rectangle); in = new ByteArrayInputStream(out.toByteArray()); shapes.json.Rectangle clientRect = clientMapper.readValue(in, shapes.json.Rectangle.class); assertSame(shapes.json.Color.GREEN, clientRect.getColor()); assertEquals("rectid", clientRect.getId()); assertEquals(shapes.json.LineStyle.dotted, clientRect.getLineStyle()); assertEquals(500, clientRect.getHeight()); assertEquals(1000, clientRect.getWidth()); assertEquals(-100, clientRect.getPositionX()); assertEquals(-300, clientRect.getPositionY()); out = new ByteArrayOutputStream(); clientMapper.writeValue(out, clientRect); in = new ByteArrayInputStream(out.toByteArray()); rectangle = rectangleMapper.readValue(in, Rectangle.class); assertSame(Color.GREEN, rectangle.getColor()); assertEquals("rectid", rectangle.getId()); assertEquals(LineStyle.dotted, rectangle.getLineStyle()); assertEquals(500, rectangle.getHeight()); assertEquals(1000, rectangle.getWidth()); assertEquals(-100, rectangle.getPositionX()); assertEquals(-300, rectangle.getPositionY()); ObjectMapper triangleMapper = provider.locateMapper(Triangle.class, MediaType.APPLICATION_JSON_TYPE); Triangle triangle = new Triangle(); triangle.setBase(90); triangle.setColor(Color.RED); triangle.setHeight(100); triangle.setId("triangleId"); triangle.setLineStyle(LineStyle.dashed); triangle.setPositionX(0); triangle.setPositionY(-10); out = new ByteArrayOutputStream(); triangleMapper.writeValue(out, triangle); in = new ByteArrayInputStream(out.toByteArray()); shapes.json.Triangle clientTri = clientMapper.readValue(in, shapes.json.Triangle.class); assertSame(shapes.json.Color.RED, clientTri.getColor()); assertEquals("triangleId", clientTri.getId()); assertEquals(shapes.json.LineStyle.dashed, clientTri.getLineStyle()); assertEquals(90, clientTri.getBase()); assertEquals(100, clientTri.getHeight()); assertEquals(0, clientTri.getPositionX()); assertEquals(-10, clientTri.getPositionY()); out = new ByteArrayOutputStream(); clientMapper.writeValue(out, clientTri); in = new ByteArrayInputStream(out.toByteArray()); triangle = triangleMapper.readValue(in, Triangle.class); assertSame(Color.RED, triangle.getColor()); assertEquals(90, triangle.getBase()); assertEquals(100, triangle.getHeight()); assertEquals("triangleId", triangle.getId()); assertSame(LineStyle.dashed, triangle.getLineStyle()); assertEquals(0, triangle.getPositionX()); assertEquals(-10, triangle.getPositionY()); }
/** tests house. This one has things like nillable and required properties. */ public void testHouse() throws Exception { House house = new House(); Rectangle base = new Rectangle(); base.setColor(Color.BLUE); base.setHeight(80); base.setWidth(80); base.setLineStyle(LineStyle.solid); base.setId("baseid"); house.setBase(base); Rectangle door = new Rectangle(); door.setColor(Color.YELLOW); door.setHeight(35); door.setWidth(20); door.setLineStyle(LineStyle.solid); door.setId("doorId"); house.setDoor(door); Circle knob = new Circle(); knob.setColor(Color.RED); knob.setId("knobId"); knob.setLineStyle(LineStyle.dashed); knob.setRadius(2); house.setDoorKnob(knob); Label label1 = new Label(); label1.setValue("bachelor-pad"); Label label2 = new Label(); label2.setValue("single-family-dwelling"); house.setLabels(Arrays.asList(label1, label2)); Triangle roof = new Triangle(); roof.setBase(84); roof.setHeight(20); roof.setColor(Color.YELLOW); roof.setLineStyle(LineStyle.solid); house.setRoof(roof); Rectangle window = new Rectangle(); window.setColor(Color.YELLOW); window.setHeight(10); window.setWidth(10); window.setLineStyle(LineStyle.solid); house.setWindows(Arrays.asList(window)); house.setConstructedDate(new DateTime(3L)); house.setType(XmlQNameEnumUtil.toQName(HouseType.brick)); house.setStyle(XmlQNameEnumUtil.toQName(HouseStyle.latin)); house.setColor(XmlQNameEnumUtil.toURI(HouseColor.blue)); JacksonJaxbJsonProvider provider = new JacksonJaxbJsonProvider(); ObjectMapper houseMapper = provider.locateMapper(House.class, MediaType.APPLICATION_JSON_TYPE); ObjectMapper clientMapper = new ObjectMapper(); ByteArrayOutputStream out = new ByteArrayOutputStream(); houseMapper.writeValue(out, house); ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()); shapes.json.structures.House clientHouse = clientMapper.readValue(in, shapes.json.structures.House.class); shapes.json.Rectangle clientBase = clientHouse.getBase(); assertSame(shapes.json.Color.BLUE, clientBase.getColor()); assertSame(shapes.json.LineStyle.solid, clientBase.getLineStyle()); assertEquals(80, clientBase.getHeight()); assertEquals(80, clientBase.getWidth()); assertEquals("baseid", clientBase.getId()); shapes.json.Rectangle clientDoor = clientHouse.getDoor(); assertSame(shapes.json.Color.YELLOW, clientDoor.getColor()); assertSame(shapes.json.LineStyle.solid, clientDoor.getLineStyle()); assertEquals(35, clientDoor.getHeight()); assertEquals(20, clientDoor.getWidth()); assertEquals("doorId", clientDoor.getId()); shapes.json.Circle clientKnob = clientHouse.getDoorKnob(); assertSame(shapes.json.Color.RED, clientKnob.getColor()); assertSame(shapes.json.LineStyle.dashed, clientKnob.getLineStyle()); assertEquals(2, clientKnob.getRadius()); assertEquals("knobId", clientKnob.getId()); List<String> labels = Arrays.asList("bachelor-pad", "single-family-dwelling"); clientHouse.getLabels().size(); for (Object l : clientHouse.getLabels()) { shapes.json.Label label = (shapes.json.Label) l; assertTrue(labels.contains(label.getValue())); } shapes.json.Triangle clientRoof = clientHouse.getRoof(); assertSame(shapes.json.Color.YELLOW, clientRoof.getColor()); assertSame(shapes.json.LineStyle.solid, clientRoof.getLineStyle()); assertNull(clientRoof.getId()); assertEquals(84, clientRoof.getBase()); assertEquals(20, clientRoof.getHeight()); assertEquals(1, clientHouse.getWindows().size()); shapes.json.Rectangle clientWindow = (shapes.json.Rectangle) clientHouse.getWindows().get(0); assertSame(shapes.json.Color.YELLOW, clientWindow.getColor()); assertSame(shapes.json.LineStyle.solid, clientWindow.getLineStyle()); assertEquals(10, clientWindow.getHeight()); assertEquals(10, clientWindow.getWidth()); assertNull(clientWindow.getId()); assertEquals(new Date(3L), clientHouse.getConstructedDate()); out = new ByteArrayOutputStream(); clientMapper.writeValue(out, clientHouse); house = houseMapper.readValue(new ByteArrayInputStream(out.toByteArray()), House.class); base = house.getBase(); assertSame(Color.BLUE, base.getColor()); assertSame(LineStyle.solid, base.getLineStyle()); assertEquals(80, base.getHeight()); assertEquals(80, base.getWidth()); assertEquals("baseid", base.getId()); door = house.getDoor(); assertSame(Color.YELLOW, door.getColor()); assertSame(LineStyle.solid, door.getLineStyle()); assertEquals(35, door.getHeight()); assertEquals(20, door.getWidth()); assertEquals("doorId", door.getId()); knob = house.getDoorKnob(); assertSame(Color.RED, knob.getColor()); assertSame(LineStyle.dashed, knob.getLineStyle()); assertEquals(2, knob.getRadius()); assertEquals("knobId", knob.getId()); labels = Arrays.asList("bachelor-pad", "single-family-dwelling"); house.getLabels().size(); for (Object l : house.getLabels()) { Label label = (Label) l; assertTrue(labels.contains(label.getValue())); } roof = house.getRoof(); assertSame(Color.YELLOW, roof.getColor()); assertSame(LineStyle.solid, roof.getLineStyle()); assertNull(roof.getId()); assertEquals(84, roof.getBase()); assertEquals(20, roof.getHeight()); assertEquals(1, house.getWindows().size()); window = house.getWindows().get(0); assertSame(Color.YELLOW, window.getColor()); assertSame(LineStyle.solid, window.getLineStyle()); assertEquals(10, window.getHeight()); assertEquals(10, window.getWidth()); assertNull(window.getId()); assertEquals(new DateTime(3L), house.getConstructedDate()); assertEquals(XmlQNameEnumUtil.toQName(HouseType.brick), house.getType()); assertEquals(XmlQNameEnumUtil.toQName(HouseStyle.latin), house.getStyle()); assertEquals(XmlQNameEnumUtil.toURI(HouseColor.blue), house.getColor()); // now let's check the nillable and required stuff: // roof is required, but nillable. clientHouse.setRoof(null); out = new ByteArrayOutputStream(); clientMapper.writeValue(out, clientHouse); house = houseMapper.readValue(new ByteArrayInputStream(out.toByteArray()), House.class); base = house.getBase(); assertSame(Color.BLUE, base.getColor()); assertSame(LineStyle.solid, base.getLineStyle()); assertEquals(80, base.getHeight()); assertEquals(80, base.getWidth()); assertEquals("baseid", base.getId()); door = house.getDoor(); assertSame(Color.YELLOW, door.getColor()); assertSame(LineStyle.solid, door.getLineStyle()); assertEquals(35, door.getHeight()); assertEquals(20, door.getWidth()); assertEquals("doorId", door.getId()); knob = house.getDoorKnob(); assertSame(Color.RED, knob.getColor()); assertSame(LineStyle.dashed, knob.getLineStyle()); assertEquals(2, knob.getRadius()); assertEquals("knobId", knob.getId()); labels = Arrays.asList("bachelor-pad", "single-family-dwelling"); house.getLabels().size(); for (Object l : house.getLabels()) { Label label = (Label) l; assertTrue(labels.contains(label.getValue())); } roof = house.getRoof(); assertNull(roof); assertEquals(1, house.getWindows().size()); window = house.getWindows().get(0); assertSame(Color.YELLOW, window.getColor()); assertSame(LineStyle.solid, window.getLineStyle()); assertEquals(10, window.getHeight()); assertEquals(10, window.getWidth()); assertNull(window.getId()); // windows are nillable... clientHouse.setWindows(null); out = new ByteArrayOutputStream(); clientMapper.writeValue(out, clientHouse); house = houseMapper.readValue(new ByteArrayInputStream(out.toByteArray()), House.class); base = house.getBase(); assertSame(Color.BLUE, base.getColor()); assertSame(LineStyle.solid, base.getLineStyle()); assertEquals(80, base.getHeight()); assertEquals(80, base.getWidth()); assertEquals("baseid", base.getId()); door = house.getDoor(); assertSame(Color.YELLOW, door.getColor()); assertSame(LineStyle.solid, door.getLineStyle()); assertEquals(35, door.getHeight()); assertEquals(20, door.getWidth()); assertEquals("doorId", door.getId()); knob = house.getDoorKnob(); assertSame(Color.RED, knob.getColor()); assertSame(LineStyle.dashed, knob.getLineStyle()); assertEquals(2, knob.getRadius()); assertEquals("knobId", knob.getId()); labels = Arrays.asList("bachelor-pad", "single-family-dwelling"); house.getLabels().size(); for (Object l : house.getLabels()) { Label label = (Label) l; assertTrue(labels.contains(label.getValue())); } roof = house.getRoof(); assertNull(roof); assertNull(house.getWindows()); }
/** tests bus. This one has an element wrapper. */ public void testBus() throws Exception { Bus bus = new Bus(); bus.setId("some bus"); Label cityBus = new Label(); cityBus.setValue("city"); Label countryBus = new Label(); countryBus.setValue("country"); Label longDistanceBus = new Label(); longDistanceBus.setValue("long-distance"); bus.setId("bus id"); bus.setLabels(Arrays.asList(cityBus, countryBus, longDistanceBus)); Rectangle door = new Rectangle(); door.setColor(Color.BLUE); door.setWidth(2); door.setHeight(4); door.setLineStyle(LineStyle.solid); bus.setDoor(door); Rectangle frame = new Rectangle(); frame.setHeight(10); frame.setWidth(50); frame.setColor(Color.YELLOW); frame.setLineStyle(LineStyle.solid); bus.setFrame(frame); Circle front = new Circle(); front.setColor(Color.BLUE); front.setLineStyle(LineStyle.dotted); front.setRadius(6); Circle back = new Circle(); back.setColor(Color.BLUE); back.setLineStyle(LineStyle.dotted); back.setRadius(7); bus.setWheels(new Circle[] {front, back}); Rectangle window1 = new Rectangle(); window1.setColor(Color.BLUE); window1.setWidth(2); window1.setHeight(2); window1.setLineStyle(LineStyle.solid); Rectangle window2 = new Rectangle(); window2.setColor(Color.BLUE); window2.setWidth(2); window2.setHeight(2); window2.setLineStyle(LineStyle.solid); Rectangle window3 = new Rectangle(); window3.setColor(Color.BLUE); window3.setWidth(2); window3.setHeight(2); window3.setLineStyle(LineStyle.solid); bus.setWindows(Arrays.asList(window1, window2, window3)); Map<Integer, Circle> riders = new HashMap<Integer, Circle>(); Circle rider3 = new Circle(); rider3.setRadius(3); riders.put(3, rider3); Circle rider4 = new Circle(); rider4.setRadius(4); riders.put(4, rider4); bus.setType(XmlQNameEnumUtil.toQName(BusType.charter)); JacksonJaxbJsonProvider provider = new JacksonJaxbJsonProvider(); ObjectMapper busMapper = provider.locateMapper(Bus.class, MediaType.APPLICATION_JSON_TYPE); ObjectMapper clientMapper = new ObjectMapper(); ByteArrayOutputStream out = new ByteArrayOutputStream(); busMapper.writeValue(out, bus); ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()); shapes.json.vehicles.Bus clientBus = clientMapper.readValue(in, shapes.json.vehicles.Bus.class); assertEquals("bus id", clientBus.getId()); ArrayList<String> labels = new ArrayList<String>(Arrays.asList("city", "country", "long-distance")); for (Object l : clientBus.getLabels()) { shapes.json.Label label = (shapes.json.Label) l; assertTrue(labels.remove(label.getValue())); } shapes.json.Rectangle clientDoor = clientBus.getDoor(); assertSame(shapes.json.Color.BLUE, clientDoor.getColor()); assertEquals(2, clientDoor.getWidth()); assertEquals(4, clientDoor.getHeight()); assertSame(shapes.json.LineStyle.solid, clientDoor.getLineStyle()); shapes.json.Rectangle clientFrame = clientBus.getFrame(); assertEquals(10, clientFrame.getHeight()); assertEquals(50, clientFrame.getWidth()); assertSame(shapes.json.Color.YELLOW, clientFrame.getColor()); assertSame(shapes.json.LineStyle.solid, clientFrame.getLineStyle()); shapes.json.Circle[] clientWheels = clientBus.getWheels(); assertEquals(2, clientWheels.length); assertEquals(6, clientWheels[0].getRadius()); assertSame(shapes.json.Color.BLUE, clientWheels[0].getColor()); assertSame(shapes.json.LineStyle.dotted, clientWheels[0].getLineStyle()); assertEquals(7, clientWheels[1].getRadius()); assertSame(shapes.json.Color.BLUE, clientWheels[1].getColor()); assertSame(shapes.json.LineStyle.dotted, clientWheels[1].getLineStyle()); shapes.json.Rectangle[] clientWindows = (shapes.json.Rectangle[]) clientBus.getWindows().toArray(new shapes.json.Rectangle[3]); assertEquals(2, clientWindows[0].getWidth()); assertEquals(2, clientWindows[0].getHeight()); assertEquals(shapes.json.Color.BLUE, clientWindows[0].getColor()); assertEquals(shapes.json.LineStyle.solid, clientWindows[0].getLineStyle()); assertEquals(2, clientWindows[1].getWidth()); assertEquals(2, clientWindows[1].getHeight()); assertEquals(shapes.json.Color.BLUE, clientWindows[1].getColor()); assertEquals(shapes.json.LineStyle.solid, clientWindows[1].getLineStyle()); assertEquals(2, clientWindows[2].getWidth()); assertEquals(2, clientWindows[2].getHeight()); assertEquals(shapes.json.Color.BLUE, clientWindows[2].getColor()); assertEquals(shapes.json.LineStyle.solid, clientWindows[2].getLineStyle()); out = new ByteArrayOutputStream(); clientMapper.writeValue(out, clientBus); bus = busMapper.readValue(new ByteArrayInputStream(out.toByteArray()), Bus.class); door = bus.getDoor(); assertSame(Color.BLUE, door.getColor()); assertEquals(2, door.getWidth()); assertEquals(4, door.getHeight()); assertSame(LineStyle.solid, door.getLineStyle()); frame = bus.getFrame(); assertEquals(10, frame.getHeight()); assertEquals(50, frame.getWidth()); assertSame(Color.YELLOW, frame.getColor()); assertSame(LineStyle.solid, frame.getLineStyle()); Circle[] wheels = bus.getWheels(); assertEquals(2, wheels.length); assertEquals(6, wheels[0].getRadius()); assertSame(Color.BLUE, wheels[0].getColor()); assertSame(LineStyle.dotted, wheels[0].getLineStyle()); assertEquals(7, wheels[1].getRadius()); assertSame(Color.BLUE, wheels[1].getColor()); assertSame(LineStyle.dotted, wheels[1].getLineStyle()); Rectangle[] windows = bus.getWindows().toArray(new Rectangle[3]); assertEquals(2, windows[0].getWidth()); assertEquals(2, windows[0].getHeight()); assertEquals(Color.BLUE, windows[0].getColor()); assertEquals(LineStyle.solid, windows[0].getLineStyle()); assertEquals(2, windows[1].getWidth()); assertEquals(2, windows[1].getHeight()); assertEquals(Color.BLUE, windows[1].getColor()); assertEquals(LineStyle.solid, windows[1].getLineStyle()); assertEquals(2, windows[2].getWidth()); assertEquals(2, windows[2].getHeight()); assertEquals(Color.BLUE, windows[2].getColor()); assertEquals(LineStyle.solid, windows[2].getLineStyle()); assertEquals(BusType.charter, XmlQNameEnumUtil.fromQName(bus.getType(), BusType.class)); // todo: test an element wrapper around elementRefs }