{ System.err.println(camera.getViewScale()); System.err.println("offset="+camera.getViewBounds().getX()+ ","+camera.getViewBounds().getY());
{
    public BrowserCamera(BrowserTopModel model, PCamera c)    {        if(model == null || c == null)        {            throw new NullPointerException("Null parameters passed to " +                                           "BrowserCamera(model,camera)");        }                this.model = model;        this.camera = c;                camera.addPropertyChangeListener(new PropertyChangeListener()        {            public void propertyChange(PropertyChangeEvent e)            {                // oh, this is a ticky-tack hack right here                if(e.getPropertyName().equals("viewTransform"))                {                    System.err.println(camera.getViewScale());                    System.err.println("offset="+camera.getViewBounds().getX()+                                       ","+camera.getViewBounds().getY());                                        double x = camera.getViewBounds().getX();                    double y = camera.getViewBounds().getY();                    double extentX = camera.getViewBounds().getWidth();                    double extentY = camera.getViewBounds().getHeight();                    double width = activeRegion.getWidth();                    double height = activeRegion.getHeight();                                        for(Iterator iter = boundsListeners.iterator(); iter.hasNext();)                    {                        CameraListener listener = (CameraListener)iter.next();                        listener.cameraBoundsChanged(x,y,extentX,extentY,                                                     width,height);                    }                }            }        });        model.addModelListener(this);                init();                cameraResized(cameraBounds);    }