/**
 * Title:
 * @version:    $Id: RecordSelectionController.java,v 1.1 2004/11/15 13:47:50 rob Exp $
 * Copyright:   Copyright (C) 2003 Ian Ibbotson
 * @author:     Ian Ibbotson
 * Company:
 * Description:
 */

package com.k_int.AdminApp.gui.SearchView;

import java.util.StringTokenizer;
import java.util.Vector;
import java.util.Observable;
import org.apache.commons.collections.LRUMap;
import com.k_int.QueryDescriptor.*;
import com.k_int.AdminApp.models.Search.*;
import com.k_int.AdminApp.gui.AdminControllerComponent;
import com.k_int.QueryDescriptor.*;
import com.k_int.AdminApp.config.*;
import com.k_int.AdminApp.models.Search.*;
import com.k_int.AdminApp.gui.ControllerOwner;
import java.awt.Component;
import com.k_int.AdminApp.gui.RecordView.*;
import com.k_int.AdminApp.gui.ExplorerView.*;
import java.util.logging.*;


/**
 *  The SEARCH component pairs together a search and a detailed record view under the main component list.
 */
public class RecordSelectionController extends BaseSearchController
{
  private static Logger logger = Logger.getLogger(RecordSelectionController.class.getName());
  private  RecordSelectionConsumer selection_target;

  public RecordSelectionController(String descriptor_id, 
                                   String repository_id, 
                                   ConfigHolder config,
                                   String name,
                                   ControllerOwner owner,
                                   AdminController top,
                                   boolean is_closeable,
                                   RecordSelectionConsumer selection_target) throws javax.naming.NamingException
  {
    super(descriptor_id,repository_id,config,name,owner,top,is_closeable);
    this.selection_target = selection_target;
  }

  public boolean showRecordSelectionPanel()
  {
    return true;
  }
                                                                                                                                        
  public boolean allowEdit()
  {
    return false;
  }

  public void notifySelection(int[] selected_rows)
  {
    logger.fine("notifySelection : "+selected_rows);

    Object[] selected_objects = new Object[selected_rows.length];
    for ( int i=0; i<selected_rows.length;i++)
      selected_objects[i] = sm.getResultSetObject(selected_rows[i]);
    selection_target.notify(selected_objects);

    // Close this component.. We have done with it :)
    close();
  }
}
