use of cbit.vcell.client.desktop.biomodel.SelectionManager.ActiveView in project vcell by virtualcell.
the class BioModelEditorPathwayDiagramPanel method importIntoModel.
public void importIntoModel() {
if (bioModel == null) {
return;
}
String warningMessage = "";
String warningMessage2 = "";
int warningCount = 0;
int warningCount2 = 0;
String infoMessage = "";
ArrayList<BioPaxObject> importedBPObjects = new ArrayList<BioPaxObject>();
warningMessage = "The following pathway object(s) have been associated with object(s) in the physiology model:\n";
warningMessage2 = "The following transport reaction(s) will NOT be converted to the physiology model:\n";
warningCount = 0;
warningCount2 = 0;
infoMessage = "The following pathway object(s) have been coverted in the physiology model:\n\n";
boolean hasMembrane = false;
if (bioModel.getModel().getMembranes().size() > 0)
hasMembrane = true;
HashSet<BioPaxObject> selected = new HashSet<BioPaxObject>();
// convert group Object to regular biopaxObjects
for (BioPaxObject bpo : getSelectedBioPaxObjects()) {
if (bpo instanceof GroupObject) {
selected.addAll(((GroupObject) bpo).computeGroupedBioPaxObjects());
} else {
selected.add(bpo);
}
}
for (BioPaxObject bpo : selected) {
if (bpo instanceof Conversion) {
if (bpo instanceof Transport && !hasMembrane) {
warningCount2++;
if (((Conversion) bpo).getName().size() > 0)
warningMessage2 += "\nTransport: \'" + ((Conversion) bpo).getName().get(0) + "\'\n";
else
warningMessage2 += "\nTransport: \'" + ((Conversion) bpo).getIDShort() + "\'\n";
} else if (bioModel.getRelationshipModel().getRelationshipObjects(bpo).size() == 0) {
importedBPObjects.add(bpo);
} else {
warningCount++;
if (((Conversion) bpo).getName().size() > 0)
warningMessage += "\nReaction: \'" + ((Conversion) bpo).getName().get(0) + "\' =>\n";
else
warningMessage += "\nReaction: \'" + ((Conversion) bpo).getIDShort() + "\' =>\n";
for (RelationshipObject r : bioModel.getRelationshipModel().getRelationshipObjects(bpo)) {
warningMessage += "\t=> \'" + r.getBioModelEntityObject().getName() + "\'\n";
}
}
} else if (bpo instanceof PhysicalEntity) {
if (bioModel.getRelationshipModel().getRelationshipObjects(bpo).size() == 0) {
importedBPObjects.add(bpo);
} else {
warningCount++;
if (((PhysicalEntity) bpo).getName().size() > 0)
warningMessage += "\nSpecies: \'" + ((PhysicalEntity) bpo).getName().get(0) + "\' =>\n";
else
warningMessage += "\nSpecies: \'" + ((PhysicalEntity) bpo).getIDShort() + "\' =>\n";
for (RelationshipObject r : bioModel.getRelationshipModel().getRelationshipObjects(bpo)) {
warningMessage += "\t=> \'" + r.getBioModelEntityObject().getName() + "\'\n";
}
}
}
}
// create import panel
conversionPanel = new ConversionPanel();
conversionPanel.setBioModel(bioModel);
conversionPanel.setSelectionManager(getSelectionManager());
// show warning message
warningMessage2 += "\nNO membrane structures available in the physiology model.\n";
if (warningCount2 > 0) {
DialogUtils.showWarningDialog(conversionPanel, warningMessage2);
}
warningMessage += "\nThey will NOT be converted to the physiology model.\n";
if (warningCount > 0) {
DialogUtils.showWarningDialog(conversionPanel, warningMessage);
}
if (importedBPObjects.size() == 0) {
return;
}
// set the selected objects to be the validly imported biopaxObject set
conversionPanel.setBioPaxObjects(importedBPObjects);
int returnCode = DialogUtils.showComponentOKCancelDialog(this, conversionPanel, "Import into Physiology");
if (returnCode == JOptionPane.OK_OPTION) {
PathwayMapping pathwayMapping = new PathwayMapping();
try {
// function I:
// pass the table rows that contains user edited values to create Vcell object
pathwayMapping.createBioModelEntitiesFromBioPaxObjects(bioModel, conversionPanel.getTableRows(), conversionPanel.isAddSubunits());
for (BioPaxObject bpo : importedBPObjects) {
if (bpo instanceof Conversion) {
infoMessage += "Reaction: \t\'";
for (RelationshipObject r : bioModel.getRelationshipModel().getRelationshipObjects(bpo)) {
infoMessage += r.getBioModelEntityObject().getName() + "\'\n";
}
infoMessage += "\n";
} else if (bpo instanceof PhysicalEntity) {
infoMessage += "Species: \t\'";
for (RelationshipObject r : bioModel.getRelationshipModel().getRelationshipObjects(bpo)) {
infoMessage += r.getBioModelEntityObject().getName() + "\'\n";
}
infoMessage += "\n";
}
}
DialogUtils.showInfoDialog(this, infoMessage);
// jump the view to reaction diagram panel
if (selectionManager != null) {
selectionManager.setActiveView(new ActiveView(null, DocumentEditorTreeFolderClass.REACTION_DIAGRAM_NODE, ActiveViewID.reaction_diagram));
}
} catch (Exception e) {
e.printStackTrace(System.out);
DialogUtils.showErrorDialog(this, "Errors occur when converting pathway objects to VCell bioModel objects.\n" + e.getMessage());
}
}
}
use of cbit.vcell.client.desktop.biomodel.SelectionManager.ActiveView in project vcell by virtualcell.
the class BioModelEditorPathwayPanel method importPathway.
public void importPathway(boolean addComplexes, boolean addComponents, boolean addInteractions) {
ArrayList<BioPaxObject> selectedBioPaxObjects = new ArrayList<BioPaxObject>();
int[] rows = table.getSelectedRows();
if (rows == null || rows.length == 0) {
return;
}
for (int row : rows) {
BioPaxObject bioPaxObject = tableModel.getValueAt(row);
selectedBioPaxObjects.add(bioPaxObject);
}
PathwaySelectionExpander selectionExpander = new PathwaySelectionExpander();
PathwayModel rawPathwayModel = pathwayData.getPathwayModel();
if (addComplexes) {
selectionExpander.forPhysicalEntitiesAddComplexes(rawPathwayModel, selectedBioPaxObjects);
}
if (addComponents) {
selectionExpander.forComplexesAddComponents(rawPathwayModel, selectedBioPaxObjects);
}
if (addInteractions) {
selectionExpander.forPhysicalEntitiesAddInteractions(rawPathwayModel, selectedBioPaxObjects);
}
selectionExpander.forInteractionsAddControls(rawPathwayModel, selectedBioPaxObjects);
selectionExpander.forInteractionsAddParticipants(rawPathwayModel, selectedBioPaxObjects);
PathwayModel selectedPathwayModel = new PathwayModel();
HashSet<BioPaxObject> objectsToDelete = new HashSet<BioPaxObject>();
for (BioPaxObject candidateObject : selectedBioPaxObjects) {
// is the object in the current pathwayModel already?
BioPaxObject keeperObject = bioModel.getPathwayModel().find(candidateObject);
if (keeperObject == null) {
// not found in the current pathwayModel, add it
selectedPathwayModel.add(candidateObject);
} else {
// make a list with the objects we don't bring in because of duplication
objectsToDelete.add(candidateObject);
}
}
// we replace references to those objects within selectedPathwayModel with the real thing
for (BioPaxObject bpObject : selectedPathwayModel.getBiopaxObjects()) {
if (bpObject == null) {
System.out.println("PathwayModel: null BioPaxObject.");
continue;
}
for (BioPaxObject objectToDelete : objectsToDelete) {
BioPaxObject keeperObject = bioModel.getPathwayModel().find(objectToDelete);
// for now we only implemented this for InteractionParticipant entities of Conversions
bpObject.replace(keeperObject);
}
}
// we bring proteins, small molecules, etc that are components of a Complex
ArrayList<PhysicalEntity> addList = new ArrayList<>();
for (BioPaxObject bpo : selectedPathwayModel.getBiopaxObjects()) {
if (bpo instanceof Complex) {
Complex complex = (Complex) bpo;
addComplexComponents(complex, addList, 0);
}
}
for (PhysicalEntity pe : addList) {
if (selectedPathwayModel.find(pe) == null) {
selectedPathwayModel.add(pe);
}
}
bioModel.getPathwayModel().merge(selectedPathwayModel);
// jump the view to pathway diagram panel
if (selectionManager != null) {
selectionManager.followHyperlink(new ActiveView(null, DocumentEditorTreeFolderClass.PATHWAY_DIAGRAM_NODE, ActiveViewID.pathway_diagram), selectedPathwayModel.getBiopaxObjects().toArray());
}
}
use of cbit.vcell.client.desktop.biomodel.SelectionManager.ActiveView in project vcell by virtualcell.
the class BioModelParametersPanel method tabbedPaneSelectionChanged.
public void tabbedPaneSelectionChanged() {
int selectedIndex = tabbedPane.getSelectedIndex();
if (selectedIndex < 0) {
return;
}
ActiveView activeView = null;
if (selectedIndex == ParametersPanelTabID.parameters_functions.ordinal()) {
activeView = new ActiveView(null, DocumentEditorTreeFolderClass.BIOMODEL_PARAMETERS_NODE, ActiveViewID.parameters_functions);
} else if (selectedIndex == ParametersPanelTabID.predefined.ordinal()) {
activeView = new ActiveView(null, DocumentEditorTreeFolderClass.BIOMODEL_PARAMETERS_NODE, ActiveViewID.predefined_symbols);
}
if (activeView != null) {
setActiveView(activeView);
}
if (selectedIndex == ParametersPanelTabID.parameters_functions.ordinal()) {
addNewButton.setVisible(true);
deleteButton.setVisible(true);
} else {
addNewButton.setVisible(false);
deleteButton.setVisible(false);
}
if (selectedIndex == ParametersPanelTabID.modelUnitSystem.ordinal()) {
changeUnitsButton.setVisible(true);
} else {
changeUnitsButton.setVisible(false);
}
}
use of cbit.vcell.client.desktop.biomodel.SelectionManager.ActiveView in project vcell by virtualcell.
the class DocumentEditor method treeSelectionChanged0.
private void treeSelectionChanged0(TreeSelectionEvent treeSelectionEvent) {
try {
treeSelectionChanged();
Object selectedNode = documentEditorTree.getLastSelectedPathComponent();
if (selectedNode != null && (selectedNode instanceof BioModelNode)) {
Object selectedObject = ((BioModelNode) selectedNode).getUserObject();
DocumentEditorTreeFolderClass folderClass = null;
if (selectedObject instanceof DocumentEditorTreeFolderNode) {
folderClass = ((DocumentEditorTreeFolderNode) selectedObject).getFolderClass();
}
ActiveView activeView = new ActiveView(getSelectedSimulationContext(), folderClass, null);
selectionManager.setActiveView(activeView);
if (/*selectedObject instanceof SimulationContext
|| */
selectedObject instanceof BioModel || selectedObject instanceof MathModel) {
selectionManager.setSelectedObjects(new Object[] { selectedObject });
}
}
} catch (Exception ex) {
ex.printStackTrace(System.out);
}
}
use of cbit.vcell.client.desktop.biomodel.SelectionManager.ActiveView in project vcell by virtualcell.
the class ReactionRuleKineticsPropertiesPanel method listLinkedPathwayObjects.
private String listLinkedPathwayObjects() {
if (reactionRule == null) {
return "no selected rule";
}
if (bioModel == null || bioModel.getModel() == null) {
return "no biomodel";
}
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
String linkedPOlist = "";
for (RelationshipObject relObject : bioModel.getRelationshipModel().getRelationshipObjects(reactionRule)) {
if (relObject == null) {
continue;
}
final BioPaxObject bpObject = relObject.getBioPaxObject();
if (bpObject == null) {
continue;
}
if (bpObject instanceof Entity) {
String name = new String();
if (((Entity) bpObject).getName().isEmpty()) {
name = ((Entity) bpObject).getID();
} else {
name = ((Entity) bpObject).getName().get(0);
}
if (name.contains("#")) {
name = name.substring(name.indexOf("#") + 1);
}
JLabel label = new JLabel("<html><u>" + name + "</u></html>");
label.setForeground(Color.blue);
label.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
selectionManager.followHyperlink(new ActiveView(null, DocumentEditorTreeFolderClass.PATHWAY_DIAGRAM_NODE, ActiveViewID.pathway_diagram), new Object[] { bpObject });
}
}
});
panel.add(label);
}
}
Dimension dim = new Dimension(200, 20);
panel.setMinimumSize(dim);
panel.setPreferredSize(dim);
linkedPOScrollPane.setViewportView(panel);
return linkedPOlist;
}
Aggregations