package org.opengroupware.jope.appserver.publisher;

import java.util.ArrayList;
import java.util.List;

import org.opengroupware.jope.appserver.core.WOApplication;
import org.opengroupware.jope.appserver.publisher.JoContext;
import org.opengroupware.jope.appserver.publisher.JoObject;
import org.opengroupware.jope.eocontrol.EOArrayDataSource;
import org.opengroupware.jope.eocontrol.EODataSource;
import org.opengroupware.jope.foundation.NSObject;

/*
 * JoControlPanel
 * 
 * Public hook into the JOPE internals.
 * 
 * TODO: document
 */
public class JoControlPanel extends NSObject implements JoObject {
  
  protected WOApplication application;
  
  public JoControlPanel(WOApplication _app) {
    this.application = _app;
  }
  
  /* accessors */
  
  public JoProductManager joProductManager() {
    return (JoProductManager)this.application.valueForKey("joProductManager");
  }
  
  /* Lookup */
  
  public Object lookupName(String _name, JoContext _ctx, boolean _acquire) {
    if (_name != null && _name.equals("Products"))
      return this.joProductManager();
    
    return null;
  }

  /* folderish */
  
  public boolean isFolderish() {
    return true;
  }
  
  public EODataSource folderDataSource() {
    List<Object> children = new ArrayList<Object>(1);
    
    Object o = this.joProductManager();
    if (o != null) children.add(o);
    
    return new EOArrayDataSource(children);
  }
}
