Skip to content

Commit 2827ae2

Browse files
committed
Update to Jmol 14.6.1
Also switches Jmol logging to SLF4J
1 parent fa9ecab commit 2827ae2

File tree

4 files changed

+95
-82
lines changed

4 files changed

+95
-82
lines changed

biojava-structure-gui/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
<dependency>
4141
<groupId>net.sourceforge.jmol</groupId>
4242
<artifactId>jmol</artifactId>
43-
<version>13.0.14</version>
43+
<version>14.6.1_2016.08.20</version>
4444
</dependency>
4545
<!-- logging dependencies (managed by parent pom, don't set versions or
4646
scopes here) -->

biojava-structure-gui/src/main/java/org/biojava/nbio/structure/align/gui/jmol/AbstractAlignmentJmol.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import org.biojava.nbio.structure.jama.Matrix;
4242
import org.jcolorbrewer.ColorBrewer;
4343
import org.jmol.api.JmolViewer;
44+
import org.jmol.viewer.Viewer;
4445
import org.slf4j.Logger;
4546
import org.slf4j.LoggerFactory;
4647

@@ -102,7 +103,7 @@ public void destroy(){
102103
public void setAtoms(Atom[] atoms){
103104
Structure s = new StructureImpl();
104105
Chain c = new ChainImpl();
105-
c.setChainID("A");
106+
c.setId("A");
106107
for (Atom a: atoms){
107108
c.addGroup(a.getGroup());
108109
}
@@ -219,7 +220,7 @@ public void mouseMoved(MouseEvent e) {
219220
int pos = viewer.findNearestAtomIndex( e.getX(), e.getY() );
220221
if ( pos == -1 ) { return ; }
221222

222-
String atomInfo = viewer.getAtomInfo(pos);
223+
String atomInfo = ((Viewer) viewer).getAtomInfo(pos);
223224
text.setText(atomInfo);
224225

225226
}
@@ -243,7 +244,7 @@ public void mouseReleased(MouseEvent e) {
243244
int pos = viewer.findNearestAtomIndex(e.getX(), e.getY());
244245
if (pos == -1) return;
245246

246-
String atomInfo = viewer.getAtomInfo(pos);
247+
String atomInfo = ((Viewer) viewer).getAtomInfo(pos);
247248
status.setText("clicked: " + atomInfo);
248249
AtomInfo ai = AtomInfoParser.parse(atomInfo);
249250

biojava-structure-gui/src/main/java/org/biojava/nbio/structure/align/gui/jmol/JmolPanel.java

Lines changed: 65 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,12 @@
3838
import org.jmol.api.JmolAdapter;
3939
import org.jmol.api.JmolStatusListener;
4040
import org.jmol.api.JmolViewer;
41-
import org.jmol.util.Logger;
41+
import org.jmol.util.LoggerInterface;
42+
import org.slf4j.Logger;
43+
import org.slf4j.LoggerFactory;
4244

4345
import javax.swing.*;
46+
4447
import java.awt.*;
4548
import java.awt.event.ActionEvent;
4649
import java.awt.event.ActionListener;
@@ -52,6 +55,8 @@ public class JmolPanel
5255
extends JPrintPanel
5356
implements ActionListener
5457
{
58+
private static final Logger logger = LoggerFactory.getLogger(JmolPanel.class);
59+
5560
private static final long serialVersionUID = -3661941083797644242L;
5661

5762
private JmolViewer viewer;
@@ -62,13 +67,13 @@ public class JmolPanel
6267

6368
Structure structure;
6469

65-
private boolean verbose = false;
66-
6770
public JmolPanel() {
6871
super();
6972
statusListener = new MyJmolStatusListener();
7073
adapter = new SmarterJmolAdapter();
71-
Logger.setLogLevel( verbose?Logger.LEVEL_INFO:Logger.LEVEL_ERROR);
74+
JmolLoggerAdapter jmolLogger = new JmolLoggerAdapter(LoggerFactory.getLogger(org.jmol.api.JmolViewer.class));
75+
org.jmol.util.Logger.setLogger(jmolLogger);
76+
org.jmol.util.Logger.setLogLevel( jmolLogger.getLogLevel() );
7277
viewer = JmolViewer.allocateViewer(this,
7378
adapter,
7479
null,null,null,null,
@@ -173,7 +178,8 @@ public void actionPerformed(ActionEvent event) {
173178
return;
174179
}
175180

176-
JComboBox source = (JComboBox) event.getSource();
181+
@SuppressWarnings("unchecked")
182+
JComboBox<String> source = (JComboBox<String>) event.getSource();
177183
String value = source.getSelectedItem().toString();
178184
evalString("save selection; ");
179185

@@ -267,7 +273,7 @@ private void colorBySCOP() {
267273
List<String>ranges = domain.getRanges();
268274

269275
for (String range : ranges){
270-
if(verbose) System.out.println(range);
276+
logger.debug(range);
271277
String[] spl = range.split(":");
272278
String script = " select ";
273279
if ( spl.length > 1 )
@@ -276,7 +282,7 @@ private void colorBySCOP() {
276282
script += "*" + spl[0]+"/1;";
277283
script += " color [" + c1.getRed() + ","+c1.getGreen() + "," +c1.getBlue()+"];";
278284
script += " color cartoon [" + c1.getRed() + ","+c1.getGreen() + "," +c1.getBlue()+"] ;";
279-
if(verbose) System.out.println(script);
285+
logger.debug(script);
280286
evalString(script);
281287

282288
}
@@ -286,7 +292,7 @@ private void colorBySCOP() {
286292
}
287293

288294
private void colorByPDP() {
289-
if(verbose) System.out.println("colorByPDP");
295+
logger.debug("colorByPDP");
290296
if ( structure == null)
291297
return;
292298

@@ -310,13 +316,13 @@ private void colorByPDP() {
310316
int end = s.getTo();
311317
Group startG = ca[start].getGroup();
312318
Group endG = ca[end].getGroup();
313-
if(verbose) System.out.println(" Segment: " +startG.getResidueNumber() +":" + startG.getChainId() + " - " + endG.getResidueNumber()+":"+endG.getChainId() + " " + s);
319+
logger.debug(" Segment: " +startG.getResidueNumber() +":" + startG.getChainId() + " - " + endG.getResidueNumber()+":"+endG.getChainId() + " " + s);
314320
String j1 = startG.getResidueNumber()+"";
315321
String j2 = endG.getResidueNumber()+":"+endG.getChainId();
316322
String script = " select " +j1 +"-" +j2 +"/1;";
317323
script += " color [" + c1.getRed() + ","+c1.getGreen() + "," +c1.getBlue()+"];";
318324
script += " color cartoon [" + c1.getRed() + ","+c1.getGreen() + "," +c1.getBlue()+"] ;";
319-
if(verbose) System.out.println(script);
325+
logger.debug(script);
320326
evalString(script);
321327
}
322328

@@ -356,15 +362,55 @@ public void destroy(){
356362
adapter = null;
357363
}
358364

359-
public boolean isVerbose() {
360-
return verbose;
361-
}
362-
363-
public void setVerbose(boolean verbose) {
364-
this.verbose = verbose;
365-
if(statusListener instanceof MyJmolStatusListener) {
366-
((MyJmolStatusListener)statusListener).setVerbose(verbose);
365+
public static class JmolLoggerAdapter implements LoggerInterface {
366+
private Logger slf;
367+
public JmolLoggerAdapter(Logger slf) {
368+
this.slf=slf;
369+
}
370+
public int getLogLevel() {
371+
if( slf.isTraceEnabled() )
372+
return org.jmol.util.Logger.LEVEL_MAX;
373+
if( slf.isDebugEnabled() )
374+
return org.jmol.util.Logger.LEVEL_DEBUG;
375+
if( slf.isInfoEnabled() )
376+
return org.jmol.util.Logger.LEVEL_INFO;
377+
if( slf.isWarnEnabled() )
378+
return org.jmol.util.Logger.LEVEL_WARN;
379+
if( slf.isErrorEnabled() )
380+
return org.jmol.util.Logger.LEVEL_ERROR;
381+
throw new IllegalStateException("Unknown SLF4J error level");
382+
}
383+
@Override
384+
public void debug(String txt) {
385+
slf.debug(txt);
386+
}
387+
@Override
388+
public void info(String txt) {
389+
slf.info(txt);
390+
}
391+
@Override
392+
public void warn(String txt) {
393+
slf.warn(txt);
394+
}
395+
@Override
396+
public void warnEx(String txt, Throwable e) {
397+
slf.warn(txt,e);
398+
}
399+
@Override
400+
public void error(String txt) {
401+
slf.error(txt);
402+
}
403+
@Override
404+
public void errorEx(String txt, Throwable e) {
405+
slf.error(txt,e);
406+
}
407+
@Override
408+
public void fatal(String txt) {
409+
slf.error(txt);
410+
}
411+
@Override
412+
public void fatalEx(String txt, Throwable e) {
413+
slf.error(txt,e);
367414
}
368415
}
369-
370416
}

biojava-structure-gui/src/main/java/org/biojava/nbio/structure/align/gui/jmol/MyJmolStatusListener.java

Lines changed: 25 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,17 @@
2424

2525
package org.biojava.nbio.structure.align.gui.jmol;
2626

27-
import org.jmol.api.JmolStatusListener;
28-
import org.jmol.constant.EnumCallback;
27+
import java.util.Map;
2928

30-
import javax.swing.*;
29+
import javax.swing.JTextField;
3130

32-
import java.util.Hashtable;
33-
import java.util.Map;
31+
import org.jmol.api.JmolStatusListener;
32+
import org.jmol.c.CBK;
33+
import org.slf4j.Logger;
34+
import org.slf4j.LoggerFactory;
3435

3536
public class MyJmolStatusListener implements JmolStatusListener {
36-
37-
private boolean verbose = false;
37+
private static final Logger logger = LoggerFactory.getLogger(MyJmolStatusListener.class);
3838

3939
JTextField status;
4040
public MyJmolStatusListener(){
@@ -46,33 +46,30 @@ public void setTextField (JTextField statusField) {
4646

4747
@Override
4848
public String createImage(String arg0, String arg1, Object arg2, int arg3) {
49-
// TODO Auto-generated method stub
50-
return null;
49+
return null; //Cancelled
5150
}
5251

5352
@Override
5453
public String eval(String arg0) {
55-
if(verbose) System.out.println("eval " + arg0);
54+
logger.debug("eval {}",arg0);
5655
return null;
5756
}
5857

5958
@Override
6059
public float[][] functionXY(String arg0, int arg1, int arg2) {
61-
if(verbose) System.out.println("XY " + arg0 + " " + arg1 + " " + arg2);
62-
return null;
60+
logger.debug("XY {} {} {}",arg0,arg1, arg2);
61+
return null; //Ignore isosurface commands
6362
}
6463

6564
@Override
6665
public float[][][] functionXYZ(String arg0, int arg1, int arg2, int arg3) {
67-
// TODO Auto-generated method stub
68-
return null;
66+
logger.debug("XYZ {} {} {} {}",arg0,arg1, arg2, arg3);
67+
return null; //Ignore isosurface commands
6968
}
7069

71-
@SuppressWarnings({ "unchecked", "rawtypes" })
7270
@Override
73-
public Hashtable getRegistryInfo() {
74-
// TODO Auto-generated method stub
75-
return null;
71+
public Map<String, Object> getRegistryInfo() {
72+
return null; //Ignore
7673
}
7774

7875
@Override
@@ -87,79 +84,48 @@ public void notifyCallback(int arg0, Object[] arg1) {
8784
}
8885

8986
public boolean notifyEnabled(int arg0) {
90-
// TODO Auto-generated method stub
9187
return false;
9288
}
9389

9490
@Override
9591
public void setCallbackFunction(String arg0, String arg1) {
96-
if(verbose) System.out.println("callback:" + arg0 + " " + arg1);
92+
logger.debug("callback: {} {}", arg0, arg1);
9793
status.setText(arg0 + " " + arg1);
98-
9994
}
10095

10196
public String dialogAsk(String arg0, String arg1) {
102-
// TODO Auto-generated method stub
103-
if(verbose) System.out.println("dialogAsk");
104-
return null;
97+
logger.debug("dialogAsk {} {}",arg0,arg1);
98+
return null; //Ignore
10599
}
106100

107101
public void handlePopupMenu(int arg0, int arg1) {
108-
// TODO Auto-generated method stub
109-
if(verbose) System.out.println("handlePopupMenu");
102+
logger.debug("handlePopupMenu {} {}",arg0,arg1);
110103
}
111104

112105
public void showConsole(boolean arg0) {
113-
114-
// TODO Auto-generated method stub
115-
if(verbose) System.out.println("showConsole");
116-
106+
logger.debug("showConsole {}",arg0);
117107
}
118108

119109

120-
@Override
121-
public void notifyCallback(EnumCallback arg0, Object[] arg1) {
122-
// TODO Auto-generated method stub
123110

111+
@Override
112+
public void notifyCallback(CBK message, Object[] data) {
124113
}
125114

126-
127115
@Override
128-
public boolean notifyEnabled(EnumCallback arg0) {
129-
// TODO Auto-generated method stub
116+
public boolean notifyEnabled(CBK type) {
130117
return false;
131118
}
132119

133-
134120
@Override
135-
public Map<String, Object> getProperty(String arg0) {
136-
// TODO Auto-generated method stub
137-
return null;
138-
}
139-
140-
141-
142121
public Map<String, Object> getJSpecViewProperty(String arg0) {
143-
// TODO Auto-generated method stub
144122
return null;
145123
}
146124

147125

148126
@Override
149-
public void resizeInnerPanel(String data) {
150-
// TODO Auto-generated method stub
151-
152-
}
153-
154-
public boolean isVerbose() {
155-
return verbose;
156-
}
157-
158-
public void setVerbose(boolean verbose) {
159-
this.verbose = verbose;
127+
public int[] resizeInnerPanel(String data) {
128+
return null;
160129
}
161130

162-
163-
164-
165131
}

0 commit comments

Comments
 (0)