From 751af001a60b0339737a09b1f8dd0f5a603c756d Mon Sep 17 00:00:00 2001 From: bancika Date: Sun, 2 Jan 2011 21:24:54 +0000 Subject: [PATCH] auto-gc --- .../DIYLC/lib/bancika-gui-framework.jar | Bin 85554 -> 85735 bytes .../diylc/components/ResistorInstance.java | 3 + .../diyfever/diylc/model/ComponentState.java | 2 +- .../diylc/plugins/statusbar/StatusBar.java | 2 +- .../diyfever/diylc/presenter/G2DWrapper.java | 210 ------------------ .../diyfever/diylc/presenter/Presenter.java | 77 +++++-- 6 files changed, 62 insertions(+), 232 deletions(-) diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/lib/bancika-gui-framework.jar b/ diy-layout-creator --username bancika@gmail.com/DIYLC/lib/bancika-gui-framework.jar index 663e1b68ba83178fe17234556de29bc9beaab793..52433dd463b2dcff718cb90c52d9979b7bb34ada 100644 GIT binary patch delta 6352 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 hints) { canvasGraphics.addRenderingHints(hints); } - /** - *{@inheritDoc} - **/ @Override public void clip(Shape s) { canvasGraphics.clip(s); } - /** - *{@inheritDoc} - **/ @Override public void draw(Shape s) { canvasGraphics.draw(s); } - /** - *{@inheritDoc} - **/ @Override public void drawGlyphVector(GlyphVector g, float x, float y) { canvasGraphics.drawGlyphVector(g, x, y); } - /** - *{@inheritDoc} - **/ @Override public boolean drawImage(Image img, AffineTransform xform, ImageObserver obs) { // FIXME: process map return canvasGraphics.drawImage(img, xform, obs); } - /** - *{@inheritDoc} - **/ @Override public void drawImage(BufferedImage img, BufferedImageOp op, int x, int y) { canvasGraphics.drawImage(img, op, x, y); // FIXME: process map } - /** - *{@inheritDoc} - **/ @Override public void drawRenderableImage(RenderableImage img, AffineTransform xform) { canvasGraphics.drawRenderableImage(img, xform); // FIXME: process map } - /** - *{@inheritDoc} - **/ @Override public void drawRenderedImage(RenderedImage img, AffineTransform xform) { canvasGraphics.drawRenderedImage(img, xform); // FIXME: process map } - /** - *{@inheritDoc} - **/ @Override public void drawString(String str, int x, int y) { canvasGraphics.drawString(str, x, y); // FIXME: process map } - /** - *{@inheritDoc} - **/ @Override public void drawString(String str, float x, float y) { canvasGraphics.drawString(str, x, y); // FIXME: process map } - /** - *{@inheritDoc} - **/ @Override public void drawString(AttributedCharacterIterator iterator, int x, int y) { canvasGraphics.drawString(iterator, x, y); // FIXME: process map } - /** - *{@inheritDoc} - **/ @Override public void drawString(AttributedCharacterIterator iterator, float x, float y) { canvasGraphics.drawString(iterator, x, y); // FIXME: process map } - /** - *{@inheritDoc} - **/ @Override public void fill(Shape s) { canvasGraphics.fill(s); appendShape(s); } - /** - *{@inheritDoc} - **/ @Override public Color getBackground() { return canvasGraphics.getBackground(); } - /** - *{@inheritDoc} - **/ @Override public Composite getComposite() { return canvasGraphics.getComposite(); } - /** - *{@inheritDoc} - **/ @Override public GraphicsConfiguration getDeviceConfiguration() { return canvasGraphics.getDeviceConfiguration(); } - /** - *{@inheritDoc} - **/ @Override public FontRenderContext getFontRenderContext() { return canvasGraphics.getFontRenderContext(); } - /** - *{@inheritDoc} - **/ @Override public Paint getPaint() { return canvasGraphics.getPaint(); } - /** - *{@inheritDoc} - **/ @Override public Object getRenderingHint(Key hintKey) { return canvasGraphics.getRenderingHint(hintKey); } - /** - *{@inheritDoc} - **/ @Override public RenderingHints getRenderingHints() { return canvasGraphics.getRenderingHints(); } - /** - *{@inheritDoc} - **/ @Override public Stroke getStroke() { return canvasGraphics.getStroke(); } - /** - *{@inheritDoc} - **/ @Override public AffineTransform getTransform() { return canvasGraphics.getTransform(); } - /** - *{@inheritDoc} - **/ @Override public boolean hit(Rectangle rect, Shape s, boolean onStroke) { return canvasGraphics.hit(rect, s, onStroke); } - /** - *{@inheritDoc} - **/ @Override public void rotate(double theta) { canvasGraphics.rotate(theta); } - /** - *{@inheritDoc} - **/ @Override public void rotate(double theta, double x, double y) { canvasGraphics.rotate(theta, x, y); } - /** - *{@inheritDoc} - **/ @Override public void scale(double sx, double sy) { canvasGraphics.scale(sx, sy); } - /** - *{@inheritDoc} - **/ @Override public void setBackground(Color color) { canvasGraphics.setBackground(color); // FIXME: fix map } - /** - *{@inheritDoc} - **/ @Override public void setComposite(Composite comp) { canvasGraphics.setComposite(comp); // FIXME: check this. } - /** - *{@inheritDoc} - **/ @Override public void setPaint(Paint paint) { canvasGraphics.setPaint(paint); // FIXME: check this } - /** - *{@inheritDoc} - **/ @Override public void setRenderingHint(Key hintKey, Object hintValue) { canvasGraphics.setRenderingHint(hintKey, hintValue); // FIXME: check this } - /** - *{@inheritDoc} - **/ @Override public void setRenderingHints(Map hints) { canvasGraphics.setRenderingHints(hints); // FIXME: check this } - /** - *{@inheritDoc} - **/ @Override public void setStroke(Stroke s) { canvasGraphics.setStroke(s); } - /** - *{@inheritDoc} - **/ @Override public void setTransform(AffineTransform Tx) { canvasGraphics.setTransform(Tx); currentTx = Tx; } - /** - *{@inheritDoc} - **/ @Override public void shear(double shx, double shy) { canvasGraphics.shear(shx, shy); currentTx.shear(shx, shy); } - /** - *{@inheritDoc} - **/ @Override public void transform(AffineTransform Tx) { canvasGraphics.transform(Tx); currentTx.concatenate(Tx); } - /** - *{@inheritDoc} - **/ @Override public void translate(int x, int y) { canvasGraphics.translate(x, y); currentTx.translate(x, y); } - /** - *{@inheritDoc} - **/ @Override public void translate(double tx, double ty) { canvasGraphics.translate(tx, ty); currentTx.translate(tx, ty); } - /** - *{@inheritDoc} - **/ @Override public void clearRect(int x, int y, int width, int height) { canvasGraphics.clearRect(x, y, width, height); } - /** - *{@inheritDoc} - **/ @Override public void clipRect(int x, int y, int width, int height) { canvasGraphics.clipRect(x, y, width, height); } - /** - *{@inheritDoc} - **/ @Override public void copyArea(int x, int y, int width, int height, int dx, int dy) { canvasGraphics.copyArea(x, y, width, height, dx, dy); } - /** - *{@inheritDoc} - **/ @Override public Graphics create() { return canvasGraphics.create(); } - /** - *{@inheritDoc} - **/ @Override public void dispose() { canvasGraphics.dispose(); } - /** - *{@inheritDoc} - **/ @Override public void drawArc(int x, int y, int width, int height, int startAngle, int arcAngle) { canvasGraphics.drawArc(x, y, width, height, startAngle, arcAngle); } - /** - *{@inheritDoc} - **/ @Override public boolean drawImage(Image img, int x, int y, ImageObserver observer) { // FIXME: map return canvasGraphics.drawImage(img, x, y, observer); } - /** - *{@inheritDoc} - **/ @Override public boolean drawImage(Image img, int x, int y, Color bgcolor, ImageObserver observer) { // FIXME: map return canvasGraphics.drawImage(img, x, y, bgcolor, observer); } - /** - *{@inheritDoc} - **/ @Override public boolean drawImage(Image img, int x, int y, int width, int height, ImageObserver observer) { // FIXME: map return canvasGraphics.drawImage(img, x, y, width, height, observer); } - /** - *{@inheritDoc} - **/ @Override public boolean drawImage(Image img, int x, int y, int width, int height, Color bgcolor, ImageObserver observer) { @@ -485,9 +344,6 @@ class G2DWrapper extends Graphics2D { return canvasGraphics.drawImage(img, x, y, width, height, bgcolor, observer); } - /** - *{@inheritDoc} - **/ @Override public boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, ImageObserver observer) { @@ -495,9 +351,6 @@ class G2DWrapper extends Graphics2D { return canvasGraphics.drawImage(img, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2, observer); } - /** - *{@inheritDoc} - **/ @Override public boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, Color bgcolor, ImageObserver observer) { @@ -505,174 +358,111 @@ class G2DWrapper extends Graphics2D { return drawImage(img, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2, bgcolor, observer); } - /** - *{@inheritDoc} - **/ @Override public void drawLine(int x1, int y1, int x2, int y2) { canvasGraphics.drawLine(x1, y1, x2, y2); } - /** - *{@inheritDoc} - **/ @Override public void drawOval(int x, int y, int width, int height) { canvasGraphics.drawOval(x, y, width, height); } - /** - *{@inheritDoc} - **/ @Override public void drawPolygon(int[] points, int[] points2, int points3) { canvasGraphics.drawPolygon(points, points2, points3); } - /** - *{@inheritDoc} - **/ @Override public void drawPolyline(int[] points, int[] points2, int points3) { canvasGraphics.drawPolyline(points, points2, points3); } - /** - *{@inheritDoc} - **/ @Override public void drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) { canvasGraphics.drawRoundRect(x, y, width, height, arcWidth, arcHeight); } - /** - *{@inheritDoc} - **/ @Override public void fillArc(int x, int y, int width, int height, int startAngle, int arcAngle) { canvasGraphics.fillArc(x, y, width, height, startAngle, arcAngle); appendShape(new Arc2D.Double(x, y, width, height, startAngle, arcAngle, Arc2D.PIE)); } - /** - *{@inheritDoc} - **/ @Override public void fillOval(int x, int y, int width, int height) { canvasGraphics.fillOval(x, y, width, height); appendShape(new Ellipse2D.Double(x, y, width, height)); } - /** - *{@inheritDoc} - **/ @Override public void fillPolygon(int[] points, int[] points2, int points3) { canvasGraphics.fillPolygon(points, points2, points3); appendShape(new Polygon(points, points2, points3)); } - /** - *{@inheritDoc} - **/ @Override public void fillRect(int x, int y, int width, int height) { canvasGraphics.fillRect(x, y, width, height); appendShape(new Rectangle(x, y, width, height)); } - /** - *{@inheritDoc} - **/ @Override public void fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) { canvasGraphics.fillRoundRect(x, y, width, height, arcWidth, arcHeight); appendShape(new RoundRectangle2D.Double(x, y, width, height, arcWidth, arcHeight)); } - /** - *{@inheritDoc} - **/ @Override public Shape getClip() { return canvasGraphics.getClip(); } - /** - *{@inheritDoc} - **/ @Override public Rectangle getClipBounds() { return canvasGraphics.getClipBounds(); } - /** - *{@inheritDoc} - **/ @Override public Color getColor() { return canvasGraphics.getColor(); } - /** - *{@inheritDoc} - **/ @Override public Font getFont() { return canvasGraphics.getFont(); } - /** - *{@inheritDoc} - **/ @Override public FontMetrics getFontMetrics(Font f) { return canvasGraphics.getFontMetrics(f); } - /** - *{@inheritDoc} - **/ @Override public void setClip(Shape clip) { canvasGraphics.setClip(clip); } - /** - *{@inheritDoc} - **/ @Override public void setClip(int x, int y, int width, int height) { canvasGraphics.setClip(x, y, width, height); } - /** - *{@inheritDoc} - **/ @Override public void setColor(Color c) { canvasGraphics.setColor(c); } - /** - *{@inheritDoc} - **/ @Override public void setFont(Font font) { canvasGraphics.setFont(font); } - /** - *{@inheritDoc} - **/ @Override public void setPaintMode() { canvasGraphics.setPaintMode(); } - /** - *{@inheritDoc} - **/ @Override public void setXORMode(Color c1) { canvasGraphics.setXORMode(c1); diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/com/diyfever/diylc/presenter/Presenter.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/com/diyfever/diylc/presenter/Presenter.java index 0f1de839..44f31cab 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/com/diyfever/diylc/presenter/Presenter.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/com/diyfever/diylc/presenter/Presenter.java @@ -1,7 +1,9 @@ package com.diyfever.diylc.presenter; +import java.awt.AlphaComposite; import java.awt.BasicStroke; import java.awt.Color; +import java.awt.Composite; import java.awt.Cursor; import java.awt.Dimension; import java.awt.Graphics2D; @@ -233,6 +235,9 @@ public class Presenter implements IPlugInPort { g2dWrapper.scale(zoomLevel, zoomLevel); } + Composite mainComposite = g2d.getComposite(); + Composite alphaComposite = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f); + g2dWrapper.resetTx(); List components = getCurrentProject().getComponents(); @@ -240,10 +245,26 @@ public class Presenter implements IPlugInPort { if (components != null) { for (IComponentInstance component : components) { g2dWrapper.startedDrawingComponent(); - ComponentState state = (selectedComponents.contains(component) && drawOptions - .contains(DrawOption.SELECTION)) ? ComponentState.SELECTED - : ComponentState.NORMAL; + ComponentState state = ComponentState.NORMAL; + if (drawOptions.contains(DrawOption.SELECTION) + && selectedComponents.contains(component)) { + if (dragInProgress) { + state = ComponentState.DRAGGING; + } else { + state = ComponentState.SELECTED; + } + } + // If the component is being dragged, draw it in a separate + // composite. + if (state == ComponentState.DRAGGING) { + g2dWrapper.setComposite(alphaComposite); + } + // Draw the component through the g2dWrapper. component.draw(g2dWrapper, state); + // Restore the composite if needed. + if (state == ComponentState.DRAGGING) { + g2dWrapper.setComposite(mainComposite); + } componentAreaMap.put(component, g2dWrapper.finishedDrawingComponent()); // Draw control points @@ -404,12 +425,15 @@ public class Presenter implements IPlugInPort { dragStartPoint = point; Point scaledPoint = scalePoint(point); List components = findComponentsAt(scaledPoint); + // If no components are under the cursor, reset selection. if (components.isEmpty()) { selectedComponents.clear(); messageDispatcher.dispatchMessage(EventType.SELECTION_CHANGED, selectedComponents); messageDispatcher.dispatchMessage(EventType.REPAINT); } else { IComponentInstance component = components.get(0); + // If the component under the cursor is not already selected, make + // it into the only selected component. if (!selectedComponents.contains(component)) { selectedComponents.clear(); selectedComponents.add(component); @@ -421,10 +445,17 @@ public class Presenter implements IPlugInPort { @Override public boolean dragOver(Point point) { + // If there's no selection, the only thing to do is update the selection + // rectangle and refresh. if (selectedComponents.isEmpty()) { this.selectionRect = Utils.createRectangle(point, dragStartPoint); messageDispatcher.dispatchMessage(EventType.SELECTION_RECT_CHANGED, selectionRect); messageDispatcher.dispatchMessage(EventType.REPAINT); + } else { + // If there are components selected translate their control points. + translateSelection(point); + dragStartPoint = point; + messageDispatcher.dispatchMessage(EventType.REPAINT); } return true; } @@ -454,26 +485,12 @@ public class Presenter implements IPlugInPort { selectionRect = null; messageDispatcher.dispatchMessage(EventType.SELECTION_CHANGED, selectedComponents); } else { + // There is selection, so we need to finalize the drag&drop + // operation. Project oldProject = cloner.deepClone(currentProject); // If there are components selected translate their control points. - int dx = (int) ((point.x - dragStartPoint.x) / zoomLevel); - int dy = (int) ((point.y - dragStartPoint.y) / zoomLevel); - for (IComponentInstance component : selectedComponents) { - List controlPoints = ComponentProcessor.getInstance() - .extractControlPoints(component.getClass()); - for (ControlPointWrapper controlPoint : controlPoints) { - try { - controlPoint.readFrom(component); - if (controlPoint.isEditable()) { - controlPoint.getValue().translate(dx, dy); - } - controlPoint.writeTo(component); - } catch (Exception e) { - LOG.error("Could not translate control points: " + e.getMessage()); - } - } - } + translateSelection(point); if (!oldProject.equals(currentProject)) { messageDispatcher.dispatchMessage(EventType.PROJECT_MODIFIED, oldProject, cloner .deepClone(currentProject), "Move"); @@ -483,6 +500,26 @@ public class Presenter implements IPlugInPort { dragInProgress = false; } + private void translateSelection(Point toPoint) { + int dx = (int) ((toPoint.x - dragStartPoint.x) / zoomLevel); + int dy = (int) ((toPoint.y - dragStartPoint.y) / zoomLevel); + for (IComponentInstance component : selectedComponents) { + List controlPoints = ComponentProcessor.getInstance() + .extractControlPoints(component.getClass()); + for (ControlPointWrapper controlPoint : controlPoints) { + try { + controlPoint.readFrom(component); + if (controlPoint.isEditable()) { + controlPoint.getValue().translate(dx, dy); + } + controlPoint.writeTo(component); + } catch (Exception e) { + LOG.error("Could not translate control points: " + e.getMessage()); + } + } + } + } + @Override public void addComponents(List components, Point preferredPoint) { LOG.debug(String.format("addComponents(%s)", components));