package bluej.stride.framedjava.ast;

import java.util.List;

import bluej.stride.framedjava.elements.CodeElement;
import bluej.stride.framedjava.elements.LocatableElement;
import bluej.utility.Debug;
import nu.xom.Attribute;
import nu.xom.Element;
import bluej.stride.generic.Frame;

public class ParamFragment
{       
public static final String ELEMENT = "param";
   
   private final TypeSlotFragment paramType;
   
   private final NameDefSlotFragment paramName;
    
   
   public ParamFragment(TypeSlotFragment paramType, NameDefSlotFragment paramName)
   {        
      this.paramType = paramType;
       
      this.paramName = paramName;     
      }
    
   
   public ParamFragment(Element el)
   {        
      paramType = new TypeSlotFragment(el.getAttributeValue("type"), el.getAttributeValue("type-java"));
       
      paramName = new NameDefSlotFragment(el.getAttributeValue("name"));     
      }
    
   
   public Element toXML()
   {        
      LocatableElement paramEl = new LocatableElement(null, ELEMENT);
      paramEl.addAttributeStructured("type", paramType);
      paramEl.addAttributeCode("name", paramName);
       
      return paramEl;     
      }
    
   
   public TypeSlotFragment getParamType()
   {        
      return paramType;     
      }
    
   
   public NameDefSlotFragment getParamName()
   {        
      return paramName;     
      }
    
   
   public static void addParamsToHeader(Frame frame, CodeElement src, List<ParamFragment> params, List<JavaFragment> header)
   {        
      for (int i = 0; i < params.size();i++)
       {
         header.add(params.get(i).getParamType());
           
         header.add(new FrameFragment(frame, src, " "));
         header.add(params.get(i).getParamName());
         if (i != params.size() - 1) {                
            header.add(new FrameFragment(frame, src, ", "));             
            }         
         }     
      } 
   }

| | |{} public static final String ELEMENT = "param"; private final TypeSlotFragment paramType; private final NameDefSlotFragment paramName; public ParamFragment(TypeSlotFragment paramType, NameDefSlotFragment paramName) {} this.paramType = paramType; | |this.paramName = paramName; | |} | |@Override | |public String getJavaCode(boolean forceValid) | |{} String t = !forceValid || Parser.parseableAsType(paramType.getContent()) ? paramType.getContent() : "int"; String n = !forceValid || Parser.parseableAsNameDef(paramName.getContent()) ? paramName.getContent() : Parser.generateNewDummyName(); return "final " + t + " " + n; } public Element toXML() {} Element paramEl = new Element(ELEMENT); paramEl.addAttribute(new Attribute("type", paramType.getContent())); paramEl.addAttribute(new Attribute("name", paramName.getContent())); return paramEl; } public ParamFragment(Element el) {} paramType = new TypeSlotFragment(el.getAttributeValue("type")); paramName = new NameDefSlotFragment(el.getAttributeValue("name")); } public TypeSlotFragment getParamType() {} return paramType; } public NameDefSlotFragment getParamName() {} return paramName; } @Override | |public void recordPosition(int positionInFile, int lineNo, int columnNo) | |{} // Currently, final is always added in front of param type in the method declaration. | |int paramTypeShift = "final".length() + 1; paramType.recordPosition(positionInFile + paramTypeShift, lineNo, columnNo + paramTypeShift); int paramNameShift = paramType.getContent().length() + 1; paramName.recordPosition(paramType.getPositionInFile(0) + paramNameShift, lineNo, paramType.getPositionInLine() + paramNameShift); | |} | |@Override | |public boolean positionRecorded() | |{} return paramType.positionRecorded() && paramName.positionRecorded(); | |} | |@OnThread(Tag.FX) | |public Stream<RecallableFocus> getFocusables() | |{} return Stream.of(paramType.getSlot(), paramName.getSlot()); | |} | |public Stream<CodeError> getCurrentErrors() | |{} return Stream.concat(paramType.getCurrentErrors(), paramName.getCurrentErrors()); | |} | |public boolean validForCompilation() | |{} return paramType.validForCompilation() && paramName.validForCompilation(); | |} | |@OnThread(Tag.FX) | |public void showDetectedErrors() | |{} paramType.showDetectedErrors(); | |paramName.showDetectedErrors(); | |} | |}
top, use, map, class ParamFragment

.   ParamFragment
.   ParamFragment
.   toXML
.   getParamType
.   getParamName
.   addParamsToHeader




77 neLoCode + 31 LoComm