/** * Set the stoichiometry for a specified Renderable object. * * @param renderable the Renderable object. * @param value the new stoichiometry. */ public void setStoichiometry(Renderable renderable, int value) { if (value <= 0) throw new IllegalArgumentException( "RenderableComplex.setStoichiometry(): value should be greater than 0."); Integer oldValue = (Integer) stoichiometries.get(renderable); if (oldValue != null && oldValue.intValue() == value) return; Renderable target = getTarget(renderable); stoichiometries.put(target, new Integer(value)); // Have to make sure renderable is in the components for (Iterator it = components.iterator(); it.hasNext(); ) { Renderable r = (Renderable) it.next(); if (r instanceof Shortcut) r = ((Shortcut) r).getTarget(); if (r == target) return; } addComponent(renderable); }