X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2FMCview%2FAppletPDBCanvas.java;h=211cff0e27a7a817e0a28324b463a3d35bc3d7e9;hb=3ef44bef1f825d26977dedd1608469712a87fe15;hp=fa33c6c678731c0fff9a9d2588d7ed5fc3b92b53;hpb=2de8acfae59aced665e4c37ad0f7dcc2ed68818e;p=jalview.git diff --git a/src/MCview/AppletPDBCanvas.java b/src/MCview/AppletPDBCanvas.java old mode 100755 new mode 100644 index fa33c6c..211cff0 --- a/src/MCview/AppletPDBCanvas.java +++ b/src/MCview/AppletPDBCanvas.java @@ -1,35 +1,53 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Development Version 2.4.1) - * Copyright (C) 2009 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. + * This file is part of Jalview. * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * Jalview is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Jalview is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. */ package MCview; -import java.io.*; -import java.util.*; - +import jalview.analysis.AlignSeq; +import jalview.appletgui.AlignmentPanel; +import jalview.appletgui.FeatureRenderer; +import jalview.appletgui.SequenceRenderer; +import jalview.datamodel.PDBEntry; +import jalview.datamodel.SequenceI; +import jalview.structure.AtomSpec; +import jalview.structure.StructureListener; +import jalview.structure.StructureMapping; +import jalview.structure.StructureSelectionManager; +import jalview.util.MessageManager; + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Event; +import java.awt.Font; +import java.awt.Graphics; +import java.awt.Image; // JBPNote TODO: This class is quite noisy - needs proper log.info/log.debug -import java.awt.*; -import java.awt.event.*; - -import jalview.analysis.*; -import jalview.datamodel.*; - -import jalview.appletgui.*; -import jalview.structure.*; +import java.awt.Panel; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.awt.event.MouseMotionListener; +import java.io.PrintStream; +import java.util.List; +import java.util.Vector; public class AppletPDBCanvas extends Panel implements MouseListener, MouseMotionListener, StructureListener @@ -133,14 +151,17 @@ public class AppletPDBCanvas extends Panel implements MouseListener, this.pdbentry = pdbentry; this.sequence = seq; - ssm = StructureSelectionManager.getStructureSelectionManager(); + ssm = StructureSelectionManager + .getStructureSelectionManager(ap.av.applet); try { pdb = ssm.setMapping(seq, chains, pdbentry.getFile(), protocol); if (protocol.equals(jalview.io.AppletFormatAdapter.PASTE)) + { pdbentry.setFile("INLINE" + pdb.id); + } } catch (Exception ex) { @@ -168,17 +189,20 @@ public class AppletPDBCanvas extends Panel implements MouseListener, { mappingDetails.append("\n\nPDB Sequence is :\nSequence = " - + ((PDBChain) pdb.chains.elementAt(i)).sequence + + pdb.chains.elementAt(i).sequence .getSequenceAsString()); mappingDetails.append("\nNo of residues = " - + ((PDBChain) pdb.chains.elementAt(i)).residues.size() + + pdb.chains.elementAt(i).residues.size() + "\n\n"); // Now lets compare the sequences to get // the start and end points. // Align the sequence to the pdb - AlignSeq as = new AlignSeq(sequence, ((PDBChain) pdb.chains - .elementAt(i)).sequence, "pep"); + // TODO: DNa/Pep switch + AlignSeq as = new AlignSeq(sequence, + pdb.chains.elementAt(i).sequence, + pdb.chains.elementAt(i).isNa ? AlignSeq.DNA + : AlignSeq.PEP); as.calcScoreMatrix(); as.traceAlignment(); PrintStream ps = new PrintStream(System.out) @@ -211,7 +235,7 @@ public class AppletPDBCanvas extends Panel implements MouseListener, mappingDetails.append("\nSEQ start/end " + seqstart + " " + seqend); } - mainchain = (PDBChain) pdb.chains.elementAt(maxchain); + mainchain = pdb.chains.elementAt(maxchain); mainchain.pdbstart = pdbstart; mainchain.pdbend = pdbend; @@ -270,9 +294,9 @@ public class AppletPDBCanvas extends Panel implements MouseListener, for (int ii = 0; ii < pdb.chains.size(); ii++) { - if (((PDBChain) pdb.chains.elementAt(ii)).isVisible) + if (pdb.chains.elementAt(ii).isVisible) { - Vector tmp = ((PDBChain) pdb.chains.elementAt(ii)).bonds; + Vector tmp = pdb.chains.elementAt(ii).bonds; for (int i = 0; i < tmp.size(); i++) { @@ -301,9 +325,9 @@ public class AppletPDBCanvas extends Panel implements MouseListener, for (int ii = 0; ii < pdb.chains.size(); ii++) { - if (((PDBChain) pdb.chains.elementAt(ii)).isVisible) + if (pdb.chains.elementAt(ii).isVisible) { - Vector bonds = ((PDBChain) pdb.chains.elementAt(ii)).bonds; + Vector bonds = pdb.chains.elementAt(ii).bonds; for (int i = 0; i < bonds.size(); i++) { @@ -372,9 +396,9 @@ public class AppletPDBCanvas extends Panel implements MouseListener, } } - width[0] = (float) Math.abs(max[0] - min[0]); - width[1] = (float) Math.abs(max[1] - min[1]); - width[2] = (float) Math.abs(max[2] - min[2]); + width[0] = Math.abs(max[0] - min[0]); + width[1] = Math.abs(max[1] - min[1]); + width[2] = Math.abs(max[2] - min[2]); maxwidth = width[0]; @@ -431,9 +455,9 @@ public class AppletPDBCanvas extends Panel implements MouseListener, // Find centre coordinate for (int ii = 0; ii < pdb.chains.size(); ii++) { - if (((PDBChain) pdb.chains.elementAt(ii)).isVisible) + if (pdb.chains.elementAt(ii).isVisible) { - Vector bonds = ((PDBChain) pdb.chains.elementAt(ii)).bonds; + Vector bonds = pdb.chains.elementAt(ii).bonds; bsize += bonds.size(); @@ -465,7 +489,9 @@ public class AppletPDBCanvas extends Panel implements MouseListener, g.fillRect(0, 0, getSize().width, getSize().height); g.setColor(Color.black); g.setFont(new Font("Verdana", Font.BOLD, 14)); - g.drawString("Error loading PDB data!!", 50, getSize().height / 2); + g.drawString( + MessageManager.getString("label.error_loading_pdb_data"), 50, + getSize().height / 2); return; } @@ -473,7 +499,8 @@ public class AppletPDBCanvas extends Panel implements MouseListener, { g.setColor(Color.black); g.setFont(new Font("Verdana", Font.BOLD, 14)); - g.drawString("Fetching PDB data...", 50, getSize().height / 2); + g.drawString(MessageManager.getString("label.fetching_pdb_data"), 50, + getSize().height / 2); return; } @@ -540,7 +567,7 @@ public class AppletPDBCanvas extends Panel implements MouseListener, StructureMapping[] mapping = ssm.getMapping(pdbentry.getFile()); boolean showFeatures = false; - if (ap.av.getShowSequenceFeatures()) + if (ap.av.isShowSequenceFeatures()) { if (fr == null) { @@ -557,7 +584,7 @@ public class AppletPDBCanvas extends Panel implements MouseListener, { for (int ii = 0; ii < pdb.chains.size(); ii++) { - chain = (PDBChain) pdb.chains.elementAt(ii); + chain = pdb.chains.elementAt(ii); for (int i = 0; i < chain.bonds.size(); i++) { @@ -769,7 +796,7 @@ public class AppletPDBCanvas extends Panel implements MouseListener, repaint(); if (foundchain != -1) { - PDBChain chain = (PDBChain) pdb.chains.elementAt(foundchain); + PDBChain chain = pdb.chains.elementAt(foundchain); if (chain == mainchain) { if (fatom.alignmentMapping != -1) @@ -815,7 +842,7 @@ public class AppletPDBCanvas extends Panel implements MouseListener, PDBChain chain = null; if (foundchain != -1) { - chain = (PDBChain) pdb.chains.elementAt(foundchain); + chain = pdb.chains.elementAt(foundchain); if (chain == mainchain) { mouseOverStructure(fatom.resNumber, chain.id); @@ -865,18 +892,18 @@ public class AppletPDBCanvas extends Panel implements MouseListener, if ((evt.getModifiers() & Event.META_MASK) != 0) { - objmat.rotatez((float) ((mx - omx))); + objmat.rotatez(((mx - omx))); } else { - objmat.rotatex((float) ((omy - my))); - objmat.rotatey((float) ((omx - mx))); + objmat.rotatex(((omy - my))); + objmat.rotatey(((omx - mx))); } // Alter the bonds for (int ii = 0; ii < pdb.chains.size(); ii++) { - Vector bonds = ((PDBChain) pdb.chains.elementAt(ii)).bonds; + Vector bonds = pdb.chains.elementAt(ii).bonds; for (int i = 0; i < bonds.size(); i++) { @@ -917,11 +944,11 @@ public class AppletPDBCanvas extends Panel implements MouseListener, for (int ii = 0; ii < pdb.chains.size(); ii++) { - PDBChain chain = (PDBChain) pdb.chains.elementAt(ii); + PDBChain chain = pdb.chains.elementAt(ii); if (chain.isVisible) { - Vector bonds = ((PDBChain) pdb.chains.elementAt(ii)).bonds; + Vector bonds = pdb.chains.elementAt(ii).bonds; for (int i = 0; i < bonds.size(); i++) { @@ -975,13 +1002,13 @@ public class AppletPDBCanvas extends Panel implements MouseListener, for (int ii = 0; ii < pdb.chains.size(); ii++) { - PDBChain chain = (PDBChain) pdb.chains.elementAt(ii); + PDBChain chain = pdb.chains.elementAt(ii); int truex; Bond tmpBond = null; if (chain.isVisible) { - Vector bonds = ((PDBChain) pdb.chains.elementAt(ii)).bonds; + Vector bonds = pdb.chains.elementAt(ii).bonds; for (int i = 0; i < bonds.size(); i++) { @@ -1022,7 +1049,7 @@ public class AppletPDBCanvas extends Panel implements MouseListener, if (fatom != null) // )&& chain.ds != null) { - chain = (PDBChain) pdb.chains.elementAt(foundchain); + chain = pdb.chains.elementAt(foundchain); } } @@ -1090,7 +1117,7 @@ public class AppletPDBCanvas extends Panel implements MouseListener, { for (int ii = 0; ii < pdb.chains.size(); ii++) { - PDBChain chain = (PDBChain) pdb.chains.elementAt(ii); + PDBChain chain = pdb.chains.elementAt(ii); chain.isVisible = b; } mainchain.isVisible = true; @@ -1100,9 +1127,10 @@ public class AppletPDBCanvas extends Panel implements MouseListener, // //////////////////////////////// // /StructureListener - public String getPdbFile() + public String[] getPdbFile() { - return pdbentry.getFile(); + return new String[] + { pdbentry.getFile() }; } String lastMessage; @@ -1110,7 +1138,9 @@ public class AppletPDBCanvas extends Panel implements MouseListener, public void mouseOverStructure(int pdbResNum, String chain) { if (lastMessage == null || !lastMessage.equals(pdbResNum + chain)) + { ssm.mouseOverStructure(pdbResNum, chain, pdbentry.getFile()); + } lastMessage = pdbResNum + chain; } @@ -1119,19 +1149,40 @@ public class AppletPDBCanvas extends Panel implements MouseListener, StringBuffer eval = new StringBuffer(); - public void highlightAtom(int atomIndex, int pdbResNum, String chain, - String pdbfile) + /** + * Highlight the specified atoms in the structure. + * + * @param atoms + */ + @Override + public void highlightAtoms(List atoms) { if (!seqColoursReady) { return; } - - if (highlightRes != null && highlightRes.contains((atomIndex - 1) + "")) + for (AtomSpec atom : atoms) { - return; + int atomIndex = atom.getAtomIndex(); + + if (highlightRes != null + && highlightRes.contains((atomIndex - 1) + "")) + { + continue; + } + + highlightAtom(atomIndex); } + redrawneeded = true; + repaint(); + } + + /** + * @param atomIndex + */ + protected void highlightAtom(int atomIndex) + { int index = -1; Bond tmpBond; for (index = 0; index < mainchain.bonds.size(); index++) @@ -1167,9 +1218,6 @@ public class AppletPDBCanvas extends Panel implements MouseListener, break; } } - - redrawneeded = true; - repaint(); } public Color getColour(int atomIndex, int pdbResNum, String chain, @@ -1189,4 +1237,11 @@ public class AppletPDBCanvas extends Panel implements MouseListener, repaint(); } + @Override + public void releaseReferences(Object svl) + { + // TODO Auto-generated method stub + + } + }