> In collaborative displays any changes in one display
> eg. zoom, is reflected at the server display and also
> other displays linked to that server display.
> I would like to know whether there is a way of
> severing that relation so that at the press of a
> button, a client can work independently with his own
> display. Any changes that the client makes will not
> affect other clients.
> At the moment I am using the DisplayImplJ3D
> constructor that takes a RemoteDisplay as the
Sorry for taking so long getting back to you ... I was out of
town last week, so it took me a while to catch up.
There is currently no way to detach a VisAD Display from
collaborative mode. It'd be trivial to add something like
this to DisplayImpl.java:
public void stopCollaboration()
displayMonitor = null;
displaySync = null;
Reattaching the client to a collaboration server is a much
harder problem. Collaboration works by having the client
Display copy the server Display and then uses events to
keep the two (or more) Dispays synchronized (see the Javadoc
for visad.DisplayMonitorImpl for more details) so when you
reattach, you have to choose whether to copy the client
Display to the server or to copy the server Display to the
The easiest path would be to throw away all the client's
changes and recopy the server's Display info using the
protected syncRemoteData() method in DisplayImpl.
If you want to copy the client's Display to the server,
you'll probably have to create a new MonitorEvent telling the
server to copy the client's state, then write all the code to
accomplish that. This would be a fairly large job, and I
don't currently have time to work on it.
If you do change VisAD to allow any of this, I'd appreciate
it if you sent me your changes so I could merge them back in
to the main distribution!
I wrote most of the collaboration code, so feel free to send
me any further questions you might have (or you can continue
to send them to the mailing list if you think they're of
general interest) and I'll do my best to answer them.