/* Copyright 2003, Carnegie Mellon, All Rights Reserved */ package edu.cmu.minorthird.util.gui; import java.awt.GridBagLayout; import java.util.List; import javax.swing.JComponent; import org.apache.log4j.Logger; /** * * Abstract viewer which displays JComponent. * * @author William cohen */ public abstract class ComponentViewer extends Viewer{ static final long serialVersionUID=20081125L; protected Logger log=Logger.getLogger(this.getClass()); public ComponentViewer(){ super(); } public ComponentViewer(Object o){ super(o); } /** Called at creation time. */ @Override protected void initialize(){ setLayout(new GridBagLayout()); } /** Get new content. */ @Override public void receiveContent(Object content){ removeAll(); JComponent c=componentFor(content); add(c,fillerGBC()); } @Override public void clearContent(){ removeAll(); } // // override if needed // @Override protected void handle(int signal,Object argument,List<Viewer> senders){ throw new IllegalStateException("signal:"+signal+" argument:"+argument+ " at:"+this); } @Override protected boolean canHandle(int signal,Object argument,List<Viewer> senders){ return false; } // // abstract action // abstract public JComponent componentFor(Object o); // default: recieve anything that can be converted to a component @Override public boolean canReceive(Object obj){ try{ componentFor(obj); return true; }catch(Exception e){ return false; } } }