X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fext%2Fedu%2Fucsf%2Frbvi%2Fstrucviz2%2FStructureManager.java;h=b7ea4ad88b291db61088980242f1b70dd5dad8c0;hb=c4ba8c80684447ab6a6e81057d417015ca49a06a;hp=ec956d701ae719580627ac8ef827d21a6cdefcf4;hpb=274eb184c92307edde158510463c335a5179a724;p=jalview.git diff --git a/src/ext/edu/ucsf/rbvi/strucviz2/StructureManager.java b/src/ext/edu/ucsf/rbvi/strucviz2/StructureManager.java index ec956d7..b7ea4ad 100644 --- a/src/ext/edu/ucsf/rbvi/strucviz2/StructureManager.java +++ b/src/ext/edu/ucsf/rbvi/strucviz2/StructureManager.java @@ -1,12 +1,46 @@ +/* vim: set ts=2: */ +/** + * Copyright (c) 2006 The Regents of the University of California. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions, and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * 3. Redistributions must acknowledge that this software was + * originally developed by the UCSF Computer Graphics Laboratory + * under support by the NIH National Center for Research Resources, + * grant P41-RR01081. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ package ext.edu.ucsf.rbvi.strucviz2; +import jalview.bin.Cache; +import jalview.gui.Preferences; + import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Properties; @@ -22,19 +56,15 @@ import org.slf4j.LoggerFactory; public class StructureManager { - static final String[] defaultStructureKeys = - { "Structure", "pdb", "pdbFileName", "PDB ID", "structure", - "biopax.xref.PDB", "pdb_ids", "ModelName", "ModelNumber" }; + static final String[] defaultStructureKeys = { "Structure", "pdb", + "pdbFileName", "PDB ID", "structure", "biopax.xref.PDB", "pdb_ids", + "ModelName", "ModelNumber" }; - static final String[] defaultChemStructKeys = - { "Smiles", "smiles", "SMILES" }; + static final String[] defaultChemStructKeys = { "Smiles", "smiles", + "SMILES" }; - static final String[] defaultResidueKeys = - { "FunctionalResidues", "ResidueList", "Residues" }; - - private final String chimeraPropertyName = "chimera"; - - private final String chimeraPathPropertyKey = "LastChimeraPath"; + static final String[] defaultResidueKeys = { "FunctionalResidues", + "ResidueList", "Residues" }; public enum ModelType { @@ -67,7 +97,7 @@ public class StructureManager this.haveGUI = haveGUI; // Create the Chimera interface chimeraManager = new ChimeraManager(this); - chimSelectionList = new ArrayList(); + chimSelectionList = new ArrayList<>(); pathProps = new Properties(); } @@ -80,7 +110,7 @@ public class StructureManager ModelType type) { // new models - Map> newModels = new HashMap>(); + Map> newModels = new HashMap<>(); if (chimObjNames.size() > 0) { List names = chimObjNames.iterator().next(); @@ -91,8 +121,8 @@ public class StructureManager for (String chimObjName : names) { // get or open the corresponding models if they already exist - List currentModels = chimeraManager.getChimeraModels( - chimObjName, type); + List currentModels = chimeraManager + .getChimeraModels(chimObjName, type); if (currentModels.size() == 0) { // open and return models @@ -494,7 +524,9 @@ public class StructureManager // we do not care about the model anymore selSpec = selSpec.concat(nodeInfo.toSpec()); if (i < chimSelectionList.size() - 1) + { selSpec.concat("|"); + } } if (selSpec.length() > 0) { @@ -530,11 +562,11 @@ public class StructureManager // Get the corresponding "real" model if (chimeraManager.hasChimeraModel(modelNumber, subModelNumber)) { - ChimeraModel dataModel = chimeraManager.getChimeraModel( - modelNumber, subModelNumber); - if (dataModel.getResidueCount() == selectedModel - .getResidueCount() - || dataModel.getModelType() == StructureManager.ModelType.SMILES) + ChimeraModel dataModel = chimeraManager + .getChimeraModel(modelNumber, subModelNumber); + if (dataModel.getResidueCount() == selectedModel.getResidueCount() + || dataModel + .getModelType() == StructureManager.ModelType.SMILES) { // Select the entire model addChimSelection(dataModel); @@ -544,8 +576,8 @@ public class StructureManager { for (ChimeraChain selectedChain : selectedModel.getChains()) { - ChimeraChain dataChain = dataModel.getChain(selectedChain - .getChainId()); + ChimeraChain dataChain = dataModel + .getChain(selectedChain.getChainId()); if (selectedChain.getResidueCount() == dataChain .getResidueCount()) { @@ -665,7 +697,9 @@ public class StructureManager for (ChimeraStructuralObject cso : chimSelectionList) { if (cso != null) + { cso.setSelected(false); + } } chimSelectionList.clear(); } @@ -812,7 +846,7 @@ public class StructureManager // alDialog.dispose(); // } // System.out.println("launch align dialog"); - List chimObjectList = new ArrayList(); + List chimObjectList = new ArrayList<>(); for (ChimeraModel model : chimeraManager.getChimeraModels()) { if (useChains) @@ -853,7 +887,7 @@ public class StructureManager public List getAllChimeraResidueAttributes() { - List attributes = new ArrayList(); + List attributes = new ArrayList<>(); // attributes.addAll(rinManager.getResAttrs()); attributes.addAll(chimeraManager.getAttrList()); return attributes; @@ -862,49 +896,67 @@ public class StructureManager StructureSettings defaultSettings = null; // TODO: [Optional] Change priority of Chimera paths - public List getChimeraPaths() + public static List getChimeraPaths(boolean isChimeraX) { - List pathList = new ArrayList(); + List pathList = new ArrayList<>(); // if no network is available and the settings have been modified by the // user, check for a // path to chimera - if (defaultSettings != null) + // + // For Jalview, Preferences/Cache plays this role instead + // if (defaultSettings != null) + // { + // String defaultPath = defaultSettings.getChimeraPath(); + // if (defaultPath != null && !defaultPath.equals("")) + // { + // pathList.add(defaultPath); + // return pathList; + // } + // } + + /* + * Jalview addition: check if path set in user preferences. + */ + String userPath = Cache + .getDefault(isChimeraX ? Preferences.CHIMERAX_PATH + : Preferences.CHIMERA_PATH, null); + if (userPath != null) { - String defaultPath = defaultSettings.getChimeraPath(); - if (defaultPath != null && !defaultPath.equals("")) - { - pathList.add(defaultPath); - return pathList; - } + pathList.add(0, userPath); } - // if no network settings, check if the last chimera path is saved in the - // session - // String lastPath = CytoUtils.getDefaultChimeraPath(registrar, - // chimeraPropertyName, - // chimeraPathPropertyKey); - // if (lastPath != null && !lastPath.equals("")) { - // pathList.add(lastPath); - // return pathList; - // } + // FIXME get an updated StructureManager for code for ChimeraX paths + String chimera = isChimeraX ? "ChimeraX" : "chimera"; - // if no user settings and no last path, get default system's settings + // Add default installation paths String os = System.getProperty("os.name"); if (os.startsWith("Linux")) { - pathList.add("/usr/local/chimera/bin/chimera"); - pathList.add("/usr/local/bin/chimera"); - pathList.add("/usr/bin/chimera"); + pathList.add("/usr/local/chimera/bin/" + chimera); + pathList.add("/usr/local/bin/" + chimera); + pathList.add("/usr/bin/" + chimera); + pathList.add(System.getProperty("user.home") + "/opt/bin/" + chimera); } else if (os.startsWith("Windows")) { - pathList.add("\\Program Files\\Chimera\\bin\\chimera"); - pathList.add("C:\\Program Files\\Chimera\\bin\\chimera.exe"); + for (String root : new String[] { "\\Program Files", + "C:\\Program Files", "\\Program Files (x86)", + "C:\\Program Files (x86)" }) + { + for (String version : new String[] { "1.11", "1.11.1", "1.11.2", + "1.12", "1.12.1", "1.12.2", "1.13" }) + { + pathList.add(root + "\\Chimera " + version + "\\bin\\" + chimera); + pathList.add( + root + "\\Chimera " + version + "\\bin\\" + chimera + + ".exe"); + } + } } else if (os.startsWith("Mac")) { - pathList.add("/Applications/Chimera.app/Contents/MacOS/chimera"); + pathList.add("/Applications/Chimera.app/Contents/MacOS/" + chimera); } return pathList; }