/** * Given a MouseEvent, check the source, and if it's a MapBean, then grab the projection and * java.awt.Graphics from it to use for generation and rendering of the EditableOMGraphic objects. * * @param e MouseEvent * @param firmPaint true if the graphic is being rendered at rest, with fill colors and true * colors, with the grab point if the state allows it. If false, then the fill color will not * be used, and just the graphic will be drawn. Use false for graphics that are moving. */ public void redraw(MouseEvent e, boolean firmPaint, boolean drawXOR) { if (DEBUG) { Debug.output("EditableOMGraphic.redraw(" + (firmPaint ? "firmPaint)" : ")")); } if (e == null) { if (lastMouseEvent == null) { return; } e = lastMouseEvent; } Object obj = e.getSource(); if (!(obj instanceof MapBean)) { return; } MapBean map = (MapBean) obj; Graphics g = map.getGraphics(); OMGraphic graphic = getGraphic(); if (firmPaint) { // So, with a firm paint, we want to clean the screen. If // the map is being buffered, we need to clean out the // buffer, which is why we set the Request paint to true, // to get the image rebuilt. Otherwise, a copy of the // graphic remains. map.setBufferDirty(true); graphic.generate(getProjection()); map.repaint(); } else { // If we get here, we are painting a moving object, so we // only want to do the outline to make it as fast as // possible. holder.setFrom(graphic); DrawingAttributes.DEFAULT.setTo(graphic); modifyOMGraphicForEditRender(); graphic.regenerate(getProjection()); if (drawXOR) { g.setXORMode(Color.lightGray); g.setColor((Color) graphic.getDisplayPaint()); render(g); } GrabPoint gp = getMovingPoint(); if (gp != null) { gp.set(e.getX(), e.getY()); if (gp instanceof OffsetGrabPoint) { ((OffsetGrabPoint) gp).moveOffsets(); } setGrabPoints(); } } if (!firmPaint) { generate(getProjection()); render(g); holder.setTo(graphic); } resetOMGraphicAfterEditRender(); g.dispose(); lastMouseEvent = e; }