Search in sources :

Example 6 with BondType

use of org.vcell.model.rbm.MolecularComponentPattern.BondType in project vcell by virtualcell.

the class SpeciesPropertiesTreeModel method valueForPathChanged.

@Override
public void valueForPathChanged(TreePath path, Object newValue) {
    Object obj = path.getLastPathComponent();
    if (obj == null || !(obj instanceof BioModelNode)) {
        return;
    }
    BioModelNode selectedNode = (BioModelNode) obj;
    BioModelNode parentNode = (BioModelNode) selectedNode.getParent();
    Object userObject = selectedNode.getUserObject();
    try {
        if (newValue instanceof String) {
            String inputString = (String) newValue;
            if (inputString == null || inputString.length() == 0) {
                return;
            }
        // if (userObject instanceof SeedSpecies) {
        // ((SeedSpecies) userObject).setSpeciesPattern(inputString);
        // }
        } else if (newValue instanceof MolecularComponentPattern) {
            MolecularComponentPattern newMcp = (MolecularComponentPattern) newValue;
            Object parentObject = parentNode == null ? null : parentNode.getUserObject();
            if (parentObject instanceof MolecularTypePattern) {
                MolecularTypePattern mtp = (MolecularTypePattern) parentObject;
                MolecularComponent mc = newMcp.getMolecularComponent();
                MolecularComponentPattern mcp = mtp.getMolecularComponentPattern(mc);
                // TODO: what's correct here ?
                mcp.setComponentStatePattern(newMcp.getComponentStatePattern());
                BondType bp = mcp.getBondType();
                BondType newbp = newMcp.getBondType();
                mcp.setBondType(newbp);
                // specified -> specified
                if (bp == BondType.Specified && newbp == BondType.Specified) {
                // bond didn't change
                } else if (bp == BondType.Specified && newbp != BondType.Specified) {
                    // specified -> non specified
                    // change the partner to possible
                    mcp.getBond().molecularComponentPattern.setBondType(BondType.Possible);
                    mcp.setBond(null);
                } else if (bp != BondType.Specified && newbp == BondType.Specified) {
                    // non specified -> specified
                    int newBondId = newMcp.getBondId();
                    mcp.setBondId(newBondId);
                    mcp.setBond(newMcp.getBond());
                    mcp.getBond().molecularComponentPattern.setBondId(newBondId);
                    speciesContext.getSpeciesPattern().resolveBonds();
                } else {
                }
            }
        }
    } catch (Exception ex) {
        DialogUtils.showErrorDialog(ownerTree, ex.getMessage());
    }
}
Also used : BondType(org.vcell.model.rbm.MolecularComponentPattern.BondType) MolecularComponentPattern(org.vcell.model.rbm.MolecularComponentPattern) MolecularComponent(org.vcell.model.rbm.MolecularComponent) BioModelNode(cbit.vcell.desktop.BioModelNode) MolecularTypePattern(org.vcell.model.rbm.MolecularTypePattern)

Example 7 with BondType

use of org.vcell.model.rbm.MolecularComponentPattern.BondType in project vcell by virtualcell.

the class SpeciesPattern method removeMolecularTypePattern.

public void removeMolecularTypePattern(MolecularTypePattern molecularTypePattern) {
    List<MolecularTypePattern> newValue = new ArrayList<MolecularTypePattern>(molecularTypePatterns);
    newValue.remove(molecularTypePattern);
    for (MolecularComponentPattern mcp : molecularTypePattern.getComponentPatternList()) {
        BondType btBefore = mcp.getBondType();
        if (btBefore == BondType.Specified) {
            // specified -> not specified
            // change the partner to possible
            mcp.getBond().molecularComponentPattern.setBondType(BondType.Possible);
            mcp.getBond().molecularComponentPattern.setBond(null);
        }
        mcp.setBondType(BondType.None);
        mcp.setBond(null);
    }
    setMolecularTypePatterns(newValue);
}
Also used : BondType(org.vcell.model.rbm.MolecularComponentPattern.BondType) ArrayList(java.util.ArrayList)

Example 8 with BondType

use of org.vcell.model.rbm.MolecularComponentPattern.BondType in project vcell by virtualcell.

the class Xmlproducer method getXML.

private Element getXML(MolecularComponentPattern param) {
    Element e = new Element(XMLTags.RbmMolecularComponentPatternTag);
    // e.setAttribute(XMLTags.NameAttrTag, mangle(param.getId()));
    e.setAttribute(XMLTags.RbmMolecularComponentTag, mangle(param.getMolecularComponent().getName()));
    ComponentStatePattern cs = param.getComponentStatePattern();
    if (cs != null) {
        if (cs.isAny()) {
            e.setAttribute(XMLTags.RbmMolecularTypeAnyTag, String.valueOf(cs.isAny()));
        } else {
            if (cs.getComponentStateDefinition() != null) {
                e.setAttribute(XMLTags.RbmMolecularComponentStatePatternTag, mangle(cs.getComponentStateDefinition().getName()));
            } else {
                System.err.println(ComponentStateDefinition.typeName + " is missing!");
            }
        }
    }
    Bond b = param.getBond();
    if (b != null) {
        Element e1 = new Element(XMLTags.RbmBondTag);
        String test = mangle(b.molecularTypePattern.getMolecularType().getName());
        e1.setAttribute(XMLTags.RbmMolecularTypePatternTag, test);
        e1.setAttribute(XMLTags.RbmMolecularComponentPatternTag, mangle(b.molecularComponentPattern.getMolecularComponent().getName()));
        e.addContent(e1);
    }
    BondType bt = param.getBondType();
    if (bt == null) {
        return e;
    }
    if (bt.equals(BondType.Specified)) {
        String s = Integer.toString(param.getBondId());
        e.setAttribute(XMLTags.RbmBondTypeAttrTag, s);
    } else {
        String s = bt.symbol;
        e.setAttribute(XMLTags.RbmBondTypeAttrTag, s);
    }
    return e;
}
Also used : BondType(org.vcell.model.rbm.MolecularComponentPattern.BondType) ParticleBondType(cbit.vcell.math.ParticleMolecularComponentPattern.ParticleBondType) Element(org.jdom.Element) ComponentStatePattern(org.vcell.model.rbm.ComponentStatePattern) Bond(org.vcell.model.rbm.SpeciesPattern.Bond)

Example 9 with BondType

use of org.vcell.model.rbm.MolecularComponentPattern.BondType in project vcell by virtualcell.

the class RbmTreeCellRenderer method toHtmlWork.

private static final String toHtmlWork(BondLocal bl, boolean bSelected) {
    MolecularComponentPattern mcp = bl.getMolecularComponentPattern();
    BondType defaultType = BondType.Possible;
    String bondText = " Bond(<b>" + defaultType.symbol + "</b>): " + "<b>" + BondType.Possible.name() + "</b>";
    if (mcp != null) {
        BondType bondType = mcp.getBondType();
        if (bondType == BondType.Specified) {
            Bond bond = mcp.getBond();
            if (bond == null) {
                bondText = "";
            } else {
                int id = mcp.getBondId();
                String colorTextStart = bSelected ? "" : "<font color=" + "\"rgb(" + GraphConstants.bondHtmlColors[id].getRed() + "," + GraphConstants.bondHtmlColors[id].getGreen() + "," + GraphConstants.bondHtmlColors[id].getBlue() + ")\">";
                String colorTextEnd = bSelected ? "" : "</font>";
                // <sub>&nbsp;</sub>
                bondText = colorTextStart + "<b>" + mcp.getBondId() + "</b>" + colorTextEnd;
                bondText = " Bound(" + bondText + ") to: " + colorTextStart + toHtml(bond) + colorTextEnd;
            }
        } else {
            bondText = " Bond(<b>" + bondType.symbol + "</b>): " + "<b>" + bondType.name() + "</b>";
        }
    }
    return bondText;
}
Also used : BondType(org.vcell.model.rbm.MolecularComponentPattern.BondType) MolecularComponentPattern(org.vcell.model.rbm.MolecularComponentPattern) Bond(org.vcell.model.rbm.SpeciesPattern.Bond)

Example 10 with BondType

use of org.vcell.model.rbm.MolecularComponentPattern.BondType in project vcell by virtualcell.

the class ReactionRuleEditorPropertiesPanel method manageComponentPatternFromShape.

public void manageComponentPatternFromShape(final Object selectedObject, PointLocationInShapeContext locationContext, final ReactionRulePropertiesTreeModel treeModel, ShowWhat showWhat, boolean bIsReactant) {
    popupFromShapeMenu.removeAll();
    final MolecularComponentPattern mcp = (MolecularComponentPattern) selectedObject;
    final MolecularComponent mc = mcp.getMolecularComponent();
    boolean anyStateProhibited = false;
    boolean explicitStateProhibited = false;
    boolean existBondProhibited = false;
    boolean noneBondProhibited = false;
    boolean possibleBondProhibited = false;
    boolean specifiedBondProhibited = false;
    if (!bIsReactant) {
        // product has restrictions for states and bonds, depending on reactant
        BondType reactantComponentBondType = reactionRule.getReactantComponentBondType(mcp);
        if (reactantComponentBondType != null && reactantComponentBondType == BondType.Exists) {
            // has external		+
            // existBondProhibited = true;
            noneBondProhibited = true;
            possibleBondProhibited = true;
            specifiedBondProhibited = true;
        } else if (reactantComponentBondType != null && reactantComponentBondType == BondType.None) {
            // is unbound		-
            existBondProhibited = true;
            // noneBondProhibited = true;
            possibleBondProhibited = true;
        // specifiedBondProhibited = true;
        } else if (reactantComponentBondType != null && reactantComponentBondType == BondType.Possible) {
            // may be bound		?
            existBondProhibited = true;
            noneBondProhibited = true;
            // possibleBondProhibited = true;
            specifiedBondProhibited = true;
        } else if (reactantComponentBondType != null && reactantComponentBondType == BondType.Specified) {
            existBondProhibited = true;
            // noneBondProhibited = true;
            possibleBondProhibited = true;
        // specifiedBondProhibited = true;
        }
        // if it's null nothing is prohibited
        ComponentStatePattern reactantComponentStatePattern = reactionRule.getReactantComponentState(mcp);
        if (reactantComponentStatePattern != null && reactantComponentStatePattern.isAny()) {
            explicitStateProhibited = true;
        } else if (reactantComponentStatePattern != null && !reactantComponentStatePattern.isAny()) {
            anyStateProhibited = true;
        }
    // if reactantComponentStatePattern is null nothing is prohibited, we may not have a matching reactant for this product
    }
    // ------------------------------------------------------------------- State
    if (showWhat == ShowWhat.ShowState && mc.getComponentStateDefinitions().size() != 0) {
        String prefix = "State:  ";
        String csdCurrentName = "";
        final Map<String, String> itemMap = new LinkedHashMap<String, String>();
        if (mcp.getComponentStatePattern() == null || mcp.getComponentStatePattern().isAny()) {
            csdCurrentName = "<html>" + prefix + "<b>" + ComponentStatePattern.strAny + "</b></html>";
        } else {
            csdCurrentName = "<html>" + prefix + ComponentStatePattern.strAny + "</html>";
        }
        itemMap.put(csdCurrentName, ComponentStatePattern.strAny);
        for (final ComponentStateDefinition csd : mc.getComponentStateDefinitions()) {
            csdCurrentName = "";
            if (mcp.getComponentStatePattern() != null && !mcp.getComponentStatePattern().isAny()) {
                ComponentStateDefinition csdCurrent = mcp.getComponentStatePattern().getComponentStateDefinition();
                csdCurrentName = csdCurrent.getName();
            }
            String name = csd.getName();
            if (name.equals(csdCurrentName)) {
                // currently selected menu item is shown in bold
                name = "<html>" + prefix + "<b>" + name + "</b></html>";
            } else {
                name = "<html>" + prefix + name + "</html>";
            }
            itemMap.put(name, csd.getName());
        }
        for (String key : itemMap.keySet()) {
            JMenuItem menuItem = new JMenuItem(key);
            if (!bIsReactant) {
                String name = itemMap.get(key);
                if (name.equals(ComponentStatePattern.strAny) && anyStateProhibited) {
                    menuItem.setEnabled(false);
                } else if (!name.equals(ComponentStatePattern.strAny) && explicitStateProhibited) {
                    menuItem.setEnabled(false);
                }
            }
            popupFromShapeMenu.add(menuItem);
            menuItem.setIcon(VCellIcons.rbmComponentStateIcon);
            menuItem.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {
                    String key = e.getActionCommand();
                    String name = itemMap.get(key);
                    ComponentStatePattern csp = new ComponentStatePattern();
                    if (!name.equals(ComponentStatePattern.strAny)) {
                        ComponentStateDefinition csd = mcp.getMolecularComponent().getComponentStateDefinition(name);
                        if (csd == null) {
                            throw new RuntimeException("Missing ComponentStateDefinition " + name + " for Component " + mcp.getMolecularComponent().getName());
                        }
                        csp = new ComponentStatePattern(csd);
                    }
                    mcp.setComponentStatePattern(csp);
                    if (bIsReactant) {
                        reflectStateToProduct(mcp, csp);
                        productTreeModel.populateTree();
                    }
                    treeModel.populateTree();
                    shapePanel.repaint();
                }
            });
        }
    }
    if (showWhat == ShowWhat.ShowState) {
        return;
    }
    // ------------------------------------------------------------------------------------------- Bonds
    final MolecularTypePattern mtp = locationContext.getMolecularTypePattern();
    final SpeciesPattern sp = locationContext.getSpeciesPattern();
    JMenu editBondMenu = new JMenu();
    final String specifiedString = mcp.getBondType() == BondType.Specified ? "<html><b>" + "Site bond specified" + "</b></html>" : "<html>" + "Site bond specified" + "</html>";
    editBondMenu.setText(specifiedString);
    editBondMenu.setToolTipText("Specified");
    editBondMenu.removeAll();
    editBondMenu.setEnabled(!specifiedBondProhibited);
    final Map<String, Bond> itemMap = new LinkedHashMap<String, Bond>();
    String noneString = mcp.getBondType() == BondType.None ? "<html><b>" + "Site is unbound" + "</b></html>" : "<html>" + "Site is unbound" + "</html>";
    // Site is bound
    String existsString = mcp.getBondType() == BondType.Exists ? "<html><b>" + "Site has external bond" + "</b></html>" : "<html>" + "Site has external bond" + "</html>";
    String possibleString = mcp.getBondType() == BondType.Possible ? "<html><b>" + "Site may be bound" + "</b></html>" : "<html>" + "Site may be bound" + "</html>";
    itemMap.put(noneString, null);
    itemMap.put(existsString, null);
    itemMap.put(possibleString, null);
    if (mtp != null && sp != null && !specifiedBondProhibited) {
        List<Bond> bondPartnerChoices = sp.getAllBondPartnerChoices(mtp, mc);
        for (Bond b : bondPartnerChoices) {
            // if(b.equals(mcp.getBond())) {
            // continue;	// if the mcp has a bond already we don't offer it
            // }
            int index = 0;
            if (mcp.getBondType() == BondType.Specified) {
                index = mcp.getBondId();
            } else {
                index = sp.nextBondId();
            }
            itemMap.put(b.toHtmlStringLong(sp, mtp, mc, index), b);
        // itemMap.put(b.toHtmlStringLong(sp, index), b);
        }
    }
    int index = 0;
    Graphics gc = shapePanel.getGraphics();
    for (String name : itemMap.keySet()) {
        JMenuItem menuItem = new JMenuItem(name);
        if (!bIsReactant) {
            if (name.equals(noneString) && noneBondProhibited) {
                menuItem.setEnabled(false);
            } else if (name.equals(existsString) && existBondProhibited) {
                menuItem.setEnabled(false);
            } else if (name.equals(possibleString) && possibleBondProhibited) {
                menuItem.setEnabled(false);
            } else if (!name.equals(noneString) && !name.equals(existsString) && !name.equals(possibleString) && specifiedBondProhibited) {
                menuItem.setEnabled(false);
            }
        }
        if (index == 0) {
            menuItem.setIcon(VCellIcons.rbmBondNoneIcon);
            menuItem.setToolTipText("None");
            popupFromShapeMenu.add(menuItem);
        } else if (index == 1) {
            menuItem.setIcon(VCellIcons.rbmBondExistsIcon);
            menuItem.setToolTipText("Exists");
            popupFromShapeMenu.add(menuItem);
        } else if (index == 2) {
            menuItem.setIcon(VCellIcons.rbmBondPossibleIcon);
            menuItem.setToolTipText("Possible");
            popupFromShapeMenu.add(menuItem);
        } else if (index > 2) {
            // we skip None, Exists, Possible
            Bond b = itemMap.get(name);
            // clone of the sp, with only the bond of interest
            SpeciesPattern spBond = new SpeciesPattern(bioModel.getModel(), sp);
            spBond.resetBonds();
            spBond.resetStates();
            MolecularTypePattern mtpFrom = spBond.getMolecularTypePattern(mtp.getMolecularType().getName(), mtp.getIndex());
            MolecularComponentPattern mcpFrom = mtpFrom.getMolecularComponentPattern(mc);
            MolecularTypePattern mtpTo = spBond.getMolecularTypePattern(b.molecularTypePattern.getMolecularType().getName(), b.molecularTypePattern.getIndex());
            MolecularComponentPattern mcpTo = mtpTo.getMolecularComponentPattern(b.molecularComponentPattern.getMolecularComponent());
            spBond.setBond(mtpTo, mcpTo, mtpFrom, mcpFrom);
            Icon icon = new SpeciesPatternSmallShape(3, 4, spBond, gc, reactionRule, false, issueManager);
            ((SpeciesPatternSmallShape) icon).setDisplayRequirements(DisplayRequirements.highlightBonds);
            menuItem.setIcon(icon);
            editBondMenu.add(menuItem);
        }
        menuItem.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                String name = e.getActionCommand();
                BondType btBefore = mcp.getBondType();
                if (name.equals(noneString)) {
                    if (btBefore == BondType.Specified) {
                        // specified -> not specified
                        // change the partner to possible
                        mcp.getBond().molecularComponentPattern.setBondType(BondType.Possible);
                        mcp.getBond().molecularComponentPattern.setBond(null);
                    }
                    mcp.setBondType(BondType.None);
                    mcp.setBond(null);
                } else if (name.equals(existsString)) {
                    if (btBefore == BondType.Specified) {
                        // specified -> exists
                        // change the partner to possible
                        mcp.getBond().molecularComponentPattern.setBondType(BondType.Possible);
                        mcp.getBond().molecularComponentPattern.setBond(null);
                    }
                    mcp.setBondType(BondType.Exists);
                    mcp.setBond(null);
                } else if (name.equals(possibleString)) {
                    if (btBefore == BondType.Specified) {
                        // specified -> possible
                        // change the partner to possible
                        mcp.getBond().molecularComponentPattern.setBondType(BondType.Possible);
                        mcp.getBond().molecularComponentPattern.setBond(null);
                    }
                    mcp.setBondType(BondType.Possible);
                    mcp.setBond(null);
                } else {
                    if (btBefore != BondType.Specified) {
                        // if we go from a non-specified to a specified we need to find the next available
                        // bond id, so that we can choose the color for displaying the bond
                        // a bad bond id, like -1, will crash badly when trying to choose the color
                        int bondId = sp.nextBondId();
                        mcp.setBondId(bondId);
                    } else {
                        // specified -> specified
                        // change the old partner to possible, continue using the bond id
                        mcp.getBond().molecularComponentPattern.setBondType(BondType.Possible);
                        mcp.getBond().molecularComponentPattern.setBond(null);
                    }
                    mcp.setBondType(BondType.Specified);
                    Bond b = itemMap.get(name);
                    mcp.setBond(b);
                    mcp.getBond().molecularComponentPattern.setBondId(mcp.getBondId());
                    sp.resolveBonds();
                }
                // when the tree will be gone
                if (bIsReactant) {
                    reflectBondToProduct(mcp);
                    productTreeModel.populateTree();
                }
                treeModel.populateTree();
                shapePanel.repaint();
            }
        });
        index++;
    }
    popupFromShapeMenu.add(editBondMenu);
}
Also used : BondType(org.vcell.model.rbm.MolecularComponentPattern.BondType) MolecularComponentPattern(org.vcell.model.rbm.MolecularComponentPattern) SpeciesPatternSmallShape(cbit.vcell.graph.SpeciesPatternSmallShape) ActionEvent(java.awt.event.ActionEvent) ComponentStatePattern(org.vcell.model.rbm.ComponentStatePattern) SpeciesPattern(org.vcell.model.rbm.SpeciesPattern) Point(java.awt.Point) LinkedHashMap(java.util.LinkedHashMap) ComponentStateDefinition(org.vcell.model.rbm.ComponentStateDefinition) Graphics(java.awt.Graphics) ActionListener(java.awt.event.ActionListener) MolecularComponent(org.vcell.model.rbm.MolecularComponent) Icon(javax.swing.Icon) ZoomShapeIcon(cbit.vcell.graph.gui.ZoomShapeIcon) JMenuItem(javax.swing.JMenuItem) MolecularTypePattern(org.vcell.model.rbm.MolecularTypePattern) Bond(org.vcell.model.rbm.SpeciesPattern.Bond) JMenu(javax.swing.JMenu)

Aggregations

BondType (org.vcell.model.rbm.MolecularComponentPattern.BondType)11 MolecularComponentPattern (org.vcell.model.rbm.MolecularComponentPattern)9 MolecularComponent (org.vcell.model.rbm.MolecularComponent)7 Bond (org.vcell.model.rbm.SpeciesPattern.Bond)7 MolecularTypePattern (org.vcell.model.rbm.MolecularTypePattern)6 ComponentStatePattern (org.vcell.model.rbm.ComponentStatePattern)5 ComponentStateDefinition (org.vcell.model.rbm.ComponentStateDefinition)4 SpeciesPattern (org.vcell.model.rbm.SpeciesPattern)4 BioModelNode (cbit.vcell.desktop.BioModelNode)3 SpeciesPatternSmallShape (cbit.vcell.graph.SpeciesPatternSmallShape)3 ZoomShapeIcon (cbit.vcell.graph.gui.ZoomShapeIcon)3 Graphics (java.awt.Graphics)3 Point (java.awt.Point)3 ActionEvent (java.awt.event.ActionEvent)3 ActionListener (java.awt.event.ActionListener)3 LinkedHashMap (java.util.LinkedHashMap)3 Icon (javax.swing.Icon)3 JMenu (javax.swing.JMenu)3 JMenuItem (javax.swing.JMenuItem)3 ParticleBondType (cbit.vcell.math.ParticleMolecularComponentPattern.ParticleBondType)2