zooming, panning and rotating objects that are not at the origin

i think the header explains it all, right now i use gluLookAt() for looking at an object, and after that perform rotation around it axis.
for zooming in out i just use the view direction to change the camera position and the “lookAt position”, but how to implement panning.
And, is this an elegant way of doing it this way?

It’s reasonable unless you’re looking for more accurate control, such as fitting the object precisely in the view volume, making sure it’s contained within it, or something similar. The Gleem ExaminerViewer class (in the jogl-demos workspace) shows how to do some of these operations in an interactive setting without using gluLookAt.