package edu.cmu.minorthird.util.gui;
import java.util.List;
import org.apache.log4j.Logger;
/**
* When an object is selected in the zoomedOut view, it's displayed in
* the zoomedIn view. Used for getting a close up view of, say,
* objects in a list.
*
* @author William Cohen
*/
public class ZoomedViewer extends SplitViewer{
static final long serialVersionUID=20080517L;
static private Logger log=Logger.getLogger(ZoomedViewer.class);
static final boolean DEBUG=log.isDebugEnabled();
// rename viewer1,viewer2
private Viewer zoomedOut,zoomedIn;
public ZoomedViewer(){
super();
}
public ZoomedViewer(Viewer zoomedOut,Viewer zoomedIn){
super(zoomedOut,zoomedIn);
this.zoomedOut=viewer1;
this.zoomedIn=viewer2;
}
@Override
public void setSubViews(Viewer zoomedOut,Viewer zoomedIn){
super.setSubViews(zoomedOut,zoomedIn);
this.zoomedOut=viewer1;
this.zoomedIn=viewer2;
}
@Override
public void receiveContent(Object content){
log.info("recieving content: "+content);
zoomedOut.setContent(content);
zoomedIn.clearContent();
}
/** Get the object being displayed as the user sees it. */
@Override
public Object getVisibleContent(){
return zoomedOut.getVisibleContent();
}
@Override
public boolean canReceive(Object content){
return zoomedOut!=null&&zoomedOut.canReceive(content);
}
@Override
protected void handle(int signal,Object argument,List<Viewer> senders){
zoomedIn.setContent(argument);
revalidate();
}
@Override
protected boolean canHandle(int signal,Object argument,List<Viewer> senders){
if(DEBUG&&signal==OBJECT_SELECTED){
log.debug("selection in zoomed viewer, content="+argument);
log.debug("zoomedIn="+zoomedIn);
log.debug("zoomedIn.canReceive is "+
(zoomedIn!=null&&zoomedIn.canReceive(argument)));
}
if(signal==OBJECT_SELECTED&&senders.contains(zoomedOut)&&
zoomedIn.canReceive(argument)){
return true;
}else{
return false;
}
}
}