//change a display type of a molecule from molecule list to deviceWithMolecules list
 void displayMoleculeInDevice(DisplayedMolecule molecule, EquipedDisplayedDeviceWithMolecules eddwm)
 {
     if ((molecule.getDisplayType() == DisplayedMolecule.DisplayType.MOLECULELIST) ||
         !isAlreadyDisplayedInADevice(molecule.getCodeName()))
     {
         _displayedListMoleculesCount--;
     }
     eddwm.addDisplayedMolecule(molecule);
 }
	// Update is called once per frame
	void Update()
  {
        
    int previousListedCount = _displayedListMoleculesCount;
    int previousTotalCount = _displayedMolecules.Count;

    resetMoleculeList();

		ArrayList molecules = _reactionEngine.getMoleculesFromMedium(mediumId);
		foreach(System.Object molecule in molecules) {
      Molecule castMolecule = (Molecule)molecule;
      string realName = castMolecule.getRealName();
      string codeName = castMolecule.getName();
			float concentration = castMolecule.getConcentration();
      if(displayAll || (0 != concentration))
      {
        DisplayedMolecule found = LinkedListExtensions.Find(
                    _displayedMolecules
                    , m => m.getCodeName() == codeName
                    , false
                    , " GraphMoleculeList::Update()"
                    );
        if(null != found)
        {
          found.update(concentration);
        }
        else
        //molecule is not displayed yet
        {
          DisplayedMolecule created = new DisplayedMolecule(codeName, realName, concentration, DisplayedMolecule.DisplayType.MOLECULELIST);

          //search if molecule should be displayed in a Device/molecule component
          List<EquipedDisplayedDeviceWithMolecules> containers = _equipedDevices.FindAll(eddwm => eddwm.device.getFirstGeneProteinName() == codeName);
          if(containers.Count != 0)
          {                        
            created.setDisplayType(DisplayedMolecule.DisplayType.DEVICEMOLECULELIST);
            foreach(EquipedDisplayedDeviceWithMolecules container in containers)
            {
              container.addDisplayedMolecule(created);
            }
          }
          else
          {
            _displayedListMoleculesCount++;
          }
          //anyway add it to molecule list
          _displayedMolecules.AddLast(created);
        }
      }
		}

    removeUnusedMolecules();

    if(_displayedMolecules.Count != previousTotalCount
       || previousListedCount != _displayedListMoleculesCount)
    {
      //rearrange devices
      positionDeviceAndMoleculeComponents();
    }
		
		string namesToDisplay = "";
    string valuesToDisplay = "";

		foreach(DisplayedMolecule molecule in _displayedMolecules) {
      if(molecule.getDisplayType() == DisplayedMolecule.DisplayType.MOLECULELIST)
      {
          namesToDisplay+=molecule.getRealName()+":\n";
          valuesToDisplay+=molecule.getVal()+"\n";
      }
		}
		if(!string.IsNullOrEmpty(namesToDisplay)) {
			namesToDisplay.Remove(namesToDisplay.Length-1, 1);
      valuesToDisplay.Remove(valuesToDisplay.Length-1, 1);
		}
    namesLabel.text = namesToDisplay;
    valuesLabel.text = valuesToDisplay;

        /*
    if(null != topLabels)
    {
      topLabelsShift = Vector3.up * topLabels.relativeSize.y * topLabels.transform.localScale.y;
      namesLabel.transform.localPosition = topLabels.transform.localPosition + topLabelsShift;
    }
    */

    setUnfoldingListBackgroundScale();
	}
 //change a display type of a molecule from molecule list to deviceWithMolecules list
 void displayMoleculeInDevice(DisplayedMolecule molecule, EquipedDisplayedDeviceWithMolecules eddwm)
 {
     if((molecule.getDisplayType() == DisplayedMolecule.DisplayType.MOLECULELIST)
        || !isAlreadyDisplayedInADevice(molecule.getCodeName()))
     {
         _displayedListMoleculesCount--;
     }
     eddwm.addDisplayedMolecule(molecule);
 }
 //TODO allow multiple protein management
 public void addDisplayedMolecule(DisplayedMolecule molecule)
 {
   _displayedMolecule = molecule;
   molecule.setDisplayType(DisplayedMolecule.DisplayType.DEVICEMOLECULELIST);
 }
Exemple #5
0
 //TODO allow multiple protein management
 public void addDisplayedMolecule(DisplayedMolecule molecule)
 {
     _displayedMolecule = molecule;
     molecule.setDisplayType(DisplayedMolecule.DisplayType.DEVICEMOLECULELIST);
 }
    // Update is called once per frame
    void Update()
    {
        int previousListedCount = _displayedListMoleculesCount;
        int previousTotalCount  = _displayedMolecules.Count;

        resetMoleculeList();

        ArrayList molecules = _reactionEngine.getMoleculesFromMedium(mediumId);

        foreach (System.Object molecule in molecules)
        {
            Molecule castMolecule  = (Molecule)molecule;
            string   realName      = castMolecule.getRealName();
            string   codeName      = castMolecule.getName();
            float    concentration = castMolecule.getConcentration();
            if (displayAll || (0 != concentration))
            {
                DisplayedMolecule found = LinkedListExtensions.Find(
                    _displayedMolecules
                    , m => m.getCodeName() == codeName
                    , false
                    , " GraphMoleculeList::Update()"
                    );
                if (null != found)
                {
                    found.update(concentration);
                }
                else
                //molecule is not displayed yet
                {
                    DisplayedMolecule created = new DisplayedMolecule(codeName, realName, concentration, DisplayedMolecule.DisplayType.MOLECULELIST);

                    //search if molecule should be displayed in a Device/molecule component
                    List <EquipedDisplayedDeviceWithMolecules> containers = _equipedDevices.FindAll(eddwm => eddwm.device.getFirstGeneProteinName() == codeName);
                    if (containers.Count != 0)
                    {
                        created.setDisplayType(DisplayedMolecule.DisplayType.DEVICEMOLECULELIST);
                        foreach (EquipedDisplayedDeviceWithMolecules container in containers)
                        {
                            container.addDisplayedMolecule(created);
                        }
                    }
                    else
                    {
                        _displayedListMoleculesCount++;
                    }
                    //anyway add it to molecule list
                    _displayedMolecules.AddLast(created);
                }
            }
        }

        removeUnusedMolecules();

        if (_displayedMolecules.Count != previousTotalCount ||
            previousListedCount != _displayedListMoleculesCount)
        {
            //rearrange devices
            positionDeviceAndMoleculeComponents();
        }

        string namesToDisplay  = "";
        string valuesToDisplay = "";

        foreach (DisplayedMolecule molecule in _displayedMolecules)
        {
            if (molecule.getDisplayType() == DisplayedMolecule.DisplayType.MOLECULELIST)
            {
                namesToDisplay  += molecule.getRealName() + ":\n";
                valuesToDisplay += molecule.getVal() + "\n";
            }
        }
        if (!string.IsNullOrEmpty(namesToDisplay))
        {
            namesToDisplay.Remove(namesToDisplay.Length - 1, 1);
            valuesToDisplay.Remove(valuesToDisplay.Length - 1, 1);
        }
        namesLabel.text  = namesToDisplay;
        valuesLabel.text = valuesToDisplay;

        /*
         * if(null != topLabels)
         * {
         * topLabelsShift = Vector3.up * topLabels.relativeSize.y * topLabels.transform.localScale.y;
         * namesLabel.transform.localPosition = topLabels.transform.localPosition + topLabelsShift;
         * }
         */

        setUnfoldingListBackgroundScale();
    }