#include <Global/Main_Global.h>

//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
SAVEDS ASM ULONG Source_Dispatcher(REG(a0) struct IClass *cl,REG(a2) Object *obj,REG(a1) Msg msg)
{

        switch (msg->MethodID)
        {
        	case OM_NEW	     : return(Src_New	   (cl,obj,(APTR) msg));        	             
        }

        return(DoSuperMethodA(cl,obj,msg));
}
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/

SAVEDS ULONG Src_New(struct IClass *cl,Object *obj,struct opSet *msg)
{

 struct SourceInstance	*Data;
 
 if(obj = (Object *)DoSuperNew(cl,obj,MUIA_Window_CloseGadget,TRUE,
                       		      MUIA_Window_Open       ,FALSE,
                       		      MUIA_Window_RootObject ,
					// NEW SOURCE PANEL CLASS
                                          NewObject(App->SourcePanel_Class->mcc_Class,NULL,TAG_DONE),
                       		        
                       		     //End,                      		                                                	                                   
	      TAG_MORE,msg->ops_AttrList))
	      {	     
                              	          
	        return((ULONG)obj);
	      }
  return(0);  
}                        
/**************************************************************************************/

SAVEDS ASM ULONG SourcePanel_Dispatcher(REG(a0) struct IClass *cl,REG(a2) Object *obj,REG(a1) Msg msg)
{

        switch (msg->MethodID)
        {
        	case OM_NEW	     : return(SrcPanel_New	   (cl,obj,(APTR) msg));               
                case MUIM_AskMinMax  : return(ScrPanel_AskMinMax   (cl,obj,(APTR)msg));
                case MUIM_Draw       : return(ScrPanel_Draw        (cl,obj,(APTR)msg));
         }

        return(DoSuperMethodA(cl,obj,msg));     
}

SAVEDS ULONG SrcPanel_New(struct IClass *cl,Object *obj,struct opSet *msg)
{

 //struct SourcePanelInstance	*Data; 
 
 if (!(obj = (Object *)DoSuperMethodA(cl,obj,msg)))
                return(0);
                      
       // Data = INST_DATA(cl,obj);


                              	          
    return((ULONG)obj);	        
}

SAVEDS ULONG ScrPanel_AskMinMax(struct IClass *cl,Object *obj,struct MUIP_AskMinMax *msg)
{
        
        DoSuperMethodA(cl,obj,msg);
        msg->MinMaxInfo->MinWidth  += 100;
        msg->MinMaxInfo->DefWidth  += 120;
        msg->MinMaxInfo->MaxWidth  += 500;
        msg->MinMaxInfo->MinHeight += 40;
        msg->MinMaxInfo->DefHeight += 90;
        msg->MinMaxInfo->MaxHeight += 300;
        return(0);
}

SAVEDS ULONG ScrPanel_Draw(struct IClass *cl,Object *obj,struct MUIP_Draw *msg)
{
        //struct SourcePanelInstance *Data = INST_DATA(cl,obj);

        DoSuperMethodA(cl,obj,msg);
        
          SetAPen(_rp(obj),_dri(obj)->dri_Pens[SHINEPEN]);
           Move(_rp(obj),_left(obj),_bottom(obj)+(_top(obj)-_bottom(obj))/2);
           Draw(_rp(obj),_right(obj),_bottom(obj)+(_top(obj)-_bottom(obj))/2);
           Move(_rp(obj),_left(obj)+(_right(obj)-_left(obj))/2,_top(obj));
           Draw(_rp(obj),_left(obj)+(_right(obj)-_left(obj))/2,_bottom(obj));

  return(0);
}

