X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fbin%2FJalviewLite.java;h=a60496c4191bc5fd13ac5a59ccfd299d39aea527;hb=f53b649151f6393c7353ce51cfd02de348d0bd6e;hp=e736009dca75255f9716d79146afb4e4c45bd735;hpb=6f2610ec4d7a79dde17f9b3d02225c62aa52cfd8;p=jalview.git diff --git a/src/jalview/bin/JalviewLite.java b/src/jalview/bin/JalviewLite.java index e736009..a60496c 100644 --- a/src/jalview/bin/JalviewLite.java +++ b/src/jalview/bin/JalviewLite.java @@ -37,6 +37,9 @@ import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; import jalview.io.AnnotationFile; import jalview.io.AppletFormatAdapter; +import jalview.io.DataSourceType; +import jalview.io.FileFormatI; +import jalview.io.FileFormats; import jalview.io.FileParse; import jalview.io.IdentifyFile; import jalview.io.JPredFile; @@ -45,8 +48,11 @@ import jalview.io.NewickFile; import jalview.javascript.JSFunctionExec; import jalview.javascript.JalviewLiteJsApi; import jalview.javascript.JsCallBack; +import jalview.javascript.MouseOverStructureListener; import jalview.structure.SelectionListener; import jalview.structure.StructureSelectionManager; +import jalview.util.ColorUtils; +import jalview.util.HttpUtils; import jalview.util.MessageManager; import java.applet.Applet; @@ -62,9 +68,9 @@ import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.BufferedReader; import java.io.IOException; -import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL; +import java.util.ArrayList; import java.util.Hashtable; import java.util.List; import java.util.StringTokenizer; @@ -78,8 +84,8 @@ import netscape.javascript.JSObject; * @author $author$ * @version $Revision: 1.92 $ */ -public class JalviewLite extends Applet implements - StructureSelectionManagerProvider, JalviewLiteJsApi +public class JalviewLite extends Applet + implements StructureSelectionManagerProvider, JalviewLiteJsApi { private static final String TRUE = "true"; @@ -99,6 +105,7 @@ public class JalviewLite extends Applet implements * * @see jalview.bin.JalviewLiteJsApi#getSelectedSequences() */ + @Override public String getSelectedSequences() { return getSelectedSequencesFrom(getDefaultTargetFrame()); @@ -109,6 +116,7 @@ public class JalviewLite extends Applet implements * * @see jalview.bin.JalviewLiteJsApi#getSelectedSequences(java.lang.String) */ + @Override public String getSelectedSequences(String sep) { return getSelectedSequencesFrom(getDefaultTargetFrame(), sep); @@ -121,6 +129,7 @@ public class JalviewLite extends Applet implements * jalview.bin.JalviewLiteJsApi#getSelectedSequencesFrom(jalview.appletgui * .AlignFrame) */ + @Override public String getSelectedSequencesFrom(AlignFrame alf) { return getSelectedSequencesFrom(alf, separator); // ""+0x00AC); @@ -133,6 +142,7 @@ public class JalviewLite extends Applet implements * jalview.bin.JalviewLiteJsApi#getSelectedSequencesFrom(jalview.appletgui * .AlignFrame, java.lang.String) */ + @Override public String getSelectedSequencesFrom(AlignFrame alf, String sep) { StringBuffer result = new StringBuffer(""); @@ -161,6 +171,7 @@ public class JalviewLite extends Applet implements * @see jalview.bin.JalviewLiteJsApi#highlight(java.lang.String, * java.lang.String, java.lang.String) */ + @Override public void highlight(String sequenceId, String position, String alignedPosition) { @@ -174,6 +185,7 @@ public class JalviewLite extends Applet implements * @see jalview.bin.JalviewLiteJsApi#highlightIn(jalview.appletgui.AlignFrame, * java.lang.String, java.lang.String, java.lang.String) */ + @Override public void highlightIn(final AlignFrame alf, final String sequenceId, final String position, final String alignedPosition) { @@ -195,9 +207,8 @@ public class JalviewLite extends Applet implements final StructureSelectionManagerProvider me = this; final int pos = apos; // use vamsas listener to broadcast to all listeners in scope - if (alignedPosition != null - && (alignedPosition.trim().length() == 0 || alignedPosition - .toLowerCase().indexOf("false") > -1)) + if (alignedPosition != null && (alignedPosition.trim().length() == 0 + || alignedPosition.toLowerCase().indexOf("false") > -1)) { java.awt.EventQueue.invokeLater(new Runnable() { @@ -230,6 +241,7 @@ public class JalviewLite extends Applet implements * @see jalview.bin.JalviewLiteJsApi#select(java.lang.String, * java.lang.String) */ + @Override public void select(String sequenceIds, String columns) { selectIn(getDefaultTargetFrame(), sequenceIds, columns, separator); @@ -241,6 +253,7 @@ public class JalviewLite extends Applet implements * @see jalview.bin.JalviewLiteJsApi#select(java.lang.String, * java.lang.String, java.lang.String) */ + @Override public void select(String sequenceIds, String columns, String sep) { selectIn(getDefaultTargetFrame(), sequenceIds, columns, sep); @@ -252,6 +265,7 @@ public class JalviewLite extends Applet implements * @see jalview.bin.JalviewLiteJsApi#selectIn(jalview.appletgui.AlignFrame, * java.lang.String, java.lang.String) */ + @Override public void selectIn(AlignFrame alf, String sequenceIds, String columns) { selectIn(alf, sequenceIds, columns, separator); @@ -263,6 +277,7 @@ public class JalviewLite extends Applet implements * @see jalview.bin.JalviewLiteJsApi#selectIn(jalview.appletgui.AlignFrame, * java.lang.String, java.lang.String, java.lang.String) */ + @Override public void selectIn(final AlignFrame alf, String sequenceIds, String columns, String sep) { @@ -326,8 +341,8 @@ public class JalviewLite extends Applet implements from--; } catch (NumberFormatException ex) { - System.err - .println("ERROR: Couldn't parse first integer in range element column selection string '" + System.err.println( + "ERROR: Couldn't parse first integer in range element column selection string '" + cl + "' - format is 'from-to'"); return; } @@ -337,8 +352,8 @@ public class JalviewLite extends Applet implements to--; } catch (NumberFormatException ex) { - System.err - .println("ERROR: Couldn't parse second integer in range element column selection string '" + System.err.println( + "ERROR: Couldn't parse second integer in range element column selection string '" + cl + "' - format is 'from-to'"); return; } @@ -404,8 +419,8 @@ public class JalviewLite extends Applet implements } else { - System.err - .println("ERROR: Couldn't parse integer from point selection element of column selection string '" + System.err.println( + "ERROR: Couldn't parse integer from point selection element of column selection string '" + cl + "'"); return; } @@ -455,14 +470,11 @@ public class JalviewLite extends Applet implements SequenceI rs = sel.getSequenceAt(0); start = rs.findIndex(start); end = rs.findIndex(end); - if (csel != null) + List cs = new ArrayList<>(csel.getSelected()); + csel.clear(); + for (Integer selectedCol : cs) { - List cs = csel.getSelected(); - csel.clear(); - for (Integer selectedCol : cs) - { - csel.addElement(rs.findIndex(selectedCol)); - } + csel.addElement(rs.findIndex(selectedCol)); } } sel.setStartRes(start); @@ -472,7 +484,8 @@ public class JalviewLite extends Applet implements @Override public void run() { - alf.select(sel, csel); + alf.select(sel, csel, + alf.getAlignViewport().getAlignment().getHiddenColumns()); } }); } @@ -485,7 +498,9 @@ public class JalviewLite extends Applet implements * jalview.bin.JalviewLiteJsApi#getSelectedSequencesAsAlignment(java.lang. * String, java.lang.String) */ - public String getSelectedSequencesAsAlignment(String format, String suffix) + @Override + public String getSelectedSequencesAsAlignment(String format, + String suffix) { return getSelectedSequencesAsAlignmentFrom(getDefaultTargetFrame(), format, suffix); @@ -498,26 +513,29 @@ public class JalviewLite extends Applet implements * jalview.bin.JalviewLiteJsApi#getSelectedSequencesAsAlignmentFrom(jalview * .appletgui.AlignFrame, java.lang.String, java.lang.String) */ + @Override public String getSelectedSequencesAsAlignmentFrom(AlignFrame alf, String format, String suffix) { try { + FileFormatI theFormat = FileFormats.getInstance().forName(format); boolean seqlimits = suffix.equalsIgnoreCase(TRUE); if (alf.viewport.getSelectionGroup() != null) { // JBPNote: getSelectionAsNewSequence behaviour has changed - this // method now returns a full copy of sequence data // TODO consider using getSequenceSelection instead here - String reply = new AppletFormatAdapter().formatSequences(format, + String reply = new AppletFormatAdapter().formatSequences(theFormat, new Alignment(alf.viewport.getSelectionAsNewSequence()), seqlimits); return reply; } - } catch (Exception ex) + } catch (IllegalArgumentException ex) { ex.printStackTrace(); - return "Error retrieving alignment in " + format + " format. "; + return "Error retrieving alignment, possibly invalid format specifier: " + + format; } return ""; } @@ -527,6 +545,7 @@ public class JalviewLite extends Applet implements * * @see jalview.bin.JalviewLiteJsApi#getAlignmentOrder() */ + @Override public String getAlignmentOrder() { return getAlignmentOrderFrom(getDefaultTargetFrame()); @@ -539,6 +558,7 @@ public class JalviewLite extends Applet implements * jalview.bin.JalviewLiteJsApi#getAlignmentOrderFrom(jalview.appletgui.AlignFrame * ) */ + @Override public String getAlignmentOrderFrom(AlignFrame alf) { return getAlignmentOrderFrom(alf, separator); @@ -551,6 +571,7 @@ public class JalviewLite extends Applet implements * jalview.bin.JalviewLiteJsApi#getAlignmentOrderFrom(jalview.appletgui.AlignFrame * , java.lang.String) */ + @Override public String getAlignmentOrderFrom(AlignFrame alf, String sep) { AlignmentI alorder = alf.getAlignViewport().getAlignment(); @@ -568,6 +589,7 @@ public class JalviewLite extends Applet implements * @see jalview.bin.JalviewLiteJsApi#orderBy(java.lang.String, * java.lang.String) */ + @Override public String orderBy(String order, String undoName) { return orderBy(order, undoName, separator); @@ -579,6 +601,7 @@ public class JalviewLite extends Applet implements * @see jalview.bin.JalviewLiteJsApi#orderBy(java.lang.String, * java.lang.String, java.lang.String) */ + @Override public String orderBy(String order, String undoName, String sep) { return orderAlignmentBy(getDefaultTargetFrame(), order, undoName, sep); @@ -591,6 +614,7 @@ public class JalviewLite extends Applet implements * jalview.bin.JalviewLiteJsApi#orderAlignmentBy(jalview.appletgui.AlignFrame, * java.lang.String, java.lang.String, java.lang.String) */ + @Override public String orderAlignmentBy(AlignFrame alf, String order, String undoName, String sep) { @@ -647,6 +671,7 @@ public class JalviewLite extends Applet implements * * @see jalview.bin.JalviewLiteJsApi#getAlignment(java.lang.String) */ + @Override public String getAlignment(String format) { return getAlignmentFrom(getDefaultTargetFrame(), format, TRUE); @@ -659,6 +684,7 @@ public class JalviewLite extends Applet implements * jalview.bin.JalviewLiteJsApi#getAlignmentFrom(jalview.appletgui.AlignFrame, * java.lang.String) */ + @Override public String getAlignmentFrom(AlignFrame alf, String format) { return getAlignmentFrom(alf, format, TRUE); @@ -670,6 +696,7 @@ public class JalviewLite extends Applet implements * @see jalview.bin.JalviewLiteJsApi#getAlignment(java.lang.String, * java.lang.String) */ + @Override public String getAlignment(String format, String suffix) { return getAlignmentFrom(getDefaultTargetFrame(), format, suffix); @@ -682,6 +709,7 @@ public class JalviewLite extends Applet implements * jalview.bin.JalviewLiteJsApi#getAlignmentFrom(jalview.appletgui.AlignFrame, * java.lang.String, java.lang.String) */ + @Override public String getAlignmentFrom(AlignFrame alf, String format, String suffix) { @@ -689,13 +717,15 @@ public class JalviewLite extends Applet implements { boolean seqlimits = suffix.equalsIgnoreCase(TRUE); - String reply = new AppletFormatAdapter().formatSequences(format, + FileFormatI theFormat = FileFormats.getInstance().forName(format); + String reply = new AppletFormatAdapter().formatSequences(theFormat, alf.viewport.getAlignment(), seqlimits); return reply; - } catch (Exception ex) + } catch (IllegalArgumentException ex) { ex.printStackTrace(); - return "Error retrieving alignment in " + format + " format. "; + return "Error retrieving alignment, possibly invalid format specifier: " + + format; } } @@ -704,6 +734,7 @@ public class JalviewLite extends Applet implements * * @see jalview.bin.JalviewLiteJsApi#loadAnnotation(java.lang.String) */ + @Override public void loadAnnotation(String annotation) { loadAnnotationFrom(getDefaultTargetFrame(), annotation); @@ -716,17 +747,18 @@ public class JalviewLite extends Applet implements * jalview.bin.JalviewLiteJsApi#loadAnnotationFrom(jalview.appletgui.AlignFrame * , java.lang.String) */ + @Override public void loadAnnotationFrom(AlignFrame alf, String annotation) { if (new AnnotationFile().annotateAlignmentView(alf.getAlignViewport(), - annotation, AppletFormatAdapter.PASTE)) + annotation, DataSourceType.PASTE)) { alf.alignPanel.fontChanged(); alf.alignPanel.setScrollValues(0, 0); } else { - alf.parseFeaturesFile(annotation, AppletFormatAdapter.PASTE); + alf.parseFeaturesFile(annotation, DataSourceType.PASTE); } } @@ -735,6 +767,7 @@ public class JalviewLite extends Applet implements * * @see jalview.bin.JalviewLiteJsApi#loadAnnotation(java.lang.String) */ + @Override public void loadFeatures(String features, boolean autoenabledisplay) { loadFeaturesFrom(getDefaultTargetFrame(), features, autoenabledisplay); @@ -747,10 +780,11 @@ public class JalviewLite extends Applet implements * jalview.bin.JalviewLiteJsApi#loadAnnotationFrom(jalview.appletgui.AlignFrame * , java.lang.String) */ + @Override public boolean loadFeaturesFrom(AlignFrame alf, String features, boolean autoenabledisplay) { - return alf.parseFeaturesFile(features, AppletFormatAdapter.PASTE, + return alf.parseFeaturesFile(features, DataSourceType.PASTE, autoenabledisplay); } @@ -759,6 +793,7 @@ public class JalviewLite extends Applet implements * * @see jalview.bin.JalviewLiteJsApi#getFeatures(java.lang.String) */ + @Override public String getFeatures(String format) { return getFeaturesFrom(getDefaultTargetFrame(), format); @@ -771,6 +806,7 @@ public class JalviewLite extends Applet implements * jalview.bin.JalviewLiteJsApi#getFeaturesFrom(jalview.appletgui.AlignFrame, * java.lang.String) */ + @Override public String getFeaturesFrom(AlignFrame alf, String format) { return alf.outputFeatures(false, format); @@ -781,6 +817,7 @@ public class JalviewLite extends Applet implements * * @see jalview.bin.JalviewLiteJsApi#getAnnotation() */ + @Override public String getAnnotation() { return getAnnotationFrom(getDefaultTargetFrame()); @@ -793,6 +830,7 @@ public class JalviewLite extends Applet implements * jalview.bin.JalviewLiteJsApi#getAnnotationFrom(jalview.appletgui.AlignFrame * ) */ + @Override public String getAnnotationFrom(AlignFrame alf) { return alf.outputAnnotations(false); @@ -803,6 +841,7 @@ public class JalviewLite extends Applet implements * * @see jalview.bin.JalviewLiteJsApi#newView() */ + @Override public AlignFrame newView() { return newViewFrom(getDefaultTargetFrame()); @@ -813,6 +852,7 @@ public class JalviewLite extends Applet implements * * @see jalview.bin.JalviewLiteJsApi#newView(java.lang.String) */ + @Override public AlignFrame newView(String name) { return newViewFrom(getDefaultTargetFrame(), name); @@ -823,6 +863,7 @@ public class JalviewLite extends Applet implements * * @see jalview.bin.JalviewLiteJsApi#newViewFrom(jalview.appletgui.AlignFrame) */ + @Override public AlignFrame newViewFrom(AlignFrame alf) { return alf.newView(null); @@ -834,6 +875,7 @@ public class JalviewLite extends Applet implements * @see jalview.bin.JalviewLiteJsApi#newViewFrom(jalview.appletgui.AlignFrame, * java.lang.String) */ + @Override public AlignFrame newViewFrom(AlignFrame alf, String name) { return alf.newView(name); @@ -845,21 +887,22 @@ public class JalviewLite extends Applet implements * @see jalview.bin.JalviewLiteJsApi#loadAlignment(java.lang.String, * java.lang.String) */ + @Override public AlignFrame loadAlignment(String text, String title) { AlignmentI al = null; - String format = new IdentifyFile().Identify(text, - AppletFormatAdapter.PASTE); try { - al = new AppletFormatAdapter().readFile(text, - AppletFormatAdapter.PASTE, format); + FileFormatI format = new IdentifyFile().identify(text, + DataSourceType.PASTE); + al = new AppletFormatAdapter().readFile(text, DataSourceType.PASTE, + format); if (al.getHeight() > 0) { return new AlignFrame(al, this, title, false); } - } catch (java.io.IOException ex) + } catch (IOException ex) { ex.printStackTrace(); } @@ -871,12 +914,13 @@ public class JalviewLite extends Applet implements * * @see jalview.bin.JalviewLiteJsApi#setMouseoverListener(java.lang.String) */ + @Override public void setMouseoverListener(String listener) { setMouseoverListener(currentAlignFrame, listener); } - private Vector javascriptListeners = new Vector(); + private Vector javascriptListeners = new Vector<>(); /* * (non-Javadoc) @@ -885,6 +929,7 @@ public class JalviewLite extends Applet implements * jalview.bin.JalviewLiteJsApi#setMouseoverListener(jalview.appletgui.AlignFrame * , java.lang.String) */ + @Override public void setMouseoverListener(AlignFrame af, String listener) { if (listener != null) @@ -892,8 +937,8 @@ public class JalviewLite extends Applet implements listener = listener.trim(); if (listener.length() == 0) { - System.err - .println("jalview Javascript error: Ignoring empty function for mouseover listener."); + System.err.println( + "jalview Javascript error: Ignoring empty function for mouseover listener."); return; } } @@ -905,8 +950,9 @@ public class JalviewLite extends Applet implements if (debug) { System.err.println("Added a mouseover listener for " - + ((af == null) ? "All frames" : "Just views for " - + af.getAlignViewport().getSequenceSetId())); + + ((af == null) ? "All frames" + : "Just views for " + + af.getAlignViewport().getSequenceSetId())); System.err.println("There are now " + javascriptListeners.size() + " listeners in total."); } @@ -917,6 +963,7 @@ public class JalviewLite extends Applet implements * * @see jalview.bin.JalviewLiteJsApi#setSelectionListener(java.lang.String) */ + @Override public void setSelectionListener(String listener) { setSelectionListener(null, listener); @@ -929,6 +976,7 @@ public class JalviewLite extends Applet implements * jalview.bin.JalviewLiteJsApi#setSelectionListener(jalview.appletgui.AlignFrame * , java.lang.String) */ + @Override public void setSelectionListener(AlignFrame af, String listener) { if (listener != null) @@ -936,8 +984,8 @@ public class JalviewLite extends Applet implements listener = listener.trim(); if (listener.length() == 0) { - System.err - .println("jalview Javascript error: Ignoring empty function for selection listener."); + System.err.println( + "jalview Javascript error: Ignoring empty function for selection listener."); return; } } @@ -949,8 +997,9 @@ public class JalviewLite extends Applet implements if (debug) { System.err.println("Added a selection listener for " - + ((af == null) ? "All frames" : "Just views for " - + af.getAlignViewport().getSequenceSetId())); + + ((af == null) ? "All frames" + : "Just views for " + + af.getAlignViewport().getSequenceSetId())); System.err.println("There are now " + javascriptListeners.size() + " listeners in total."); } @@ -967,6 +1016,7 @@ public class JalviewLite extends Applet implements * @see jalview.bin.JalviewLiteJsApi#setStructureListener(java.lang.String, * java.lang.String) */ + @Override public void setStructureListener(String listener, String modelSet) { if (listener != null) @@ -974,13 +1024,13 @@ public class JalviewLite extends Applet implements listener = listener.trim(); if (listener.length() == 0) { - System.err - .println("jalview Javascript error: Ignoring empty function for selection listener."); + System.err.println( + "jalview Javascript error: Ignoring empty function for selection listener."); return; } } - jalview.javascript.MouseOverStructureListener mol = new jalview.javascript.MouseOverStructureListener( - this, listener, separatorListToArray(modelSet)); + MouseOverStructureListener mol = new MouseOverStructureListener(this, + listener, separatorListToArray(modelSet)); javascriptListeners.addElement(mol); StructureSelectionManager.getStructureSelectionManager(this) .addStructureViewerListener(mol); @@ -1000,6 +1050,7 @@ public class JalviewLite extends Applet implements * jalview.bin.JalviewLiteJsApi#removeJavascriptListener(jalview.appletgui * .AlignFrame, java.lang.String) */ + @Override public void removeJavascriptListener(AlignFrame af, String listener) { if (listener != null) @@ -1015,9 +1066,8 @@ public class JalviewLite extends Applet implements { Object lstn = javascriptListeners.elementAt(ms); JsCallBack lstner = (JsCallBack) lstn; - if ((af == null || lstner.getAlignFrame() == af) - && (listener == null || lstner.getListenerFunction().equals( - listener))) + if ((af == null || lstner.getAlignFrame() == af) && (listener == null + || lstner.getListenerFunction().equals(listener))) { javascriptListeners.removeElement(lstner); msSize--; @@ -1049,12 +1099,14 @@ public class JalviewLite extends Applet implements } } + @Override public void stop() { System.err.println("Applet " + getName() + " stop()."); tidyUp(); } + @Override public void destroy() { System.err.println("Applet " + getName() + " destroy()."); @@ -1111,8 +1163,9 @@ public class JalviewLite extends Applet implements * @see jalview.bin.JalviewLiteJsApi#mouseOverStructure(java.lang.String, * java.lang.String, java.lang.String) */ - public void mouseOverStructure(final String pdbResNum, - final String chain, final String pdbfile) + @Override + public void mouseOverStructure(final String pdbResNum, final String chain, + final String pdbfile) { final StructureSelectionManagerProvider me = this; java.awt.EventQueue.invokeLater(new Runnable() @@ -1127,9 +1180,9 @@ public class JalviewLite extends Applet implements chain, pdbfile); if (debug) { - System.err.println("mouseOver for '" + pdbResNum - + "' in chain '" + chain + "' in structure '" + pdbfile - + "'"); + System.err + .println("mouseOver for '" + pdbResNum + "' in chain '" + + chain + "' in structure '" + pdbfile + "'"); } } catch (NumberFormatException e) { @@ -1148,6 +1201,7 @@ public class JalviewLite extends Applet implements * jalview.bin.JalviewLiteJsApi#scrollViewToIn(jalview.appletgui.AlignFrame, * java.lang.String, java.lang.String) */ + @Override public void scrollViewToIn(final AlignFrame alf, final String topRow, final String leftHandColumn) { @@ -1158,8 +1212,8 @@ public class JalviewLite extends Applet implements { try { - alf.scrollTo(new Integer(topRow).intValue(), new Integer( - leftHandColumn).intValue()); + alf.scrollTo(new Integer(topRow).intValue(), + new Integer(leftHandColumn).intValue()); } catch (Exception ex) { @@ -1226,8 +1280,8 @@ public class JalviewLite extends Applet implements } catch (Exception ex) { - System.err - .println("Couldn't parse integer arguments (leftHandColumn='" + System.err.println( + "Couldn't parse integer arguments (leftHandColumn='" + leftHandColumn + "')"); ex.printStackTrace(); } @@ -1301,8 +1355,8 @@ public class JalviewLite extends Applet implements { try { - BufferedReader reader = new BufferedReader(new InputStreamReader( - url.openStream())); + BufferedReader reader = new BufferedReader( + new InputStreamReader(url.openStream())); String line; while ((line = reader.readLine()) != null) { @@ -1369,8 +1423,8 @@ public class JalviewLite extends Applet implements } catch (Exception ex) { - System.err - .println("Warning: No JalviewLite javascript callbacks available."); + System.err.println( + "Warning: No JalviewLite javascript callbacks available."); if (debug) { ex.printStackTrace(); @@ -1412,9 +1466,8 @@ public class JalviewLite extends Applet implements } else { - throw new Error( - MessageManager - .getString("error.invalid_separator_parameter")); + throw new Error(MessageManager + .getString("error.invalid_separator_parameter")); } } int r = 255; @@ -1487,6 +1540,7 @@ public class JalviewLite extends Applet implements add(launcher); launcher.addActionListener(new java.awt.event.ActionListener() { + @Override public void actionPerformed(ActionEvent e) { LoadingThread loader = new LoadingThread(file, file2, @@ -1570,8 +1624,8 @@ public class JalviewLite extends Applet implements { // do onInit with the JS executor thread new JSFunctionExec(this).executeJavascriptFunction(true, - initjscallback, null, "Calling oninit callback '" - + initjscallback + "'."); + initjscallback, null, + "Calling oninit callback '" + initjscallback + "'."); } catch (Exception e) { System.err.println("Exception when executing _oninit callback '" @@ -1609,6 +1663,7 @@ public class JalviewLite extends Applet implements frame.setTitle(title); frame.addWindowListener(new WindowAdapter() { + @Override public void windowClosing(WindowEvent e) { if (frame instanceof AlignFrame) @@ -1633,6 +1688,7 @@ public class JalviewLite extends Applet implements frame.dispose(); } + @Override public void windowActivated(WindowEvent e) { if (frame instanceof AlignFrame) @@ -1670,6 +1726,7 @@ public class JalviewLite extends Applet implements * @param g * graphics context */ + @Override public void paint(Graphics g) { if (!fileFound) @@ -1679,8 +1736,8 @@ public class JalviewLite extends Applet implements g.fillRect(0, 0, getSize().width, getSize().height); g.setColor(Color.red); g.drawString( - MessageManager.getString("label.jalview_cannot_open_file"), - 5, 15); + MessageManager.getString("label.jalview_cannot_open_file"), 5, + 15); g.drawString("\"" + file + "\"", 5, 30); } else if (embedded) @@ -1721,6 +1778,7 @@ public class JalviewLite extends Applet implements { private boolean running = false; + @Override public void run() { if (running || checkedForJmol) @@ -1739,8 +1797,8 @@ public class JalviewLite extends Applet implements } if (!jmolAvailable) { - System.out - .println("Jmol not available - Using MCview for structures"); + System.out.println( + "Jmol not available - Using MCview for structures"); } } catch (java.lang.ClassNotFoundException ex) { @@ -1751,8 +1809,8 @@ public class JalviewLite extends Applet implements jmolAvailable = false; if (debug) { - System.err - .println("Skipping Jmol check. Will use MCView (probably)"); + System.err.println( + "Skipping Jmol check. Will use MCView (probably)"); } } checkedForJmol = true; @@ -1770,7 +1828,7 @@ public class JalviewLite extends Applet implements /** * State variable: protocol for access to file source */ - String protocol; + DataSourceType protocol; String _file; // alignment file or URL spec @@ -1790,27 +1848,72 @@ public class JalviewLite extends Applet implements * update the protocol state variable for accessing the datasource located * by file. * - * @param file + * @param path * @return possibly updated datasource string */ - public String setProtocolState(String file) + public String resolveFileProtocol(String path) { - if (file.startsWith("PASTE")) + /* + * is it paste data? + */ + if (path.startsWith("PASTE")) { - file = file.substring(5); - protocol = AppletFormatAdapter.PASTE; + protocol = DataSourceType.PASTE; + return path.substring(5); } - else if (inArchive(file)) + + /* + * is it a URL? + */ + if (path.indexOf("://") != -1) { - protocol = AppletFormatAdapter.CLASSLOADER; + protocol = DataSourceType.URL; + return path; } - else + + /* + * try relative to document root + */ + URL documentBase = getDocumentBase(); + String withDocBase = resolveUrlForLocalOrAbsolute(path, documentBase); + if (HttpUtils.isValidUrl(withDocBase)) + { + if (debug) + { + System.err.println("Prepended document base '" + documentBase + + "' to make: '" + withDocBase + "'"); + } + protocol = DataSourceType.URL; + return withDocBase; + } + + /* + * try relative to codebase (if different to document base) + */ + URL codeBase = getCodeBase(); + String withCodeBase = applet.resolveUrlForLocalOrAbsolute(path, + codeBase); + if (!withCodeBase.equals(withDocBase) + && HttpUtils.isValidUrl(withCodeBase)) { - file = addProtocol(file); - protocol = AppletFormatAdapter.URL; + protocol = DataSourceType.URL; + if (debug) + { + System.err.println("Prepended codebase '" + codeBase + + "' to make: '" + withCodeBase + "'"); + } + return withCodeBase; } - dbgMsg("Protocol identified as '" + protocol + "'"); - return file; + + /* + * try locating by classloader; try this last so files in the directory + * are resolved using document base + */ + if (inArchive(path)) + { + protocol = DataSourceType.CLASSLOADER; + } + return path; } public LoadingThread(String file, String file2, JalviewLite _applet) @@ -1820,6 +1923,7 @@ public class JalviewLite extends Applet implements applet = _applet; } + @Override public void run() { LoadJmolThread jmolchecker = new LoadJmolThread(); @@ -1844,7 +1948,8 @@ public class JalviewLite extends Applet implements */ private void startLoading() { - dbgMsg("Loading thread started with:\n>>file\n" + _file + ">>endfile"); + dbgMsg("Loading thread started with:\n>>file\n" + _file + + ">>endfile"); dbgMsg("Loading started."); @@ -1920,12 +2025,13 @@ public class JalviewLite extends Applet implements { return null; } - String resolvedFile = setProtocolState(fileParam); - String format = new IdentifyFile().Identify(resolvedFile, protocol); - dbgMsg("File identified as '" + format + "'"); + String resolvedFile = resolveFileProtocol(fileParam); AlignmentI al = null; try { + FileFormatI format = new IdentifyFile().identify(resolvedFile, + protocol); + dbgMsg("File identified as '" + format + "'"); al = new AppletFormatAdapter().readFile(resolvedFile, protocol, format); if ((al != null) && (al.getHeight() > 0)) @@ -1942,16 +2048,16 @@ public class JalviewLite extends Applet implements // update the focus. currentAlignFrame = newAlignFrame; - if (protocol == AppletFormatAdapter.PASTE) + if (protocol == DataSourceType.PASTE) { - newAlignFrame.setTitle(MessageManager.formatMessage( - "label.sequences_from", new Object[] { applet - .getDocumentBase().toString() })); + newAlignFrame.setTitle(MessageManager + .formatMessage("label.sequences_from", new Object[] + { applet.getDocumentBase().toString() })); } newAlignFrame.statusBar.setText(MessageManager.formatMessage( - "label.successfully_loaded_file", - new Object[] { resolvedFile })); + "label.successfully_loaded_file", new Object[] + { resolvedFile })); return newAlignFrame; } @@ -1974,8 +2080,8 @@ public class JalviewLite extends Applet implements dbgMsg(">>>Dump finished."); } catch (Exception e) { - System.err - .println("Exception when trying to dump the content of the file parameter."); + System.err.println( + "Exception when trying to dump the content of the file parameter."); e.printStackTrace(); } } @@ -1998,8 +2104,8 @@ public class JalviewLite extends Applet implements * related to JAL-434 */ - applet.setAlignPdbStructures(getDefaultParameter("alignpdbfiles", - false)); + applet.setAlignPdbStructures( + getDefaultParameter("alignpdbfiles", false)); /* * @@ -2015,9 +2121,11 @@ public class JalviewLite extends Applet implements Vector pdbs = new Vector(); // create a lazy matcher if we're asked to jalview.analysis.SequenceIdMatcher matcher = (applet - .getDefaultParameter("relaxedidmatch", false)) ? new jalview.analysis.SequenceIdMatcher( - alignFrame.getAlignViewport().getAlignment() - .getSequencesArray()) : null; + .getDefaultParameter("relaxedidmatch", false)) + ? new jalview.analysis.SequenceIdMatcher( + alignFrame.getAlignViewport().getAlignment() + .getSequencesArray()) + : null; String param; do @@ -2046,8 +2154,9 @@ public class JalviewLite extends Applet implements String sequence = applet.getParameter("PDBSEQ"); if (sequence != null) { - seqs = new SequenceI[] { matcher == null ? (Sequence) alignFrame - .getAlignViewport().getAlignment().findName(sequence) + seqs = new SequenceI[] { matcher == null + ? (Sequence) alignFrame.getAlignViewport() + .getAlignment().findName(sequence) : matcher.findIdMatch(sequence) }; } @@ -2055,8 +2164,8 @@ public class JalviewLite extends Applet implements else { param = st.nextToken(); - Vector tmp = new Vector(); - Vector tmp2 = new Vector(); + List tmp = new ArrayList<>(); + List tmp2 = new ArrayList<>(); while (st.hasMoreTokens()) { @@ -2065,39 +2174,23 @@ public class JalviewLite extends Applet implements if (st2.countTokens() > 1) { // This is the chain - tmp2.addElement(st2.nextToken()); + tmp2.add(st2.nextToken()); seqstring = st2.nextToken(); } - tmp.addElement(matcher == null ? (Sequence) alignFrame - .getAlignViewport().getAlignment() - .findName(seqstring) : matcher.findIdMatch(seqstring)); + tmp.add(matcher == null + ? (Sequence) alignFrame.getAlignViewport() + .getAlignment().findName(seqstring) + : matcher.findIdMatch(seqstring)); } - seqs = new SequenceI[tmp.size()]; - tmp.copyInto(seqs); + seqs = tmp.toArray(new SequenceI[tmp.size()]); if (tmp2.size() == tmp.size()) { - chains = new String[tmp2.size()]; - tmp2.copyInto(chains); + chains = tmp2.toArray(new String[tmp2.size()]); } } - param = setProtocolState(param); - - if (// !jmolAvailable - // && - protocol == AppletFormatAdapter.CLASSLOADER && !useXtrnalSviewer) - { - // Re: JAL-357 : the bug isn't a problem if we are using an - // external viewer! - // TODO: verify this Re: - // https://mantis.lifesci.dundee.ac.uk/view.php?id=36605 - // This exception preserves the current behaviour where, even if - // the local pdb file was identified in the class loader - protocol = AppletFormatAdapter.URL; // this is probably NOT - // CORRECT! - param = addProtocol(param); // - } - + param = resolveFileProtocol(param); + // TODO check JAL-357 for files in a jar (CLASSLOADER) pdb.setFile(param); if (seqs != null) @@ -2107,8 +2200,9 @@ public class JalviewLite extends Applet implements if (seqs[i] != null) { ((Sequence) seqs[i]).addPDBId(pdb); - StructureSelectionManager.getStructureSelectionManager( - applet).registerPDBEntry(pdb); + StructureSelectionManager + .getStructureSelectionManager(applet) + .registerPDBEntry(pdb); } else { @@ -2116,8 +2210,8 @@ public class JalviewLite extends Applet implements { // this may not really be a problem but we give a warning // anyway - System.err - .println("Warning: Possible input parsing error: Null sequence for attachment of PDB (sequence " + System.err.println( + "Warning: Possible input parsing error: Null sequence for attachment of PDB (sequence " + i + ")"); } } @@ -2130,8 +2224,7 @@ public class JalviewLite extends Applet implements } else { - pdbs.addElement(new Object[] { pdb, seqs, chains, - new String(protocol) }); + pdbs.addElement(new Object[] { pdb, seqs, chains, protocol }); } } } @@ -2144,7 +2237,8 @@ public class JalviewLite extends Applet implements PDBEntry[] pdb = new PDBEntry[pdbs.size()]; String[][] chains = new String[pdbs.size()][]; String[] protocols = new String[pdbs.size()]; - for (int pdbsi = 0, pdbsiSize = pdbs.size(); pdbsi < pdbsiSize; pdbsi++) + for (int pdbsi = 0, pdbsiSize = pdbs + .size(); pdbsi < pdbsiSize; pdbsi++) { Object[] o = (Object[]) pdbs.elementAt(pdbsi); pdb[pdbsi] = (PDBEntry) o[0]; @@ -2170,21 +2264,23 @@ public class JalviewLite extends Applet implements { boolean result = false; String param = applet.getParameter("jnetfile"); + if (param == null) + { + // jnet became jpred around 2016 + param = applet.getParameter("jpredfile"); + } if (param != null) { try { - param = setProtocolState(param); + param = resolveFileProtocol(param); JPredFile predictions = new JPredFile(param, protocol); JnetAnnotationMaker.add_annotation(predictions, alignFrame.viewport.getAlignment(), 0, false); // false == do not add sequence profile from concise output - SequenceI repseq = alignFrame.viewport.getAlignment() - .getSequenceAt(0); - alignFrame.viewport.getAlignment().setSeqrep(repseq); - ColumnSelection cs = new ColumnSelection(); - cs.hideInsertionsFor(repseq); - alignFrame.viewport.setColumnSelection(cs); + + alignFrame.viewport.getAlignment().setupJPredAlignment(); + alignFrame.alignPanel.fontChanged(); alignFrame.alignPanel.setScrollValues(0, 0); result = true; @@ -2209,7 +2305,7 @@ public class JalviewLite extends Applet implements String param = applet.getParameter("annotations"); if (param != null) { - param = setProtocolState(param); + param = resolveFileProtocol(param); if (new AnnotationFile().annotateAlignmentView(alignFrame.viewport, param, protocol)) @@ -2220,8 +2316,8 @@ public class JalviewLite extends Applet implements } else { - System.err - .println("Annotations were not added from annotation file '" + System.err.println( + "Annotations were not added from annotation file '" + param + "'"); } } @@ -2262,7 +2358,7 @@ public class JalviewLite extends Applet implements param = applet.getParameter("features"); if (param != null) { - param = setProtocolState(param); + param = resolveFileProtocol(param); result = alignFrame.parseFeaturesFile(param, protocol); } @@ -2292,14 +2388,14 @@ public class JalviewLite extends Applet implements { if (debug) { - System.err - .println("Attempting to load T-COFFEE score file from the scoreFile parameter"); + System.err.println( + "Attempting to load T-COFFEE score file from the scoreFile parameter"); } result = alignFrame.loadScoreFile(sScoreFile); if (!result) { - System.err - .println("Failed to parse T-COFFEE parameter as a valid score file ('" + System.err.println( + "Failed to parse T-COFFEE parameter as a valid score file ('" + sScoreFile + "')"); } } catch (Exception e) @@ -2331,7 +2427,7 @@ public class JalviewLite extends Applet implements { try { - treeFile = setProtocolState(treeFile); + treeFile = resolveFileProtocol(treeFile); NewickFile fin = new NewickFile(treeFile, protocol); fin.parse(); @@ -2375,97 +2471,10 @@ public class JalviewLite extends Applet implements return rtn; } catch (Exception ex) { - System.out.println("Exception checking resources: " + f + " " - + ex); + System.out.println("Exception checking resources: " + f + " " + ex); return false; } } - - /** - * If the file is not already in URL format, tries to locate it by resolving - * as a URL. - * - * @param f - * @return - */ - String addProtocol(final String f) - { - if (f.indexOf("://") != -1) - { - // already has URL format - return f; - } - - /* - * Try relative to document base - */ - URL documentBase = getDocumentBase(); - System.err.println("Trying documentbase: " + documentBase); - String url = applet.resolveUrlForLocalOrAbsolute(f, documentBase); - if (urlExists(url)) - { - if (true/* debug */) - { - System.err.println("Prepended document base '" + documentBase - + "' to make: '" + url + "'"); - } - return url; - } - - /* - * Try relative to codebase - */ - URL codeBase = getCodeBase(); - System.err.println("Trying codebase: " + codeBase); - url = applet.resolveUrlForLocalOrAbsolute(f, codeBase); - if (urlExists(url)) - { - if (true/* debug */) - { - System.err.println("Prepended codebase '" + codeBase - + "' to make: '" + url + "'"); - } - return url; - } - - return f; - } - - /** - * Returns true if an input stream can be opened on the specified URL, else - * false. - * - * @param url - * @return - */ - private boolean urlExists(String url) - { - InputStream is = null; - try - { - is = new URL(url).openStream(); - if (is != null) - { - return true; - } - } catch (Exception x) - { - // ignore - } finally - { - if (is != null) - { - try - { - is.close(); - } catch (IOException e) - { - // ignore - } - } - } - return false; - } } /** @@ -2483,8 +2492,8 @@ public class JalviewLite extends Applet implements { return initialAlignFrame; } - System.err - .println("Implementation error: Jalview Applet API cannot work out which AlignFrame to use."); + System.err.println( + "Implementation error: Jalview Applet API cannot work out which AlignFrame to use."); return null; } @@ -2562,8 +2571,8 @@ public class JalviewLite extends Applet implements } if (debug) { - System.err.println("Empty Array from '" + separator - + "' separated List"); + System.err.println( + "Empty Array from '" + separator + "' separated List"); } return null; } @@ -2605,16 +2614,16 @@ public class JalviewLite extends Applet implements } if (debug) { - System.err.println("Returning '" + separator - + "' separated List:\n"); + System.err + .println("Returning '" + separator + "' separated List:\n"); System.err.println(v); } return v.toString(); } if (debug) { - System.err.println("Returning empty '" + separator - + "' separated List\n"); + System.err.println( + "Returning empty '" + separator + "' separated List\n"); } return "" + separator; } @@ -2624,10 +2633,11 @@ public class JalviewLite extends Applet implements * * @see jalview.bin.JalviewLiteJsApi#getFeatureGroups() */ + @Override public String getFeatureGroups() { - String lst = arrayToSeparatorList(getDefaultTargetFrame() - .getFeatureGroups()); + String lst = arrayToSeparatorList( + getDefaultTargetFrame().getFeatureGroups()); return lst; } @@ -2638,6 +2648,7 @@ public class JalviewLite extends Applet implements * jalview.bin.JalviewLiteJsApi#getFeatureGroupsOn(jalview.appletgui.AlignFrame * ) */ + @Override public String getFeatureGroupsOn(AlignFrame alf) { String lst = arrayToSeparatorList(alf.getFeatureGroups()); @@ -2649,10 +2660,11 @@ public class JalviewLite extends Applet implements * * @see jalview.bin.JalviewLiteJsApi#getFeatureGroupsOfState(boolean) */ + @Override public String getFeatureGroupsOfState(boolean visible) { - return arrayToSeparatorList(getDefaultTargetFrame() - .getFeatureGroupsOfState(visible)); + return arrayToSeparatorList( + getDefaultTargetFrame().getFeatureGroupsOfState(visible)); } /* @@ -2662,6 +2674,7 @@ public class JalviewLite extends Applet implements * jalview.bin.JalviewLiteJsApi#getFeatureGroupsOfStateOn(jalview.appletgui * .AlignFrame, boolean) */ + @Override public String getFeatureGroupsOfStateOn(AlignFrame alf, boolean visible) { return arrayToSeparatorList(alf.getFeatureGroupsOfState(visible)); @@ -2673,6 +2686,7 @@ public class JalviewLite extends Applet implements * @see jalview.bin.JalviewLiteJsApi#setFeatureGroupStateOn(jalview.appletgui. * AlignFrame, java.lang.String, boolean) */ + @Override public void setFeatureGroupStateOn(final AlignFrame alf, final String groups, boolean state) { @@ -2694,6 +2708,7 @@ public class JalviewLite extends Applet implements * @see jalview.bin.JalviewLiteJsApi#setFeatureGroupState(java.lang.String, * boolean) */ + @Override public void setFeatureGroupState(String groups, boolean state) { setFeatureGroupStateOn(getDefaultTargetFrame(), groups, state); @@ -2704,6 +2719,7 @@ public class JalviewLite extends Applet implements * * @see jalview.bin.JalviewLiteJsApi#getSeparator() */ + @Override public String getSeparator() { return separator; @@ -2714,6 +2730,7 @@ public class JalviewLite extends Applet implements * * @see jalview.bin.JalviewLiteJsApi#setSeparator(java.lang.String) */ + @Override public void setSeparator(String separator) { if (separator == null || separator.length() < 1) @@ -2758,6 +2775,7 @@ public class JalviewLite extends Applet implements * @see jalview.bin.JalviewLiteJsApi#addPdbFile(jalview.appletgui.AlignFrame, * java.lang.String, java.lang.String, java.lang.String) */ + @Override public boolean addPdbFile(AlignFrame alFrame, String sequenceId, String pdbEntryString, String pdbFile) { @@ -2774,14 +2792,15 @@ public class JalviewLite extends Applet implements return alignPdbStructures; } + @Override public void start() { // callInitCallback(); } - private Hashtable jshashes = new Hashtable(); + private Hashtable jshashes = new Hashtable<>(); - private Hashtable> jsmessages = new Hashtable>(); + private Hashtable> jsmessages = new Hashtable<>(); public void setJsMessageSet(String messageclass, String viewId, String[] colcommands) @@ -2789,7 +2808,7 @@ public class JalviewLite extends Applet implements Hashtable msgset = jsmessages.get(messageclass); if (msgset == null) { - msgset = new Hashtable(); + msgset = new Hashtable<>(); jsmessages.put(messageclass, msgset); } msgset.put(viewId, colcommands); @@ -2807,6 +2826,7 @@ public class JalviewLite extends Applet implements * @see jalview.bin.JalviewLiteJsApi#getJsMessage(java.lang.String, * java.lang.String) */ + @Override public String getJsMessage(String messageclass, String viewId) { Hashtable msgset = jsmessages.get(messageclass); @@ -2874,22 +2894,13 @@ public class JalviewLite extends Applet implements { return defcolour; } - Color col = jalview.schemes.ColourSchemeProperty - .getAWTColorFromName(colprop); + Color col = ColorUtils.parseColourString(colprop); if (col == null) { - try - { - col = new jalview.schemes.UserColourScheme(colprop).findColour('A'); - } catch (Exception ex) - { - System.err.println("Couldn't parse '" + colprop - + "' as a colour for " + colparam); - col = null; - } + System.err.println("Couldn't parse '" + colprop + "' as a colour for " + + colparam); } return (col == null) ? defcolour : col; - } public void openJalviewHelpUrl() @@ -2906,35 +2917,60 @@ public class JalviewLite extends Applet implements * form a complete URL given a path to a resource and a reference location on * the same server * - * @param url + * @param targetPath * - an absolute path on the same server as localref or a document * located relative to localref * @param localref * - a URL on the same server as url * @return a complete URL for the resource located by url */ - private String resolveUrlForLocalOrAbsolute(String url, URL localref) + private String resolveUrlForLocalOrAbsolute(String targetPath, + URL localref) { - String codebase = localref.toString(); - if (url.indexOf("/") == 0) + String resolvedPath = ""; + if (targetPath.startsWith("/")) { + String codebase = localref.toString(); String localfile = localref.getFile(); - url = codebase.substring(0, codebase.length() - localfile.length()) - + url; + resolvedPath = codebase.substring(0, + codebase.length() - localfile.length()) + targetPath; + return resolvedPath; + } + + /* + * get URL path and strip off any trailing file e.g. + * www.jalview.org/examples/index.html#applets?a=b is trimmed to + * www.jalview.org/examples/ + */ + String urlPath = localref.toString(); + String directoryPath = urlPath; + int lastSeparator = directoryPath.lastIndexOf("/"); + if (lastSeparator > 0) + { + directoryPath = directoryPath.substring(0, lastSeparator + 1); + } + + if (targetPath.startsWith("/")) + { + /* + * construct absolute URL to a file on the server - this is not allowed? + */ + // String localfile = localref.getFile(); + // resolvedPath = urlPath.substring(0, + // urlPath.length() - localfile.length()) + // + targetPath; + resolvedPath = directoryPath + targetPath.substring(1); } else { - url = localref + url; + resolvedPath = directoryPath + targetPath; } - if (true/* debug */) + if (debug) { - System.err.println("URL: " + localref.toString()); - System.err.println("URL.getFile: " + localref.getFile()); - System.err.println("URL.getPath: " + localref.getPath()); - System.err.println("URL.getQuery: " + localref.getQuery()); - System.err.println("resolveUrlForLocalOrAbsolute returning " + url); + System.err.println( + "resolveUrlForLocalOrAbsolute returning " + resolvedPath); } - return url; + return resolvedPath; } /** @@ -2954,17 +2990,15 @@ public class JalviewLite extends Applet implements // form valid URL // Should really use docbase, not codebase. URL prepend; - url = resolveUrlForLocalOrAbsolute( - url, - prepend = getDefaultParameter("resolvetocodebase", false) ? getDocumentBase() - : getCodeBase()); + url = resolveUrlForLocalOrAbsolute(url, + prepend = getDefaultParameter("resolvetocodebase", false) + ? getCodeBase() + : getDocumentBase()); if (debug) { - System.err - .println("Show url (prepended " - + prepend - + " - toggle resolvetocodebase if code/docbase resolution is wrong): " - + url); + System.err.println("Show url (prepended " + prepend + + " - toggle resolvetocodebase if code/docbase resolution is wrong): " + + url); } } else