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());