package automenta.vivisect.swing; import java.awt.LayoutManager; import java.awt.event.HierarchyEvent; import java.awt.event.HierarchyListener; import javax.swing.JPanel; /** * JPanel subclass that is aware of when it is shown. This allows event handlers to attach and reattach to NAR's * @author SeH */ abstract public class NPanel extends JPanel implements HierarchyListener { public NPanel() { super(); } public NPanel(LayoutManager l) { super(l); } @Override public void addNotify() { super.addNotify(); addHierarchyListener(this); } @Override public void removeNotify() { removeHierarchyListener(this); super.removeNotify(); } @Override public void hierarchyChanged(HierarchyEvent e) { if ((e.getChangeFlags() & HierarchyEvent.SHOWING_CHANGED) != 0) { boolean showing = isShowing(); onShowing(showing); } } abstract protected void onShowing(boolean showing); }