diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml b/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml index daf4afdf..5a1e99f0 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml @@ -20,12 +20,12 @@ - - metric - true - lastPath C:\Documents and Settings\Branislav Stojkovic\Desktop + + metric + true + \ No newline at end of file diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/com/diyfever/diylc/plugins/canvas/CanvasPanel.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/com/diyfever/diylc/plugins/canvas/CanvasPanel.java index 217afa41..ff2fca21 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/com/diyfever/diylc/plugins/canvas/CanvasPanel.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/com/diyfever/diylc/plugins/canvas/CanvasPanel.java @@ -110,15 +110,19 @@ class CanvasPanel extends JComponent implements Autoscroll { createBufferImage(); } do { - if (bufferImage.contentsLost()) { - createBufferImage(); + try { + if (bufferImage.contentsLost()) { + createBufferImage(); + } + int validation = bufferImage.validate(screenGraphicsConfiguration); + if (validation == VolatileImage.IMAGE_INCOMPATIBLE) { + createBufferImage(); + } + g.drawImage(bufferImage, 0, 0, this); + } catch (NullPointerException e) { + // Do nothing, it will be recreated in the next pass. } - int validation = bufferImage.validate(screenGraphicsConfiguration); - if (validation == VolatileImage.IMAGE_INCOMPATIBLE) { - createBufferImage(); - } - g.drawImage(bufferImage, 0, 0, this); - } while (bufferImage.contentsLost()); + } while (bufferImage == null || bufferImage.contentsLost()); } @Override diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/com/diyfever/diylc/plugins/canvas/CanvasPlugin.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/com/diyfever/diylc/plugins/canvas/CanvasPlugin.java index ea060a81..3705fe88 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/com/diyfever/diylc/plugins/canvas/CanvasPlugin.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/com/diyfever/diylc/plugins/canvas/CanvasPlugin.java @@ -6,6 +6,8 @@ import java.util.EnumSet; import javax.swing.SwingConstants; +import org.apache.log4j.Logger; + import com.diyfever.diylc.common.BadPositionException; import com.diyfever.diylc.common.EventType; import com.diyfever.diylc.common.IPlugIn; @@ -17,7 +19,7 @@ import com.diyfever.gui.ruler.RulerScrollPane; public class CanvasPlugin implements IPlugIn { - // private static final Logger LOG = Logger.getLogger(CanvasPlugin.class); + private static final Logger LOG = Logger.getLogger(CanvasPlugin.class); private static final String METRIC_KEY = "metric"; @@ -35,7 +37,7 @@ public class CanvasPlugin implements IPlugIn { try { plugInPort.injectGUIComponent(getScrollPane(), SwingConstants.CENTER); } catch (BadPositionException e) { - e.printStackTrace(); + LOG.error("Could not install canvas plugin", e); } } 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 44f31cab..ace0dd02 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 @@ -453,7 +453,7 @@ public class Presenter implements IPlugInPort { messageDispatcher.dispatchMessage(EventType.REPAINT); } else { // If there are components selected translate their control points. - translateSelection(point); + translateSelection(dragStartPoint, point); dragStartPoint = point; messageDispatcher.dispatchMessage(EventType.REPAINT); } @@ -490,7 +490,7 @@ public class Presenter implements IPlugInPort { Project oldProject = cloner.deepClone(currentProject); // If there are components selected translate their control points. - translateSelection(point); + translateSelection(dragStartPoint, point); if (!oldProject.equals(currentProject)) { messageDispatcher.dispatchMessage(EventType.PROJECT_MODIFIED, oldProject, cloner .deepClone(currentProject), "Move"); @@ -500,9 +500,13 @@ 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); + private void translateSelection(Point fromPoint, Point toPoint) { + if (toPoint == null) { + LOG.debug("Drag ended outside the drawing area."); + return; + } + int dx = (int) ((toPoint.x - fromPoint.x) / zoomLevel); + int dy = (int) ((toPoint.y - fromPoint.y) / zoomLevel); for (IComponentInstance component : selectedComponents) { List controlPoints = ComponentProcessor.getInstance() .extractControlPoints(component.getClass());