/* Copyright 2003, Carnegie Mellon, All Rights Reserved */
package edu.cmu.minorthird.util.gui;
import java.awt.GridBagLayout;
import java.util.List;
/**
* View an object after passing it through a transformation.
*
* @author William cohen
*/
abstract public class TransformedViewer extends Viewer{
static final long serialVersionUID=20081125L;
private Viewer subViewer;
public TransformedViewer(){
super();
}
public TransformedViewer(Object obj){
super(obj);
}
public TransformedViewer(Viewer subViewer){
super();
setSubView(subViewer);
}
public void setSubView(Viewer subViewer){
this.subViewer=subViewer;
subViewer.setSuperView(this);
removeAll();
add(subViewer,fillerGBC());
}
/** Transform the object before viewing it. */
abstract public Object transform(Object obj);
//
// delegate operations to subViewer
//
@Override
final public void receiveContent(Object obj){
if(subViewer==null){
throw new IllegalStateException("no subViewer has bee set for "+this);
}
subViewer.setContent(transform(obj));
}
@Override
public void clearContent(){
subViewer.clearContent();
}
@Override
final public boolean canReceive(Object obj){
return subViewer.canReceive(transform(obj));
}
@Override
final protected void handle(int signal,Object argument,List<Viewer> senders){
subViewer.handle(signal,argument,senders);
}
@Override
final protected boolean canHandle(int signal,Object argument,List<Viewer> senders){
return subViewer.canHandle(signal,argument,senders);
}
@Override
final protected void initialize(){
setLayout(new GridBagLayout());
}
}