org.biojava.nbio.structure.align.ce.GuiWrapper Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of biojava-structure Show documentation
Show all versions of biojava-structure Show documentation
The protein structure modules of BioJava.
/*
* BioJava development code
*
* This code may be freely distributed and modified under the
* terms of the GNU Lesser General Public Licence. This should
* be distributed with the code. If you do not have a copy,
* see:
*
* http://www.gnu.org/copyleft/lesser.html
*
* Copyright for this code is held jointly by the individual
* authors. These should be listed in @author doc comments.
*
* For more information on the BioJava project and its aims,
* or to join the biojava-l mailing list, visit the home page
* at:
*
* http://www.biojava.org/
*
*/
package org.biojava.nbio.structure.align.ce;
import org.biojava.nbio.structure.Atom;
import org.biojava.nbio.structure.Group;
import org.biojava.nbio.structure.Structure;
import org.biojava.nbio.structure.align.model.AFPChain;
import org.biojava.nbio.structure.jama.Matrix;
import javax.swing.*;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.List;
/**
* A class to wrap some of the strucutre.gui classes using Reflection
*
* @author Andreas Prlic
*
*/
public class GuiWrapper {
static final String guiPackage = "org.biojava.nbio.structure.gui";
static final String strucAlignmentDisplay = "org.biojava.nbio.structure.align.gui.StructureAlignmentDisplay";
static final String displayAFP = "org.biojava.nbio.structure.align.gui.DisplayAFP" ;
static final String alignmentGUI = "org.biojava.nbio.structure.align.gui.AlignmentGui";
static final String strucAligJmol = "org.biojava.nbio.structure.align.gui.jmol.StructureAlignmentJmol";
static final String abstractAligJmol = "org.biojava.nbio.structure.align.gui.jmol.AbstractAlignmentJmol";
static final String scaleMatrixPanel = "org.biojava.nbio.structure.gui.ScaleableMatrixPanel";
@SuppressWarnings("rawtypes")
public static boolean isGuiModuleInstalled(){
String className = displayAFP;
try {
@SuppressWarnings("unused")
Class c = Class.forName(className);
} catch (ClassNotFoundException ex){
return false;
}
return true;
}
@SuppressWarnings({ "rawtypes", "unchecked" })
public static Object display(AFPChain afpChain, Atom[] ca1, Atom[] ca2)
throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalAccessException{
Class c = Class.forName(strucAlignmentDisplay);
Method display = c.getMethod("display", new Class[]{AFPChain.class, Atom[].class,
Atom[].class});
Object structureAlignmentJmol = display.invoke(null, afpChain,ca1,ca2);
return structureAlignmentJmol;
}
@SuppressWarnings({ "rawtypes", "unchecked" })
public static void showAlignmentImage(AFPChain afpChain, Atom[] ca1,
Atom[] ca2, Object jmol)
throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalAccessException{
Class abstractAligJmolC = Class.forName(abstractAligJmol);
Class c = Class.forName(displayAFP);
Method show = c.getMethod("showAlignmentPanel", new Class[] {AFPChain.class, Atom[].class, Atom[].class, abstractAligJmolC});
show.invoke(null,afpChain, ca1, ca2, jmol);
}
/** Shows a structure in Jmol
* @since 3.0.5
*/
public static void showStructure(Structure structure)
throws ClassNotFoundException, NoSuchMethodException,
InvocationTargetException, IllegalAccessException, InstantiationException{
Class> structureAlignmentJmol = Class.forName(strucAligJmol);
Object strucAligJ = structureAlignmentJmol.newInstance();
Method setS = structureAlignmentJmol.getMethod("setStructure", new Class[] {Structure.class});
setS.invoke(strucAligJ,structure);
}
@SuppressWarnings({ "rawtypes", "unchecked" })
public static void showAlignmentGUI()
throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalAccessException {
// proxy for AlignmentGui.getInstance();
Class c = Class.forName(alignmentGUI);
Method m = c.getMethod("getInstance", (Class[])null);
m.invoke(c,(Object[])null);
}
@SuppressWarnings({"unused" })
public static Structure getAlignedStructure(Atom[] ca1, Atom[] ca2)
throws ClassNotFoundException, NoSuchMethodException,
InvocationTargetException, IllegalAccessException{
Class> structureAlignmentJmol = Class.forName(strucAligJmol);
Class> c = Class.forName(displayAFP);
Method show = c.getMethod("getAlignedStructure", new Class[] { Atom[].class, Atom[].class});
Structure s = (Structure) show.invoke(null, ca1, ca2);
return s;
}
public static JPanel getScaleableMatrixPanel(Matrix m)
throws ClassNotFoundException, NoSuchMethodException,
InvocationTargetException, IllegalAccessException, InstantiationException{
Class> scaleMatrixPanelC = Class.forName(scaleMatrixPanel);
Method setMatrix = scaleMatrixPanelC.getMethod("setMatrix", new Class[] { Matrix.class});
JPanel panel = (JPanel) scaleMatrixPanelC.newInstance();
setMatrix.invoke(panel, m);
return panel;
}
@SuppressWarnings({ "rawtypes", "unchecked", "unused" })
public static Atom[] getAtomArray(Atom[] ca, List hetatoms, List nucs)
throws ClassNotFoundException, NoSuchMethodException,
InvocationTargetException, IllegalAccessException{
Class structureAlignmentJmol = Class.forName(strucAligJmol);
Class c = Class.forName(displayAFP);
Method show = c.getMethod("getAtomArray", new Class[] { Atom[].class, List.class, List.class});
Atom[] atoms = (Atom[]) show.invoke(null, ca, hetatoms, nucs);
return atoms;
}
}