/* Author: Jeff Dalton * Updated: Mon Dec 3 21:14:43 2001 by Jeff Dalton * Copyright: (c) 2001, AIAI, University of Edinburgh */ package ix.ip2; import javax.swing.*; import java.lang.reflect.Constructor; import ix.icore.IXAgent; import ix.icore.domain.Domain; import ix.iview.*; import ix.util.*; /** * The main frame of an IP2 user interface. */ public abstract class Ip2Frame extends JFrame { protected InternalDomainEditor domainEditor; public Ip2Frame(String title) { super(title); } public InternalDomainEditor makeDomainEditor(IXAgent agent, Domain dom) { String className = Parameters.getParameter("domain-editor-class", "ix.iview.SimpleDomainEditor"); try { Debug.noteln("Trying domain editor class", className); Class c = Class.forName(className); Class[] consClasses = {IXAgent.class, Domain.class}; Constructor cons = c.getConstructor(consClasses); return (InternalDomainEditor) cons.newInstance(new Object[] {agent, dom}); } catch (Exception e) { Debug.noteException(e, false); Debug.noteln("Creating a SimpleDomainEditor instead."); return new SimpleDomainEditor(agent, dom); } } public InternalDomainEditor getDomainEditor() { ensureDomainEditor(); return domainEditor; } protected abstract void ensureDomainEditor(); }