예제 #1
0
  private void calcAbsolutePosition(SharedProgramInstanceData sharedProgramInstanceData) {
    m_nDefaultAbsolutePosition = 0;

    if (m_varDefRedefinOrigin != null) // We are a redefine
    {
      if (isVarInMapRedefine() && m_varDefRedefinOrigin.isEditInMapRedefine()) {
        // We are a var that redefines an edit; The var must point to the text part of the edit, not
        // in the attribute header
        m_nDefaultAbsolutePosition =
            m_varDefRedefinOrigin.m_nDefaultAbsolutePosition
                + m_varDefRedefinOrigin.getHeaderLength();
      } else // no header to skip
      {
        m_nDefaultAbsolutePosition =
            m_varDefRedefinOrigin.m_nDefaultAbsolutePosition; // Set at the redefine origin position
      }
    } else // We are not a redefine
    {
      VarDefBase varDefPreviousSameLevelNonRedefine =
          getPreviousSameLevelNonRedefine(sharedProgramInstanceData);
      if (varDefPreviousSameLevelNonRedefine != null)
        m_nDefaultAbsolutePosition =
            varDefPreviousSameLevelNonRedefine.m_nDefaultAbsolutePosition
                + varDefPreviousSameLevelNonRedefine.getTotalSize();
      else if (m_varDefParent != null)
        m_nDefaultAbsolutePosition =
            m_varDefParent.m_nDefaultAbsolutePosition + m_varDefParent.getHeaderLength();
    }

    calcPositionsIntoBuffer(sharedProgramInstanceData);
  }