layer.nodeExited();
Thumbnail t = (Thumbnail)e.getPickedNode();  double width = t.getWidth()*e.getCamera().getViewScale(); double height = t.getHeight()*e.getCamera().getViewScale(); if(width < SemanticZoomNode.getStandardWidth() && height < SemanticZoomNode.getStandardHeight()) { Image image = t.getImage(); SemanticZoomNode semanticNode = new SemanticZoomNode(t);  Point2D point = new Point2D.Double(t.getOffset().getX()+ t.getBounds().getCenter2D().getX(), t.getOffset().getY()+ t.getBounds().getCenter2D().getY()); Point2D dummyPoint = new Point2D.Double(point.getX(),point.getY()); Dimension2D size = semanticNode.getBounds().getSize();  Point2D viewPoint = e.getCamera().viewToLocal(dummyPoint);  semanticNode.setOffset(viewPoint.getX()-size.getWidth()/2, viewPoint.getY()-size.getHeight()/2);  double offRight = semanticNode.getOffset().getX()+ semanticNode.getBounds().getWidth()- e.getCamera().getBounds().getWidth();  double offBottom = semanticNode.getOffset().getY()+ semanticNode.getBounds().getHeight()- e.getCamera().getBounds().getHeight();  double offLeft = semanticNode.getOffset().getX(); double offTop = semanticNode.getOffset().getY();  if(offRight > 0) { offLeft = offLeft-offRight-4; semanticNode.setOffset(offLeft,offTop); } if(offBottom > 0) { offTop = offBottom-offTop-4; semanticNode.setOffset(offLeft,offTop); } if(offLeft < 4) { offLeft = 4; semanticNode.setOffset(offLeft,offTop); } if(offTop < 4) { offTop = 4; semanticNode.setOffset(offLeft,offTop); }  layer.nodeEntered(e.getCamera(),semanticNode,200); }
            public void execute(PInputEvent e)            {                layer.nodeExited();            }