improved zooming

This commit is contained in:
bancika
2011-01-29 09:49:28 +00:00
parent 328d09123b
commit 1be52c1dfa
@@ -57,6 +57,8 @@ public class CanvasPlugin implements IPlugIn, ClipboardOwner {
private Clipboard clipboard; private Clipboard clipboard;
private double zoomLevel = 1;
public CanvasPlugin(ISwingUI swingUI) { public CanvasPlugin(ISwingUI swingUI) {
this.swingUI = swingUI; this.swingUI = swingUI;
clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
@@ -201,7 +203,8 @@ public class CanvasPlugin implements IPlugIn, ClipboardOwner {
public ActionFactory.DeleteSelectionAction getDeleteSelectionAction() { public ActionFactory.DeleteSelectionAction getDeleteSelectionAction() {
if (deleteSelectionAction == null) { if (deleteSelectionAction == null) {
deleteSelectionAction = ActionFactory.getInstance().createDeleteSelectionAction(plugInPort); deleteSelectionAction = ActionFactory.getInstance().createDeleteSelectionAction(
plugInPort);
} }
return deleteSelectionAction; return deleteSelectionAction;
} }
@@ -219,14 +222,14 @@ public class CanvasPlugin implements IPlugIn, ClipboardOwner {
} }
return ungroupAction; return ungroupAction;
} }
public ActionFactory.SendToBackAction getSendToBackAction() { public ActionFactory.SendToBackAction getSendToBackAction() {
if (sendToBackAction == null) { if (sendToBackAction == null) {
sendToBackAction = ActionFactory.getInstance().createSendToBackAction(plugInPort); sendToBackAction = ActionFactory.getInstance().createSendToBackAction(plugInPort);
} }
return sendToBackAction; return sendToBackAction;
} }
public ActionFactory.BringToFrontAction getBringToFrontAction() { public ActionFactory.BringToFrontAction getBringToFrontAction() {
if (bringToFrontAction == null) { if (bringToFrontAction == null) {
bringToFrontAction = ActionFactory.getInstance().createBringToFrontAction(plugInPort); bringToFrontAction = ActionFactory.getInstance().createBringToFrontAction(plugInPort);
@@ -257,11 +260,19 @@ public class CanvasPlugin implements IPlugIn, ClipboardOwner {
canvasPanel.scrollRectToVisible(visibleRect); canvasPanel.scrollRectToVisible(visibleRect);
canvasPanel.revalidate(); canvasPanel.revalidate();
} }
// canvasPanel.validate();
// canvasPanel.repaint();
break; break;
case ZOOM_CHANGED: case ZOOM_CHANGED:
Rectangle visibleRect = canvasPanel.getVisibleRect();
refreshSize(); refreshSize();
// Try to set the visible area to be centered with the previous
// one.
double zoomFactor = (Double) params[0] / zoomLevel;
visibleRect.setBounds((int) (visibleRect.x * zoomFactor),
(int) (visibleRect.y * zoomFactor), visibleRect.width, visibleRect.height);
canvasPanel.scrollRectToVisible(visibleRect);
canvasPanel.revalidate();
zoomLevel = (Double) params[0];
break; break;
case REPAINT: case REPAINT:
canvasPanel.repaint(); canvasPanel.repaint();