Keeping parts within the viewport

Regarding resizing within the viewport:

Add this helper function:

function limitInputToViewport(e) { var diagram = e.diagram; var vp = diagram.viewportBounds; var docpt = e.documentPoint.copy(); if (docpt.x < vp.x) docpt.x = vp.x; else if (docpt.x > vp.right) docpt.x = vp.right; if (docpt.y < vp.y) docpt.y = vp.y; else if (docpt.y > vp.bottom) docpt.y = vp.bottom; e.documentPoint = docpt; e.viewPoint = diagram.transformDocToView(docpt); }
This function limits an InputEvent to stay within the viewport.

Then you can override two ResizingTool methods:

[code] myDiagram.toolManager.resizingTool.doMouseMove = function() {
limitInputToViewport(this.diagram.lastInput);
go.ResizingTool.prototype.doMouseMove.call(this);
};

myDiagram.toolManager.resizingTool.doMouseUp = function() {
  limitInputToViewport(this.diagram.lastInput);
  go.ResizingTool.prototype.doMouseUp.call(this);
};[/code]

Now the user cannot drag a resize handle outside of the viewport.