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

package com.k_int.AdminApp.gui;

import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.ImageIcon;

import com.k_int.AdminApp.config.ConfigHolder;

import com.k_int.AdminApp.gui.RecordView.EditRecordController;
import com.k_int.AdminApp.gui.ExplorerView.AdminController;

import java.util.logging.*;

public class CreateObjectAction extends AbstractAction
{
    private static Logger cat = Logger.getLogger("com.k_int.AdminApp.gui.CreateObjectAction");
  private String repository_id = null;
  private String class_name = null;
  private String layout_id = null;
  private ConfigHolder config;
  private AdminController controller;
  private boolean is_closeable = true;

  public CreateObjectAction(ConfigHolder config, AdminController controller)
  {
    super();
    this.config = config;
    this.controller = controller;
  }

  public void setIsCloseable(boolean is_closeable)
  {
     cat.finest("CreateObjectAction setting closable "+is_closeable);
    this.is_closeable = is_closeable;
  }

  public void setName(String name)
  {
      cat.finest("Set name "+name);
    this.putValue(Action.NAME, name);
  }

  public void setShortDescription(String short_description)
  {
      cat.finest("Set short description "+short_description);
    // this.putValue(Action.SHORT_DESCRIPTION, AdminMainFrame.getResources().getString(short_description));
    this.putValue(Action.SHORT_DESCRIPTION, short_description);
  }

  public void setSmallIcon(String resource_id)
  {
    this.putValue(Action.SMALL_ICON, new ImageIcon(resource_id));
  }

  public void setHelp(String help)
  {
    cat.finest("Set help "+help);
    // this.putValue(Action.LONG_DESCRIPTION, AdminMainFrame.getResources().getString(help));
    this.putValue(Action.LONG_DESCRIPTION, help);
  }

  public String getClassName()
  {
    return class_name;
  }

  public void setClassName(String class_name)
  {
    this.class_name = class_name;
  }

  public String getLayoutID()
  {
    return layout_id;
  }

  public void setLayoutID(String layout_id)
  {
    this.layout_id = layout_id;
  }

  public String getRepository()
  {
    return repository_id;
  }

  public void setRepository(String repository_id)
  {
    this.repository_id = repository_id;
  }

  public void actionPerformed(ActionEvent evt)
  {
  	cat.finest(evt +" "+evt.getSource());
    try
    {
      cat.finest("CreateObjectAction:: action performed - building edit record controller");
  
      EditRecordController rpc = new EditRecordController(config, 
                                                          repository_id, 
                                                          this.getValue(AbstractAction.NAME).toString(),
                                                          true, 
                                                          false,
                                                          null,
                                                          controller,
                                                          is_closeable);
      
      rpc.selectTemplate(layout_id);
      controller.addComponent(rpc);
      Class object_class = Class.forName(class_name);
      Object new_object = object_class.newInstance();
      
      try
      {
      	rpc.recordChanged(new_object, true);
      }
      catch(Exception e)
      {
      	rpc.close();
      }
    }
    catch ( Exception e )
    {
      e.printStackTrace();
    }
  }

}
