offTop = offBottom-offTop-4;
offTop = offTop-offBottom-4;
    public static PiccoloAction getSemanticEnterAction(final BrowserView view,                                                       final HoverManager layer)    {        PiccoloAction enterAction = getImageEnterAction(view);        PiccoloAction action = new CompositePiccoloAction(enterAction)        {            public void execute(PInputEvent e)            {                super.execute(e);                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);                }            }        };        return action;    }