From ae03132dc4348ed9fdb251e69f40366ade3c34c0 Mon Sep 17 00:00:00 2001 From: bancika Date: Mon, 3 Jan 2011 14:54:49 +0000 Subject: [PATCH] improved d&d fixed deadlock --- .../DIYLC/config.xml | 8 ++++---- .../diyfever/diylc/plugins/canvas/CanvasPanel.java | 11 ++++++++++- .../diyfever/diylc/presenter/ComponentProcessor.java | 10 ++++++++++ .../src/com/diyfever/diylc/presenter/Presenter.java | 4 ++++ 4 files changed, 28 insertions(+), 5 deletions(-) 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 5a1e99f0..90fffbf5 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 + false + 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 28ff5b6a..7de99bd7 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 @@ -16,6 +16,7 @@ import java.awt.dnd.DropTarget; import java.awt.event.ActionEvent; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; +import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; @@ -120,7 +121,7 @@ class CanvasPanel extends JComponent implements Autoscroll { } g.drawImage(bufferImage, 0, 0, this); } catch (NullPointerException e) { - // Do nothing, it will be recreated in the next pass. + createBufferImage(); } } while (bufferImage == null || bufferImage.contentsLost()); } @@ -139,6 +140,14 @@ class CanvasPanel extends JComponent implements Autoscroll { invalidate(); } }); + addKeyListener(new KeyAdapter() { + + @Override + public void keyPressed(KeyEvent e) { + plugInPort.mouseMoved(getMousePosition(), e.isControlDown(), e.isShiftDown(), e + .isAltDown()); + } + }); addMouseMotionListener(new MouseAdapter() { @Override diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/com/diyfever/diylc/presenter/ComponentProcessor.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/com/diyfever/diylc/presenter/ComponentProcessor.java index 12f6268f..ef9610be 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/com/diyfever/diylc/presenter/ComponentProcessor.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/com/diyfever/diylc/presenter/ComponentProcessor.java @@ -76,6 +76,16 @@ public class ComponentProcessor { return cloner.deepClone(properties); } + /** + * Reads all control points from the specified component class. Note than + * control points are cached, so it may happen that control points returned + * already have their values populated. Always use + * {@link ControlPointWrapper#readFrom(IComponentInstance)} to update their + * state from an actual component. + * + * @param clazz + * @return + */ public List extractControlPoints(Class clazz) { if (controlPointCache.containsKey(clazz)) { return cloner.deepClone(controlPointCache.get(clazz)); 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 ce158e5f..c73410d4 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 @@ -400,6 +400,10 @@ public class Presenter implements IPlugInPort { } } } + // If CTRL is pressed, we only care about the top most component. + if (altDown && components.size() > 0) { + break; + } } if (!components.equals(componentsUnderCursor)) { componentsUnderCursor = components;