package com.ptc.tracker;
/*****************************************************************************\

FILE:    Labeler.java
PURPOSE: Returns a string correspondign to the specified J-Link enum value.

09-Apr-99    I-01-34     JCN   $$1   Created.

\*****************************************************************************/


//---------------------------PFC imports------------------------//
import com.ptc.pfc.pfcBase.*;
import com.ptc.pfc.pfcDimension.*;
import com.ptc.pfc.pfcFeature.*;
import com.ptc.pfc.pfcGeometry.*;
import com.ptc.pfc.pfcLayer.*;
import com.ptc.pfc.pfcModel.*;
import com.ptc.pfc.pfcModelItem.*;
import com.ptc.pfc.pfcSession.*;


//---------------------------Java imports-----------------------//
import java.lang.reflect.*;


public class Labeler
{
 
  public static final int MAX_ARRAY_SIZE = FeatureType.__Last - 1;
  
  public static final String pfcPlacement[] = initStringArray(Placement.class);

  public static final String pfcStdColor[] = initStringArray(StdColor.class);

  public static final String pfcStdLineStyle[] = initStringArray(StdLineStyle.class);

  public static final String pfcDimensionType[] = initStringArray(DimensionType.class);

  public static final String pfcFeatureType[] = initStringArray(FeatureType.class);

  public static final String pfcFeatureStatus[] = initStringArray(FeatureStatus.class);

  public static final String pfcContourTraversal[] = initStringArray(ContourTraversal.class);

  public static final String pfcDisplayStatus[] = initStringArray(DisplayStatus.class);

  public static final String pfcCGMExportType[] = initStringArray(CGMExportType.class);

  public static final String pfcCGMScaleType[] = initStringArray(CGMScaleType.class);

  public static final String pfcExportType[] = initStringArray(ExportType.class);

  public static final String pfcModelType[] = initStringArray(ModelType.class);

  public static final String pfcPlotPageRange[] = initStringArray(PlotPageRange.class);

  public static final String pfcPlotPaperSize[] = initStringArray(PlotPaperSize.class);

  public static final String pfcModelItemType[] = initStringArray(ModelItemType.class);

  public static final String pfcParamValueType[] = initStringArray(ParamValueType.class);
  
  public static final String pfcParamType[] = initStringArray(ParamType.class);
 
 /** 
   *  Returns an array of strings representing the names of the fields of a 
   *  J-Link enumerated type.
   */
  public static String [] initStringArray(Class typeclass)
    {
      String last_type = "__Last";
      int num_types,i,  j=0;
       Field temp [];
       Field last;
       String [] invalid;
       String [] ret;
       

       try 
	 {
	   last=typeclass.getField(last_type);
	   temp=typeclass.getFields();
	 }
       catch (Throwable n)
	 {
	   invalid = new String [MAX_ARRAY_SIZE];
	   for (i=0; i<MAX_ARRAY_SIZE; i++)
	     invalid[i] = new String("invalid");
	   return (invalid);
	   
	 }
      
       try {       
	 num_types=last.getInt(null);
       }
       catch (Throwable x)
	 {
	    invalid = new String [MAX_ARRAY_SIZE];
	   for (i=0; i<MAX_ARRAY_SIZE; i++)
	     invalid[i] = new String("invalid");
	   return (invalid);
	 }

       ret = new String [num_types];
       invalid = new String [num_types];
       for (i=0; i<num_types; i++)
	 invalid[i]=new String ("invalid");
       
       try {
       for (i=0; i<Array.getLength(temp); i++)
	 {
	   if (typeclass.isInstance(temp[i].get(null)))
	     {
      	       ret[j]=temp[i].getName();
	       j++;
	     }
	 }
       }
       catch (Throwable x)
	 {
	   return (invalid);
	 }
       return (ret);
    }




}
