<classpathentry kind="lib" path="lib/jetty-http-9.2.10.v20150310.jar"/>
<classpathentry kind="lib" path="lib/jetty-io-9.2.10.v20150310.jar"/>
<classpathentry kind="lib" path="lib/java-json.jar"/>
- <classpathentry kind="lib" path="lib/Jmol-14.2.14_2015.06.11.jar"/>
+ <classpathentry kind="lib" path="lib/Jmol-14.6.4_2016.10.26.jar"/>
<classpathentry kind="con" path="org.testng.TESTNG_CONTAINER"/>
<classpathentry kind="lib" path="lib/biojava-core-4.1.0.jar"/>
<classpathentry kind="lib" path="lib/biojava-ontology-4.1.0.jar"/>
The people listed below are 'The Jalview Authors', who collectively
own the copyright to the Jalview source code and permit it to be released under GPL.
-This is the authoritative list. It was correct on 6th Oct 2016.
+This is the authoritative list. It was correct on 23rd November 2016.
If you are releasing a version of Jalview, please make sure any
statement of authorship in the GUI reflects the list shown here.
In particular, check the resources/authors.props file !
Jim Procter
-Andrew Waterhouse
Mungo Carstairs
Tochukwu 'Charles' Ofoegbu
+Kira Mourao
+Andrew Waterhouse
Jan Engelhardt
Lauren Lui
Anne Menard
-jalview.release=Release_2_10_0_Branch
-jalview.version=2.10.0b1
+jalview.release=releases/Release_2_10_1_Branch
+jalview.version=2.10.1
ext.edu.ucsf.rbvi.strucviz2 includes sources originally developed by Scooter Morris and Nadezhda Doncheva for the Cytoscape StructureViz2 plugin. It is released under the Berkley license and we hereby acknowledge its original copyright is held by the UCSF Computer Graphics Laboratory
and the software was developed with support by the NIH National Center for Research Resources, grant P41-RR01081.
+
+ jalview.ext.android includes code taken from the Android Open Source Project (https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/util).
+ The Apache 2.0 Licence (http://www.apache.org/licenses/LICENSE-2.0) is acknowledged in the source code.
-Licencing information for each library is given below:
+Licensing information for each library is given below:
JGoogleAnalytics_0.3.jar APL 2.0 License - http://code.google.com/p/jgoogleanalytics/
-Jmol-14.2.14_2015.06.11.jar GPL/LGPLv2 http://sourceforge.net/projects/jmol/files/
+Jmol-14.6.4_2016.10.26.jar GPL/LGPLv2 http://sourceforge.net/projects/jmol/files/
VARNAv3-93.jar GPL licenced software by K�vin Darty, Alain Denise and Yann Ponty. http://varna.lri.fr
activation.jar
apache-mime4j-0.6.jar
examples/javascript/deployJava.js : http://java.com/js/deployJava.js
examples/javascript/jquery*.js : BSD license
examples/javascript/jshashtable-2.1.js : Apache License
+examples/javascript/facebox-1.3.js : MTI License - http://www.opensource.org/licenses/mit-license.php
<property name="packageDir" value="dist" />
<property name="outputJar" value="jalview.jar" />
<!-- Jalview Applet JMol Jar Dependency -->
- <property name="jmolJar" value="JmolApplet-14.2.14_2015.06.11.jar" />
+ <property name="jmolJar" value="JmolApplet-14.6.4_2016.10.26.jar" />
<property name="varnaJar" value="VARNAv3-93.jar" />
<property name="jsoup" value="jsoup-1.8.1.jar" />
<property name="jsonSimple" value="json_simple-1.1.jar" />
<!-- temporary copy of source to update timestamps -->
<copy todir="_sourcedist">
<fileset dir=".">
+ <exclude name=".*" />
+ <exclude name="**/.*" />
+ <exclude name="*.class" />
+ <exclude name="**/*.class" />
<include name="LICENSE" />
<include name="README" />
<include name="build.xml" />
<exclude name="utils/InstallAnywhere/**Build.iap_xml" />
<exclude name="utils/InstallAnywhere/**Build*/**" />
<exclude name="utils/InstallAnywhere/**Build*/**" />
+ <exclude name="utils/InstallAnywhere/.build*.*/**" />
<exclude name="utils/InstallAnywhere/**locale*" />
<exclude name="utils/InstallAnywhere/**locale*/**" />
+ <exclude name="utils/InstallAnywhere/**locale*/**" />
<include name="${schemaDir}/**/*" />
<include name="utils/**/*" />
<include name="${docDir}/**/*" />
<td>Main Jalview Applet Jar</td>
</tr>
<tr>
- <td><a href="http://www.jalview.org/builds/develop/examples/JmolApplet-14.2.14_2015.06.11.jar">JmolApplet-14.2.14_2015.06.11.jar</a> </td>
+ <td><a href="http://www.jalview.org/builds/develop/examples/JmolApplet-14.6.4_2016.10.26.jar">JmolApplet-14.6.4_2016.10.26.jar</a> </td>
<td>Jmol Applet Jar</td>
</tr>
<tr>
<p>To run Jalview applet in your web page download the Jars listed above. The snippet below shows a minimal code for embedding Jalview applet into a web page.
<pre><code>
-<applet code="jalview.bin.JalviewLite" width="756" height="560" archive="jalviewApplet.jar,JmolApplet-14.2.14_2015.06.11.jar,java-json.jar,json_simple-1.1.jar">
+<applet code="jalview.bin.JalviewLite" width="756" height="560" archive="jalviewApplet.jar,JmolApplet-14.6.4_2016.10.26.jar,java-json.jar,json_simple-1.1.jar">
<param name="permissions" value="sandbox" />
<param name="file" value="plantfdx.fa" />
<param name="features" value="plantfdx.features" />
<td width="10%" valign="center">
<applet
code="jalview.bin.JalviewLite" width="140" height="35"
- archive="jalviewApplet.jar,JmolApplet-14.2.14_2015.06.11.jar,java-json.jar,json_simple-1.1.jar">
+ archive="jalviewApplet.jar,JmolApplet-14.6.4_2016.10.26.jar,java-json.jar,json_simple-1.1.jar">
<param name="permissions" value="sandbox"/>
<param name="file" value="uniref50.fa"/>
<param name="treeFile" value="ferredoxin.nw"/>
<tr>
<td width="10%" valign="center"><applet
code="jalview.bin.JalviewLite" width="140" height="35"
- archive="jalviewApplet.jar,JmolApplet-14.2.14_2015.06.11.jar,java-json.jar,json_simple-1.1.jar">
+ archive="jalviewApplet.jar,JmolApplet-14.6.4_2016.10.26.jar,java-json.jar,json_simple-1.1.jar">
<param name="permissions" value="sandbox"/>
<param name="file" value="uniref50.fa"/>
<param name="features" value="exampleFeatures.txt"/>
<tr>
<td width="10%" valign="center"><applet
code="jalview.bin.JalviewLite" width="140" height="35"
- archive="jalviewApplet.jar,JmolApplet-14.2.14_2015.06.11.jar,java-json.jar,json_simple-1.1.jar">
+ archive="jalviewApplet.jar,JmolApplet-14.6.4_2016.10.26.jar,java-json.jar,json_simple-1.1.jar">
<param name="permissions" value="sandbox"/>
<param name="file" value="uniref50.fa"/>
<param name="showFullId" value="false"/>
<tr>
<td width="10%" valign="center"><applet
code="jalview.bin.JalviewLite" width="140" height="35"
- archive="jalviewApplet.jar,JmolApplet-14.2.14_2015.06.11.jar,java-json.jar,json_simple-1.1.jar">
+ archive="jalviewApplet.jar,JmolApplet-14.6.4_2016.10.26.jar,java-json.jar,json_simple-1.1.jar">
<param name="permissions" value="sandbox"/>
<param name="file" value="jpred_msa.fasta"/>
<param name="jnetfile" value="jpred_msa.seq.concise"/>
<tr>
<td width="10%" valign="center"><applet
code="jalview.bin.JalviewLite" width="140" height="35"
- archive="jalviewApplet.jar,JmolApplet-14.2.14_2015.06.11.jar,java-json.jar,json_simple-1.1.jar">
+ archive="jalviewApplet.jar,JmolApplet-14.6.4_2016.10.26.jar,java-json.jar,json_simple-1.1.jar">
<param name="permissions" value="sandbox"/>
<param name="file" value="RF00031_folded.stk"/>
<param name="showFullId" value="false"/>
<td width="10%" valign="center">
<applet
code="jalview.bin.JalviewLite" width="140" height="35"
- archive="jalviewApplet.jar,JmolApplet-14.2.14_2015.06.11.jar,java-json.jar,json_simple-1.1.jar">
+ archive="jalviewApplet.jar,JmolApplet-14.6.4_2016.10.26.jar,java-json.jar,json_simple-1.1.jar">
<param name="permissions" value="sandbox"/>
<param name="file2" value="estrogenReceptorCdna_frag.fa"/>
<param name="file" value="estrogenReceptorProtein_frag.fa"/>
<a href="view-source:http://www.jalview.org/builds/develop/examples/embedded.html" target="_blank">View the source code for this example here</a> (If the link doesn't work on your browser try going to <a href="http://www.jalview.org/builds/develop/examples/embedded.html">this page</a> and viewing the page source manually).<p>
<applet
code="jalview.bin.JalviewLite" width="756" height="560"
- archive="jalviewApplet.jar,JmolApplet-14.2.14_2015.06.11.jar,java-json.jar,json_simple-1.1.jar">
+ archive="jalviewApplet.jar,JmolApplet-14.6.4_2016.10.26.jar,java-json.jar,json_simple-1.1.jar">
<param name="permissions" value="sandbox"/>
<param name="file" value="plantfdx.fa"/>
<param name="features" value="plantfdx.features"/>
<script language="JavaScript">
// instead of this, we use a custom JmolApplet spec
// jmolInitialize('jmol');
-jmolInitialize("","JmolApplet-14.2.14_2015.06.11.jar");
+jmolInitialize("","JmolApplet-14.6.4_2016.10.26.jar");
</script>
<script>
var loglevel=1;
var _jvA=new Object();
_jvA.attributes = {
code : 'jalview.bin.JalviewLite',
- archive : 'jalviewApplet.jar,JmolApplet-14.2.14_2015.06.11.jar,java-json.jar,json_simple-1.1.jar',
+ archive : 'jalviewApplet.jar,JmolApplet-14.6.4_2016.10.26.jar,java-json.jar,json_simple-1.1.jar',
width : '500',
height : '350',
mayscript : 'True',
</div>
<div>
<applet
- code="jalview.bin.JalviewLite" width="500" height="350" id="jvA" mayscript="mayscript" archive="jalviewApplet.jar,JmolApplet-14.2.14_2015.06.11.jar,java-json.jar,json_simple-1.1.jar">
+ code="jalview.bin.JalviewLite" width="500" height="350" id="jvA" mayscript="mayscript" archive="jalviewApplet.jar,JmolApplet-14.6.4_2016.10.26.jar,java-json.jar,json_simple-1.1.jar">
<param name="permissions" value="sandbox"/>
<param name="java_arguments" value="-Xmx256m"/>
<param name="externalstructureviewer" value="true"/>
<a href="view-source:http://www.jalview.org/builds/develop/examples/formComplete.html" target="_blank">View the source here to see how it has been done</a> (If the link doesn't work on your browser try going to <a href="http://www.jalview.org/builds/develop/examples/formComplete.html">this page</a> and viewing the page source manually).<br/>
<a name="api">View the full <a href="javascript:doSubmit('jalviewLiteJs')">JalviewLite API documentation</a>.</a>
<applet code="jalview.bin.JalviewLite" width="0" height="0"
- archive="jalviewApplet.jar,JmolApplet-14.2.14_2015.06.11.jar,java-json.jar,json_simple-1.1.jar" name="Jalview">
+ archive="jalviewApplet.jar,JmolApplet-14.6.4_2016.10.26.jar,java-json.jar,json_simple-1.1.jar" name="Jalview">
<param name="file" value="plantfdx.fa"/>
<param name="features" value="plantfdx.features"/>
String getFeatureInput(){
def swingBuilder = new SwingBuilder();
- def response = JOptionPane.showInputDialog(
- null, 'Select columns by feature by type','Enter type of feature', JOptionPane.OK_OPTION)
+ def response = JvOptionPane.showInputDialog(
+ null, 'Select columns by feature by type','Enter type of feature', JvOptionPane.OK_OPTION)
return response
}
\ No newline at end of file
--- /dev/null
+/*
+ * Facebox (for jQuery)
+ * version: 1.2 (05/05/2008)
+ * @requires jQuery v1.2 or later
+ *
+ * Examples at http://famspam.com/facebox/
+ *
+ * Licensed under the MIT:
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * Copyright 2007, 2008 Chris Wanstrath [ chris@ozmm.org ]
+ *
+ * Usage:
+ *
+ * jQuery(document).ready(function() {
+ * jQuery('a[rel*=facebox]').facebox()
+ * })
+ *
+ * <a href="#terms" rel="facebox">Terms</a>
+ * Loads the #terms div in the box
+ *
+ * <a href="terms.html" rel="facebox">Terms</a>
+ * Loads the terms.html page in the box
+ *
+ * <a href="terms.png" rel="facebox">Terms</a>
+ * Loads the terms.png image in the box
+ *
+ *
+ * You can also use it programmatically:
+ *
+ * jQuery.facebox('some html')
+ * jQuery.facebox('some html', 'my-groovy-style')
+ *
+ * The above will open a facebox with "some html" as the content.
+ *
+ * jQuery.facebox(function($) {
+ * $.get('blah.html', function(data) { $.facebox(data) })
+ * })
+ *
+ * The above will show a loading screen before the passed function is called,
+ * allowing for a better ajaxy experience.
+ *
+ * The facebox function can also display an ajax page, an image, or the contents of a div:
+ *
+ * jQuery.facebox({ ajax: 'remote.html' })
+ * jQuery.facebox({ ajax: 'remote.html' }, 'my-groovy-style')
+ * jQuery.facebox({ image: 'stairs.jpg' })
+ * jQuery.facebox({ image: 'stairs.jpg' }, 'my-groovy-style')
+ * jQuery.facebox({ div: '#box' })
+ * jQuery.facebox({ div: '#box' }, 'my-groovy-style')
+ *
+ * Want to close the facebox? Trigger the 'close.facebox' document event:
+ *
+ * jQuery(document).trigger('close.facebox')
+ *
+ * Facebox also has a bunch of other hooks:
+ *
+ * loading.facebox
+ * beforeReveal.facebox
+ * reveal.facebox (aliased as 'afterReveal.facebox')
+ * init.facebox
+ * afterClose.facebox
+ *
+ * Simply bind a function to any of these hooks:
+ *
+ * $(document).bind('reveal.facebox', function() { ...stuff to do after the facebox and contents are revealed... })
+ *
+ */
+(function($) {
+ $.facebox = function(data, klass) {
+ $.facebox.loading()
+
+ if (data.ajax) fillFaceboxFromAjax(data.ajax, klass)
+ else if (data.image) fillFaceboxFromImage(data.image, klass)
+ else if (data.div) fillFaceboxFromHref(data.div, klass)
+ else if ($.isFunction(data)) data.call($)
+ else $.facebox.reveal(data, klass)
+ }
+
+ /*
+ * Public, $.facebox methods
+ */
+
+ $.extend($.facebox, {
+ settings: {
+ opacity : 0.2,
+ overlay : true,
+ loadingImage : 'https://raw.githubusercontent.com/jalview/biojson/gh-pages/images/loading.gif',
+ closeImage : 'https://raw.githubusercontent.com/jalview/biojson/gh-pages/images/cancel.png',
+ imageTypes : [ 'png', 'jpg', 'jpeg', 'gif' ],
+ faceboxHtml : '\
+ <div id="facebox" style="display:none;"> \
+ <div class="popup"> \
+ <div class="content"> \
+ </div> \
+ <a href="#" class="close"><img src="https://raw.githubusercontent.com/jalview/biojson/gh-pages/images/cancel.png" title="close" class="close_image" /></a> \
+ </div> \
+ </div>'
+ },
+
+ loading: function() {
+ init()
+ if ($('#facebox .loading').length == 1) return true
+ showOverlay()
+
+ $('#facebox .content').empty()
+ $('#facebox .body').children().hide().end().
+ append('<div class="loading"><img src="'+$.facebox.settings.loadingImage+'"/></div>')
+
+ $('#facebox').css({
+ top: getPageScroll()[1] + (getPageHeight() / 10),
+ left: $(window).width() / 2 - 205
+ }).show()
+
+ $(document).bind('keydown.facebox', function(e) {
+ if (e.keyCode == 27) $.facebox.close()
+ return true
+ })
+ $(document).trigger('loading.facebox')
+ },
+
+ reveal: function(data, klass) {
+ $(document).trigger('beforeReveal.facebox')
+ if (klass) $('#facebox .content').addClass(klass)
+ $('#facebox .content').append('<pre><code>'+JSON.stringify(JSON.parse(data),null,4)+'</pre></code>')
+ $('#facebox .loading').remove()
+ $('#facebox .body').children().fadeIn('normal')
+ $('#facebox').css('left', $(window).width() / 2 - ($('#facebox .popup').width() / 2))
+ $(document).trigger('reveal.facebox').trigger('afterReveal.facebox')
+ },
+
+ close: function() {
+ $(document).trigger('close.facebox')
+ return false
+ }
+ })
+
+ /*
+ * Public, $.fn methods
+ */
+
+ $.fn.facebox = function(settings) {
+ if ($(this).length == 0) return
+
+ init(settings)
+
+ function clickHandler() {
+ $.facebox.loading(true)
+
+ // support for rel="facebox.inline_popup" syntax, to add a class
+ // also supports deprecated "facebox[.inline_popup]" syntax
+ var klass = this.rel.match(/facebox\[?\.(\w+)\]?/)
+ if (klass) klass = klass[1]
+
+ fillFaceboxFromHref(this.href, klass)
+ return false
+ }
+
+ return this.bind('click.facebox', clickHandler)
+ }
+
+ /*
+ * Private methods
+ */
+
+ // called one time to setup facebox on this page
+ function init(settings) {
+ if ($.facebox.settings.inited) return true
+ else $.facebox.settings.inited = true
+
+ $(document).trigger('init.facebox')
+ makeCompatible()
+
+ var imageTypes = $.facebox.settings.imageTypes.join('|')
+ $.facebox.settings.imageTypesRegexp = new RegExp('\.(' + imageTypes + ')$', 'i')
+
+ if (settings) $.extend($.facebox.settings, settings)
+ $('body').append($.facebox.settings.faceboxHtml)
+
+ var preload = [ new Image(), new Image() ]
+ preload[0].src = $.facebox.settings.closeImage
+ preload[1].src = $.facebox.settings.loadingImage
+
+ $('#facebox').find('.b:first, .bl').each(function() {
+ preload.push(new Image())
+ preload.slice(-1).src = $(this).css('background-image').replace(/url\((.+)\)/, '$1')
+ })
+
+ $('#facebox .close').click($.facebox.close)
+ $('#facebox .close_image').attr('src', $.facebox.settings.closeImage)
+ }
+
+ // getPageScroll() by quirksmode.com
+ function getPageScroll() {
+ var xScroll, yScroll;
+ if (self.pageYOffset) {
+ yScroll = self.pageYOffset;
+ xScroll = self.pageXOffset;
+ } else if (document.documentElement && document.documentElement.scrollTop) { // Explorer 6 Strict
+ yScroll = document.documentElement.scrollTop;
+ xScroll = document.documentElement.scrollLeft;
+ } else if (document.body) {// all other Explorers
+ yScroll = document.body.scrollTop;
+ xScroll = document.body.scrollLeft;
+ }
+ return new Array(xScroll,yScroll)
+ }
+
+ // Adapted from getPageSize() by quirksmode.com
+ function getPageHeight() {
+ var windowHeight
+ if (self.innerHeight) { // all except Explorer
+ windowHeight = self.innerHeight;
+ } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
+ windowHeight = document.documentElement.clientHeight;
+ } else if (document.body) { // other Explorers
+ windowHeight = document.body.clientHeight;
+ }
+ return windowHeight
+ }
+
+ // Backwards compatibility
+ function makeCompatible() {
+ var $s = $.facebox.settings
+
+ $s.loadingImage = $s.loading_image || $s.loadingImage
+ $s.closeImage = $s.close_image || $s.closeImage
+ $s.imageTypes = $s.image_types || $s.imageTypes
+ $s.faceboxHtml = $s.facebox_html || $s.faceboxHtml
+ }
+
+ // Figures out what you want to display and displays it
+ // formats are:
+ // div: #id
+ // image: blah.extension
+ // ajax: anything else
+ function fillFaceboxFromHref(href, klass) {
+ // div
+ if (href.match(/#/)) {
+ var url = window.location.href.split('#')[0]
+ var target = href.replace(url,'')
+ if (target == '#') return
+ $.facebox.reveal($(target).html(), klass)
+
+ // image
+ } else if (href.match($.facebox.settings.imageTypesRegexp)) {
+ fillFaceboxFromImage(href, klass)
+ // ajax
+ } else {
+ fillFaceboxFromAjax(href, klass)
+ }
+ }
+
+ function fillFaceboxFromImage(href, klass) {
+ var image = new Image()
+ image.onload = function() {
+ $.facebox.reveal('<div class="image"><img src="' + image.src + '" /></div>', klass)
+ }
+ image.src = href
+ }
+
+ function fillFaceboxFromAjax(href, klass) {
+ $.get(href, function(data) { $.facebox.reveal(data, klass) })
+ }
+
+ function skipOverlay() {
+ return $.facebox.settings.overlay == false || $.facebox.settings.opacity === null
+ }
+
+ function showOverlay() {
+ if (skipOverlay()) return
+
+ if ($('#facebox_overlay').length == 0)
+ $("body").append('<div id="facebox_overlay" class="facebox_hide"></div>')
+
+ $('#facebox_overlay').hide().addClass("facebox_overlayBG")
+ .css('opacity', $.facebox.settings.opacity)
+ .click(function() { $(document).trigger('close.facebox') })
+ .fadeIn(200)
+ return false
+ }
+
+ function hideOverlay() {
+ if (skipOverlay()) return
+
+ $('#facebox_overlay').fadeOut(200, function(){
+ $("#facebox_overlay").removeClass("facebox_overlayBG")
+ $("#facebox_overlay").addClass("facebox_hide")
+ $("#facebox_overlay").remove()
+ })
+
+ return false
+ }
+
+ /*
+ * Bindings
+ */
+
+ $(document).bind('close.facebox', function() {
+ $(document).unbind('keydown.facebox')
+ $('#facebox').fadeOut(function() {
+ $('#facebox .content').removeClass().addClass('content')
+ $('#facebox .loading').remove()
+ $(document).trigger('afterClose.facebox')
+ })
+ hideOverlay()
+ })
+
+})(jQuery);
</SCRIPT>
<form name="Form1">
<applet name="JalviewLite" code="jalview.bin.JalviewLite"
-archive="jalviewApplet.jar,JmolApplet-14.2.14_2015.06.11.jar,java-json.jar,json_simple-1.1.jar" width="0" height="0">
+archive="jalviewApplet.jar,JmolApplet-14.6.4_2016.10.26.jar,java-json.jar,json_simple-1.1.jar" width="0" height="0">
<param name="debug" value="true"/>
<param name="showbutton" value="false"/>
</applet>
<applet
- code="jalview.bin.JalviewLite" width="800" height="300" id="jvapp" mayscript="True" scriptable="True" archive="jalviewApplet.jar,JmolApplet-14.2.14_2015.06.11.jar,java-json.jar,json_simple-1.1.jar">
+ code="jalview.bin.JalviewLite" width="800" height="300" id="jvapp" mayscript="True" scriptable="True" archive="jalviewApplet.jar,JmolApplet-14.6.4_2016.10.26.jar,java-json.jar,json_simple-1.1.jar">
<param name="oninit" value="lJvApp"/>
<param name="automaticScrolling" value="true"/>
<param name="file" value="plantfdx.fa"/>
<applet
- code="jalview.bin.JalviewLite" width="800" height="300" id="jvfollower" mayscript="True" scriptable="True" archive="jalviewApplet.jar,JmolApplet-14.2.14_2015.06.11.jar,java-json.jar,json_simple-1.1.jar">
+ code="jalview.bin.JalviewLite" width="800" height="300" id="jvfollower" mayscript="True" scriptable="True" archive="jalviewApplet.jar,JmolApplet-14.6.4_2016.10.26.jar,java-json.jar,json_simple-1.1.jar">
<param name="oninit" value="lJvFollow"/>
<param name="file" value="plantfdx.fa"/>
<param name="annotations" value="plantfdx.annotations"/>
<mapID target="home" url="html/index.html" />
<mapID target="new" url="html/whatsNew.html"/>
- <mapID target="release" url="html/releases.html#Jalview.2.10.0b1"/>
+ <mapID target="release" url="html/releases.html#Jalview.2.10.1"/>
<mapID target="alannotation" url="html/features/annotation.html"/>
<mapID target="keys" url="html/keys.html"/>
<mapID target="newkeys" url="html/features/newkeystrokes.html"/>
<!-- DO NOT WRAP THESE LINES - help2Website relies on each item being on one line! -->
<tocitem text="Jalview Documentation" target="home" expand="true">
<tocitem text="What's new" target="new" expand="true">
- <tocitem text="Retrieval from ENSEMBL" target="ensemblfetch" />
- <tocitem text="UniProt Free Text Search" target="uniprotfetcher" />
- <tocitem text="SIFTS for mapping PDB structures to UniProt" target="siftsmapping" />
<tocitem text="Latest Release Notes" target="release"/>
</tocitem>
<strong>Colouring above a percentage identity threshold</strong>
</p>
<p>Selecting this option causes the colour scheme to be applied to
- only those residues that occur in that column more than a certain
+ only those residues that occur in that column at least a certain
percentage of the time. For instance, selecting the threshold to be
- 100 will only colour those columns with 100% identity.</p>
- <p>To be coloured, a residue must match the consensus (most commonly occurring) residue for the column (or joint equal consensus).</p>
+ 100 will only colour those columns with 100% identity, and selecting 50 will shade residues appearing in least 50% of the rows (or sequences) in each column.</p>
<p>The percentage calculation may include or exclude gaps in the column, depending on the option selected for the <a href="../calculations/consensus.html">consensus calculation</a>.</p>
- <p>With a threshold of 0, colouring is unchanged (including non-consensus residues).</p>
+ <p>With a threshold of 0, colouring is unchanged.</p>
</body>
</html>
number and chain code ([RES]Num:Chain). Moving the mouse over an
associated residue in an alignment window highlights the associated
atoms in the displayed structures. When residues are selected in the
- Chimera window, they are highlighted on the alignment. For
- comprehensive details of Chimera's commands, refer to the tool's
- Help menu.
+ Chimera window, they are highlighted on the alignment.
+ <p>For comprehensive details of Chimera's commands, refer to the
+ tool's Help menu.</p>
+ <p>
+ <strong>Selecting residues in Jalview from Chimera</strong><br />
+ When a selection is highlighted in a Jalview window, use the
+ <em>Select→Select Highlighted Region</em> or press <em>B</em>
+ to add the mapped positions to the alignment window's column
+ selection.<br /> <em>Hint: Use your machine's 'switch
+ application' key combination (Alt-Tab on Windows and Linux,
+ Cmd-Tab on OSX) to quickly switch between UCSF Chimera and Jalview
+ before pressing 'B' to select highlighted regions.</em>
+ </p>
<p>
Basic screen operations (see <a
href="http://www.cgl.ucsf.edu/chimera/current/docs/UsersGuide/mouse.html">Chimera
<td><div align="left">Create Scalable Vector Graphics
file FILE from alignment.</div></td>
</tr>
+ <tr>
+ <td><div align="center">-biojsMSA FILE</div></td>
+ <td><div align="left">Write an HTML page to display
+ the alignment with the <a href="biojsmsa.html">
+ BioJS MSAviewer MSA</a>
+ </div>
+ </td>
+ </tr>
</table>
</body>
</html>
based structure superposition was added in Jalview 2.6</em>
</p>
<p>
- <strong>Controls</strong><br> The structure is by default
- rendered as a ribbon diagram. Moving the mouse over the structure
- brings up tooltips giving the residue name, PDB residue number and
- chain code, atom name and number
- ([RES]Num:Chain.AtomName#AtomNumber). If a mapping exists to a
- residue in any associated sequences, then this will be highlighted
- in each one's alignment window. The converse also occurs - moving
- the mouse over an associated residue in an alignment window
- highlights the associated atoms in the displayed structures.
+ <strong>Controls</strong><br> The structure is by default rendered
+ as a ribbon diagram. Moving the mouse over the structure brings up
+ tooltips giving the residue name, PDB residue number and chain code,
+ atom name and number ([RES]Num:Chain.AtomName#AtomNumber). If a
+ mapping exists to a residue in any associated sequences, then this
+ will be highlighted in each one's alignment window. The converse
+ also occurs - moving the mouse over an associated residue in an
+ alignment window highlights the associated atoms in the displayed
+ structures. Press B or use
+ <em>Select→Select Highlighted columns</em> from any linked
+ alignment window to mark the columns highlighted after mousing over
+ the structure.
</p>
<p>Selecting a residue highlights its associated sequence residue
and alpha carbon location. Double clicking an atom allows distances
Settings" under the "View" menu to change the
visibility and colour of the new sequence feature.</p>
<p>
+ <p>
+ <strong>Selecting regions from Search Results</strong>
+ </p>
+ <p>
+ Press 'B' or use the <em>Select Highlighted Columns</em> option from
+ the alignment window's select menu to add columns containing
+ highlighted search results to the alignment window's column
+ selection. Alt-'B' will add all but the highlighted columns, and
+ Ctrl (or Cmd) -B will toggle the column selection for the
+ highlighted region.
+ </p>
+ <p>
+
<strong>A quick Regular Expression Guide</strong>
</p>
<p>A regular expression is not just a simple text query - although
Much of the information retrieved by Jalview about a sequence is
visualized on the alignment. Often, however, there are a huge number
of ontology terms, cross-references, links to publications and other
- kinds of data shown in the sequence ID tooltip that cannot be
- examined. In this case, you can view and export the information
- shown in a sequence's ID tooltip by right-clicking and selecting the
+ kinds of data associated with a sequence, and only some of these are shown in
+ sequence ID tooltip. To show the full set of annotation and database links for
+ a sequence, right-click and select the
<strong>"<em>(sequence's name)</em></em>→Sequence
Details ..."
</strong> entry from the <a href="../menus/popupMenu.html">pop-up menu</a>.
</p>
<p>
<strong>Annotation Reports for a range of sequences</strong><br />
- If you would like to view the tooltips for a number of sequences,
+ If you would like to view database and metadata for a number of sequences,
simply select them all and then use the <strong>Selection→Sequence
Details ...</strong> entry in the <a href="../menus/popupMenu.html">pop-up
menu</a>.
<td>Both</td>
<td>Launches the search window</td>
</tr>
+ <tr><td><strong>B</strong></td>
+ <td>Both</td>
+ <td>Add highlighted columns to current column selection</td>
+ </tr>
+ <tr><td><strong>Alt 'B'</strong></td>
+ <td>Both</td>
+ <td>Add all but the currently highlighted columns to current selection</td>
+ </tr>
+ <tr><td><strong>Control 'B'</strong></td>
+ <td>Both</td>
+ <td>Toggle the column selection marks for the currently highlighted
+ columns (or all others if Alt is also pressed)</td>
+ </tr>
<tr>
<td><strong>H</strong></td>
<td>Both</td>
Columns by Annotation</a></strong> <br /> <em>Select or Hide
columns in the alignment according to secondary structure,
labels and values shown in alignment annotation rows. </em></li>
+ <li><strong>Select Highlighted Columns</strong> <br /> <em>Selects
+ the columns currently highlighted as a result of a find, mouse
+ over, or selection event from a linked structure viewer or other
+ application. Modifiers will work on some platforms: ALT will add
+ all but the highlighted set to the column selection, and CTRL
+ (or META) will toggle the selection. </em></li>
</ul></li>
<li><strong>View</strong>
<ul>
Columns by Annotation</a></strong> <br /> <em>Select or Hide columns
in the alignment according to secondary structure, labels and
values shown in alignment annotation rows. </em></li>
+ <li><strong>Select Highlighted Columns</strong> <br /> <em>Selects
+ the columns currently highlighted as a result of a find, mouse
+ over, or selection event from a linked structure viewer or other
+ application. Modifiers will work on some platforms: ALT will add
+ all but the highlighted set to the column selection, and CTRL
+ (or META) will toggle the selection. </em></li>
</ul>
</body>
</html>
<tr>
<td width="60" nowrap>
<div align="center">
+ <strong><a name="Jalview.2.10.1">2.10.1</a><br />
+ <em>29/11/2016</em></strong>
+ </div>
+ </td>
+ <td><div align="left">
+ <em>General</em>
+ <ul>
+ <li>
+ <!-- JAL-98 -->Improved memory usage: sparse arrays used
+ for all consensus calculations
+ </li>
+ <li>
+ <!-- JAL-2177 -->Jmol updated to version 14.6.4 (released 3rd Oct 2016)
+ </li>
+ <li>Updated Jalview's Certum code signing certificate
+ for 2016-2017</li>
+ </ul>
+ <em>Application</em>
+ <ul>
+ <li>
+ <!-- JAL-1723 -->Sequence ID tool tip presents abridged
+ set of database cross-references, sorted alphabetically
+ </li>
+ <li>
+ <!-- JAL-2282-->New replacement token for creating URLs <em>just</em>
+ from database cross references. Users with custom links
+ will receive a <a href="webServices/urllinks.html#warning">warning
+ dialog</a> asking them to update their preferences.
+ </li>
+ <li>
+ <!-- JAL-2287-->Cancel button and escape listener on
+ dialog warning user about disconnecting Jalview from a
+ Chimera session
+ </li>
+ <li>
+ <!-- JAL-2320-->Jalview's Chimera control window closes if
+ the Chimera it is connected to is shut down
+ </li>
+ <li>
+ <!-- JAL-1738-->New keystroke (B) and Select highlighted
+ columns menu item to mark columns containing
+ highlighted regions (e.g. from structure selections or results
+ of a Find operation)
+ </li>
+ <li>
+ <!-- JAL-2284-->Command line option for batch-generation
+ of HTML pages rendering alignment data with the BioJS
+ MSAviewer
+ </li>
+ </ul>
+ </div></td>
+ <td>
+ <div align="left">
+ <em>General</em>
+ <ul>
+ <li>
+ <!-- JAL-2286 -->Columns with more than one modal residue
+ are not coloured or thresholded according to percent
+ identity (first observed in Jalview 2.8.2)
+ </li>
+ <li>
+ <!-- JAL-2301 -->Threonine incorrectly reported as not
+ hydrophobic
+ </li>
+ <li>
+ <!-- JAL-2318 -->Updates to documentation pages (above PID
+ threshold, amino acid properties)
+ </li>
+ <li>
+ <!-- JAL-2292 -->Lower case residues in sequences are not
+ reported as mapped to residues in a structure file in the
+ View Mapping report
+ </li>
+ <li>
+ <!--JAL-2324 -->Identical features with non-numeric scores
+ could be added multiple times to a sequence
+ </li>
+ <li>
+ <!--JAL-2323, JAL-2333,JAL-2335,JAL-2327 -->Disulphide
+ bond features shown as two highlighted residues rather
+ than a range in linked structure views, and treated
+ correctly when selecting and computing trees from features
+ </li>
+ <li>
+ <!-- JAL-2281-->Custom URL links for database
+ cross-references are matched to database name regardless
+ of case
+ </li>
+
+ </ul>
+ <em>Application</em>
+ <ul>
+ <li>
+ <!-- JAL-2282-->Custom URL links for specific database
+ names without regular expressions also offer links from
+ Sequence ID
+ </li>
+ <li>
+ <!-- JAL-2315-->Removing a single configured link in the
+ URL links pane in Connections preferences doesn't actually
+ update Jalview configuration
+ </li>
+ <li>
+ <!-- JAL-2272-->CTRL-Click on a selected region to open
+ the alignment area popup menu doesn't work on El-Capitan
+ </li>
+ <li>
+ <!-- JAL-2280 -->Jalview doesn't offer to associate mmCIF
+ files with similarly named sequences if dropped onto the
+ alignment
+ </li>
+ <li>
+ <!-- JAL-2312 -->Additional mappings are shown for PDB
+ entries where more chains exist in the PDB accession than
+ are reported in the SIFTS file
+ </li>
+ <li>
+ <!-- JAL-2317-->Certain structures do not get mapped to
+ the structure view when displayed with Chimera
+ </li>
+ <li>
+ <!-- JAL-2317-->No chains shown in the Chimera view
+ panel's View->Show Chains submenu
+ </li>
+ <li>
+ <!--JAL-2277 -->Export as HTML with embedded SVG doesn't
+ work for wrapped alignment views
+ </li>
+ <li>
+ <!--JAL-2197 -->Rename UI components for running JPred
+ predictions from 'JNet' to 'JPred'
+ </li>
+ <li>
+ <!-- JAL-2337,JAL-2277 -->Export as PNG or SVG is
+ corrupted when annotation panel vertical scroll is not at
+ first annotation row
+ </li>
+ <li>
+ <!--JAL-2332 -->Attempting to view structure for Hen
+ lysozyme results in a PDB Client error dialog box
+ </li>
+ </ul>
+<!-- <em>New Known Issues</em>
+ <ul>
+ <li></li>
+ </ul> -->
+ </div>
+ </td>
+ </tr>
+ <td width="60" nowrap>
+ <div align="center">
<strong><a name="Jalview.2.10.0b1">2.10.0b1</a><br />
<em>25/10/2016</em></strong>
</div>
<!-- JAL-1306 -->Quality and Conservation are now shown on
load even when Consensus calculation is disabled
</li>
+ <li>
+ <!-- JAL-1932 -->Remove right on penultimate column of
+ alignment does nothing
+ </li>
</ul>
<em>Application</em>
<ul>
<!-- JAL-1887 -->Incorrect start and end reported for PDB
to sequence mapping in 'View Mappings' report
</li>
+ <li>
+ <!-- JAL-2284 -->Unable to read old Jalview projects that
+ contain non-XML data added after Jalvew wrote project.
+ </li>
+ <li><!-- JAL-2118 -->Newly created annotation row reorders
+ after clicking on it to create new annotation for a
+ column.
+ </li>
<!-- may exclude, this is an external service stability issue JAL-1941
-- > RNA 3D structure not added via DSSR service</li> -->
</ul>
</ul> <em>Applet</em>
<ul>
<li>Split frame example added to applet examples page</li>
+ </ul><em>Build and Deployment</em>
+ <ul>
+ <li><!-- JAL-1888 -->New ant target for running Jalview's test suite</li>
</ul></td>
<td>
<div align="left">
<p>
<p>
<strong>Discovering Database References for Sequences</strong><br>
- Database references are associated with a sequence are displayed as a
- list in the tooltip shown when mousing over its sequence ID. Jalview
- uses references for the retrieval of <a
- href="../features/viewingpdbs.html">PDB structures</a> and <a
+ Database references associated with a sequence are displayed as an
+ abbreviated list in the tooltip shown when mousing over its sequence
+ ID, and can be viewed in full via the
+ <a href="../io/exportseqreport.html">Sequence Details</a> window. .
+ Jalview also uses references for the retrieval of
+ <a href="../features/viewingpdbs.html">PDB structures</a> and <a
href="../features/dasfeatures.html">DAS features</a>, and for
retrieving sequence cross-references such as the protein products of a
DNA sequence.
the sequence ID for the sequence (<em>since Jalview 2.10.1</em>).
</p>
<p>
+ <strong><a name="warning">Warning dialog about updating
+ your configured URL links</a></strong><br /> In the desktop
+ prior to Jalview 2.10.1, the only way to configure custom links for
+ a particular database cross-reference for a sequence was to give it
+ a name that
+ <em>exactly</em> matched the database source, and a regular
+ expression for filtering out any spurious matches generated when the
+ custom linked was tested against the Sequence's ID string. Since the
+ introduction of the $DB_ACCESSION$ token, however, $SEQUENCE_ID$
+ will not be used for database cross-reference accession strings, and
+ if you have custom links configured, Jalview will raise a warning
+ message so let you know that you may need to update your links to
+ use $DB_ACCESSION$.
+ </p>
+ <p>
<strong>Regular Expression Substitution</strong><br> A url may
contain a string of the form $SEQUENCE_ID=/<em>regular
expression</em>/=$ or $DB_ACCESSION=/<em>regular expression</em>/=$.
</head>
<body>
<p>
- <strong>What's new in Jalview 2.10.0b1 ?</strong>
+ <strong>What's new in Jalview 2.10.1 ?</strong>
</p>
<p>
- Jalview 2.10.0b1 is a patch release for 2.10, the next major release
- in the Jalview 2 series. Full details are in the <a
- href="releases.html#Jalview.2.10.0b1">Jalview 2.10b1 Release
- Notes</a>, but the highlights are below.
+ Jalview 2.10.1 was released on 29th November 2016. Full details are
+ in the <a href="releases.html#Jalview.2.10.1">Jalview 2.10.1
+ Release Notes</a>, but the highlights are below. This is also the
+ first release to include contributions from Kira Mourão, who
+ joined Jalview's core development team in October 2016.
</p>
<ul>
- <li>Drag and drop reinstated for the Jalview desktop on
- Windows, Linux and older OSX systems.</li>
- <li>Problems loading local PDB files have been fixed</li>
- <li>Conservation shading can be disabled for PID and consensus
- based colour scheme</li>
- </ul>
- <p><em>Major highlights of the 2.10.0 Release</em></p>
- <ul>
- <li><strong>Ensembl sequence fetcher</strong><br />Annotated
- Genes, transcripts and proteins can be retrieved via Jalview's new
- <a href="features/ensemblsequencefetcher.html">Ensembl REST
- client</a>. Support for import of Ensembl data allows:
- <ul>
- <li><strong>Aligned locus view</strong><br />Transcripts
- retrieved for a gene identifier via the Ensembl or
- EnsemblGenomes sequence databases are automatically aligned to
- their reference genome, and introns hidden from the view.</li>
- <li><strong>Sequence variant data</strong><br />Jalview
- propagates variant annotation on genomic regions onto
- transcripts and protein products, complete with associated
- metadata such as clinical significance.</li>
- </ul></li>
- <li><strong>Ensembl and ENA 'show cross-references'
- support</strong><br />The Calculations menu's <strong>'Show
- cross-references'</strong> now offers Ensembl as well as EMBLCDS and
- Uniprot when CDS/Protein mapping data is available for download or
- display. This allows variant annotation to be added directly to an
- alignment of UniProt sequences.</li>
- <li><strong>Working with structures</strong>
- <ul>
- <li><strong>More accurate structure mappings</strong><br />
- Jalview now utilises the PDBe's SIFTS database (at EMBL-EBI)
- to <a href="features/siftsmapping.html">match structures
- to UniProt sequences</a>, even for structures containing
- multiple copies of a sequence.</li>
- <li><strong>Import structures as mmCIF</strong><br />Jalview
- now downloads data from the EMBL-EBI's PDBe site as <a
- href="features/mmcif.html">mmCIF</a>. This allows very large
- structures to be imported, such as the HIV virus capsid
- assembly.</li>
- <li><strong>Chimera users will need to upgrade to
- 1.11.1</strong><br />If you use Chimera to view structures
- downloaded by Jalview 2.10, you will need to make sure you are
- running the latest version of <a href="features/chimera.html">Chimera</a>.</li>
- </ul></li>
- <li><strong>UniProt Free Text Search</strong><br />The new
- search dialog for UniProt allows you to browse and retrieve
- sequences with free-text search, or structured queries.</li>
- <li><strong>Reference sequence alignment view</strong><br />
- Jalview 2.9 introduced support for reference sequences. In 2.10,
- when a reference sequence is defined for the alignment, the
- alignment column ruler is now numbered according to the reference
- sequence. The reference sequence for alignment views can also be
- saved and restored from Jalview projects.</li>
+ <li><strong>More memory efficient</strong><br />We've slimmed
+ down the consensus analysis data structures used by Jalview so
+ even wider alignments can be worked with.</li>
+ <li><strong>Select highlighted region</strong><br />Press 'B'
+ or use the new menu option in the alignment window's Select menu
+ to mark columns containing highlighted regions generated from
+ structure selections, mouse-overs, or resulting from a Find
+ operation.</li>
+ <li><strong>New custom link mechanism for opening URLs
+ for database cross references.</strong><br /> If you have customised URL
+ links in your Jalview preferences, then you may already have seen
+ the <a href="#warning"> warning dialog (see below).</a></li>
+ <li><strong>New command line export option for BioJS
+ MSAviewer</strong><br />A number of small bugs with the HTML export
+ functions from the Jalview desktop were also fixed.</li>
+ <li><strong>Small but significant changes to the
+ physicochemical properties and consensus calculations</strong><br />Threonine
+ is no longer considered a non-hydrophobic residue in the protein
+ conservation calculation, and minor bugs addressed in PID and
+ consensus colouring.</li>
+ <li><strong>Correct display of disulphide bond
+ features</strong><br /> In linked structure views, Jalview would
+ highlight all residues between in addition to the two linked
+ cysteines. The 'select columns by feature' function in the feature
+ settings would also select all intermediate columns.
</ul>
+ <p>
+ <strong><a name="warning">Warning dialog about updating
+ your configured URL links</a></strong><br /> In the desktop prior to Jalview
+ 2.10.1, the only way to configure custom links for a particular
+ database cross-reference for a sequence was to give it a name that <em>exactly</em>
+ matched the database source, and a regular expression for filtering
+ out any spurious matches generated when the custom linked was tested
+ against the Sequence's ID string. Since the introduction of the
+ $DB_ACCESSION$ token, however, $SEQUENCE_ID$ will not be used for
+ database cross-reference accession strings, and if you have custom
+ links configured, Jalview will raise a warning message so let you
+ know that you may need to update your links to use $DB_ACCESSION$.
+ </p>
</body>
</html>
file.reference.jaxrpc.jar=lib/jaxrpc.jar
file.reference.JGoogleAnalytics_0.3.jar=lib/JGoogleAnalytics_0.3.jar
file.reference.jhall.jar=lib/jhall.jar
-file.reference.Jmol-14.2.14_2015.06.11.jar=lib/Jmol-14.2.14_2015.06.11.jar
-file.reference.JmolApplet-14.2.14_2015.06.11.jar=appletlib/JmolApplet-14.2.14_2015.06.11.jar
+file.reference.Jmol-14.6.4_2016.10.26.jar=lib/Jmol-14.6.4_2016.10.26.jar
+file.reference.JmolApplet-14.6.4_2016.10.26.jar=appletlib/JmolApplet-14.6.4_2016.10.26.jar
file.reference.log4j-1.2.8.jar=lib/log4j-1.2.8.jar
file.reference.mail.jar=lib/mail.jar
file.reference.min-jaba-client.jar=lib/min-jaba-client-2.0.jar
${file.reference.jaxrpc.jar}:\
${file.reference.JGoogleAnalytics_0.3.jar}:\
${file.reference.jhall.jar}:\
- ${file.reference.Jmol-14.2.14_2015.06.11.jar}:\
+ ${file.reference.Jmol-14.6.4_2016.10.26.jar}:\
${file.reference.miglayout-4.0-swing.jar}:\
${file.reference.log4j-1.2.8.jar}:\
${file.reference.mail.jar}:\
${file.reference.xml-apis.jar}:\
${file.reference.xercesImpl.jar}:\
${file.reference.wsdl4j.jar}:\
- ${file.reference.JmolApplet-14.2.14_2015.06.11.jar} \
+ ${file.reference.JmolApplet-14.6.4_2016.10.26.jar} \
${file.reference.varna-3.9-dev.jar}
# Space-separated list of extra javac options
javac.compilerargs=
YEAR=2016
-AUTHORS=J Procter, M Carstairs, TC Ofoegbu, AM Waterhouse, J Engelhardt, LM Lui, A Menard, D Barton, N Sherstnev, D Roldan-Martinez, M Clamp, S Searle, G Barton
-AUTHORFNAMES=Jim Procter, Mungo Carstairs, Tochukwu 'Charles' Ofoegbu, Andrew Waterhouse, Jan Engelhardt, Lauren Lui, Anne Menard, Daniel Barton, Natasha Sherstnev, David Roldan-Martinez, Michele Clamp, James Cuff, Steve Searle, David Martin & Geoff Barton
+AUTHORS=J Procter, M Carstairs, TC Ofoegbu, K Mourao, AM Waterhouse, J Engelhardt, LM Lui, A Menard, D Barton, N Sherstnev, D Roldan-Martinez, M Clamp, S Searle, G Barton
+AUTHORFNAMES=Jim Procter, Mungo Carstairs, Tochukwu 'Charles' Ofoegbu, Kira Mourao, Andrew Waterhouse, Jan Engelhardt, Lauren Lui, Anne Menard, Daniel Barton, Natasha Sherstnev, David Roldan-Martinez, Michele Clamp, James Cuff, Steve Searle, David Martin & Geoff Barton
\ No newline at end of file
action.colour = Colour
action.calculate = Calculate
action.select_all = Select all
+action.select_highlighted_columns = Select Highlighted Columns
+tooltip.select_highlighted_columns = Press B to mark highlighted columns, Ctrl-(or Cmd)-B to toggle, and Alt-B to mark all but highlighted columns
action.deselect_all = Deselect all
action.invert_selection = Invert selection
action.using_jmol = Using Jmol
label.urltooltip = Only one url, which must use a sequence id, can be selected for the 'On Click' option
label.edit_sequence_url_link = Edit sequence URL link
warn.name_cannot_be_duplicate = URL names must be unique and cannot be MIRIAM ids
-label.invalid_name = Invalid Name !
\ No newline at end of file
+label.invalid_name = Invalid Name !
+label.output_seq_details = Output Sequence Details to list all database references
\ No newline at end of file
action.colour = Color
action.calculate = Calcular
action.select_all = Seleccionar Todo
+action.select_highlighted_columns = Seleccionar columnas resaltadas
+tooltip.select_highlighted_columns = Presione B para marcar las columnas resaltadas, Ctrl (o Cmd)-B para cambiarlas, y Alt-B para marcar todas menos las columnas resaltadas
action.deselect_all = Deseleccionar Todo
action.invert_selection = Invertir selección
action.using_jmol = Usar Jmol
label.urltooltip = Only one url, which must use a sequence id, can be selected for the 'On Click' option
label.edit_sequence_url_link = Edit sequence URL link
warn.name_cannot_be_duplicate = URL names must be unique and cannot be MIRIAM ids
-label.invalid_name = Invalid Name !
\ No newline at end of file
+label.invalid_name = Invalid Name !
+label.output_seq_details = Seleccionar Detalles de la secuencia para ver todas
\ No newline at end of file
import jalview.appletgui.SequenceRenderer;
import jalview.datamodel.PDBEntry;
import jalview.datamodel.SequenceI;
+import jalview.io.DataSourceType;
import jalview.io.StructureFile;
import jalview.structure.AtomSpec;
import jalview.structure.StructureListener;
StructureSelectionManager ssm;
public AppletPDBCanvas(PDBEntry pdbentry, SequenceI[] seq,
- String[] chains, AlignmentPanel ap, String protocol)
+ String[] chains, AlignmentPanel ap, DataSourceType protocol)
{
this.ap = ap;
{
pdb = ssm.setMapping(seq, chains, pdbentry.getFile(), protocol);
- if (protocol.equals(jalview.io.AppletFormatAdapter.PASTE))
+ if (protocol == DataSourceType.PASTE)
{
pdbentry.setFile("INLINE" + pdb.getId());
}
import jalview.appletgui.EmbmenuFrame;
import jalview.datamodel.PDBEntry;
import jalview.datamodel.SequenceI;
+import jalview.io.DataSourceType;
import jalview.schemes.BuriedColourScheme;
import jalview.schemes.HelixColourScheme;
import jalview.schemes.HydrophobicColourScheme;
AppletPDBCanvas pdbcanvas;
public AppletPDBViewer(PDBEntry pdbentry, SequenceI[] seq,
- String[] chains, AlignmentPanel ap, String protocol)
+ String[] chains, AlignmentPanel ap, DataSourceType protocol)
{
try
{
}
+ @Override
public void actionPerformed(ActionEvent evt)
{
if (evt.getSource() == mapping)
}
+ @Override
public void itemStateChanged(ItemEvent evt)
{
if (evt.getSource() == allchains)
import jalview.gui.AlignmentPanel;
import jalview.gui.FeatureRenderer;
import jalview.gui.SequenceRenderer;
+import jalview.io.DataSourceType;
import jalview.io.StructureFile;
import jalview.structure.AtomSpec;
import jalview.structure.StructureListener;
String errorMessage;
void init(PDBEntry pdbentry, SequenceI[] seq, String[] chains,
- AlignmentPanel ap, String protocol)
+ AlignmentPanel ap, DataSourceType protocol)
{
this.ap = ap;
this.pdbentry = pdbentry;
{
pdb = ssm.setMapping(seq, chains, pdbentry.getFile(), protocol);
- if (protocol.equals(jalview.io.AppletFormatAdapter.PASTE))
+ if (protocol.equals(jalview.io.DataSourceType.PASTE))
{
pdbentry.setFile("INLINE" + pdb.getId());
}
import jalview.datamodel.SequenceI;
import jalview.gui.AlignmentPanel;
import jalview.gui.Desktop;
+import jalview.gui.JvOptionPane;
import jalview.gui.OOMWarning;
import jalview.gui.UserDefinedColours;
+import jalview.io.DataSourceType;
import jalview.io.JalviewFileChooser;
import jalview.io.JalviewFileView;
import jalview.schemes.BuriedColourScheme;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
-import javax.swing.JOptionPane;
import javax.swing.JRadioButtonMenuItem;
public class PDBViewer extends JInternalFrame implements Runnable
AlignmentPanel ap;
- String protocol;
+ DataSourceType protocol;
String tmpPDBFile;
public PDBViewer(PDBEntry pdbentry, SequenceI[] seq, String[] chains,
- AlignmentPanel ap, String protocol)
+ AlignmentPanel ap, DataSourceType protocol)
{
this.pdbentry = pdbentry;
this.seq = seq;
{
tmpPDBFile = pdbentry.getFile();
PDBfile pdbfile = new PDBfile(false, false, false, tmpPDBFile,
- jalview.io.AppletFormatAdapter.FILE);
+ DataSourceType.FILE);
pdbcanvas.init(pdbentry, seq, chains, ap, protocol);
{
EBIFetchClient ebi = new EBIFetchClient();
String query = "pdb:" + pdbentry.getId();
- pdbentry.setFile(ebi.fetchDataAsFile(query, "default", ".xml")
+ pdbentry.setFile(ebi.fetchDataAsFile(query, "default", "xml")
.getAbsolutePath());
if (pdbentry.getFile() != null)
{
radioItem.removeActionListener(radioItem.getActionListeners()[0]);
- int option = JOptionPane.showInternalConfirmDialog(
+ int option = JvOptionPane.showInternalConfirmDialog(
jalview.gui.Desktop.desktop, MessageManager
.getString("label.remove_from_default_list"),
MessageManager
.getString("label.remove_user_defined_colour"),
- JOptionPane.YES_NO_OPTION);
- if (option == JOptionPane.YES_OPTION)
+ JvOptionPane.YES_NO_OPTION);
+ if (option == JvOptionPane.YES_OPTION)
{
jalview.gui.UserDefinedColours
.removeColourFromDefaults(radioItem.getText());
import jalview.datamodel.AlignmentAnnotation;
import jalview.datamodel.DBRefSource;
import jalview.datamodel.SequenceI;
+import jalview.io.DataSourceType;
import jalview.io.FileParse;
import jalview.io.StructureFile;
import jalview.util.MessageManager;
}
public PDBfile(boolean addAlignmentAnnotations, boolean predictSecStr,
- boolean externalSecStr, String dataObject, String protocol)
+ boolean externalSecStr, String dataObject,
+ DataSourceType sourceType)
throws IOException
{
- super(false, dataObject, protocol);
+ super(false, dataObject, sourceType);
addSettings(addAlignmentAnnotations, predictSecStr, externalSecStr);
doParse();
}
}
@Override
- public String print()
+ public String print(SequenceI[] seqs, boolean jvSuffix)
{
return null;
}
+/* 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 java.awt.Color;
+/* 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.ws.HttpClientUtils;
sendChimeraCommand("stop really", false);
try
{
+ // TODO is this too violent? could it force close the process
+ // before it has done an orderly shutdown?
chimera.destroy();
} catch (Exception ex)
{
{
return busy;
}
+
+ public Process getChimeraProcess()
+ {
+ return chimera;
+ }
}
+/* 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 java.awt.Color;
+/* 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;
+/* 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;
/**
+/* 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.port;
import java.io.BufferedReader;
import jalview.datamodel.Annotation;
import jalview.datamodel.Profile;
import jalview.datamodel.ProfileI;
+import jalview.datamodel.Profiles;
+import jalview.datamodel.ProfilesI;
import jalview.datamodel.ResidueCount;
-import jalview.datamodel.SequenceI;
import jalview.datamodel.ResidueCount.SymbolCounts;
+import jalview.datamodel.SequenceI;
import jalview.ext.android.SparseIntArray;
import jalview.util.Comparison;
import jalview.util.Format;
}
}
- public static final ProfileI[] calculate(List<SequenceI> list,
+ public static final ProfilesI calculate(List<SequenceI> list,
int start, int end)
{
return calculate(list, start, end, false);
}
- public static final ProfileI[] calculate(List<SequenceI> sequences,
+ public static final ProfilesI calculate(List<SequenceI> sequences,
int start, int end, boolean profile)
{
SequenceI[] seqs = new SequenceI[sequences.size()];
for (int i = 0; i < sequences.size(); i++)
{
seqs[i] = sequences.get(i);
- if (seqs[i].getLength() > width)
+ int length = seqs[i].getLength();
+ if (length > width)
{
- width = seqs[i].getLength();
+ width = length;
}
}
- ProfileI[] reply = new ProfileI[width];
-
if (end >= width)
{
end = width;
}
- calculate(seqs, start, end, reply, profile);
+ ProfilesI reply = calculate(seqs, width, start, end, profile);
return reply;
}
}
* Calculate the consensus symbol(s) for each column in the given range.
*
* @param sequences
+ * @param width
+ * the full width of the alignment
* @param start
* start column (inclusive, base zero)
* @param end
* end column (exclusive)
- * @param result
- * array in which to store profile per column
* @param saveFullProfile
* if true, store all symbol counts
*/
- public static final void calculate(final SequenceI[] sequences,
- int start, int end, ProfileI[] result, boolean saveFullProfile)
+ public static final ProfilesI calculate(final SequenceI[] sequences,
+ int width, int start, int end, boolean saveFullProfile)
{
// long now = System.currentTimeMillis();
int seqCount = sequences.length;
int nucleotideCount = 0;
int peptideCount = 0;
+ ProfileI[] result = new ProfileI[width];
+
for (int column = start; column < end; column++)
{
/*
result[column] = profile;
}
+ return new Profiles(result);
// long elapsed = System.currentTimeMillis() - now;
// System.out.println(elapsed);
}
* the annotation row to add annotations to
* @param profiles
* the source consensus data
- * @param iStart
- * start column
- * @param width
- * end column
+ * @param startCol
+ * start column (inclusive)
+ * @param endCol
+ * end column (exclusive)
* @param ignoreGaps
* if true, normalise residue percentages ignoring gaps
* @param showSequenceLogo
* number of sequences
*/
public static void completeConsensus(AlignmentAnnotation consensus,
- ProfileI[] profiles, int iStart, int width, boolean ignoreGaps,
+ ProfilesI profiles, int startCol, int endCol, boolean ignoreGaps,
boolean showSequenceLogo, long nseq)
{
// long now = System.currentTimeMillis();
if (consensus == null || consensus.annotations == null
- || consensus.annotations.length < width)
+ || consensus.annotations.length < endCol)
{
/*
* called with a bad alignment annotation row
return;
}
- final int dp = getPercentageDp(nseq);
-
- for (int i = iStart; i < width; i++)
+ for (int i = startCol; i < endCol; i++)
{
- ProfileI profile;
- if (i >= profiles.length || ((profile = profiles[i]) == null))
+ ProfileI profile = profiles.get(i);
+ if (profile == null)
{
/*
* happens if sequences calculated over were
* shorter than alignment width
*/
consensus.annotations[i] = null;
- continue;
+ return;
}
+ final int dp = getPercentageDp(nseq);
+
float value = profile.getPercentageIdentity(ignoreGaps);
String description = getTooltip(profile, value, showSequenceLogo,
{
modalResidue = "+";
}
- consensus.annotations[i] = new Annotation(modalResidue,
- description, ' ', value);
+ consensus.annotations[i] = new Annotation(modalResidue, description,
+ ' ', value);
}
// long elapsed = System.currentTimeMillis() - now;
// System.out.println(-elapsed);
package jalview.analysis;
import jalview.datamodel.AlignmentI;
+import jalview.datamodel.SearchResultMatchI;
import jalview.datamodel.SearchResults;
-import jalview.datamodel.Sequence;
+import jalview.datamodel.SearchResultsI;
import jalview.datamodel.SequenceGroup;
+import jalview.datamodel.SequenceI;
+import jalview.util.Comparison;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Vector;
+import com.stevesoft.pat.Regex;
+
public class Finder
{
/**
* Implements the search algorithms for the Find dialog box.
*/
- SearchResults searchResults;
+ SearchResultsI searchResults;
AlignmentI alignment;
- jalview.datamodel.SequenceGroup selection = null;
+ SequenceGroup selection = null;
- Vector idMatch = null;
+ Vector<SequenceI> idMatch = null;
boolean caseSensitive = false;
boolean findAll = false;
- com.stevesoft.pat.Regex regex = null;
+ Regex regex = null;
/**
- * hold's last-searched position between calles to find(false)
+ * holds last-searched position between calls to find(false)
*/
int seqIndex = 0, resIndex = -1;
{
searchString = searchString.toUpperCase();
}
- regex = new com.stevesoft.pat.Regex(searchString);
+ regex = new Regex(searchString);
regex.setIgnoreCase(!caseSensitive);
searchResults = new SearchResults();
- idMatch = new Vector();
- Sequence seq;
+ idMatch = new Vector<SequenceI>();
String item = null;
boolean found = false;
int end = alignment.getHeight();
selection = null;
}
}
+ SearchResultMatchI lastm = null;
while (!found && (seqIndex < end))
{
- seq = (Sequence) alignment.getSequenceAt(seqIndex);
+ SequenceI seq = alignment.getSequenceAt(seqIndex);
if ((selection != null && selection.getSize() > 0)
&& !selection.getSequences(null).contains(seq))
{
}
- if (regex.search(seq.getName()))
+ if (regex.search(seq.getName()) && !idMatch.contains(seq))
{
idMatch.addElement(seq);
hasResults = true;
}
if (isIncludeDescription() && seq.getDescription() != null
- && regex.search(seq.getDescription()))
+ && regex.search(seq.getDescription())
+ && !idMatch.contains(seq))
{
idMatch.addElement(seq);
hasResults = true;
}
// /Shall we ignore gaps???? - JBPNote: Add Flag for forcing this or not
- StringBuffer noGapsSB = new StringBuffer();
+ StringBuilder noGapsSB = new StringBuilder();
int insertCount = 0;
- Vector spaces = new Vector();
+ List<Integer> spaces = new ArrayList<Integer>();
for (int j = 0; j < item.length(); j++)
{
- if (!jalview.util.Comparison.isGap(item.charAt(j)))
+ if (!Comparison.isGap(item.charAt(j)))
{
noGapsSB.append(item.charAt(j));
- spaces.addElement(new Integer(insertCount));
+ spaces.add(Integer.valueOf(insertCount));
}
else
{
}
String noGaps = noGapsSB.toString();
-
for (int r = resIndex; r < noGaps.length(); r++)
{
resIndex = regex.matchedFrom();
if ((selection != null && selection.getSize() > 0)
- && ((resIndex + Integer.parseInt(spaces.elementAt(
- resIndex).toString())) < selection.getStartRes()))
+ && (resIndex + spaces.get(resIndex) < selection
+ .getStartRes()))
{
continue;
}
// if invalid string used, then regex has no matched to/from
- int sres = seq
- .findPosition(resIndex
- + Integer.parseInt(spaces.elementAt(resIndex)
- .toString()));
- int eres = seq.findPosition(regex.matchedTo()
- - 1
- + Integer.parseInt(spaces
- .elementAt(regex.matchedTo() - 1).toString()));
-
- searchResults.addResult(seq, sres, eres);
+ int sres = seq.findPosition(resIndex + spaces.get(resIndex));
+ int eres = seq.findPosition(regex.matchedTo() - 1
+ + (spaces.get(regex.matchedTo() - 1)));
+ // only add result if not contained in previous result
+ if (lastm == null
+ || (lastm.getSequence() != seq || (!(lastm.getStart() <= sres && lastm
+ .getEnd() >= eres))))
+ {
+ lastm = searchResults.addResult(seq, sres, eres);
+ }
hasResults = true;
if (!findAll)
{
}
/**
- * @return the idMatch
+ * Returns the (possibly empty) list of matching sequences (when search
+ * includes searching sequence names)
+ *
+ * @return
*/
- public Vector getIdMatch()
+ public Vector<SequenceI> getIdMatch()
{
return idMatch;
}
/**
* @return the searchResults
*/
- public SearchResults getSearchResults()
+ public SearchResultsI getSearchResults()
{
return searchResults;
}
*/
package jalview.api;
+import jalview.io.DataSourceType;
+
import java.util.List;
/**
* add a features file of some kind to the current view
*
* @param file
- * @param protocol
+ * @param sourceType
* @param relaxedIdMatching
* if true, try harder to match up IDs with local sequence data
* @return true if parsing resulted in something being imported to the view or
* dataset
*/
- public boolean parseFeaturesFile(String file, String protocol,
+ public boolean parseFeaturesFile(String file, DataSourceType sourceType,
boolean relaxedIdMatching);
+ /**
+ * mark columns containing highlighted regions (e.g. from search, structure
+ * highlight, or a mouse over event in another viewer)
+ *
+ * @param invert
+ * @param extendCurrent
+ * @param toggle
+ * @return
+ */
+ boolean markHighlightedColumns(boolean invert, boolean extendCurrent,
+ boolean toggle);
+
}
import jalview.datamodel.AlignmentView;
import jalview.datamodel.CigarArray;
import jalview.datamodel.ColumnSelection;
-import jalview.datamodel.ProfileI;
+import jalview.datamodel.ProfilesI;
+import jalview.datamodel.SearchResultsI;
import jalview.datamodel.SequenceCollectionI;
import jalview.datamodel.SequenceGroup;
import jalview.datamodel.SequenceI;
ColumnSelection getColumnSelection();
- ProfileI[] getSequenceConsensusHash();
+ ProfilesI getSequenceConsensusHash();
/**
* Get consensus data table for the cDNA complement of this alignment (if any)
*
* @param hconsensus
*/
- void setSequenceConsensusHash(ProfileI[] hconsensus);
+ void setSequenceConsensusHash(ProfilesI hconsensus);
/**
* Set the cDNA complement consensus for the viewport
* @return true if group is defined on the alignment
*/
boolean isSelectionDefinedGroup();
+
+ /**
+ *
+ * @return true if there are search results on the view
+ */
+ boolean hasSearchResults();
+
+ /**
+ * set the search results for the view
+ *
+ * @param results
+ * - or null to clear current results
+ */
+ void setSearchResults(SearchResultsI results);
+
+ /**
+ * get search results for this view (if any)
+ *
+ * @return search results or null
+ */
+ SearchResultsI getSearchResults();
}
void setGroupVisibility(String group, boolean visible);
/**
- * locate features at a particular position on the given sequence
+ * Returns features at the specified position on the given sequence.
+ * Non-positional features are not included.
*
* @param sequence
* @param res
import jalview.analysis.AlignmentAnnotationUtils;
import jalview.analysis.AlignmentUtils;
import jalview.analysis.Conservation;
+import jalview.bin.JalviewLite;
import jalview.commands.ChangeCaseCommand;
import jalview.commands.EditCommand;
import jalview.commands.EditCommand.Action;
import jalview.datamodel.SequenceGroup;
import jalview.datamodel.SequenceI;
import jalview.io.AppletFormatAdapter;
+import jalview.io.DataSourceType;
+import jalview.io.FileFormat;
import jalview.io.SequenceAnnotationReport;
import jalview.schemes.Blosum62ColourScheme;
import jalview.schemes.BuriedColourScheme;
e.printStackTrace();
}
- for (int i = 0; i < jalview.io.AppletFormatAdapter.WRITEABLE_FORMATS.length; i++)
+ for (String ff : FileFormat.getWritableFormats(true))
{
- MenuItem item = new MenuItem(
- jalview.io.AppletFormatAdapter.WRITEABLE_FORMATS[i]);
+ MenuItem item = new MenuItem(ff);
item.addActionListener(this);
outputmenu.add(item);
Frame frame = new Frame();
frame.add(cap);
- jalview.bin.JalviewLite.addFrame(frame, MessageManager.formatMessage(
+ JalviewLite.addFrame(frame, MessageManager.formatMessage(
"label.selection_output_command",
new Object[] { e.getActionCommand() }), 600, 500);
// JBPNote: getSelectionAsNewSequence behaviour has changed - this method
// now returns a full copy of sequence data
// TODO consider using getSequenceSelection instead here
- cap.setText(new jalview.io.AppletFormatAdapter().formatSequences(
- e.getActionCommand(), ap.av.getShowJVSuffix(), ap, true));
+ FileFormat fileFormat = FileFormat.valueOf(e.getActionCommand());
+ cap.setText(new AppletFormatAdapter().formatSequences(fileFormat,
+ ap.av.getShowJVSuffix(), ap, true));
}
CutAndPasteTransfer cap = new CutAndPasteTransfer(false, ap.alignFrame);
- StringBuffer contents = new StringBuffer();
+ StringBuilder contents = new StringBuilder(128);
for (SequenceI seq : sequences)
{
contents.append(MessageManager.formatMessage(
seq,
true,
true,
- false,
(ap.seqPanel.seqCanvas.fr != null) ? ap.seqPanel.seqCanvas.fr
.getMinMax() : null);
contents.append("</p>");
void addPDB()
{
- if (seq.getAllPDBEntries() != null)
+ Vector<PDBEntry> pdbs = seq.getAllPDBEntries();
+ if (pdbs != null&& !pdbs.isEmpty())
{
- PDBEntry entry = seq.getAllPDBEntries().firstElement();
+ PDBEntry entry = pdbs.firstElement();
if (ap.av.applet.jmolAvailable)
{
new jalview.appletgui.AppletJmol(entry, new SequenceI[] { seq },
- null, ap, AppletFormatAdapter.URL);
+ null, ap, DataSourceType.URL);
}
else
{
new MCview.AppletPDBViewer(entry, new SequenceI[] { seq }, null,
- ap, AppletFormatAdapter.URL);
+ ap, DataSourceType.URL);
}
}
import jalview.datamodel.SequenceI;
import jalview.io.AnnotationFile;
import jalview.io.AppletFormatAdapter;
+import jalview.io.DataSourceType;
import jalview.io.FeaturesFile;
+import jalview.io.FileFormat;
import jalview.io.TCoffeeScoreFile;
import jalview.schemes.Blosum62ColourScheme;
import jalview.schemes.BuriedColourScheme;
* is protocol for accessing data referred to by file
*/
- public boolean parseFeaturesFile(String file, String type)
+ public boolean parseFeaturesFile(String file, DataSourceType type)
{
return parseFeaturesFile(file, type, true);
}
*
* @param file
* file URL, content, or other resolvable path
- * @param type
+ * @param sourceType
* is protocol for accessing data referred to by file
* @param autoenabledisplay
* when true, display features flag will be automatically enabled if
* features are loaded
* @return true if data parsed as a features file
*/
- public boolean parseFeaturesFile(String file, String type,
+ public boolean parseFeaturesFile(String file, DataSourceType sourceType,
boolean autoenabledisplay)
{
boolean featuresFile = false;
.getFeatureRenderer().getFeatureColours();
boolean relaxedIdMatching = viewport.applet.getDefaultParameter(
"relaxedidmatch", false);
- featuresFile = new FeaturesFile(file, type).parse(
+ featuresFile = new FeaturesFile(file, sourceType).parse(
viewport.getAlignment(), colours, true, relaxedIdMatching);
} catch (Exception ex)
{
CutAndPasteTransfer cap = new CutAndPasteTransfer(true, this);
Frame frame = new Frame();
frame.add(cap);
- jalview.bin.JalviewLite.addFrame(frame, MessageManager.formatMessage(
+ JalviewLite.addFrame(frame, MessageManager.formatMessage(
"label.alignment_output_command",
new Object[] { e.getActionCommand() }), 600, 500);
- FeatureRenderer fr = this.alignPanel.cloneFeatureRenderer();
+ FileFormat fileFormat = FileFormat.valueOf(e.getActionCommand());
cap.setText(new AppletFormatAdapter(alignPanel).formatSequences(
- e.getActionCommand(), viewport.getAlignment(),
+ fileFormat, viewport.getAlignment(),
viewport.getShowJVSuffix()));
}
inputText.addActionListener(this);
Menu outputTextboxMenu = new Menu(
MessageManager.getString("label.out_to_textbox"));
- for (int i = 0; i < jalview.io.AppletFormatAdapter.WRITEABLE_FORMATS.length; i++)
+ for (String ff : FileFormat.getWritableFormats(true))
{
-
- MenuItem item = new MenuItem(
- jalview.io.AppletFormatAdapter.WRITEABLE_FORMATS[i]);
+ MenuItem item = new MenuItem(ff);
item.addActionListener(new java.awt.event.ActionListener()
{
}
// resolve data source
// TODO: this code should be a refactored to an io package
- String protocol = AppletFormatAdapter.resolveProtocol(pdbFile, "PDB");
+ DataSourceType protocol = AppletFormatAdapter.resolveProtocol(
+ pdbFile, FileFormat.PDB);
if (protocol == null)
{
return false;
}
public void newStructureView(JalviewLite applet, PDBEntry pdb,
- SequenceI[] seqs, String[] chains, String protocol)
+ SequenceI[] seqs, String[] chains, DataSourceType protocol)
{
// Scrub any null sequences from the array
Object[] sqch = cleanSeqChainArrays(seqs, chains);
System.err
.println("JalviewLite.AlignFrame:newStructureView: No sequence to bind structure to.");
}
- if (protocol == null || protocol.trim().length() == 0
- || protocol.equals("null"))
+ if (protocol == null)
{
- protocol = (String) pdb.getProperty("protocol");
+ String sourceType = (String) pdb.getProperty("protocol");
+ try
+ {
+ protocol = DataSourceType.valueOf(sourceType);
+ } catch (IllegalArgumentException e)
+ {
+ // ignore
+ }
if (protocol == null)
{
System.err.println("Couldn't work out protocol to open structure: "
{
// can only do alignments with Jmol
// find the last jmol window assigned to this alignment
- jalview.appletgui.AppletJmol ajm = null, tajm;
- Vector jmols = applet
- .getAppletWindow(jalview.appletgui.AppletJmol.class);
+ AppletJmol ajm = null, tajm;
+ Vector jmols = applet.getAppletWindow(AppletJmol.class);
for (int i = 0, iSize = jmols.size(); i < iSize; i++)
{
- tajm = (jalview.appletgui.AppletJmol) jmols.elementAt(i);
+ tajm = (AppletJmol) jmols.elementAt(i);
if (tajm.ap.alignFrame == this)
{
ajm = tajm;
// otherwise, create a new window
if (applet.jmolAvailable)
{
- new jalview.appletgui.AppletJmol(pdb, seqs, chains, alignPanel,
+ new AppletJmol(pdb, seqs, chains, alignPanel,
protocol);
applet.lastFrameX += 40;
applet.lastFrameY += 40;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.ColumnSelection;
import jalview.datamodel.SearchResults;
+import jalview.datamodel.SearchResultsI;
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceGroup;
import jalview.datamodel.SequenceI;
* there is no complement, or it is not following highlights, or no mapping
* is found, the result will be empty.
*/
- SearchResults sr = new SearchResults();
+ SearchResultsI sr = new SearchResults();
int seqOffset = findComplementScrollTarget(sr);
if (!sr.isEmpty())
{
import jalview.api.AlignmentViewPanel;
import jalview.bin.JalviewLite;
import jalview.datamodel.AlignmentI;
-import jalview.datamodel.SearchResults;
+import jalview.datamodel.SearchResultsI;
import jalview.datamodel.SequenceI;
import jalview.structure.StructureSelectionManager;
* Highlight the given results on the alignment.
*
*/
- public void highlightSearchResults(SearchResults results)
+ public void highlightSearchResults(SearchResultsI results)
{
scrollToPosition(results);
seqPanel.seqCanvas.highlightSearchResults(results);
* @param results
* @return false if results were not found
*/
- public boolean scrollToPosition(SearchResults results)
+ public boolean scrollToPosition(SearchResultsI results)
{
return scrollToPosition(results, true);
}
* - when set, the overview will be recalculated (takes longer)
* @return false if results were not found
*/
- public boolean scrollToPosition(SearchResults results,
+ public boolean scrollToPosition(SearchResultsI results,
boolean redrawOverview)
{
- return scrollToPosition(results, redrawOverview, false);
+ return scrollToPosition(results, 0, redrawOverview, false);
}
/**
* - when set, the overview will be recalculated (takes longer)
* @return false if results were not found
*/
- public boolean scrollToPosition(SearchResults results,
+ public boolean scrollToPosition(SearchResultsI results,
+ int verticalOffset,
boolean redrawOverview, boolean centre)
{
// do we need to scroll the panel?
{
return false;
}
+ /*
+ * allow for offset of target sequence (actually scroll to one above it)
+ */
+
SequenceI seq = alignment.getSequenceAt(seqIndex);
int[] r = results.getResults(seq, 0, alignment.getWidth());
if (r == null)
{
return false;
}
+
+ /*
+ * allow for offset of target sequence (actually scroll to one above it)
+ */
+ seqIndex = Math.max(0, seqIndex - verticalOffset);
return scrollTo(start, end, seqIndex, false, redrawOverview);
}
return true;
{
start = ostart;
}
+
if (!av.getWrapAlignment())
{
/*
* @param seqOffset
* the number of visible sequences to show above the mapped region
*/
- protected void scrollToCentre(SearchResults sr, int seqOffset)
+ protected void scrollToCentre(SearchResultsI sr, int seqOffset)
{
/*
* To avoid jumpy vertical scrolling (if some sequences are gapped or not
* mapped), we can make the scroll-to location a sequence above the one
* actually mapped.
*/
- SequenceI mappedTo = sr.getResultSequence(0);
+ SequenceI mappedTo = sr.getResults().get(0).getSequence();
List<SequenceI> seqs = av.getAlignment().getSequences();
/*
{
return; // failsafe, shouldn't happen
}
- sequenceIndex = Math.max(0, sequenceIndex - seqOffset);
- sr.getResults().get(0)
- .setSequence(av.getAlignment().getSequenceAt(sequenceIndex));
/*
* Scroll to position but centring the target residue. Also set a state flag
* to prevent adjustmentValueChanged performing this recursively.
*/
setFollowingComplementScroll(true);
- scrollToPosition(sr, true, true);
+ // this should be scrollToPosition(sr,verticalOffset,
+ scrollToPosition(sr, seqOffset, true, true);
}
private void sendViewPosition()
*/
package jalview.appletgui;
+import jalview.bin.JalviewLite;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.PDBEntry;
import jalview.datamodel.SequenceI;
-import jalview.io.AppletFormatAdapter;
import jalview.io.FileParse;
+import jalview.io.DataSourceType;
import jalview.io.StructureFile;
import jalview.schemes.BuriedColourScheme;
import jalview.schemes.HelixColourScheme;
}
public AppletJmol(PDBEntry pdbentry, SequenceI[] seq, String[] chains,
- AlignmentPanel ap, String protocol)
+ AlignmentPanel ap, DataSourceType protocol)
{
this.ap = ap;
jmb = new AppletJmolBinding(this, ap.getStructureSelectionManager(),
jmb.setColourBySequence(true);
if (pdbentry.getId() == null || pdbentry.getId().length() < 1)
{
- if (protocol.equals(AppletFormatAdapter.PASTE))
+ if (protocol == DataSourceType.PASTE)
{
pdbentry.setId("PASTED PDB"
+ (chains == null ? "_" : chains.toString()));
}
}
- if (jalview.bin.JalviewLite.debug)
+ if (JalviewLite.debug)
{
System.err
.println("AppletJmol: PDB ID is '" + pdbentry.getId() + "'");
}
});
pdbentry.setProperty("protocol", protocol);
-
if (pdbentry.getFile() != null)
+
{
// import structure data from pdbentry.getFile based on given protocol
- if (protocol.equals(AppletFormatAdapter.PASTE))
+ if (protocol == DataSourceType.PASTE)
{
// TODO: JAL-623 : correctly record file contents for matching up later
// pdbentry.getProperty().put("pdbfilehash",""+pdbentry.getFile().hashCode());
loadInline(pdbentry.getFile());
}
- else if (protocol.equals(AppletFormatAdapter.FILE)
- || protocol.equals(AppletFormatAdapter.URL))
+ else if (protocol == DataSourceType.FILE
+ || protocol == DataSourceType.URL)
{
jmb.viewer.openFile(pdbentry.getFile());
}
import jalview.datamodel.PDBEntry;
import jalview.datamodel.SequenceI;
import jalview.ext.jmol.JalviewJmolBinding;
+import jalview.io.DataSourceType;
import jalview.structure.StructureSelectionManager;
import java.awt.Container;
import java.util.Map;
-import javajs.awt.Dimension;
-
import org.jmol.api.JmolAppConsoleInterface;
import org.jmol.console.AppletConsole;
import org.jmol.java.BS;
public AppletJmolBinding(AppletJmol appletJmol,
StructureSelectionManager sSm, PDBEntry[] pdbentry,
- SequenceI[][] seq, String protocol)
+ SequenceI[][] seq, DataSourceType protocol)
{
super(sSm, pdbentry, seq, protocol);
appletJmolBinding = appletJmol;
}
@Override
- public Dimension resizeInnerPanel(String data)
+ public int[] resizeInnerPanel(String data)
{
// TODO Auto-generated method stub
return null;
import jalview.datamodel.ColumnSelection;
import jalview.datamodel.PDBEntry;
import jalview.datamodel.SequenceI;
+import jalview.io.AlignmentFileI;
import jalview.io.AnnotationFile;
import jalview.io.AppletFormatAdapter;
-import jalview.io.FileParse;
+import jalview.io.DataSourceType;
+import jalview.io.FileFormatI;
import jalview.io.IdentifyFile;
import jalview.io.NewickFile;
import jalview.io.TCoffeeScoreFile;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
+import java.io.IOException;
public class CutAndPasteTransfer extends Panel implements ActionListener,
MouseListener
AlignFrame alignFrame;
- FileParse source = null;
+ AlignmentFileI source = null;
public CutAndPasteTransfer(boolean forImport, AlignFrame alignFrame)
{
{
try
{
- NewickFile fin = new NewickFile(textarea.getText(), "Paste");
+ NewickFile fin = new NewickFile(textarea.getText(),
+ DataSourceType.PASTE);
fin.parse();
if (fin.getTree() != null)
{
AlignmentI al = null;
- String format = new IdentifyFile().identify(text,
- AppletFormatAdapter.PASTE);
- AppletFormatAdapter afa = new AppletFormatAdapter(alignFrame.alignPanel);
try
{
- al = afa.readFile(text, AppletFormatAdapter.PASTE, format);
+ FileFormatI format = new IdentifyFile().identify(text,
+ DataSourceType.PASTE);
+ AppletFormatAdapter afa = new AppletFormatAdapter(
+ alignFrame.alignPanel);
+ al = afa.readFile(text, DataSourceType.PASTE, format);
source = afa.getAlignFile();
- } catch (java.io.IOException ex)
- {
- ex.printStackTrace();
- }
if (al != null)
{
.getString("label.successfully_pasted_alignment_file"));
}
}
+ } catch (IOException ex)
+ {
+ ex.printStackTrace();
+ }
}
/**
* @param al
* @return
*/
- protected boolean openSplitFrame(AlignmentI al, String format)
+ protected boolean openSplitFrame(AlignmentI al, FileFormatI format)
{
final AlignmentI thisAlignment = this.alignFrame.getAlignViewport()
.getAlignment();
try
{
tcf = new TCoffeeScoreFile(textarea.getText(),
- jalview.io.AppletFormatAdapter.PASTE);
+ jalview.io.DataSourceType.PASTE);
if (tcf.isValid())
{
if (tcf.annotateAlignment(alignFrame.viewport.getAlignment(), true))
if (tcf == null)
{
if (new AnnotationFile().annotateAlignmentView(alignFrame.viewport,
- textarea.getText(), jalview.io.AppletFormatAdapter.PASTE))
+ textarea.getText(), jalview.io.DataSourceType.PASTE))
{
alignFrame.alignPanel.fontChanged();
alignFrame.alignPanel.setScrollValues(0, 0);
else
{
if (!alignFrame.parseFeaturesFile(textarea.getText(),
- jalview.io.AppletFormatAdapter.PASTE))
+ jalview.io.DataSourceType.PASTE))
{
alignFrame.statusBar
.setText(MessageManager
if (alignFrame.alignPanel.av.applet.jmolAvailable)
{
new jalview.appletgui.AppletJmol(pdb, new SequenceI[] { seq }, null,
- alignFrame.alignPanel, AppletFormatAdapter.PASTE);
+ alignFrame.alignPanel, DataSourceType.PASTE);
}
else
{
new MCview.AppletPDBViewer(pdb, new SequenceI[] { seq }, null,
- alignFrame.alignPanel, AppletFormatAdapter.PASTE);
+ alignFrame.alignPanel, DataSourceType.PASTE);
}
}
import jalview.datamodel.PDBEntry;
import jalview.datamodel.SequenceI;
import jalview.ext.jmol.JalviewJmolBinding;
+import jalview.io.DataSourceType;
import java.awt.Container;
import java.util.ArrayList;
private AlignmentPanel ap;
- protected ExtJmol(jalview.appletgui.AlignFrame alframe,
+ protected ExtJmol(AlignFrame alframe,
PDBEntry[] pdbentry, SequenceI[][] seq,
- String protocol)
+ DataSourceType protocol)
{
super(alframe.alignPanel.getStructureSelectionManager(), pdbentry, seq,
protocol);
import jalview.api.FeatureColourI;
import jalview.datamodel.SearchResults;
+import jalview.datamodel.SearchResultsI;
import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceI;
import jalview.io.FeaturesFile;
start.setText(features[index].getBegin() + "");
end.setText(features[index].getEnd() + "");
- SearchResults highlight = new SearchResults();
+ SearchResultsI highlight = new SearchResults();
highlight.addResult(sequences[0], features[index].getBegin(),
features[index].getEnd());
*/
package jalview.appletgui;
-import jalview.datamodel.SearchResults;
+import jalview.datamodel.SearchResultMatchI;
+import jalview.datamodel.SearchResultsI;
import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceI;
import jalview.util.MessageManager;
Frame frame;
- SearchResults searchResults;
+ SearchResultsI searchResults;
int seqIndex = 0;
frame.repaint();
frame.addWindowListener(new WindowAdapter()
{
+ @Override
public void windowClosing(WindowEvent evt)
{
ap.highlightSearchResults(null);
textfield.requestFocus();
}
+ @Override
public void actionPerformed(ActionEvent evt)
{
if (evt.getSource() == textfield)
SequenceFeature[] features = new SequenceFeature[searchResults
.getSize()];
- for (int i = 0; i < searchResults.getSize(); i++)
+ int i = 0;
+ for (SearchResultMatchI match : searchResults.getResults())
{
- seqs[i] = searchResults.getResultSequence(i);
+ seqs[i] = match.getSequence().getDatasetSequence();
features[i] = new SequenceFeature(textfield.getText().trim(),
- "Search Results", null, searchResults.getResultStart(i),
- searchResults.getResultEnd(i), "Search Results");
+ "Search Results", null, match.getStart(), match.getEnd(),
+ "Search Results");
+ i++;
}
if (ap.seqPanel.seqCanvas.getFeatureRenderer().amendFeatures(seqs,
seqIndex = finder.getSeqIndex();
resIndex = finder.getResIndex();
searchResults = finder.getSearchResults();
- Vector idMatch = finder.getIdMatch();
+ Vector<SequenceI> idMatch = finder.getIdMatch();
boolean haveResults = false;
// set or reset the GUI
if ((idMatch.size() > 0))
textfield.setBounds(new Rectangle(40, 17, 133, 21));
textfield.addKeyListener(new java.awt.event.KeyAdapter()
{
+ @Override
public void keyTyped(KeyEvent e)
{
textfield_keyTyped(e);
package jalview.appletgui;
import jalview.datamodel.AlignmentI;
-import jalview.datamodel.SearchResults;
+import jalview.datamodel.SearchResultsI;
import jalview.datamodel.SequenceGroup;
import jalview.datamodel.SequenceI;
import jalview.renderer.ScaleRenderer;
AlignViewport av;
- SearchResults searchResults = null;
-
boolean fastPaint = false;
int cursorX = 0;
// / Highlight search Results once all sequences have been drawn
// ////////////////////////////////////////////////////////
- if (searchResults != null)
+ if (av.hasSearchResults())
{
- int[] visibleResults = searchResults.getResults(nextSeq, startRes,
+ int[] visibleResults = av.getSearchResults().getResults(nextSeq,
+ startRes,
endRes);
if (visibleResults != null)
{
}
}
- public void highlightSearchResults(SearchResults results)
+ public void highlightSearchResults(SearchResultsI results)
{
- searchResults = results;
-
+ av.setSearchResults(results);
repaint();
}
import jalview.commands.EditCommand.Action;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.ColumnSelection;
+import jalview.datamodel.SearchResultMatchI;
import jalview.datamodel.SearchResults;
-import jalview.datamodel.SearchResults.Match;
+import jalview.datamodel.SearchResultsI;
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceGroup;
* @param results
* @return true if results were matched, false if not
*/
- private boolean setStatusMessage(SearchResults results)
+ private boolean setStatusMessage(SearchResultsI results)
{
AlignmentI al = this.av.getAlignment();
int sequenceIndex = al.findIndex(results);
return false;
}
SequenceI ds = al.getSequenceAt(sequenceIndex).getDatasetSequence();
- for (Match m : results.getResults())
+ for (SearchResultMatchI m : results.getResults())
{
SequenceI seq = m.getSequence();
if (seq.getDatasetSequence() != null)
if (features != null && features.length > 0)
{
- SearchResults highlight = new SearchResults();
+ SearchResultsI highlight = new SearchResults();
highlight.addResult(sequence, features[0].getBegin(),
features[0].getEnd());
seqCanvas.highlightSearchResults(highlight);
}
@Override
- public void highlightSequence(SearchResults results)
+ public void highlightSequence(SearchResultsI results)
{
if (av.isFollowHighlight())
{
import jalview.gui.PromptUserConfig;
import jalview.io.AppletFormatAdapter;
import jalview.io.BioJsHTMLOutput;
+import jalview.io.DataSourceType;
+import jalview.io.FileFormat;
+import jalview.io.FileFormatException;
+import jalview.io.FileFormatI;
import jalview.io.FileLoader;
-import jalview.io.FormatAdapter;
import jalview.io.HtmlSvgOutput;
import jalview.io.IdentifyFile;
import jalview.io.NewickFile;
import java.io.PrintWriter;
import java.net.MalformedURLException;
import java.net.URI;
+import java.net.URISyntaxException;
import java.net.URL;
import java.security.AllPermission;
import java.security.CodeSource;
BioJsHTMLOutput.updateBioJS();
}
- String file = null, protocol = null, format = null, data = null;
+ String file = null, data = null;
+ FileFormatI format = null;
+ DataSourceType protocol = null;
FileLoader fileLoader = new FileLoader(!headless);
Vector<String> getFeatures = null; // vector of das source nicknames to
// fetch
{
try
{
- String viprotocol = AppletFormatAdapter
+ DataSourceType viprotocol = AppletFormatAdapter
.checkProtocol(vamsasImport);
- if (viprotocol == jalview.io.FormatAdapter.FILE)
+ if (viprotocol == DataSourceType.FILE)
{
inSession = desktop.vamsasImport(new File(vamsasImport));
}
- else if (viprotocol == FormatAdapter.URL)
+ else if (viprotocol == DataSourceType.URL)
{
inSession = desktop.vamsasImport(new URL(vamsasImport));
}
protocol = AppletFormatAdapter.checkProtocol(file);
- format = new IdentifyFile().identify(file, protocol);
+ try
+ {
+ format = new IdentifyFile().identify(file, protocol);
+ } catch (FileFormatException e1)
+ {
+ // TODO ?
+ }
AlignFrame af = fileLoader.LoadFileWaitTillLoaded(file, protocol,
format);
String imageName = "unnamed.png";
while (aparser.getSize() > 1)
{
- format = aparser.nextValue();
+ String outputFormat = aparser.nextValue();
file = aparser.nextValue();
- if (format.equalsIgnoreCase("png"))
+ if (outputFormat.equalsIgnoreCase("png"))
{
af.createPNG(new File(file));
imageName = (new File(file)).getName();
System.out.println("Creating PNG image: " + file);
continue;
}
- else if (format.equalsIgnoreCase("svg"))
+ else if (outputFormat.equalsIgnoreCase("svg"))
{
File imageFile = new File(file);
imageName = imageFile.getName();
System.out.println("Creating SVG image: " + file);
continue;
}
- else if (format.equalsIgnoreCase("html"))
+ else if (outputFormat.equalsIgnoreCase("html"))
{
File imageFile = new File(file);
imageName = imageFile.getName();
- new HtmlSvgOutput(new File(file), af.alignPanel);
+ HtmlSvgOutput htmlSVG = new HtmlSvgOutput(af.alignPanel);
+ htmlSVG.exportHTML(file);
+
System.out.println("Creating HTML image: " + file);
continue;
}
- else if (format.equalsIgnoreCase("biojsmsa"))
+ else if (outputFormat.equalsIgnoreCase("biojsmsa"))
{
- BioJsHTMLOutput.updateBioJS();
+ if (file == null)
+ {
+ System.err.println("The output html file must not be null");
+ return;
+ }
try
{
- Thread.sleep(1500);
- } catch (InterruptedException e)
+ BioJsHTMLOutput
+ .refreshVersionInfo(BioJsHTMLOutput.BJS_TEMPLATES_LOCAL_DIRECTORY);
+ } catch (URISyntaxException e)
{
e.printStackTrace();
}
- BioJsHTMLOutput bjs = new BioJsHTMLOutput(af.alignPanel, af);
- bjs.exportJalviewAlignmentAsBioJsHtmlFile(file);
+ BioJsHTMLOutput bjs = new BioJsHTMLOutput(af.alignPanel);
+ bjs.exportHTML(file);
System.out.println("Creating BioJS MSA Viwer HTML file: "
+ file);
continue;
}
- else if (format.equalsIgnoreCase("imgMap"))
+ else if (outputFormat.equalsIgnoreCase("imgMap"))
{
af.createImageMap(new File(file), imageName);
System.out.println("Creating image map: " + file);
continue;
}
- else if (format.equalsIgnoreCase("eps"))
+ else if (outputFormat.equalsIgnoreCase("eps"))
{
File outputFile = new File(file);
System.out.println("Creating EPS file: "
jalview.bin.Cache.removeProperty("STARTUP_FILE");
}
- protocol = "File";
+ protocol = DataSourceType.FILE;
if (file.indexOf("http:") > -1)
{
- protocol = "URL";
+ protocol = DataSourceType.URL;
}
if (file.endsWith(".jar"))
{
- format = "Jalview";
+ format = FileFormat.Jalview;
}
else
{
- format = new IdentifyFile().identify(file, protocol);
+ try
+ {
+ format = new IdentifyFile().identify(file, protocol);
+ } catch (FileFormatException e)
+ {
+ // TODO what?
+ }
}
startUpAlframe = fileLoader.LoadFileWaitTillLoaded(file, protocol,
import jalview.datamodel.SequenceI;
import jalview.io.AnnotationFile;
import jalview.io.AppletFormatAdapter;
+import jalview.io.DataSourceType;
+import jalview.io.FileFormat;
+import jalview.io.FileFormatI;
import jalview.io.FileParse;
import jalview.io.IdentifyFile;
import jalview.io.JPredFile;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
+import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
{
try
{
+ FileFormatI theFormat = FileFormat.valueOf(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 "";
}
{
boolean seqlimits = suffix.equalsIgnoreCase(TRUE);
- String reply = new AppletFormatAdapter().formatSequences(format,
+ FileFormatI theFormat = FileFormat.valueOf(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;
}
}
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);
}
}
public boolean loadFeaturesFrom(AlignFrame alf, String features,
boolean autoenabledisplay)
{
- return alf.parseFeaturesFile(features, AppletFormatAdapter.PASTE,
+ return alf.parseFeaturesFile(features, DataSourceType.PASTE,
autoenabledisplay);
}
{
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();
}
/**
* State variable: protocol for access to file source
*/
- String protocol;
+ DataSourceType protocol;
String _file; // alignment file or URL spec
*/
if (path.startsWith("PASTE"))
{
- protocol = AppletFormatAdapter.PASTE;
+ protocol = DataSourceType.PASTE;
return path.substring(5);
}
*/
if (path.indexOf("://") != -1)
{
- protocol = AppletFormatAdapter.URL;
+ protocol = DataSourceType.URL;
return path;
}
System.err.println("Prepended document base '" + documentBase
+ "' to make: '" + withDocBase + "'");
}
- protocol = AppletFormatAdapter.URL;
+ protocol = DataSourceType.URL;
return withDocBase;
}
if (!withCodeBase.equals(withDocBase)
&& HttpUtils.isValidUrl(withCodeBase))
{
- protocol = AppletFormatAdapter.URL;
+ protocol = DataSourceType.URL;
if (debug)
{
System.err.println("Prepended codebase '" + codeBase
*/
if (inArchive(path))
{
- protocol = AppletFormatAdapter.CLASSLOADER;
+ protocol = DataSourceType.CLASSLOADER;
}
return path;
}
return null;
}
String resolvedFile = resolveFileProtocol(fileParam);
- String format = new IdentifyFile().identify(resolvedFile, protocol);
- dbgMsg("File identified as '" + format + "'");
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))
// update the focus.
currentAlignFrame = newAlignFrame;
- if (protocol == AppletFormatAdapter.PASTE)
+ if (protocol == DataSourceType.PASTE)
{
newAlignFrame.setTitle(MessageManager.formatMessage(
"label.sequences_from", new Object[] { applet
}
else
{
- pdbs.addElement(new Object[] { pdb, seqs, chains,
- new String(protocol) });
+ pdbs.addElement(new Object[] { pdb, seqs, chains, protocol });
}
}
}
import jalview.datamodel.AlignmentI;
import jalview.io.AppletFormatAdapter;
+import jalview.io.DataSourceType;
+import jalview.io.FileFormat;
+import jalview.io.FileFormatI;
import jalview.io.FileParse;
+import jalview.io.IdentifyFile;
import java.applet.Applet;
import java.io.InputStream;
*
* @return void
*/
+ @Override
public void init()
{
this.setSize(300, 200);
.println("Specify a resource to read on the file parameter");
return;
}
- String protocol = null;
+ DataSourceType protocol = null;
try
{
System.out.println("Loading thread started with:\n>>file\n" + file
+ (rtn ? "" : "not") + " located by classloader.");
if (rtn)
{
- protocol = AppletFormatAdapter.CLASSLOADER;
+ protocol = DataSourceType.CLASSLOADER;
}
} catch (Exception ex)
}
if (file.indexOf("://") > -1)
{
- protocol = AppletFormatAdapter.URL;
+ protocol = DataSourceType.URL;
}
else
{
// skipping codebase prepend check.
- protocol = AppletFormatAdapter.FILE;
+ protocol = DataSourceType.FILE;
}
System.out.println("Trying to get contents of resource:");
+ " cannot be read with protocol==" + protocol);
return;
}
- String format = getParameter("format");
- if (format == null || format.length() == 0)
+ FileFormatI format = FileFormat.valueOf(getParameter("format"));
+ if (format == null)
{
- format = new jalview.io.IdentifyFile().identify(file, protocol);
+ format = new IdentifyFile().identify(file, protocol);
System.out.println("Format is " + format);
}
else
if (al != null)
{
System.out.println(new AppletFormatAdapter().formatSequences(
- "FASTA", al, false));
+ FileFormat.Fasta, al, false));
}
} catch (Exception e)
{
import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceGroup;
import jalview.datamodel.SequenceI;
+import jalview.io.DataSourceType;
import jalview.io.FeaturesFile;
import jalview.util.MessageManager;
SequenceFeature[] sfs = sq.getSequenceFeatures();
if (sfs != null)
{
- /*
- * check whether the feature start/end (base 1)
- * overlaps the selection start/end
- */
int ist = sq.findIndex(sq.getStart());
int iend = sq.findIndex(sq.getEnd());
if (iend < startPosition || ist > endPosition)
// - findIndex wastes time by starting from first character and
// counting
- int i = sq.findIndex(sf.getBegin());
- int j = sq.findIndex(sf.getEnd());
- if (j < startPosition || i > endPosition)
+ int sfStartCol = sq.findIndex(sf.getBegin());
+ int sfEndCol = sq.findIndex(sf.getEnd());
+
+ if (sf.isContactFeature())
+ {
+ /*
+ * 'contact' feature - check for 'start' or 'end'
+ * position within the selected region
+ */
+ if (sfStartCol >= startPosition
+ && sfStartCol <= endPosition)
+ {
+ bs.set(sfStartCol - 1);
+ sequenceHasFeature = true;
+ }
+ if (sfEndCol >= startPosition && sfEndCol <= endPosition)
+ {
+ bs.set(sfEndCol - 1);
+ sequenceHasFeature = true;
+ }
+ continue;
+ }
+
+ /*
+ * contiguous feature - select feature positions (if any)
+ * within the selected region
+ */
+ if (sfStartCol > endPosition || sfEndCol < startPosition)
{
// feature is outside selected region
continue;
}
sequenceHasFeature = true;
- if (i < startPosition)
+ if (sfStartCol < startPosition)
{
- i = startPosition;
+ sfStartCol = startPosition;
}
- if (i < ist)
+ if (sfStartCol < ist)
{
- i = ist;
+ sfStartCol = ist;
}
- if (j > endPosition)
+ if (sfEndCol > endPosition)
{
- j = endPosition;
+ sfEndCol = endPosition;
}
- for (; i <= j; i++)
+ for (; sfStartCol <= sfEndCol; sfStartCol++)
{
- bs.set(i - 1); // convert to base 0
+ bs.set(sfStartCol - 1); // convert to base 0
}
}
}
}
@Override
- public boolean parseFeaturesFile(String file, String protocol,
+ public boolean parseFeaturesFile(String file, DataSourceType protocol,
boolean relaxedIdMatching)
{
boolean featuresFile = false;
return featuresFile;
}
+
+ @Override
+ public boolean markHighlightedColumns(boolean invert,
+ boolean extendCurrent, boolean toggle)
+ {
+ if (!viewport.hasSearchResults())
+ {
+ // do nothing if no selection exists
+ return false;
+ }
+ // JBPNote this routine could also mark rows, not just columns.
+ BitSet bs = new BitSet();
+ SequenceCollectionI sqcol = (viewport.getSelectionGroup() == null || extendCurrent) ? viewport
+ .getAlignment() : viewport.getSelectionGroup();
+
+ // this could be a lambda... - the remains of the method is boilerplate,
+ // except for the different messages for reporting selection.
+ int nseq = viewport.getSearchResults().markColumns(sqcol, bs);
+
+ ColumnSelection cs = viewport.getColumnSelection();
+ if (cs == null)
+ {
+ cs = new ColumnSelection();
+ }
+
+ if (bs.cardinality() > 0 || invert)
+ {
+ boolean changed = cs.markColumns(bs, sqcol.getStartRes(),
+ sqcol.getEndRes(), invert, extendCurrent, toggle);
+ if (changed)
+ {
+ viewport.setColumnSelection(cs);
+ alignPanel.paintAlignment(true);
+ int columnCount = invert ? (sqcol.getEndRes() - sqcol.getStartRes() + 1)
+ - bs.cardinality()
+ : bs.cardinality();
+ avcg.setStatus(MessageManager.formatMessage(
+ "label.view_controller_toggled_marked",
+ new String[] {
+ toggle ? MessageManager.getString("label.toggled")
+ : MessageManager.getString("label.marked"),
+ String.valueOf(columnCount),
+ invert ? MessageManager
+ .getString("label.not_containing")
+ : MessageManager.getString("label.containing"),
+ "Highlight", Integer.valueOf(nseq).toString() }));
+ return true;
+ }
+ }
+ else
+ {
+ avcg.setStatus(MessageManager
+ .formatMessage("No highlighted regions marked"));
+ if (!extendCurrent)
+ {
+ cs.clear();
+ alignPanel.paintAlignment(true);
+ }
+ }
+ return false;
+ }
+
}
* where highlighted regions go
*/
public void markMappedRegion(SequenceI seq, int index,
- SearchResults results)
+ SearchResultsI results)
{
int[] codon;
SequenceI ds = seq.getDatasetSequence();
* jalview.datamodel.AlignmentI#findIndex(jalview.datamodel.SearchResults)
*/
@Override
- public int findIndex(SearchResults results)
+ public int findIndex(SearchResultsI results)
{
int i = 0;
@Override
public String toString()
{
- return new FastaFile().print(getSequencesArray());
+ return new FastaFile().print(getSequencesArray(), true);
}
/**
* @param results
* @return -1 or index of sequence in alignment
*/
- int findIndex(SearchResults results);
+ int findIndex(SearchResultsI results);
/**
* append sequences and annotation from another alignment object to this one.
public enum Type
{
- PDB, MMCIF, FILE;
+ // TODO is FILE needed; if not is this enum needed, or can we
+ // use FileFormatI for PDB, MMCIF?
+ PDB("pdb", "pdb"), MMCIF("mmcif", "cif"), FILE("?", "?");
+
+ /*
+ * file extension for cached structure file; must be one that
+ * is recognised by Chimera 'open' command
+ * @see https://www.cgl.ucsf.edu/chimera/current/docs/UsersGuide/filetypes.html
+ */
+ String ext;
+
+ /*
+ * format specifier used in dbfetch request
+ * @see http://www.ebi.ac.uk/Tools/dbfetch/dbfetch/dbfetch.databases#pdb
+ */
+ String format;
+
+ private Type(String fmt, String ex)
+ {
+ format = fmt;
+ ext = ex;
+ }
+
+ public String getFormat()
+ {
+ return format;
+ }
+ public String getExtension()
+ {
+ return ext;
+ }
+
/**
* case insensitive matching for Type enum
*
}
}
-
/**
* Answers true if obj is a PDBEntry with the same id and chain code (both
* ignoring case), file, type and properties
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * 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 Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.datamodel;
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * 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 Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.datamodel;
public interface ProfileI
--- /dev/null
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * 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 Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
+package jalview.datamodel;
+
+public class Profiles implements ProfilesI
+{
+
+ private ProfileI[] profiles;
+
+ public Profiles(ProfileI[] p)
+ {
+ profiles = p;
+ }
+
+ /**
+ * Returns the profile for the given column, or null if none found
+ *
+ * @param col
+ */
+ @Override
+ public ProfileI get(int col)
+ {
+ return profiles != null && col >= 0 && col < profiles.length ? profiles[col]
+ : null;
+ }
+
+ /**
+ * Returns the first column (base 0) covered by the profiles
+ */
+ @Override
+ public int getStartColumn()
+ {
+ return 0;
+ }
+
+ /**
+ * Returns the last column (base 0) covered by the profiles
+ */
+ @Override
+ public int getEndColumn()
+ {
+ return profiles == null ? 0 : profiles.length - 1;
+ }
+
+}
--- /dev/null
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * 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 Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
+package jalview.datamodel;
+
+public interface ProfilesI
+{
+
+ ProfileI get(int i);
+
+ int getStartColumn();
+
+ int getEndColumn();
+
+}
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * 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 Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.datamodel;
import jalview.util.Comparison;
--- /dev/null
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * 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 Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
+package jalview.datamodel;
+
+/**
+ * An interface that describes one matched region of an alignment, as one
+ * contiguous portion of a single dataset sequence
+ */
+public interface SearchResultMatchI
+{
+ /**
+ * Returns the matched sequence
+ *
+ * @return
+ */
+ SequenceI getSequence();
+
+ /**
+ * Returns the start position of the match in the sequence (base 1)
+ *
+ * @return
+ */
+ int getStart();
+
+ /**
+ * Returns the end position of the match in the sequence (base 1)
+ *
+ * @return
+ */
+ int getEnd();
+
+}
\ No newline at end of file
package jalview.datamodel;
import java.util.ArrayList;
-import java.util.Arrays;
+import java.util.BitSet;
import java.util.List;
/**
* Holds a list of search result matches, where each match is a contiguous
* stretch of a single sequence.
*
- * @author gmcarstairs
+ * @author gmcarstairs amwaterhouse
*
*/
-public class SearchResults
+public class SearchResults implements SearchResultsI
{
- private List<Match> matches = new ArrayList<Match>();
+ private List<SearchResultMatchI> matches = new ArrayList<SearchResultMatchI>();
/**
* One match consists of a sequence reference, start and end positions.
* Discontiguous ranges in a sequence require two or more Match objects.
*/
- public class Match
+ public class Match implements SearchResultMatchI
{
SequenceI sequence;
int end;
/**
- * Constructor
+ * create a Match on a range of sequence. Match always holds region in
+ * forwards order, even if given in reverse order (such as from a mapping to
+ * a reverse strand); this avoids trouble for routines that highlight search
+ * results etc
*
* @param seq
* a sequence
}
else
{
+ // TODO: JBP could mark match as being specified in reverse direction
+ // for use
+ // by caller ? e.g. visualizing reverse strand highlight
this.start = end;
this.end = start;
}
}
+ /* (non-Javadoc)
+ * @see jalview.datamodel.SearchResultMatchI#getSequence()
+ */
+ @Override
public SequenceI getSequence()
{
return sequence;
}
+ /* (non-Javadoc)
+ * @see jalview.datamodel.SearchResultMatchI#getStart()
+ */
+ @Override
public int getStart()
{
return start;
}
+ /* (non-Javadoc)
+ * @see jalview.datamodel.SearchResultMatchI#getEnd()
+ */
+ @Override
public int getEnd()
{
return end;
}
/**
- * Returns the string of characters in the matched region, prefixed by the
- * start position, e.g. "12CGT" or "208K"
+ * Returns a representation as "seqid/start-end"
*/
@Override
public String toString()
{
- final int from = Math.max(start - 1, 0);
- String startPosition = String.valueOf(from);
- return startPosition + getCharacters();
- }
-
- /**
- * Returns the string of characters in the matched region.
- */
- public String getCharacters()
- {
- char[] chars = sequence.getSequence();
- // convert start/end to base 0 (with bounds check)
- final int from = Math.max(start - 1, 0);
- final int to = Math.min(end, chars.length + 1);
- return String.valueOf(Arrays.copyOfRange(chars, from, to));
+ StringBuilder sb = new StringBuilder();
+ if (sequence != null)
+ {
+ sb.append(sequence.getName()).append("/");
+ }
+ sb.append(start).append("-").append(end);
+ return sb.toString();
}
public void setSequence(SequenceI seq)
@Override
public boolean equals(Object obj)
{
- if (obj == null || !(obj instanceof Match))
+ if (obj == null || !(obj instanceof SearchResultMatchI))
{
return false;
}
- Match m = (Match) obj;
- return (this.sequence == m.sequence && this.start == m.start && this.end == m.end);
+ SearchResultMatchI m = (SearchResultMatchI) obj;
+ return (sequence == m.getSequence() && start == m.getStart() && end == m
+ .getEnd());
}
}
- /**
- * This method replaces the old search results which merely held an alignment
- * index of search matches. This broke when sequences were moved around the
- * alignment
- *
- * @param seq
- * Sequence
- * @param start
- * int
- * @param end
- * int
+ /* (non-Javadoc)
+ * @see jalview.datamodel.SearchResultsI#addResult(jalview.datamodel.SequenceI, int, int)
*/
- public void addResult(SequenceI seq, int start, int end)
+ @Override
+ public SearchResultMatchI addResult(SequenceI seq, int start, int end)
{
- matches.add(new Match(seq, start, end));
+ Match m = new Match(seq, start, end);
+ matches.add(m);
+ return m;
}
- /**
- * Quickly check if the given sequence is referred to in the search results
- *
- * @param sequence
- * (specific alignment sequence or a dataset sequence)
- * @return true if the results involve sequence
+ /* (non-Javadoc)
+ * @see jalview.datamodel.SearchResultsI#involvesSequence(jalview.datamodel.SequenceI)
*/
+ @Override
public boolean involvesSequence(SequenceI sequence)
{
SequenceI ds = sequence.getDatasetSequence();
- for (Match m : matches)
+ for (SearchResultMatchI _m : matches)
{
- if (m.sequence != null
- && (m.sequence == sequence || m.sequence == ds))
+ SequenceI matched = _m.getSequence();
+ if (matched != null && (matched == sequence || matched == ds))
{
return true;
}
return false;
}
- /**
- * This Method returns the search matches which lie between the start and end
- * points of the sequence in question. It is optimised for returning objects
- * for drawing on SequenceCanvas
+ /* (non-Javadoc)
+ * @see jalview.datamodel.SearchResultsI#getResults(jalview.datamodel.SequenceI, int, int)
*/
+ @Override
public int[] getResults(SequenceI sequence, int start, int end)
{
if (matches.isEmpty())
int[] tmp = null;
int resultLength, matchStart = 0, matchEnd = 0;
boolean mfound;
- for (Match m : matches)
+ Match m;
+ for (SearchResultMatchI _m : matches)
{
+ m = (Match) _m;
+
mfound = false;
if (m.sequence == sequence)
{
return result;
}
- public int getSize()
- {
- return matches.size();
- }
-
- public SequenceI getResultSequence(int index)
- {
- return matches.get(index).sequence;
- }
-
- /**
- * Returns the start position of the i'th match in the search results.
- *
- * @param i
- * @return
- */
- public int getResultStart(int i)
+ @Override
+ public int markColumns(SequenceCollectionI sqcol, BitSet bs)
{
- return matches.get(i).start;
+ int count = 0;
+ BitSet mask = new BitSet();
+ for (SequenceI s : sqcol.getSequences())
+ {
+ int[] cols = getResults(s, sqcol.getStartRes(), sqcol.getEndRes());
+ if (cols != null)
+ {
+ for (int pair = 0; pair < cols.length; pair += 2)
+ {
+ mask.set(cols[pair], cols[pair + 1] + 1);
+ }
+ }
+ }
+ // compute columns that were newly selected
+ BitSet original = (BitSet) bs.clone();
+ original.and(mask);
+ count = mask.cardinality() - original.cardinality();
+ // and mark ranges not already marked
+ bs.or(mask);
+ return count;
}
- /**
- * Returns the end position of the i'th match in the search results.
- *
- * @param i
- * @return
+ /* (non-Javadoc)
+ * @see jalview.datamodel.SearchResultsI#getSize()
*/
- public int getResultEnd(int i)
+ @Override
+ public int getSize()
{
- return matches.get(i).end;
+ return matches.size();
}
- /**
- * Returns true if no search result matches are held.
- *
- * @return
+ /* (non-Javadoc)
+ * @see jalview.datamodel.SearchResultsI#isEmpty()
*/
+ @Override
public boolean isEmpty()
{
return matches.isEmpty();
}
- /**
- * Returns the list of matches.
- *
- * @return
+ /* (non-Javadoc)
+ * @see jalview.datamodel.SearchResultsI#getResults()
*/
- public List<Match> getResults()
+ @Override
+ public List<SearchResultMatchI> getResults()
{
return matches;
}
/**
- * Return the results as a string of characters (bases) prefixed by start
- * position(s). Meant for use when the context ensures that all matches are to
- * regions of the same sequence (otherwise the result is meaningless).
+ * Return the results as a list of matches [seq1/from-to, seq2/from-to, ...]
*
* @return
*/
@Override
public String toString()
{
- StringBuilder result = new StringBuilder(256);
- for (Match m : matches)
- {
- result.append(m.toString());
- }
- return result.toString();
- }
-
- /**
- * Return the results as a string of characters (bases). Meant for use when
- * the context ensures that all matches are to regions of the same sequence
- * (otherwise the result is meaningless).
- *
- * @return
- */
- public String getCharacters()
- {
- StringBuilder result = new StringBuilder(256);
- for (Match m : matches)
- {
- result.append(m.getCharacters());
- }
- return result.toString();
+ return matches == null ? "" : matches.toString();
}
/**
- * Hashcode is has derived from the list of matches. This ensures that when
- * two SearchResults objects satisfy the test for equals(), then they have the
+ * Hashcode is derived from the list of matches. This ensures that when two
+ * SearchResults objects satisfy the test for equals(), then they have the
* same hashcode.
+ *
+ * @see Match#hashCode()
+ * @see java.util.AbstractList#hashCode()
*/
@Override
public int hashCode()
@Override
public boolean equals(Object obj)
{
- if (obj == null || !(obj instanceof SearchResults))
+ if (obj == null || !(obj instanceof SearchResultsI))
{
return false;
}
- SearchResults sr = (SearchResults) obj;
- return ((ArrayList<Match>) this.matches).equals(sr.matches);
+ SearchResultsI sr = (SearchResultsI) obj;
+ return matches.equals(sr.getResults());
}
}
--- /dev/null
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * 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 Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
+package jalview.datamodel;
+
+import java.util.BitSet;
+import java.util.List;
+
+/**
+ * An interface describing the result of a search or other operation which
+ * highlights matched regions of an alignment
+ */
+public interface SearchResultsI
+{
+
+ /**
+ * Adds one region to the results
+ *
+ * @param seq
+ * Sequence
+ * @param start
+ * int
+ * @param end
+ * int
+ * @return
+ */
+ SearchResultMatchI addResult(SequenceI seq, int start, int end);
+
+ /**
+ * Answers true if the search results include the given sequence (or its
+ * dataset sequence), else false
+ *
+ * @param sequence
+ * @return
+ */
+ boolean involvesSequence(SequenceI sequence);
+
+ /**
+ * Returns an array of [from, to, from, to..] matched columns (base 0) between
+ * the given start and end columns of the given sequence. Returns null if no
+ * matches overlap the specified region.
+ * <p>
+ * Implementations should provide an optimised method to return locations to
+ * highlight on a visible portion of an alignment.
+ *
+ * @param sequence
+ * @param start
+ * first column of range (base 0, inclusive)
+ * @param end
+ * last column of range base 0, inclusive)
+ * @return int[]
+ */
+ int[] getResults(SequenceI sequence, int start, int end);
+
+ /**
+ * Returns the number of matches found
+ *
+ * @return
+ */
+ int getSize();
+
+ /**
+ * Returns true if no search result matches are held.
+ *
+ * @return
+ */
+ boolean isEmpty();
+
+ /**
+ * Returns the list of matches.
+ *
+ * @return
+ */
+ List<SearchResultMatchI> getResults();
+
+ /**
+ * Set bits in a bitfield for all columns in the given sequence collection
+ * that are highlighted
+ *
+ * @param sqcol
+ * the set of sequences to search for highlighted regions
+ * @param bs
+ * bitset to set
+ * @return number of bits set
+ */
+ int markColumns(SequenceCollectionI sqcol, BitSet bs);
+}
\ No newline at end of file
}
SequenceFeature sf = (SequenceFeature) o;
- if (begin != sf.begin || end != sf.end || score != sf.score)
+ boolean sameScore = Float.isNaN(score) ? Float.isNaN(sf.score)
+ : score == sf.score;
+ if (begin != sf.begin || end != sf.end || !sameScore)
{
return false;
}
return s.hashCode() + getBegin() + getEnd() + (int) getScore()
+ getStrand();
}
+
+ /**
+ * Answers true if the feature's start/end values represent two related
+ * positions, rather than ends of a range. Such features may be visualised or
+ * reported differently to features on a range.
+ */
+ public boolean isContactFeature()
+ {
+ // TODO abstract one day to a FeatureType class
+ if ("disulfide bond".equalsIgnoreCase(type)
+ || "disulphide bond".equalsIgnoreCase(type))
+ {
+ return true;
+ }
+ return false;
+ }
}
boolean upd = false;
try
{
- ProfileI[] cnsns = AAFrequency.calculate(sequences, startRes,
+ ProfilesI cnsns = AAFrequency.calculate(sequences, startRes,
endRes + 1, showSequenceLogo);
if (consensus != null)
{
c.completeAnnotations(conservation, null, startRes, endRes + 1);
}
- public ProfileI[] consensusData = null;
+ public ProfilesI consensusData = null;
- private void _updateConsensusRow(ProfileI[] cnsns, long nseq)
+ private void _updateConsensusRow(ProfilesI cnsns, long nseq)
{
if (consensus == null)
{
* limitations under the License.
*/
+/*
+ * Copied to Jalview September 2016.
+ * Only the members of this class required for SparseIntArray were copied.
+ * Method binarySearch(short[] array, int size, short value) added to support
+ * SparseShortArray.
+ */
class ContainerHelpers
{
static final boolean[] EMPTY_BOOLEANS = new boolean[0];
while (lo <= hi)
{
final int mid = (lo + hi) >>> 1;
- final int midVal = array[mid];
+ final short midVal = array[mid];
if (midVal < value)
{
lo = mid + 1;
* order in the case of <code>valueAt(int)<code>.
* </p>
*/
+
+/*
+ * Imported into Jalview September 2016
+ * Change log:
+ * Sep 2016 method add(int, int) added for more efficient increment of counts
+ * (a single binary search, rather than one on read and one on write)
+ */
public class SparseIntArray implements Cloneable
{
private int[] mKeys;
* order in the case of <code>valueAt(int)<code>.
* </p>
*/
-/**
- * A copy of SparseShortArray designed to store short values (to minimise space
- * usage).
+
+/*
+ * Added to Jalview September 2016. A copy of SparseIntArray designed to store
+ * short values (to minimise space usage).
* <p>
- * Note that operations append, put, add throw ArithmeticException if the
- * resulting value overflows the range of a short.
+ * Note that operations append, put, add throw ArithmeticException if either the
+ * key or the resulting value overflows the range of a short. Calling code
+ * should trap and handle this, for example by switching to using a
+ * SparseIntArray instead.
*/
public class SparseShortArray implements Cloneable
{
List<String> queries = new ArrayList<String>();
queries.add(query);
FileParse fp = getSequenceReader(queries);
+ if (fp == null || !fp.isValid())
+ {
+ return null;
+ }
FeaturesFile fr = new FeaturesFile(fp);
return new Alignment(fr.getSeqsAsArray());
}
*/
package jalview.ext.ensembl;
+import jalview.io.DataSourceType;
import jalview.io.FileParse;
import jalview.util.StringUtils;
// request failed
return null;
}
- FileParse fp = new FileParse(reader, url.toString(), "HTTP_POST");
+ FileParse fp = new FileParse(reader, url.toString(), DataSourceType.URL);
return fp;
}
EnsemblFeatureType[] features = getFeaturesToFetch();
AlignmentI geneFeatures = gffFetcher.getSequenceRecords(accId,
features);
- if (geneFeatures.getHeight() > 0)
+ if (geneFeatures != null && geneFeatures.getHeight() > 0)
{
genomicSequence = geneFeatures.getSequenceAt(0);
}
import jalview.datamodel.ColumnSelection;
import jalview.datamodel.PDBEntry;
import jalview.datamodel.SequenceI;
-import jalview.io.AppletFormatAdapter;
+import jalview.io.DataSourceType;
import jalview.io.StructureFile;
import jalview.schemes.ColourSchemeI;
import jalview.schemes.ResidueProperties;
import java.util.Map;
import java.util.Vector;
-import javajs.awt.Dimension;
-
import org.jmol.adapter.smarter.SmarterJmolAdapter;
import org.jmol.api.JmolAppConsoleInterface;
import org.jmol.api.JmolSelectionListener;
public JalviewJmolBinding(StructureSelectionManager ssm,
PDBEntry[] pdbentry, SequenceI[][] sequenceIs,
- String protocol)
+ DataSourceType protocol)
{
super(ssm, pdbentry, sequenceIs, protocol);
/*
// see JAL-623 - need method of matching pasted data up
{
pdb = getSsm().setMapping(getSequence()[pe], getChains()[pe],
- pdbfile, AppletFormatAdapter.PASTE);
+ pdbfile, DataSourceType.PASTE);
getPdbEntry(modelnum).setFile("INLINE" + pdb.getId());
matches = true;
foundEntry = true;
// needs
// to be tested. See mantis bug
// https://mantis.lifesci.dundee.ac.uk/view.php?id=36605
- String protocol = AppletFormatAdapter.URL;
+ DataSourceType protocol = DataSourceType.URL;
try
{
if (fl.exists())
{
- protocol = AppletFormatAdapter.FILE;
+ protocol = DataSourceType.FILE;
}
} catch (Exception e)
{
}
@Override
- public Dimension resizeInnerPanel(String data)
+ public int[] resizeInnerPanel(String data)
{
// Jalview doesn't honour resize panel requests
return null;
import jalview.datamodel.Annotation;
import jalview.datamodel.PDBEntry;
import jalview.datamodel.SequenceI;
+import jalview.io.DataSourceType;
import jalview.io.FileParse;
import jalview.io.StructureFile;
import jalview.schemes.ResidueProperties;
import java.util.Map;
import java.util.Vector;
-import javajs.awt.Dimension;
-
import org.jmol.api.JmolStatusListener;
import org.jmol.api.JmolViewer;
import org.jmol.c.CBK;
{
Viewer viewer = null;
- public JmolParser(String inFile, String type) throws IOException
+ public JmolParser(String inFile, DataSourceType sourceType)
+ throws IOException
{
- super(inFile, type);
+ super(inFile, sourceType);
}
public JmolParser(FileParse fp) throws IOException
* Not implemented - returns null
*/
@Override
- public String print()
+ public String print(SequenceI[] seqs, boolean jvSuffix)
{
return null;
}
* Not implemented - returns null
*/
@Override
- public Dimension resizeInnerPanel(String data)
+ public int[] resizeInnerPanel(String data)
{
return null;
}
import jalview.api.AlignmentViewPanel;
import jalview.api.FeatureRenderer;
import jalview.api.SequenceRenderer;
+import jalview.api.structures.JalviewStructureDisplayI;
import jalview.bin.Cache;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.ColumnSelection;
import jalview.datamodel.PDBEntry;
import jalview.datamodel.SequenceI;
import jalview.httpserver.AbstractRequestHandler;
+import jalview.io.DataSourceType;
import jalview.schemes.ColourSchemeI;
import jalview.schemes.ResidueProperties;
import jalview.structure.AtomSpec;
private List<String> chainNames = new ArrayList<String>();
private Hashtable<String, String> chainFile = new Hashtable<String, String>();
+
/*
* Object through which we talk to Chimera
*/
*/
private long loadNotifiesHandled = 0;
+ private Thread chimeraMonitor;
+
/**
* Open a PDB structure file in Chimera and set up mappings from Jalview.
*
* @param ssm
* @param pdbentry
* @param sequenceIs
- * @param chains
* @param protocol
*/
public JalviewChimeraBinding(StructureSelectionManager ssm,
- PDBEntry[] pdbentry, SequenceI[][] sequenceIs, String protocol)
+ PDBEntry[] pdbentry, SequenceI[][] sequenceIs, DataSourceType protocol)
{
super(ssm, pdbentry, sequenceIs, protocol);
- viewer = new ChimeraManager(
- new ext.edu.ucsf.rbvi.strucviz2.StructureManager(true));
+ viewer = new ChimeraManager(new StructureManager(true));
+ }
+
+ /**
+ * Starts a thread that waits for the Chimera process to finish, so that we
+ * can then close the associated resources. This avoids leaving orphaned
+ * Chimera viewer panels in Jalview if the user closes Chimera.
+ */
+ protected void startChimeraProcessMonitor()
+ {
+ final Process p = viewer.getChimeraProcess();
+ chimeraMonitor = new Thread(new Runnable()
+ {
+
+ @Override
+ public void run()
+ {
+ try
+ {
+ p.waitFor();
+ JalviewStructureDisplayI display = getViewer();
+ if (display != null)
+ {
+ display.closeViewer(false);
+ }
+ } catch (InterruptedException e)
+ {
+ // exit thread if Chimera Viewer is closed in Jalview
+ }
+ }
+ });
+ chimeraMonitor.start();
}
/**
lastCommand = null;
viewer = null;
+ if (chimeraMonitor != null)
+ {
+ chimeraMonitor.interrupt();
+ }
releaseUIResources();
}
/**
* Launch Chimera, unless an instance linked to this object is already
- * running. Returns true if chimera is successfully launched, or already
+ * running. Returns true if Chimera is successfully launched, or already
* running, else false.
*
* @return
*/
public boolean launchChimera()
{
- if (!viewer.isChimeraLaunched())
- {
- return viewer.launchChimera(StructureManager.getChimeraPaths());
- }
if (viewer.isChimeraLaunched())
{
return true;
}
- log("Failed to launch Chimera!");
- return false;
+
+ boolean launched = viewer.launchChimera(StructureManager
+ .getChimeraPaths());
+ if (launched)
+ {
+ startChimeraProcessMonitor();
+ }
+ else
+ {
+ log("Failed to launch Chimera!");
+ }
+ return launched;
}
/**
}
/**
- * Returns a list of chains mapped in this viewer. Note this list is not
- * currently scoped per structure.
- *
- * @return
- */
-
- /**
* Send a 'focus' command to Chimera to recentre the visible display
*/
public void focusView()
import jalview.api.AlignExportSettingI;
import jalview.bin.Jalview;
+import jalview.io.FileFormatI;
import jalview.jbgui.GAlignExportSettings;
import jalview.util.MessageManager;
JDialog dialog;
public AlignExportSettings(boolean hasHiddenSeq, boolean hasHiddenCols,
- String alignFileFormat)
+ FileFormatI format)
{
- super(hasHiddenSeq, hasHiddenCols, alignFileFormat);
+ super(hasHiddenSeq, hasHiddenCols, format);
if (!Jalview.isHeadlessMode() && isShowDialog())
{
JOptionPane pane = new JOptionPane(null, JOptionPane.DEFAULT_OPTION,
- JOptionPane.DEFAULT_OPTION, null, new Object[] { this });
+ JvOptionPane.DEFAULT_OPTION, null, new Object[] { this });
dialog = pane.createDialog(Desktop.desktop,
MessageManager.getString("label.export_settings"));
dialog.addWindowListener(new WindowAdapter()
{
+ @Override
public void windowClosing(WindowEvent e)
{
cancelled = true;
}
}
+ @Override
public void ok_actionPerformed(ActionEvent e)
{
cancelled = false;
dialog.dispose();
}
+ @Override
public void cancel_actionPerformed(ActionEvent e)
{
cancelled = true;
return chkExportGrps.isSelected();
}
+ @Override
public boolean isCancelled()
{
return cancelled;
import jalview.io.AlignmentProperties;
import jalview.io.AnnotationFile;
import jalview.io.BioJsHTMLOutput;
+import jalview.io.DataSourceType;
+import jalview.io.FileFormat;
+import jalview.io.FileFormatI;
import jalview.io.FileLoader;
import jalview.io.FormatAdapter;
import jalview.io.HtmlSvgOutput;
import jalview.io.IdentifyFile;
+import jalview.io.JPredFile;
import jalview.io.JalviewFileChooser;
import jalview.io.JalviewFileView;
import jalview.io.JnetAnnotationMaker;
import jalview.io.NewickFile;
-import jalview.io.StructureFile;
import jalview.io.TCoffeeScoreFile;
import jalview.jbgui.GAlignFrame;
import jalview.schemes.Blosum62ColourScheme;
import javax.swing.JLayeredPane;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
-import javax.swing.JOptionPane;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
/**
* Last format used to load or save alignments in this window
*/
- String currentFileFormat = null;
+ FileFormatI currentFileFormat = null;
/**
* Current filename for this alignment
* @param format
* format of file
*/
- public void setFileName(String file, String format)
+ public void setFileName(String file, FileFormatI format)
{
fileName = file;
setFileFormat(format);
toggleHiddenRegions(toggleSeqs, toggleCols);
break;
}
+ case KeyEvent.VK_B:
+ {
+ boolean toggleSel = evt.isControlDown() || evt.isMetaDown();
+ boolean modifyExisting = true; // always modify, don't clear
+ // evt.isShiftDown();
+ boolean invertHighlighted = evt.isAltDown();
+ avc.markHighlightedColumns(invertHighlighted, modifyExisting,
+ toggleSel);
+ break;
+ }
case KeyEvent.VK_PAGE_UP:
if (viewport.getWrapAlignment())
{
// originating file's format
// TODO: work out how to recover feature settings for correct view(s) when
// file is reloaded.
- if (currentFileFormat.equals("Jalview"))
+ if (FileFormat.Jalview.equals(currentFileFormat))
{
JInternalFrame[] frames = Desktop.desktop.getAllFrames();
for (int i = 0; i < frames.length; i++)
Desktop.instance.closeAssociatedWindows();
FileLoader loader = new FileLoader();
- String protocol = fileName.startsWith("http:") ? "URL" : "File";
+ DataSourceType protocol = fileName.startsWith("http:") ? DataSourceType.URL
+ : DataSourceType.FILE;
loader.LoadFile(viewport, fileName, protocol, currentFileFormat);
}
else
Rectangle bounds = this.getBounds();
FileLoader loader = new FileLoader();
- String protocol = fileName.startsWith("http:") ? "URL" : "File";
+ DataSourceType protocol = fileName.startsWith("http:") ? DataSourceType.URL
+ : DataSourceType.FILE;
AlignFrame newframe = loader.LoadFileWaitTillLoaded(fileName,
protocol, currentFileFormat);
@Override
public void save_actionPerformed(ActionEvent e)
{
- if (fileName == null
- || (currentFileFormat == null || !jalview.io.FormatAdapter
- .isValidIOFormat(currentFileFormat, true))
+ if (fileName == null || (currentFileFormat == null)
|| fileName.startsWith("http"))
{
saveAs_actionPerformed(null);
@Override
public void saveAs_actionPerformed(ActionEvent e)
{
- JalviewFileChooser chooser = new JalviewFileChooser(
- jalview.bin.Cache.getProperty("LAST_DIRECTORY"),
- jalview.io.AppletFormatAdapter.WRITABLE_EXTENSIONS,
- jalview.io.AppletFormatAdapter.WRITABLE_FNAMES,
- currentFileFormat, false);
+ String format = currentFileFormat == null ? null : currentFileFormat
+ .toString();
+ JalviewFileChooser chooser = JalviewFileChooser.forWrite(
+ Cache.getProperty("LAST_DIRECTORY"), format);
chooser.setFileView(new JalviewFileView());
chooser.setDialogTitle(MessageManager
currentFileFormat = chooser.getSelectedFormat();
while (currentFileFormat == null)
{
- JOptionPane
+ JvOptionPane
.showInternalMessageDialog(
Desktop.desktop,
MessageManager
.getString("label.select_file_format_before_saving"),
MessageManager
.getString("label.file_format_not_specified"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
currentFileFormat = chooser.getSelectedFormat();
value = chooser.showSaveDialog(this);
if (value != JalviewFileChooser.APPROVE_OPTION)
fileName = chooser.getSelectedFile().getPath();
- jalview.bin.Cache.setProperty("DEFAULT_FILE_FORMAT",
- currentFileFormat);
+ Cache.setProperty("DEFAULT_FILE_FORMAT",
+ currentFileFormat.toString());
- jalview.bin.Cache.setProperty("LAST_DIRECTORY", fileName);
- if (currentFileFormat.indexOf(" ") > -1)
- {
- currentFileFormat = currentFileFormat.substring(0,
- currentFileFormat.indexOf(" "));
- }
+ Cache.setProperty("LAST_DIRECTORY", fileName);
saveAlignment(fileName, currentFileFormat);
}
}
- public boolean saveAlignment(String file, String format)
+ public boolean saveAlignment(String file, FileFormatI format)
{
boolean success = true;
- if (format.equalsIgnoreCase("Jalview"))
+ if (FileFormat.Jalview.equals(format))
{
String shortName = title;
}
else
{
- if (!jalview.io.AppletFormatAdapter.isValidFormat(format, true))
- {
- warningMessage("Cannot save file " + fileName + " using format "
- + format, "Alignment output format not supported");
- if (!Jalview.isHeadlessMode())
- {
- saveAs_actionPerformed(null);
- }
- return false;
- }
+ // if (!jalview.io.AppletFormatAdapter.isValidFormat(format, true))
+ // {
+ // warningMessage("Cannot save file " + fileName + " using format "
+ // + format, "Alignment output format not supported");
+ // if (!Jalview.isHeadlessMode())
+ // {
+ // saveAs_actionPerformed(null);
+ // }
+ // return false;
+ // }
AlignmentExportData exportData = getAlignmentForExport(format,
viewport, null);
if (!success)
{
- JOptionPane.showInternalMessageDialog(this, MessageManager
+ JvOptionPane.showInternalMessageDialog(this, MessageManager
.formatMessage("label.couldnt_save_file",
new Object[] { fileName }), MessageManager
.getString("label.error_saving_file"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
}
return success;
}
else
{
- JOptionPane.showInternalMessageDialog(this, warning, title,
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.showInternalMessageDialog(this, warning, title,
+ JvOptionPane.WARNING_MESSAGE);
}
return;
}
protected void outputText_actionPerformed(ActionEvent e)
{
- AlignmentExportData exportData = getAlignmentForExport(
- e.getActionCommand(), viewport, null);
+ FileFormatI fileFormat = FileFormat.forName(e.getActionCommand());
+ AlignmentExportData exportData = getAlignmentForExport(fileFormat,
+ viewport, null);
if (exportData.getSettings().isCancelled())
{
return;
cap.setForInput(null);
try
{
+ FileFormatI format = fileFormat;
cap.setText(new FormatAdapter(alignPanel, exportData.getSettings())
- .formatSequences(e.getActionCommand(),
+ .formatSequences(format,
exportData.getAlignment(),
exportData.getOmitHidden(),
exportData.getStartEndPostions(),
}
public static AlignmentExportData getAlignmentForExport(
- String exportFormat, AlignViewportI viewport,
+ FileFormatI format, AlignViewportI viewport,
AlignExportSettingI exportSettings)
{
AlignmentI alignmentToExport = null;
if (settings == null)
{
settings = new AlignExportSettings(hasHiddenSeqs,
- viewport.hasHiddenColumns(), exportFormat);
+ viewport.hasHiddenColumns(), format);
}
// settings.isExportAnnotations();
@Override
protected void htmlMenuItem_actionPerformed(ActionEvent e)
{
- new HtmlSvgOutput(null, alignPanel);
+ HtmlSvgOutput htmlSVG = new HtmlSvgOutput(alignPanel);
+ htmlSVG.exportHTML(null);
}
@Override
public void bioJSMenuItem_actionPerformed(ActionEvent e)
{
- BioJsHTMLOutput bjs = new BioJsHTMLOutput(alignPanel, this);
- bjs.exportJalviewAlignmentAsBioJsHtmlFile(null);
+ BioJsHTMLOutput bjs = new BioJsHTMLOutput(alignPanel);
+ bjs.exportHTML(null);
}
public void createImageMap(File file, String image)
omitHidden = viewport.getViewAsString(true);
}
- String output = new FormatAdapter().formatSequences("Fasta", seqs,
+ String output = new FormatAdapter().formatSequences(FileFormat.Fasta,
+ seqs,
omitHidden, null);
StringSelection ss = new StringSelection(output);
return;
}
- String str, format;
+ String str;
+ FileFormatI format;
try
{
str = (String) contents.getTransferData(DataFlavor.stringFlavor);
return;
}
- format = new IdentifyFile().identify(str, "Paste");
+ format = new IdentifyFile().identify(str, DataSourceType.PASTE);
} catch (OutOfMemoryError er)
{
else
{
// parse the clipboard as an alignment.
- alignment = new FormatAdapter().readFile(str, "Paste", format);
+ alignment = new FormatAdapter().readFile(str, DataSourceType.PASTE,
+ format);
sequences = alignment.getSequencesArray();
}
.getAlignment().getWidth()) ? true : false;
if (isEntireAlignWidth)
{
- int confirm = JOptionPane.showConfirmDialog(this,
+ int confirm = JvOptionPane.showConfirmDialog(this,
MessageManager.getString("warn.delete_all"), // $NON-NLS-1$
MessageManager.getString("label.delete_all"), // $NON-NLS-1$
- JOptionPane.OK_CANCEL_OPTION);
+ JvOptionPane.OK_CANCEL_OPTION);
- if (confirm == JOptionPane.CANCEL_OPTION
- || confirm == JOptionPane.CLOSED_OPTION)
+ if (confirm == JvOptionPane.CANCEL_OPTION
+ || confirm == JvOptionPane.CLOSED_OPTION)
{
return;
}
viewport.setFollowHighlight(state);
if (state)
{
- alignPanel.scrollToPosition(
- alignPanel.getSeqPanel().seqCanvas.searchResults, false);
+ alignPanel.scrollToPosition(viewport.getSearchResults(), false);
}
}
{
radioItem.removeActionListener(radioItem.getActionListeners()[0]);
- int option = JOptionPane.showInternalConfirmDialog(
+ int option = JvOptionPane.showInternalConfirmDialog(
jalview.gui.Desktop.desktop, MessageManager
.getString("label.remove_from_default_list"),
MessageManager
.getString("label.remove_user_defined_colour"),
- JOptionPane.YES_NO_OPTION);
- if (option == JOptionPane.YES_OPTION)
+ JvOptionPane.YES_NO_OPTION);
+ if (option == JvOptionPane.YES_OPTION)
{
jalview.gui.UserDefinedColours
.removeColourFromDefaults(radioItem.getText());
if ((viewport.getSelectionGroup() == null)
|| (viewport.getSelectionGroup().getSize() < 2))
{
- JOptionPane.showInternalMessageDialog(this, MessageManager
+ JvOptionPane.showInternalMessageDialog(this, MessageManager
.getString("label.you_must_select_least_two_sequences"),
MessageManager.getString("label.invalid_selection"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
}
else
{
.getSelectionGroup().getSize() > 0))
|| (viewport.getAlignment().getHeight() < 4))
{
- JOptionPane
+ JvOptionPane
.showInternalMessageDialog(
this,
MessageManager
.getString("label.principal_component_analysis_must_take_least_four_input_sequences"),
MessageManager
.getString("label.sequence_selection_insufficient"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
return;
}
{
if (viewport.getSelectionGroup().getSize() < 3)
{
- JOptionPane
+ JvOptionPane
.showMessageDialog(
Desktop.desktop,
MessageManager
.getString("label.you_need_more_two_sequences_selected_build_tree"),
MessageManager
.getString("label.not_enough_sequences"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
return;
}
{
if (_s.getLength() < sg.getEndRes())
{
- JOptionPane
+ JvOptionPane
.showMessageDialog(
Desktop.desktop,
MessageManager
.getString("label.selected_region_to_tree_may_only_contain_residues_or_gaps"),
MessageManager
.getString("label.sequences_selection_not_aligned"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
return;
}
// are the visible sequences aligned?
if (!viewport.getAlignment().isAligned(false))
{
- JOptionPane
+ JvOptionPane
.showMessageDialog(
Desktop.desktop,
MessageManager
.getString("label.sequences_must_be_aligned_before_creating_tree"),
MessageManager
.getString("label.sequences_not_aligned"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
return;
}
else if (viewport.getSelectionGroup() != null
&& viewport.getSelectionGroup().getSize() == 1)
{
- int option = JOptionPane.showConfirmDialog(this,
+ int option = JvOptionPane.showConfirmDialog(this,
MessageManager.getString("warn.oneseq_msainput_selection"),
MessageManager.getString("label.invalid_selection"),
- JOptionPane.OK_CANCEL_OPTION);
- if (option == JOptionPane.OK_OPTION)
+ JvOptionPane.OK_CANCEL_OPTION);
+ if (option == JvOptionPane.OK_OPTION)
{
msa = viewport.getAlignmentView(false);
}
jalview.io.NewickFile fin = null;
try
{
- fin = new jalview.io.NewickFile(choice, "File");
+ fin = new NewickFile(choice, DataSourceType.FILE);
viewport.setCurrentTree(ShowNewickTree(fin, choice).getTree());
} catch (Exception ex)
{
- JOptionPane
+ JvOptionPane
.showMessageDialog(
Desktop.desktop,
ex.getMessage(),
MessageManager
.getString("label.problem_reading_tree_file"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
ex.printStackTrace();
}
if (fin != null && fin.hasWarningMessage())
{
- JOptionPane.showMessageDialog(Desktop.desktop, fin
+ JvOptionPane.showMessageDialog(Desktop.desktop, fin
.getWarningMessage(), MessageManager
.getString("label.possible_problem_with_tree_file"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
}
}
}
final String errorTitle = MessageManager
.getString("label.implementation_error")
+ MessageManager.getString("label.translation_failed");
- JOptionPane.showMessageDialog(Desktop.desktop, msg, errorTitle,
- JOptionPane.ERROR_MESSAGE);
+ JvOptionPane.showMessageDialog(Desktop.desktop, msg, errorTitle,
+ JvOptionPane.ERROR_MESSAGE);
return;
}
if (al == null || al.getHeight() == 0)
.getString("label.select_at_least_three_bases_in_at_least_one_sequence_to_cDNA_translation");
final String errorTitle = MessageManager
.getString("label.translation_failed");
- JOptionPane.showMessageDialog(Desktop.desktop, msg, errorTitle,
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.showMessageDialog(Desktop.desktop, msg, errorTitle,
+ JvOptionPane.WARNING_MESSAGE);
}
else
{
/**
* Set the file format
*
- * @param fileFormat
+ * @param format
*/
- public void setFileFormat(String fileFormat)
+ public void setFileFormat(FileFormatI format)
{
- this.currentFileFormat = fileFormat;
+ this.currentFileFormat = format;
}
/**
*
* @param file
* contents or path to retrieve file
- * @param type
+ * @param sourceType
* access mode of file (see jalview.io.AlignFile)
* @return true if features file was parsed correctly.
*/
- public boolean parseFeaturesFile(String file, String type)
+ public boolean parseFeaturesFile(String file, DataSourceType sourceType)
{
- return avc.parseFeaturesFile(file, type,
- jalview.bin.Cache.getDefault("RELAXEDSEQIDMATCHING", false));
+ return avc.parseFeaturesFile(file, sourceType,
+ Cache.getDefault("RELAXEDSEQIDMATCHING", false));
}
// Java's Transferable for native dnd
evt.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
Transferable t = evt.getTransferable();
- java.util.List<String> files = new ArrayList<String>(), protocols = new ArrayList<String>();
+ List<String> files = new ArrayList<String>();
+ List<DataSourceType> protocols = new ArrayList<DataSourceType>();
try
{
{
String file = files.get(i).toString();
String pdbfn = "";
- String protocol = FormatAdapter.checkProtocol(file);
- if (protocol == jalview.io.FormatAdapter.FILE)
+ DataSourceType protocol = FormatAdapter.checkProtocol(file);
+ if (protocol == DataSourceType.FILE)
{
File fl = new File(file);
pdbfn = fl.getName();
}
- else if (protocol == jalview.io.FormatAdapter.URL)
+ else if (protocol == DataSourceType.URL)
{
URL url = new URL(file);
pdbfn = url.getFile();
}
if (mtch != null)
{
- String type = null;
+ FileFormatI type = null;
try
{
type = new IdentifyFile().identify(file, protocol);
{
type = null;
}
- if (type != null)
+ if (type != null && type.isStructureFile())
{
- if (StructureFile.isStructureFile(type))
- {
- filesmatched.add(new Object[] { file, protocol, mtch });
- continue;
- }
+ filesmatched.add(new Object[] { file, protocol, mtch });
+ continue;
}
}
// File wasn't named like one of the sequences or wasn't a PDB file.
if (filesmatched.size() > 0)
{
if (Cache.getDefault("AUTOASSOCIATE_PDBANDSEQS", false)
- || JOptionPane
+ || JvOptionPane
.showConfirmDialog(
this,
MessageManager
.toString() }),
MessageManager
.getString("label.automatically_associate_structure_files_by_name"),
- JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION)
+ JvOptionPane.YES_NO_OPTION) == JvOptionPane.YES_OPTION)
{
for (Object[] fm : filesmatched)
{
PDBEntry pe = new AssociatePdbFileWithSeq()
.associatePdbWithSeq((String) fm[0],
- (String) fm[1], toassoc, false,
+ (DataSourceType) fm[1], toassoc, false,
Desktop.instance);
if (pe != null)
{
{
if (assocfiles > 0
&& (Cache.getDefault(
- "AUTOASSOCIATE_PDBANDSEQS_IGNOREOTHERS", false) || JOptionPane
+ "AUTOASSOCIATE_PDBANDSEQS_IGNOREOTHERS", false) || JvOptionPane
.showConfirmDialog(
this,
"<html>"
+ "</html>",
MessageManager
.getString("label.ignore_unmatched_dropped_files"),
- JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION))
+ JvOptionPane.YES_NO_OPTION) == JvOptionPane.YES_OPTION))
{
return;
}
* @param file
* either a filename or a URL string.
*/
- public void loadJalviewDataFile(String file, String protocol,
- String format, SequenceI assocSeq)
+ public void loadJalviewDataFile(String file, DataSourceType sourceType,
+ FileFormatI format, SequenceI assocSeq)
{
try
{
- if (protocol == null)
+ if (sourceType == null)
{
- protocol = FormatAdapter.checkProtocol(file);
+ sourceType = FormatAdapter.checkProtocol(file);
}
// if the file isn't identified, or not positively identified as some
// other filetype (PFAM is default unidentified alignment file type) then
// try to parse as annotation.
- boolean isAnnotation = (format == null || format
- .equalsIgnoreCase("PFAM")) ? new AnnotationFile()
- .annotateAlignmentView(viewport, file, protocol) : false;
+ boolean isAnnotation = (format == null || FileFormat.Pfam
+ .equals(format)) ? new AnnotationFile()
+ .annotateAlignmentView(viewport, file, sourceType) : false;
if (!isAnnotation)
{
TCoffeeScoreFile tcf = null;
try
{
- tcf = new TCoffeeScoreFile(file, protocol);
+ tcf = new TCoffeeScoreFile(file, sourceType);
if (tcf.isValid())
{
if (tcf.annotateAlignment(viewport.getAlignment(), true))
{
// some problem - if no warning its probable that the ID matching
// process didn't work
- JOptionPane
+ JvOptionPane
.showMessageDialog(
Desktop.desktop,
tcf.getWarningMessage() == null ? MessageManager
: tcf.getWarningMessage(),
MessageManager
.getString("label.problem_reading_tcoffee_score_file"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
}
}
else
// try to parse it as a features file
if (format == null)
{
- format = new IdentifyFile().identify(file, protocol);
+ format = new IdentifyFile().identify(file, sourceType);
}
- if (format.equalsIgnoreCase("JnetFile"))
+ if (FileFormat.Jnet.equals(format))
{
- jalview.io.JPredFile predictions = new jalview.io.JPredFile(
- file, protocol);
+ JPredFile predictions = new JPredFile(
+ file, sourceType);
new JnetAnnotationMaker();
JnetAnnotationMaker.add_annotation(predictions,
viewport.getAlignment(), 0, false);
viewport.setColumnSelection(cs);
isAnnotation = true;
}
- else if (IdentifyFile.FeaturesFile.equals(format))
+ // else if (IdentifyFile.FeaturesFile.equals(format))
+ else if (FileFormat.Features.equals(format))
{
- if (parseFeaturesFile(file, protocol))
+ if (parseFeaturesFile(file, sourceType))
{
alignPanel.paintAlignment(true);
}
}
else
{
- new FileLoader().LoadFile(viewport, file, protocol, format);
+ new FileLoader().LoadFile(viewport, file, sourceType, format);
}
}
}
}
new OOMWarning(
"loading data "
- + (protocol != null ? (protocol.equals(FormatAdapter.PASTE) ? "from clipboard."
- : "using " + protocol + " from " + file)
+ + (sourceType != null ? (sourceType == DataSourceType.PASTE ? "from clipboard."
+ : "using " + sourceType + " from " + file)
: ".")
+ (format != null ? "(parsing as '" + format
+ "' file)" : ""), oom, Desktop.desktop);
if (e.isPopupTrigger())
{
String msg = MessageManager.getString("label.enter_view_name");
- String reply = JOptionPane.showInternalInputDialog(this, msg, msg,
- JOptionPane.QUESTION_MESSAGE);
+ String reply = JvOptionPane.showInternalInputDialog(this, msg, msg,
+ JvOptionPane.QUESTION_MESSAGE);
if (reply != null)
{
} catch (Exception ex)
{
System.err.println((ex.toString()));
- JOptionPane
+ JvOptionPane
.showInternalMessageDialog(Desktop.desktop, MessageManager
.getString("label.couldnt_run_groovy_script"),
MessageManager
.getString("label.groovy_support_failed"),
- JOptionPane.ERROR_MESSAGE);
+ JvOptionPane.ERROR_MESSAGE);
}
}
else
}
return false;
}
+
+ @Override
+ protected void selectHighlightedColumns_actionPerformed(
+ ActionEvent actionEvent)
+ {
+ // include key modifier check in case user selects from menu
+ avc.markHighlightedColumns(
+ (actionEvent.getModifiers() & ActionEvent.ALT_MASK) != 0,
+ true,
+ (actionEvent.getModifiers() & (ActionEvent.META_MASK | ActionEvent.CTRL_MASK)) != 0);
+ }
}
class PrintThread extends Thread
import jalview.datamodel.ColumnSelection;
import jalview.datamodel.PDBEntry;
import jalview.datamodel.SearchResults;
+import jalview.datamodel.SearchResultsI;
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceGroup;
import jalview.datamodel.SequenceI;
MessageManager.getString("label.new_window"), };
final String question = JvSwingUtils.wrapTooltip(true,
MessageManager.getString("label.open_split_window?"));
- int response = JOptionPane.showOptionDialog(Desktop.desktop, question,
+ int response = JvOptionPane.showOptionDialog(Desktop.desktop, question,
MessageManager.getString("label.open_split_window"),
- JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, null,
+ JvOptionPane.DEFAULT_OPTION, JvOptionPane.PLAIN_MESSAGE, null,
options, options[0]);
if (response != 1 && response != 2)
// TODO if we want this (e.g. to enable reload of the alignment from file),
// we will need to add parameters to the stack.
- // if (!protocol.equals(AppletFormatAdapter.PASTE))
+ // if (!protocol.equals(DataSourceType.PASTE))
// {
// alignFrame.setFileName(file, format);
// }
* there is no complement, or it is not following highlights, or no mapping
* is found, the result will be empty.
*/
- SearchResults sr = new SearchResults();
+ SearchResultsI sr = new SearchResults();
int verticalOffset = findComplementScrollTarget(sr);
if (!sr.isEmpty())
{
import jalview.api.AlignmentViewPanel;
import jalview.bin.Cache;
import jalview.datamodel.AlignmentI;
-import jalview.datamodel.SearchResults;
+import jalview.datamodel.SearchResultsI;
import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceGroup;
import jalview.datamodel.SequenceI;
* Highlight the given results on the alignment.
*
*/
- public void highlightSearchResults(SearchResults results)
+ public void highlightSearchResults(SearchResultsI results)
{
scrollToPosition(results);
getSeqPanel().seqCanvas.highlightSearchResults(results);
*
* @param results
*/
- public boolean scrollToPosition(SearchResults results)
+ public boolean scrollToPosition(SearchResultsI results)
{
return scrollToPosition(results, 0, true, false);
}
* @param redrawOverview
* @return
*/
- public boolean scrollToPosition(SearchResults searchResults,
+ public boolean scrollToPosition(SearchResultsI searchResults,
boolean redrawOverview)
{
return scrollToPosition(searchResults, 0, redrawOverview, false);
* if true, try to centre the search results horizontally in the view
* @return false if results were not found
*/
- public boolean scrollToPosition(SearchResults results,
+ public boolean scrollToPosition(SearchResultsI results,
int verticalOffset, boolean redrawOverview, boolean centre)
{
int startv, endv, starts, ends;
if (av.getWrapAlignment())
{
- return printWrappedAlignment(pg, pwidth, pheight, pi);
+ return printWrappedAlignment(pwidth, pheight, pi, pg);
}
else
{
- return printUnwrapped(pg, pwidth, pheight, pi);
+ return printUnwrapped(pwidth, pheight, pi, pg, pg);
}
}
* @throws PrinterException
* DOCUMENT ME!
*/
- public int printUnwrapped(Graphics pg, int pwidth, int pheight, int pi)
+ /**
+ * Draws the alignment image, including sequence ids, sequences, and
+ * annotation labels and annotations if shown, on either one or two Graphics
+ * context.
+ *
+ * @param pageWidth
+ * @param pageHeight
+ * @param pi
+ * @param idGraphics
+ * the graphics context for sequence ids and annotation labels
+ * @param alignmentGraphics
+ * the graphics context for sequences and annotations (may or may not
+ * be the same context as idGraphics)
+ * @return
+ * @throws PrinterException
+ */
+ public int printUnwrapped(int pageWidth, int pageHeight, int pi,
+ Graphics idGraphics, Graphics alignmentGraphics)
throws PrinterException
{
- int idWidth = getVisibleIdWidth(false);
- FontMetrics fm = getFontMetrics(av.getFont());
- int scaleHeight = av.getCharHeight() + fm.getDescent();
+ final int idWidth = getVisibleIdWidth(false);
- pg.setColor(Color.white);
- pg.fillRect(0, 0, pwidth, pheight);
- pg.setFont(av.getFont());
-
- // //////////////////////////////////
- // / How many sequences and residues can we fit on a printable page?
- int totalRes = (pwidth - idWidth) / av.getCharWidth();
+ /*
+ * Get the horizontal offset to where we draw the sequences.
+ * This is idWidth if using a single Graphics context, else zero.
+ */
+ final int alignmentGraphicsOffset = idGraphics != alignmentGraphics ? 0 : idWidth;
- int totalSeq = (pheight - scaleHeight) / av.getCharHeight() - 1;
+ FontMetrics fm = getFontMetrics(av.getFont());
+ int charHeight = av.getCharHeight();
+ int scaleHeight = charHeight + fm.getDescent();
- int pagesWide = (av.getAlignment().getWidth() / totalRes) + 1;
+ idGraphics.setColor(Color.white);
+ idGraphics.fillRect(0, 0, pageWidth, pageHeight);
+ idGraphics.setFont(av.getFont());
- // ///////////////////////////
- // / Only print these sequences and residues on this page
- int startRes;
+ /*
+ * How many sequences and residues can we fit on a printable page?
+ */
+ int totalRes = (pageWidth - idWidth) / av.getCharWidth();
- // ///////////////////////////
- // / Only print these sequences and residues on this page
- int endRes;
+ int totalSeq = (pageHeight - scaleHeight) / charHeight - 1;
- // ///////////////////////////
- // / Only print these sequences and residues on this page
- int startSeq;
+ int alignmentWidth = av.getAlignment().getWidth();
+ int pagesWide = (alignmentWidth / totalRes) + 1;
- // ///////////////////////////
- // / Only print these sequences and residues on this page
- int endSeq;
- startRes = (pi % pagesWide) * totalRes;
- endRes = (startRes + totalRes) - 1;
+ final int startRes = (pi % pagesWide) * totalRes;
+ int endRes = (startRes + totalRes) - 1;
- if (endRes > (av.getAlignment().getWidth() - 1))
+ if (endRes > (alignmentWidth - 1))
{
- endRes = av.getAlignment().getWidth() - 1;
+ endRes = alignmentWidth - 1;
}
- startSeq = (pi / pagesWide) * totalSeq;
- endSeq = startSeq + totalSeq;
+ final int startSeq = (pi / pagesWide) * totalSeq;
+ int endSeq = startSeq + totalSeq;
- if (endSeq > av.getAlignment().getHeight())
+ int alignmentHeight = av.getAlignment().getHeight();
+ if (endSeq > alignmentHeight)
{
- endSeq = av.getAlignment().getHeight();
+ endSeq = alignmentHeight;
}
- int pagesHigh = ((av.getAlignment().getHeight() / totalSeq) + 1)
- * pheight;
+ int pagesHigh = ((alignmentHeight / totalSeq) + 1)
+ * pageHeight;
if (av.isShowAnnotation())
{
pagesHigh += getAnnotationPanel().adjustPanelHeight() + 3;
}
- pagesHigh /= pheight;
+ pagesHigh /= pageHeight;
if (pi >= (pagesWide * pagesHigh))
{
return Printable.NO_SUCH_PAGE;
}
+ final int alignmentDrawnHeight = (endSeq - startSeq) * charHeight
+ + 3;
- // draw Scale
- pg.translate(idWidth, 0);
- getScalePanel().drawScale(pg, startRes, endRes, pwidth - idWidth,
- scaleHeight);
- pg.translate(-idWidth, scaleHeight);
+ /*
+ * draw the Scale at horizontal offset, then reset to top left (0, 0)
+ */
+ alignmentGraphics.translate(alignmentGraphicsOffset, 0);
+ getScalePanel().drawScale(alignmentGraphics, startRes, endRes,
+ pageWidth - idWidth, scaleHeight);
+ alignmentGraphics.translate(-alignmentGraphicsOffset, 0);
- // //////////////
- // Draw the ids
+ /*
+ * Draw the sequence ids, offset for scale height,
+ * then reset to top left (0, 0)
+ */
+ idGraphics.translate(0, scaleHeight);
+ idGraphics.setFont(getIdPanel().getIdCanvas().getIdfont());
Color currentColor = null;
Color currentTextColor = null;
- pg.setFont(getIdPanel().getIdCanvas().getIdfont());
-
SequenceI seq;
for (int i = startSeq; i < endSeq; i++)
{
if ((av.getSelectionGroup() != null)
&& av.getSelectionGroup().getSequences(null).contains(seq))
{
+ /*
+ * gray out ids of sequences in selection group (if any)
+ */
currentColor = Color.gray;
currentTextColor = Color.black;
}
currentTextColor = Color.black;
}
- pg.setColor(currentColor);
- pg.fillRect(0, (i - startSeq) * av.getCharHeight(), idWidth,
- av.getCharHeight());
+ idGraphics.setColor(currentColor);
+ idGraphics.fillRect(0, (i - startSeq) * charHeight, idWidth,
+ charHeight);
- pg.setColor(currentTextColor);
+ idGraphics.setColor(currentTextColor);
int xPos = 0;
+ String displayId = seq.getDisplayId(av.getShowJVSuffix());
if (av.isRightAlignIds())
{
- fm = pg.getFontMetrics();
+ fm = idGraphics.getFontMetrics();
xPos = idWidth
- - fm.stringWidth(seq.getDisplayId(av.getShowJVSuffix()))
+ - fm.stringWidth(displayId)
- 4;
}
- pg.drawString(seq.getDisplayId(av.getShowJVSuffix()), xPos,
- (((i - startSeq) * av.getCharHeight()) + av.getCharHeight())
- - (av.getCharHeight() / 5));
+ idGraphics.drawString(displayId, xPos,
+ (((i - startSeq) * charHeight) + charHeight)
+ - (charHeight / 5));
}
+ idGraphics.setFont(av.getFont());
+ idGraphics.translate(0, -scaleHeight);
- pg.setFont(av.getFont());
+ /*
+ * draw the sequences, offset for scale height, and id width (if using a
+ * single graphics context), then reset to (0, scale height)
+ */
+ alignmentGraphics.translate(alignmentGraphicsOffset, scaleHeight);
+ getSeqPanel().seqCanvas.drawPanel(alignmentGraphics, startRes, endRes,
+ startSeq, endSeq, 0);
+ alignmentGraphics.translate(-alignmentGraphicsOffset, 0);
- // draw main sequence panel
- pg.translate(idWidth, 0);
- getSeqPanel().seqCanvas.drawPanel(pg, startRes, endRes, startSeq,
- endSeq, 0);
-
- if (av.isShowAnnotation() && (endSeq == av.getAlignment().getHeight()))
- {
- // draw annotation - need to offset for current scroll position
- int offset = -getAlabels().getScrollOffset();
- pg.translate(0, offset);
- pg.translate(-idWidth - 3, (endSeq - startSeq) * av.getCharHeight()
- + 3);
- getAlabels().drawComponent(pg, idWidth);
- pg.translate(idWidth + 3, 0);
+ if (av.isShowAnnotation() && (endSeq == alignmentHeight))
+ {
+ /*
+ * draw annotation labels; drawComponent() translates by
+ * getScrollOffset(), so compensate for that first;
+ * then reset to (0, scale height)
+ */
+ int offset = getAlabels().getScrollOffset();
+ idGraphics.translate(0, -offset);
+ idGraphics.translate(0, alignmentDrawnHeight);
+ getAlabels().drawComponent(idGraphics, idWidth);
+ idGraphics.translate(0, -alignmentDrawnHeight);
+
+ /*
+ * draw the annotations starting at
+ * (idOffset, alignmentHeight) from (0, scaleHeight)
+ */
+ alignmentGraphics.translate(alignmentGraphicsOffset, alignmentDrawnHeight);
getAnnotationPanel().renderer.drawComponent(getAnnotationPanel(), av,
- pg, -1, startRes, endRes + 1);
- pg.translate(0, -offset);
+ alignmentGraphics, -1, startRes, endRes + 1);
}
return Printable.PAGE_EXISTS;
* @throws PrinterException
* DOCUMENT ME!
*/
- public int printWrappedAlignment(Graphics pg, int pwidth, int pheight,
- int pi) throws PrinterException
+ public int printWrappedAlignment(int pwidth, int pheight, int pi,
+ Graphics pg) throws PrinterException
{
int annotationHeight = 0;
AnnotationLabels labels = null;
if (onscreen
|| (idwidth = Cache.getIntegerProperty("FIGURE_FIXEDIDWIDTH")) == null)
{
- return (getIdPanel().getWidth() > 0 ? getIdPanel().getWidth()
- : calculateIdWidth().width + 4);
+ int w = getIdPanel().getWidth();
+ return (w > 0 ? w : calculateIdWidth().width + 4);
}
return idwidth.intValue() + 4;
}
aDimension.getWidth(), aDimension.getHeight()
+ boarderBottomOffset, file, imageTitle,
alignFrame, pSessionId, headless);
+ Graphics graphics = im.getGraphics();
if (av.getWrapAlignment())
{
- if (im.getGraphics() != null)
+ if (graphics != null)
{
- printWrappedAlignment(im.getGraphics(), aDimension.getWidth(),
- aDimension.getHeight() + boarderBottomOffset, 0);
+ printWrappedAlignment(aDimension.getWidth(),
+ aDimension.getHeight() + boarderBottomOffset, 0,
+ graphics);
im.writeImage();
}
}
else
{
- if (im.getGraphics() != null)
+ if (graphics != null)
{
- printUnwrapped(im.getGraphics(), aDimension.getWidth(),
- aDimension.getHeight(), 0);
+ printUnwrapped(aDimension.getWidth(), aDimension.getHeight(),
+ 0, graphics, graphics);
im.writeImage();
}
}
public void makePNGImageMap(File imgMapFile, String imageName)
{
- // /////ONLY WORKS WITH NONE WRAPPED ALIGNMENTS
+ // /////ONLY WORKS WITH NON WRAPPED ALIGNMENTS
// ////////////////////////////////////////////
int idWidth = getVisibleIdWidth(false);
FontMetrics fm = getFontMetrics(av.getFont());
{
int s, sSize = av.getAlignment().getHeight(), res, alwidth = av
.getAlignment().getWidth(), g, gSize, f, fSize, sy;
- StringBuffer text = new StringBuffer();
PrintWriter out = new PrintWriter(new FileWriter(imgMapFile));
out.println(jalview.io.HTMLOutput.getImageMapHTML());
out.println("<img src=\"" + imageName
SequenceGroup[] groups = av.getAlignment().findAllGroups(seq);
for (res = 0; res < alwidth; res++)
{
- text = new StringBuffer();
+ StringBuilder text = new StringBuilder();
String triplet = null;
if (av.getAlignment().isNucleotide())
{
{
if (text.length() < 1)
{
- text.append("<area shape=\"rect\" coords=\""
- + (idWidth + res * av.getCharWidth()) + "," + sy
- + "," + (idWidth + (res + 1) * av.getCharWidth())
- + "," + (av.getCharHeight() + sy) + "\""
- + " onMouseOver=\"toolTip('" + alIndex + " "
- + triplet);
+ text.append("<area shape=\"rect\" coords=\"")
+ .append((idWidth + res * av.getCharWidth()))
+ .append(",").append(sy).append(",")
+ .append((idWidth + (res + 1) * av.getCharWidth()))
+ .append(",").append((av.getCharHeight() + sy))
+ .append("\"").append(" onMouseOver=\"toolTip('")
+ .append(alIndex).append(" ").append(triplet);
}
if (groups[g].getStartRes() < res
&& groups[g].getEndRes() > res)
{
- text.append("<br><em>" + groups[g].getName() + "</em>");
+ text.append("<br><em>").append(groups[g].getName())
+ .append("</em>");
}
}
{
if (text.length() < 1)
{
- text.append("<area shape=\"rect\" coords=\""
- + (idWidth + res * av.getCharWidth()) + "," + sy
- + "," + (idWidth + (res + 1) * av.getCharWidth())
- + "," + (av.getCharHeight() + sy) + "\""
- + " onMouseOver=\"toolTip('" + alIndex + " "
- + triplet);
+ text.append("<area shape=\"rect\" coords=\"")
+ .append((idWidth + res * av.getCharWidth()))
+ .append(",").append(sy).append(",")
+ .append((idWidth + (res + 1) * av.getCharWidth()))
+ .append(",").append((av.getCharHeight() + sy))
+ .append("\"").append(" onMouseOver=\"toolTip('")
+ .append(alIndex).append(" ").append(triplet);
}
fSize = features.length;
for (f = 0; f < fSize; f++)
if ((features[f].getBegin() <= seq.findPosition(res))
&& (features[f].getEnd() >= seq.findPosition(res)))
{
- if (features[f].getType().equals("disulfide bond"))
+ if (features[f].isContactFeature())
{
if (features[f].getBegin() == seq.findPosition(res)
|| features[f].getEnd() == seq
.findPosition(res))
{
- text.append("<br>disulfide bond "
- + features[f].getBegin() + ":"
- + features[f].getEnd());
+ text.append("<br>").append(features[f].getType())
+ .append(" ").append(features[f].getBegin())
+ .append(":").append(features[f].getEnd());
}
}
else
&& !features[f].getType().equals(
features[f].getDescription()))
{
- text.append(" " + features[f].getDescription());
+ text.append(" ").append(features[f].getDescription());
}
if (features[f].getValue("status") != null)
{
- text.append(" (" + features[f].getValue("status")
- + ")");
+ text.append(" (").append(features[f].getValue("status"))
+ .append(")");
}
}
}
* @param verticalOffset
* the number of visible sequences to show above the mapped region
*/
- public void scrollToCentre(SearchResults sr, int verticalOffset)
+ public void scrollToCentre(SearchResultsI sr, int verticalOffset)
{
/*
* To avoid jumpy vertical scrolling (if some sequences are gapped or not
* mapped), we can make the scroll-to location a sequence above the one
* actually mapped.
*/
- SequenceI mappedTo = sr.getResultSequence(0);
+ SequenceI mappedTo = sr.getResults().get(0).getSequence();
List<SequenceI> seqs = av.getAlignment().getSequences();
/*
* type which are in the application scope (all, selected or unselected
* sequences).
*
- * @param type
+ * @param dataSourceType
*/
protected void changeShowHide_actionPerformed()
{
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceGroup;
import jalview.datamodel.SequenceI;
+import jalview.io.FileFormat;
import jalview.io.FormatAdapter;
import jalview.util.MessageManager;
alignmentStartEnd = av.getAlignment().getVisibleStartAndEndIndex(
hiddenCols);
}
- String output = new FormatAdapter().formatSequences("Fasta", seqs,
- omitHidden, alignmentStartEnd);
+ String output = new FormatAdapter().formatSequences(FileFormat.Fasta,
+ seqs, omitHidden, alignmentStartEnd);
Toolkit.getDefaultToolkit().getSystemClipboard()
.setContents(new StringSelection(output), Desktop.instance);
else if (action.equals(LABEL))
{
String exMesg = collectAnnotVals(anot, LABEL);
- String label = JOptionPane.showInputDialog(this,
+ String label = JvOptionPane.showInputDialog(this,
MessageManager.getString("label.enter_label"), exMesg);
if (label == null)
aa[activeRow].hasIcons = true;
}
- String label = JOptionPane.showInputDialog(MessageManager
+ String label = JvOptionPane.showInputDialog(MessageManager
.getString("label.enter_label_for_the_structure"), symbol);
if (label == null)
}
if (errormsgs.length() > 0)
{
- JOptionPane.showInternalMessageDialog(Desktop.desktop, MessageManager
+ JvOptionPane.showInternalMessageDialog(Desktop.desktop, MessageManager
.formatMessage("label.pdb_entries_couldnt_be_retrieved",
new String[] { errormsgs.toString() }),
MessageManager.getString("label.couldnt_load_file"),
- JOptionPane.ERROR_MESSAGE);
+ JvOptionPane.ERROR_MESSAGE);
}
return files;
}
package jalview.gui;
import jalview.api.AlignmentViewPanel;
+import jalview.api.structures.JalviewStructureDisplayI;
import jalview.bin.Cache;
import jalview.datamodel.PDBEntry;
import jalview.datamodel.SequenceI;
import jalview.ext.jmol.JalviewJmolBinding;
+import jalview.io.DataSourceType;
import jalview.structure.StructureSelectionManager;
import java.awt.Container;
private FeatureRenderer fr = null;
public AppJmolBinding(AppJmol appJmol, StructureSelectionManager sSm,
- PDBEntry[] pdbentry, SequenceI[][] sequenceIs, String protocol)
+ PDBEntry[] pdbentry, SequenceI[][] sequenceIs, DataSourceType protocol)
{
super(sSm, pdbentry, sequenceIs, protocol);
appJmolWindow = appJmol;
// TODO Auto-generated method stub
return null;
}
+
+ @Override
+ public JalviewStructureDisplayI getViewer()
+ {
+ return appJmolWindow;
+ }
}
_sideList.ensureIndexIsVisible(index);
/*
- * TODO Object newName = JOptionPane.showInputDialog( this,
+ * TODO Object newName = JvOptionPane.showInputDialog( this,
* "Specify a new name for this RNA", "Rename RNA",
- * JOptionPane.QUESTION_MESSAGE, (Icon)null, null, item.toString()); if
+ * JvOptionPane.QUESTION_MESSAGE, (Icon)null, null, item.toString()); if
* (newName!=null) { item.name = newName.toString();
* this._sideList.repaint(); }
*/
import jalview.api.StructureSelectionManagerProvider;
import jalview.datamodel.PDBEntry;
import jalview.datamodel.SequenceI;
+import jalview.io.DataSourceType;
import jalview.io.StructureFile;
import jalview.structure.StructureSelectionManager;
import jalview.util.MessageManager;
* @param choice
* @param sequence
*/
- public PDBEntry associatePdbWithSeq(String choice, String protocol,
+ public PDBEntry associatePdbWithSeq(String choice, DataSourceType file,
SequenceI sequence, boolean prompt,
StructureSelectionManagerProvider ssmp)
{
StructureFile pdbfile = null;
pdbfile = StructureSelectionManager.getStructureSelectionManager(ssmp)
.setMapping(false, new SequenceI[] { sequence }, null, choice,
- protocol);
+ file);
if (pdbfile == null)
{
// stacktrace already thrown so just return
if (prompt)
{
- reply = JOptionPane.showInternalInputDialog(Desktop.desktop,
+ reply = JvOptionPane.showInternalInputDialog(Desktop.desktop,
MessageManager
.getString("label.couldnt_find_pdb_id_in_file"),
MessageManager.getString("label.no_pdb_id_in_file"),
- JOptionPane.QUESTION_MESSAGE);
+ JvOptionPane.QUESTION_MESSAGE);
}
if (reply == null)
{
import jalview.datamodel.SequenceI;
import jalview.ext.rbvi.chimera.JalviewChimeraBinding;
import jalview.gui.StructureViewer.ViewerType;
-import jalview.io.AppletFormatAdapter;
+import jalview.io.DataSourceType;
import jalview.io.JalviewFileChooser;
import jalview.io.JalviewFileView;
import jalview.io.StructureFile;
if (!jmb.launchChimera())
{
- JOptionPane.showMessageDialog(Desktop.desktop,
+ JvOptionPane.showMessageDialog(Desktop.desktop,
MessageManager.getString("label.chimera_failed"),
MessageManager.getString("label.error_loading_file"),
- JOptionPane.ERROR_MESSAGE);
+ JvOptionPane.ERROR_MESSAGE);
this.dispose();
return;
}
"label.confirm_close_chimera",
new Object[] { jmb.getViewerTitle("Chimera", false) });
prompt = JvSwingUtils.wrapTooltip(true, prompt);
- int confirm = JOptionPane.showConfirmDialog(this, prompt,
+ int confirm = JvOptionPane.showConfirmDialog(this, prompt,
MessageManager.getString("label.close_viewer"),
- JOptionPane.YES_NO_CANCEL_OPTION);
+ JvOptionPane.YES_NO_CANCEL_OPTION);
/*
* abort closure if user hits escape or Cancel
*/
- if (confirm == JOptionPane.CANCEL_OPTION
- || confirm == JOptionPane.CLOSED_OPTION)
+ if (confirm == JvOptionPane.CANCEL_OPTION
+ || confirm == JvOptionPane.CLOSED_OPTION)
{
return;
}
- closeChimera = confirm == JOptionPane.YES_OPTION;
+ closeChimera = confirm == JvOptionPane.YES_OPTION;
}
jmb.closeViewer(closeChimera);
}
if (errormsgs.length() > 0)
{
- JOptionPane.showInternalMessageDialog(Desktop.desktop, MessageManager
+ JvOptionPane.showInternalMessageDialog(Desktop.desktop, MessageManager
.formatMessage("label.pdb_entries_couldnt_be_retrieved",
new Object[] { errormsgs.toString() }),
MessageManager.getString("label.couldnt_load_file"),
- JOptionPane.ERROR_MESSAGE);
+ JvOptionPane.ERROR_MESSAGE);
}
if (files.length() > 0)
jmb.openFile(pe);
jmb.addSequence(pos, jmb.getSequence()[pos]);
File fl = new File(pe.getFile());
- String protocol = AppletFormatAdapter.URL;
+ DataSourceType protocol = DataSourceType.URL;
try
{
if (fl.exists())
{
- protocol = AppletFormatAdapter.FILE;
+ protocol = DataSourceType.FILE;
}
} catch (Throwable e)
{
xrefsAlignment.getSequencesArray());
if (copyAlignment.getHeight() == 0)
{
- JOptionPane.showMessageDialog(alignFrame,
+ JvOptionPane.showMessageDialog(alignFrame,
MessageManager.getString("label.cant_map_cds"),
MessageManager.getString("label.operation_failed"),
- JOptionPane.OK_OPTION);
+ JvOptionPane.OK_OPTION);
System.err.println("Failed to make CDS alignment");
}
import jalview.datamodel.AlignmentI;
import jalview.datamodel.ColumnSelection;
import jalview.datamodel.SequenceI;
+import jalview.io.AlignmentFileI;
import jalview.io.AppletFormatAdapter;
-import jalview.io.FileParse;
+import jalview.io.DataSourceType;
+import jalview.io.FileFormatException;
+import jalview.io.FileFormatI;
import jalview.io.FormatAdapter;
import jalview.io.IdentifyFile;
import jalview.io.JalviewFileChooser;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.PrintWriter;
import javax.swing.JMenuItem;
-import javax.swing.JOptionPane;
import javax.swing.JPopupMenu;
import javax.swing.SwingUtilities;
AlignViewportI viewport;
- FileParse source = null;
+ AlignmentFileI source = null;
public CutAndPasteTransfer()
{
{
try
{
- java.io.PrintWriter out = new java.io.PrintWriter(
- new java.io.FileWriter(chooser.getSelectedFile()));
+ PrintWriter out = new PrintWriter(new FileWriter(
+ chooser.getSelectedFile()));
out.print(getText());
out.close();
return;
}
- String format = new IdentifyFile().identify(text, "Paste");
- if (format == null || format.equalsIgnoreCase("EMPTY DATA FILE"))
+ FileFormatI format = null;
+ try
+ {
+ format = new IdentifyFile().identify(text, DataSourceType.PASTE);
+ } catch (FileFormatException e1)
+ {
+ // leave as null
+ }
+ if (format == null)
{
System.err.println(MessageManager
.getString("label.couldnt_read_data"));
if (!Jalview.isHeadlessMode())
{
- javax.swing.JOptionPane.showInternalMessageDialog(Desktop.desktop,
+ JvOptionPane.showInternalMessageDialog(Desktop.desktop,
AppletFormatAdapter.SUPPORTED_FORMATS,
MessageManager.getString("label.couldnt_read_data"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
}
return;
}
// TODO: identify feature, annotation or tree file and parse appropriately.
AlignmentI al = null;
- if (FormatAdapter.isValidFormat(format))
+ try
{
- try
- {
- FormatAdapter fa = new FormatAdapter(alignpanel);
- al = fa.readFile(getText(), "Paste", format);
- source = fa.getAlignFile();
+ FormatAdapter fa = new FormatAdapter(alignpanel);
+ al = fa.readFile(getText(), DataSourceType.PASTE, format);
+ source = fa.getAlignFile();
- } catch (java.io.IOException ex)
- {
- JOptionPane.showInternalMessageDialog(Desktop.desktop,
- MessageManager.formatMessage(
- "label.couldnt_read_pasted_text",
- new String[] { ex.toString() }), MessageManager
- .getString("label.error_parsing_text"),
- JOptionPane.WARNING_MESSAGE);
- }
+ } catch (IOException ex)
+ {
+ JvOptionPane.showInternalMessageDialog(Desktop.desktop, MessageManager
+ .formatMessage("label.couldnt_read_pasted_text", new String[]
+ { ex.toString() }), MessageManager
+ .getString("label.error_parsing_text"),
+ JvOptionPane.WARNING_MESSAGE);
}
if (al != null && al.hasValidSequence())
{
String title = MessageManager.formatMessage(
- "label.input_cut_paste_params", new String[] { format });
+ "label.input_cut_paste_params",
+ new String[] { format.toString() });
FeatureSettingsModelI proxyColourScheme = source
.getFeatureColourScheme();
.getString("label.couldnt_read_data"));
if (!Jalview.isHeadlessMode())
{
- javax.swing.JOptionPane.showInternalMessageDialog(Desktop.desktop,
+ JvOptionPane.showInternalMessageDialog(Desktop.desktop,
AppletFormatAdapter.SUPPORTED_FORMATS,
MessageManager.getString("label.couldnt_read_data"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
}
}
}
pane12.add(urltf, BorderLayout.EAST);
panel.add(pane12, BorderLayout.SOUTH);
- int reply = JOptionPane.showInternalConfirmDialog(Desktop.desktop,
+ int reply = JvOptionPane.showInternalConfirmDialog(Desktop.desktop,
panel,
MessageManager.getString("label.enter_local_das_source"),
- JOptionPane.OK_CANCEL_OPTION);
+ JvOptionPane.OK_CANCEL_OPTION);
- if (reply != JOptionPane.OK_OPTION)
+ if (reply != JvOptionPane.OK_OPTION)
{
return;
}
if (!sourceRegistry.getSource(nickname).isLocal())
{
- JOptionPane
+ JvOptionPane
.showInternalMessageDialog(
Desktop.desktop,
MessageManager
.getString("label.you_can_only_edit_or_remove_local_das_sources"),
MessageManager.getString("label.public_das_source"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
return;
}
Object[] options = { "Edit", "Remove", "Cancel" };
- int choice = JOptionPane.showInternalOptionDialog(Desktop.desktop,
+ int choice = JvOptionPane.showInternalOptionDialog(Desktop.desktop,
"Do you want to edit or remove " + nickname + "?",
"Edit / Remove Local DAS Source",
- JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE,
+ JvOptionPane.YES_NO_CANCEL_OPTION, JvOptionPane.QUESTION_MESSAGE,
null, options, options[2]);
switch (choice)
import jalview.api.AlignmentViewPanel;
import jalview.bin.Cache;
import jalview.bin.Jalview;
+import jalview.io.DataSourceType;
+import jalview.io.FileFormat;
+import jalview.io.FileFormatException;
+import jalview.io.FileFormatI;
import jalview.io.FileLoader;
-import jalview.io.FormatAdapter;
import jalview.io.IdentifyFile;
import jalview.io.JalviewFileChooser;
import jalview.io.JalviewFileView;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
-import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JProgressBar;
}
});
- // displayed.
// Thread off a new instance of the file chooser - this reduces the time it
// takes to open it later on.
new Thread(new Runnable()
public void run()
{
Cache.log.debug("Filechooser init thread started.");
- new JalviewFileChooser(
- jalview.bin.Cache.getProperty("LAST_DIRECTORY"),
- jalview.io.AppletFormatAdapter.READABLE_EXTENSIONS,
- jalview.io.AppletFormatAdapter.READABLE_FNAMES,
- jalview.bin.Cache.getProperty("DEFAULT_FILE_FORMAT"));
+ String fileFormat = Cache.getProperty("DEFAULT_FILE_FORMAT");
+ JalviewFileChooser.forRead(Cache.getProperty("LAST_DIRECTORY"),
+ fileFormat);
Cache.log.debug("Filechooser init thread finished.");
}
}).start();
String file = (String) contents
.getTransferData(DataFlavor.stringFlavor);
- String format = new IdentifyFile().identify(file,
- FormatAdapter.PASTE);
+ FileFormatI format = new IdentifyFile().identify(file,
+ DataSourceType.PASTE);
- new FileLoader().LoadFile(file, FormatAdapter.PASTE, format);
+ new FileLoader().LoadFile(file, DataSourceType.PASTE, format);
}
} catch (Exception ex)
}
});
+ desktop.add(frame);
+
windowMenu.add(menuItem);
- desktop.add(frame);
frame.toFront();
try
{
// Java's Transferable for native dnd
evt.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
Transferable t = evt.getTransferable();
- java.util.List<String> files = new ArrayList<String>();
- java.util.List<String> protocols = new ArrayList<String>();
+ List<String> files = new ArrayList<String>();
+ List<DataSourceType> protocols = new ArrayList<DataSourceType>();
try
{
for (int i = 0; i < files.size(); i++)
{
String file = files.get(i).toString();
- String protocol = (protocols == null) ? FormatAdapter.FILE
- : (String) protocols.get(i);
- String format = null;
+ DataSourceType protocol = (protocols == null) ? DataSourceType.FILE
+ : protocols.get(i);
+ FileFormatI format = null;
if (file.endsWith(".jar"))
{
- format = "Jalview";
+ format = FileFormat.Jalview;
}
else
@Override
public void inputLocalFileMenuItem_actionPerformed(AlignViewport viewport)
{
- JalviewFileChooser chooser = new JalviewFileChooser(
- jalview.bin.Cache.getProperty("LAST_DIRECTORY"),
- jalview.io.AppletFormatAdapter.READABLE_EXTENSIONS,
- jalview.io.AppletFormatAdapter.READABLE_FNAMES,
- jalview.bin.Cache.getProperty("DEFAULT_FILE_FORMAT"));
+ String fileFormat = Cache.getProperty("DEFAULT_FILE_FORMAT");
+ JalviewFileChooser chooser = JalviewFileChooser.forRead(
+ Cache.getProperty("LAST_DIRECTORY"), fileFormat);
chooser.setFileView(new JalviewFileView());
chooser.setDialogTitle(MessageManager
if (value == JalviewFileChooser.APPROVE_OPTION)
{
String choice = chooser.getSelectedFile().getPath();
- jalview.bin.Cache.setProperty("LAST_DIRECTORY", chooser
+ Cache.setProperty("LAST_DIRECTORY", chooser
.getSelectedFile().getParent());
- String format = null;
- if (chooser.getSelectedFormat() != null
- && chooser.getSelectedFormat().equals("Jalview"))
+ FileFormatI format = null;
+ FileFormatI selectedFormat = chooser.getSelectedFormat();
+ if (FileFormat.Jalview.equals(selectedFormat))
{
- format = "Jalview";
+ format = FileFormat.Jalview;
}
else
{
- format = new IdentifyFile().identify(choice, FormatAdapter.FILE);
+ try
+ {
+ format = new IdentifyFile().identify(choice, DataSourceType.FILE);
+ } catch (FileFormatException e)
+ {
+ // format is null
+ }
}
if (viewport != null)
{
- new FileLoader().LoadFile(viewport, choice, FormatAdapter.FILE,
+ new FileLoader().LoadFile(viewport, choice, DataSourceType.FILE,
format);
}
else
{
- new FileLoader().LoadFile(choice, FormatAdapter.FILE, format);
+ new FileLoader().LoadFile(choice, DataSourceType.FILE, format);
}
}
}
}
}
- int reply = JOptionPane.showInternalConfirmDialog(desktop, panel,
+ int reply = JvOptionPane.showInternalConfirmDialog(desktop, panel,
MessageManager.getString("label.input_alignment_from_url"),
- JOptionPane.OK_CANCEL_OPTION);
+ JvOptionPane.OK_CANCEL_OPTION);
- if (reply != JOptionPane.OK_OPTION)
+ if (reply != JvOptionPane.OK_OPTION)
{
return;
}
{
if (viewport != null)
{
- new FileLoader().LoadFile(viewport, url, FormatAdapter.URL,
- "Jalview");
+ new FileLoader().LoadFile(viewport, url, DataSourceType.URL,
+ FileFormat.Jalview);
}
else
{
- new FileLoader().LoadFile(url, FormatAdapter.URL, "Jalview");
+ new FileLoader().LoadFile(url, DataSourceType.URL,
+ FileFormat.Jalview);
}
}
else
{
- String format = new IdentifyFile().identify(url, FormatAdapter.URL);
+ FileFormatI format = null;
+ try
+ {
+ format = new IdentifyFile().identify(url, DataSourceType.URL);
+ } catch (FileFormatException e)
+ {
+ // TODO revise error handling, distinguish between
+ // URL not found and response not valid
+ }
- if (format.equals("URL NOT FOUND"))
+ if (format == null)
{
- JOptionPane.showInternalMessageDialog(Desktop.desktop,
+ JvOptionPane.showInternalMessageDialog(Desktop.desktop,
MessageManager.formatMessage("label.couldnt_locate",
new Object[] { url }), MessageManager
.getString("label.url_not_found"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
return;
}
if (viewport != null)
{
- new FileLoader().LoadFile(viewport, url, FormatAdapter.URL, format);
+ new FileLoader()
+ .LoadFile(viewport, url, DataSourceType.URL, format);
}
else
{
- new FileLoader().LoadFile(url, FormatAdapter.URL, format);
+ new FileLoader().LoadFile(url, DataSourceType.URL, format);
}
}
}
public void aboutMenuItem_actionPerformed(ActionEvent e)
{
// StringBuffer message = getAboutMessage(false);
- // JOptionPane.showInternalMessageDialog(Desktop.desktop,
+ // JvOptionPane.showInternalMessageDialog(Desktop.desktop,
//
- // message.toString(), "About Jalview", JOptionPane.INFORMATION_MESSAGE);
+ // message.toString(), "About Jalview", JvOptionPane.INFORMATION_MESSAGE);
new Thread(new Runnable()
{
@Override
public void saveState_actionPerformed(ActionEvent e)
{
JalviewFileChooser chooser = new JalviewFileChooser(
- jalview.bin.Cache.getProperty("LAST_DIRECTORY"),
- new String[] { "jvp" }, new String[] { "Jalview Project" },
- "Jalview Project");
+ Cache.getProperty("LAST_DIRECTORY"), "jvp", "Jalview Project");
chooser.setFileView(new JalviewFileView());
chooser.setDialogTitle(MessageManager.getString("label.save_state"));
Cache.log.error(
"Problems whilst trying to save to " + choice.getName(),
ex);
- JOptionPane.showMessageDialog(me, MessageManager.formatMessage(
+ JvOptionPane.showMessageDialog(me, MessageManager.formatMessage(
"label.error_whilst_saving_current_state_to",
new Object[] { choice.getName() }), MessageManager
.getString("label.couldnt_save_project"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
}
setProgressBar(null, choice.hashCode());
}
public void loadState_actionPerformed(ActionEvent e)
{
JalviewFileChooser chooser = new JalviewFileChooser(
- jalview.bin.Cache.getProperty("LAST_DIRECTORY"), new String[] {
+ Cache.getProperty("LAST_DIRECTORY"), new String[] {
"jvp", "jar" }, new String[] { "Jalview Project",
"Jalview Project (old)" }, "Jalview Project");
chooser.setFileView(new JalviewFileView());
final File selectedFile = chooser.getSelectedFile();
setProjectFile(selectedFile);
final String choice = selectedFile.getAbsolutePath();
- jalview.bin.Cache.setProperty("LAST_DIRECTORY",
+ Cache.setProperty("LAST_DIRECTORY",
selectedFile.getParent());
new Thread(new Runnable()
{
{
Cache.log.error("Problems whilst loading project from "
+ choice, ex);
- JOptionPane.showMessageDialog(Desktop.desktop, MessageManager
+ JvOptionPane.showMessageDialog(Desktop.desktop, MessageManager
.formatMessage(
"label.error_whilst_loading_project_from",
new Object[] { choice }), MessageManager
.getString("label.couldnt_load_project"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
}
setProgressBar(null, choice.hashCode());
}
String fle = chooser.getSelectedFile().toString();
if (!vamsasImport(chooser.getSelectedFile()))
{
- JOptionPane
+ JvOptionPane
.showInternalMessageDialog(
Desktop.desktop,
MessageManager.formatMessage(
new Object[] { fle }),
MessageManager
.getString("label.vamsas_document_import_failed"),
- JOptionPane.ERROR_MESSAGE);
+ JvOptionPane.ERROR_MESSAGE);
}
}
}
if (v_client != null)
{
JalviewFileChooser chooser = new JalviewFileChooser(
- jalview.bin.Cache.getProperty("LAST_DIRECTORY"), new String[]
- { "vdj" }, // TODO: VAMSAS DOCUMENT EXTENSION is VDJ
- new String[] { "Vamsas Document" }, "Vamsas Document");
+ Cache.getProperty("LAST_DIRECTORY"), "vdj",// TODO: VAMSAS DOCUMENT EXTENSION is VDJ
+ "Vamsas Document");
chooser.setFileView(new JalviewFileView());
chooser.setDialogTitle(MessageManager
JPanel progpanel = addProgressPanel(MessageManager.formatMessage(
"label.saving_vamsas_doc",
new Object[] { choice.getName() }));
- jalview.bin.Cache.setProperty("LAST_DIRECTORY", choice.getParent());
+ Cache.setProperty("LAST_DIRECTORY", choice.getParent());
String warnmsg = null;
String warnttl = null;
try
removeProgressPanel(progpanel);
if (warnmsg != null)
{
- JOptionPane.showInternalMessageDialog(Desktop.desktop,
+ JvOptionPane.showInternalMessageDialog(Desktop.desktop,
- warnmsg, warnttl, JOptionPane.ERROR_MESSAGE);
+ warnmsg, warnttl, JvOptionPane.ERROR_MESSAGE);
}
}
}
*/
public void setVamsasUpdate(boolean b)
{
- jalview.bin.Cache.log.debug("Setting gui for Vamsas update "
+ Cache.log.debug("Setting gui for Vamsas update "
+ (b ? "in progress" : "finished"));
if (vamUpdate != null)
});
msgPanel.add(jcb);
- JOptionPane.showMessageDialog(Desktop.desktop, msgPanel,
+ JvOptionPane.showMessageDialog(Desktop.desktop, msgPanel,
MessageManager
.getString("label.SEQUENCE_ID_no_longer_used"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
}
}
});
} catch (Exception ex)
{
jalview.bin.Cache.log.error("Groovy Shell Creation failed.", ex);
- JOptionPane.showInternalMessageDialog(Desktop.desktop,
+ JvOptionPane.showInternalMessageDialog(Desktop.desktop,
MessageManager.getString("label.couldnt_create_groovy_shell"),
MessageManager.getString("label.groovy_support_failed"),
- JOptionPane.ERROR_MESSAGE);
+ JvOptionPane.ERROR_MESSAGE);
}
}
*
* jd.waitForInput();
*/
- JOptionPane
+ JvOptionPane
.showConfirmDialog(
Desktop.desktop,
new JLabel(
+ "<p>Check the <em>Connections</em> and <em>Web services</em> tab<br/>of the"
+ " Tools->Preferences dialog box to change them.</p></html>"),
"Web Service Configuration Problem",
- JOptionPane.DEFAULT_OPTION,
- JOptionPane.ERROR_MESSAGE);
+ JvOptionPane.DEFAULT_OPTION,
+ JvOptionPane.ERROR_MESSAGE);
serviceChangedDialog = null;
}
jalview.util.BrowserLauncher.openURL(url);
} catch (Exception ex)
{
- JOptionPane.showInternalMessageDialog(Desktop.desktop,
+ JvOptionPane.showInternalMessageDialog(Desktop.desktop,
MessageManager
.getString("label.web_browser_not_found_unix"),
MessageManager.getString("label.web_browser_not_found"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
ex.printStackTrace();
}
}
public static void transferFromDropTarget(List<String> files,
- List<String> protocols, DropTargetDropEvent evt, Transferable t)
+ List<DataSourceType> protocols, DropTargetDropEvent evt,
+ Transferable t)
throws Exception
{
.getTransferData(DataFlavor.javaFileListFlavor))
{
files.add(((File) file).toString());
- protocols.add(FormatAdapter.FILE);
+ protocols.add(DataSourceType.FILE);
}
}
else
{
Cache.log.debug("Adding missing FILE protocol for "
+ files.get(protocols.size()));
- protocols.add(FormatAdapter.FILE);
+ protocols.add(DataSourceType.FILE);
}
for (java.util.StringTokenizer st = new java.util.StringTokenizer(
data, "\r\n"); st.hasMoreTokens();)
java.net.URI uri = new java.net.URI(s);
if (uri.getScheme().toLowerCase().startsWith("http"))
{
- protocols.add(FormatAdapter.URL);
+ protocols.add(DataSourceType.URL);
files.add(uri.toString());
}
else
{
// otherwise preserve old behaviour: catch all for file objects
java.io.File file = new java.io.File(uri);
- protocols.add(FormatAdapter.FILE);
+ protocols.add(DataSourceType.FILE);
files.add(file.toString());
}
}
bg.add(lineart);
bg.add(text);
- JOptionPane pane = new JOptionPane(null, JOptionPane.DEFAULT_OPTION,
- JOptionPane.DEFAULT_OPTION, null, new Object[] { this });
+ JOptionPane pane = new JOptionPane(null, JvOptionPane.DEFAULT_OPTION,
+ JvOptionPane.DEFAULT_OPTION, null, new Object[] { this });
dialog = pane.createDialog(Desktop.desktop, "EPS Rendering options");
dialog.setVisible(true);
ok.setText(MessageManager.getString("action.ok"));
ok.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
ok_actionPerformed(e);
cancel.setText(MessageManager.getString("action.cancel"));
cancel.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
cancel_actionPerformed(e);
panel2.add(description, BorderLayout.CENTER);
panel.add(panel2, BorderLayout.SOUTH);
}
- int reply = JOptionPane.showInternalConfirmDialog(parent, panel, title,
- JOptionPane.OK_CANCEL_OPTION);
+ int reply = JvOptionPane.showInternalConfirmDialog(parent, panel, title,
+ JvOptionPane.OK_CANCEL_OPTION);
if (!parent.requestFocusInWindow())
{
System.err.println("Bad focus for dialog!");
}
- if (reply == JOptionPane.OK_OPTION)
+ if (reply == JvOptionPane.OK_OPTION)
{
accept = true;
}
import jalview.api.FeatureColourI;
import jalview.datamodel.SearchResults;
+import jalview.datamodel.SearchResultsI;
import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceI;
import jalview.schemes.FeatureColour;
start.setValue(new Integer(features[index].getBegin()));
end.setValue(new Integer(features[index].getEnd()));
- SearchResults highlight = new SearchResults();
+ SearchResultsI highlight = new SearchResults();
highlight.addResult(sequences[0], features[index].getBegin(),
features[index].getEnd());
: MessageManager.formatMessage("label.amend_delete_features",
new String[] { sequences[0].getName() });
- int reply = JOptionPane.showInternalOptionDialog(Desktop.desktop,
- bigPanel, title, JOptionPane.YES_NO_CANCEL_OPTION,
- JOptionPane.QUESTION_MESSAGE, null, options,
+ int reply = JvOptionPane.showInternalOptionDialog(Desktop.desktop,
+ bigPanel, title, JvOptionPane.YES_NO_CANCEL_OPTION,
+ JvOptionPane.QUESTION_MESSAGE, null, options,
MessageManager.getString("action.ok"));
jalview.io.FeaturesFile ffile = new jalview.io.FeaturesFile();
- if (reply == JOptionPane.OK_OPTION && name.getText().length() > 0)
+ if (reply == JvOptionPane.OK_OPTION && name.getText().length() > 0)
{
// This ensures that the last sequence
// is refreshed and new features are rendered
{
SequenceFeature sf = features[featureIndex];
- if (reply == JOptionPane.NO_OPTION)
+ if (reply == JvOptionPane.NO_OPTION)
{
sequences[0].getDatasetSequence().deleteFeature(sf);
}
- else if (reply == JOptionPane.YES_OPTION)
+ else if (reply == JvOptionPane.YES_OPTION)
{
sf.type = lastFeatureAdded;
sf.featureGroup = lastFeatureGroupAdded;
else
// NEW FEATURES ADDED
{
- if (reply == JOptionPane.OK_OPTION && lastFeatureAdded.length() > 0)
+ if (reply == JvOptionPane.OK_OPTION && lastFeatureAdded.length() > 0)
{
for (int i = 0; i < sequences.length; i++)
{
import jalview.datamodel.SequenceI;
import jalview.gui.Help.HelpId;
import jalview.io.JalviewFileChooser;
+import jalview.io.JalviewFileView;
import jalview.schemabinding.version2.JalviewUserColours;
import jalview.schemes.FeatureColour;
import jalview.util.Format;
import javax.swing.JLabel;
import javax.swing.JLayeredPane;
import javax.swing.JMenuItem;
-import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
void load()
{
JalviewFileChooser chooser = new JalviewFileChooser(
- jalview.bin.Cache.getProperty("LAST_DIRECTORY"),
- new String[] { "fc" },
- new String[] { "Sequence Feature Colours" },
+ Cache.getProperty("LAST_DIRECTORY"), "fc",
"Sequence Feature Colours");
- chooser.setFileView(new jalview.io.JalviewFileView());
+ chooser.setFileView(new JalviewFileView());
chooser.setDialogTitle(MessageManager
.getString("label.load_feature_colours"));
chooser.setToolTipText(MessageManager.getString("action.load"));
}
else
{
- Color color = new Color(Integer.parseInt(jucs.getColour(i)
- .getRGB(), 16));
+ Color color = new Color(
+ Integer.parseInt(jucs.getColour(i).getRGB(), 16));
fr.setColour(name = jucs.getColour(i).getName(),
new FeatureColour(color));
}
void save()
{
JalviewFileChooser chooser = new JalviewFileChooser(
- Cache.getProperty("LAST_DIRECTORY"), new String[] { "fc" },
- new String[] { "Sequence Feature Colours" },
+ Cache.getProperty("LAST_DIRECTORY"), "fc",
"Sequence Feature Colours");
- chooser.setFileView(new jalview.io.JalviewFileView());
+ chooser.setFileView(new JalviewFileView());
chooser.setDialogTitle(MessageManager
.getString("label.save_feature_colours"));
chooser.setToolTipText(MessageManager.getString("action.save"));
public void noDasSourceActive()
{
complete();
- JOptionPane
+ JvOptionPane
.showInternalConfirmDialog(
Desktop.desktop,
MessageManager
.getString("label.no_das_sources_selected_warn"),
MessageManager
.getString("label.no_das_sources_selected_title"),
- JOptionPane.DEFAULT_OPTION,
- JOptionPane.INFORMATION_MESSAGE);
+ JvOptionPane.DEFAULT_OPTION,
+ JvOptionPane.INFORMATION_MESSAGE);
}
// ///////////////////////////////////////////////////////////////////////
*/
package jalview.gui;
-import jalview.datamodel.SearchResults;
+import jalview.datamodel.SearchResultMatchI;
+import jalview.datamodel.SearchResultsI;
import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceI;
import jalview.jbgui.GFinder;
int resIndex = -1;
- SearchResults searchResults;
+ SearchResultsI searchResults;
/**
* Creates a new Finder object with no associated viewport or panel.
KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "Cancel");
getRootPane().getActionMap().put("Cancel", new AbstractAction()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
escapeActionPerformed();
*
* @param e
*/
+ @Override
public void findNext_actionPerformed(ActionEvent e)
{
if (getFocusedViewport())
*
* @param e
*/
+ @Override
public void findAll_actionPerformed(ActionEvent e)
{
if (getFocusedViewport())
* @param e
* DOCUMENT ME!
*/
+ @Override
public void createNewGroup_actionPerformed(ActionEvent e)
{
SequenceI[] seqs = new SequenceI[searchResults.getSize()];
SequenceFeature[] features = new SequenceFeature[searchResults
.getSize()];
- for (int i = 0; i < searchResults.getSize(); i++)
+ int i = 0;
+ for (SearchResultMatchI match : searchResults.getResults())
{
- seqs[i] = searchResults.getResultSequence(i).getDatasetSequence();
+ seqs[i] = match.getSequence().getDatasetSequence();
features[i] = new SequenceFeature(textfield.getText().trim(),
- "Search Results", null, searchResults.getResultStart(i),
- searchResults.getResultEnd(i), "Search Results");
+ "Search Results", null, match.getStart(), match.getEnd(),
+ "Search Results");
+ i++;
}
if (ap.getSeqPanel().seqCanvas.getFeatureRenderer().amendFeatures(seqs,
searchResults = finder.getSearchResults(); // find(regex,
// caseSensitive.isSelected(), )
- Vector idMatch = finder.getIdMatch();
+ Vector<SequenceI> idMatch = finder.getIdMatch();
boolean haveResults = false;
// set or reset the GUI
if ((idMatch.size() > 0))
// 'SelectRegion' selection
if (!haveResults)
{
- JOptionPane.showInternalMessageDialog(this,
+ JvOptionPane.showInternalMessageDialog(this,
MessageManager.getString("label.finished_searching"), null,
- JOptionPane.INFORMATION_MESSAGE);
+ JvOptionPane.INFORMATION_MESSAGE);
resIndex = -1;
seqIndex = 0;
}
message += searchResults.getSize()
+ " subsequence matches found.";
}
- JOptionPane.showInternalMessageDialog(this, message, null,
- JOptionPane.INFORMATION_MESSAGE);
+ JvOptionPane.showInternalMessageDialog(this, message, null,
+ JvOptionPane.INFORMATION_MESSAGE);
resIndex = -1;
seqIndex = 0;
}
{
return false;
}
- JOptionPane.showInternalMessageDialog(this, error,
+ JvOptionPane.showInternalMessageDialog(this, error,
MessageManager.getString("label.invalid_search"), // $NON-NLS-1$
- JOptionPane.ERROR_MESSAGE);
+ JvOptionPane.ERROR_MESSAGE);
return true;
}
String message = iBounds.getHeight() < 1 ? MessageManager
.getString("label.font_doesnt_have_letters_defined")
: MessageManager.getString("label.font_too_small");
- JOptionPane.showInternalMessageDialog(this, message,
+ JvOptionPane.showInternalMessageDialog(this, message,
MessageManager.getString("label.invalid_font"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
/*
* Restore the changed value - note this will reinvoke this method via the
* ActionListener, but now validation should pass
bg.add(lineart);
bg.add(text);
- JOptionPane pane = new JOptionPane(null, JOptionPane.DEFAULT_OPTION,
- JOptionPane.DEFAULT_OPTION, null, new Object[] { this });
+ JOptionPane pane = new JOptionPane(null, JvOptionPane.DEFAULT_OPTION,
+ JvOptionPane.DEFAULT_OPTION, null, new Object[] { this });
dialog = pane.createDialog(Desktop.desktop, "HTML Rendering options");
dialog.setVisible(true);
ok.setText(MessageManager.getString("action.ok"));
ok.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
ok_actionPerformed(e);
cancel.setText(MessageManager.getString("action.cancel"));
cancel.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
cancel_actionPerformed(e);
if (seq > -1 && seq < av.getAlignment().getHeight())
{
SequenceI sequence = av.getAlignment().getSequenceAt(seq);
- StringBuffer tip = new StringBuffer(64);
- seqAnnotReport.createSequenceAnnotationReport(tip, sequence,
+ StringBuilder tip = new StringBuilder(64);
+ seqAnnotReport.createTooltipAnnotationReport(tip, sequence,
av.isShowDBRefs(), av.isShowNPFeats(),
sp.seqCanvas.fr.getMinMax());
setToolTipText(JvSwingUtils.wrapTooltip(true,
jalview.util.BrowserLauncher.openURL(url);
} catch (Exception ex)
{
- JOptionPane.showInternalMessageDialog(Desktop.desktop,
+ JvOptionPane.showInternalMessageDialog(Desktop.desktop,
MessageManager.getString("label.web_browser_not_found_unix"),
MessageManager.getString("label.web_browser_not_found"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
ex.printStackTrace();
}
}
import jalview.datamodel.StructureViewerModel.StructureData;
import jalview.ext.varna.RnaModel;
import jalview.gui.StructureViewer.ViewerType;
+import jalview.io.DataSourceType;
+import jalview.io.FileFormat;
import jalview.schemabinding.version2.AlcodMap;
import jalview.schemabinding.version2.AlcodonFrame;
import jalview.schemabinding.version2.Annotation;
@Override
public void run()
{
- JOptionPane.showInternalMessageDialog(Desktop.desktop,
+ JvOptionPane.showInternalMessageDialog(Desktop.desktop,
finalErrorMessage, "Error "
+ (saving ? "saving" : "loading")
- + " Jalview file", JOptionPane.WARNING_MESSAGE);
+ + " Jalview file", JvOptionPane.WARNING_MESSAGE);
}
});
}
StructureData filedat = oldFiles.get(id);
String pdbFile = filedat.getFilePath();
SequenceI[] seq = filedat.getSeqList().toArray(new SequenceI[0]);
- binding.getSsm().setMapping(seq, null, pdbFile,
- jalview.io.AppletFormatAdapter.FILE);
+ binding.getSsm().setMapping(seq, null, pdbFile, DataSourceType.FILE);
binding.addSequenceForStructFile(pdbFile, seq);
}
// and add the AlignmentPanel's reference to the view panel
af = new AlignFrame(al, view.getWidth(), view.getHeight(),
uniqueSeqSetId, viewId);
- af.setFileName(file, "Jalview");
+ af.setFileName(file, FileFormat.Jalview);
for (int i = 0; i < JSEQ.length; i++)
{
import jalview.binding.UserColours;
import jalview.binding.Viewport;
import jalview.datamodel.PDBEntry;
+import jalview.io.FileFormat;
import jalview.schemes.ColourSchemeI;
import jalview.schemes.ColourSchemeProperty;
import jalview.structure.StructureSelectionManager;
System.err.println("Couldn't locate Jalview XML file : " + ex
+ "\n");
- JOptionPane.showInternalMessageDialog(Desktop.desktop,
+ JvOptionPane.showInternalMessageDialog(Desktop.desktop,
MessageManager.formatMessage("label.couldnt_locate",
new String[] { file }), MessageManager
.getString("label.url_not_found"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
}
});
}
public void run()
{
- JOptionPane.showInternalMessageDialog(Desktop.desktop,
+ JvOptionPane.showInternalMessageDialog(Desktop.desktop,
MessageManager.formatMessage(
"label.error_loading_file_params", new String[]
{ file }), MessageManager
.getString("label.error_loading_jalview_file"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
}
});
}
AlignFrame af = new AlignFrame(al, view.getWidth(), view.getHeight());
- af.setFileName(file, "Jalview");
+ af.setFileName(file, FileFormat.Jalview);
for (int i = 0; i < JSEQ.length; i++)
{
package jalview.gui;
import jalview.api.AlignmentViewPanel;
+import jalview.api.structures.JalviewStructureDisplayI;
import jalview.datamodel.PDBEntry;
import jalview.datamodel.SequenceI;
import jalview.ext.rbvi.chimera.JalviewChimeraBinding;
+import jalview.io.DataSourceType;
import jalview.structure.StructureSelectionManager;
public class JalviewChimeraBindingModel extends JalviewChimeraBinding
public JalviewChimeraBindingModel(ChimeraViewFrame chimeraViewFrame,
StructureSelectionManager ssm, PDBEntry[] pdbentry,
- SequenceI[][] sequenceIs, String protocol)
+ SequenceI[][] sequenceIs, DataSourceType protocol)
{
super(ssm, pdbentry, sequenceIs, protocol);
cvf = chimeraViewFrame;
}
-
+ @Override
+ public JalviewStructureDisplayI getViewer()
+ {
+ return cvf;
+ }
}
--- /dev/null
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * 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 Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
+
+package jalview.gui;
+
+import java.awt.Component;
+import java.awt.HeadlessException;
+
+import javax.swing.Icon;
+import javax.swing.JOptionPane;
+
+public class JvOptionPane extends JOptionPane
+{
+ /**
+ *
+ */
+ private static final long serialVersionUID = -3019167117756785229L;
+
+ private static Object mockResponse = JvOptionPane.CANCEL_OPTION;
+
+ private static boolean interactiveMode = true;
+
+ public static int showConfirmDialog(Component parentComponent,
+ Object message) throws HeadlessException
+ {
+ return isInteractiveMode() ? JOptionPane.showConfirmDialog(
+ parentComponent, message) : (int) getMockResponse();
+ }
+
+ public static int showConfirmDialog(Component parentComponent,
+ Object message, String title, int optionType)
+ throws HeadlessException
+ {
+ return isInteractiveMode() ? JOptionPane.showConfirmDialog(
+ parentComponent, message, title, optionType)
+ : (int) getMockResponse();
+ }
+
+ public static int showConfirmDialog(Component parentComponent,
+ Object message, String title, int optionType, int messageType)
+ throws HeadlessException
+ {
+ return isInteractiveMode() ? JOptionPane.showConfirmDialog(
+ parentComponent, message, title, optionType, messageType)
+ : (int) getMockResponse();
+ }
+
+ public static int showConfirmDialog(Component parentComponent,
+ Object message, String title, int optionType, int messageType,
+ Icon icon) throws HeadlessException
+ {
+ return isInteractiveMode() ? JOptionPane.showConfirmDialog(
+ parentComponent, message, title, optionType, messageType, icon)
+ : (int) getMockResponse();
+ }
+
+ public static int showInternalConfirmDialog(Component parentComponent,
+ Object message)
+ {
+ return isInteractiveMode() ? JOptionPane.showInternalConfirmDialog(
+ parentComponent, message) : (int) getMockResponse();
+ }
+
+ public static int showInternalConfirmDialog(Component parentComponent,
+ Object message, String title, int optionType)
+ {
+ return isInteractiveMode() ? JOptionPane.showConfirmDialog(
+ parentComponent, message, title, optionType)
+ : (int) getMockResponse();
+ }
+
+ public static int showInternalConfirmDialog(Component parentComponent,
+ Object message, String title, int optionType, int messageType)
+ {
+ return isInteractiveMode() ? JOptionPane.showConfirmDialog(
+ parentComponent, message, title, optionType, messageType)
+ : (int) getMockResponse();
+ }
+
+ public static int showInternalConfirmDialog(Component parentComponent,
+ Object message, String title, int optionType, int messageType,
+ Icon icon)
+ {
+ return isInteractiveMode() ? JOptionPane.showInternalConfirmDialog(
+ parentComponent, message, title, optionType, messageType, icon)
+ : (int) getMockResponse();
+ }
+
+ public static int showOptionDialog(Component parentComponent,
+ Object message, String title, int optionType, int messageType,
+ Icon icon, Object[] options, Object initialValue)
+ throws HeadlessException
+ {
+ return isInteractiveMode() ? JOptionPane.showOptionDialog(
+ parentComponent, message, title, optionType, messageType, icon,
+ options, initialValue) : (int) getMockResponse();
+ }
+
+ public static void showMessageDialog(Component parentComponent,
+ Object message) throws HeadlessException
+ {
+ if (isInteractiveMode())
+ {
+ JOptionPane.showMessageDialog(parentComponent, message);
+ }
+ else
+ {
+ outputMessage(message);
+ }
+ }
+
+ public static void showMessageDialog(Component parentComponent,
+ Object message, String title, int messageType)
+ throws HeadlessException
+ {
+ if (isInteractiveMode())
+ {
+ JOptionPane.showMessageDialog(parentComponent, message, title,
+ messageType);
+ }
+ else
+ {
+ outputMessage(message);
+ }
+ }
+
+ public static void showMessageDialog(Component parentComponent,
+ Object message, String title, int messageType, Icon icon)
+ throws HeadlessException
+ {
+ if (isInteractiveMode())
+ {
+ JOptionPane.showMessageDialog(parentComponent, message, title,
+ messageType, icon);
+ }
+ else
+ {
+ outputMessage(message);
+ }
+ }
+
+ public static void showInternalMessageDialog(Component parentComponent,
+ Object message)
+ {
+ if (isInteractiveMode())
+ {
+ JOptionPane.showMessageDialog(parentComponent, message);
+ }
+ else
+ {
+ outputMessage(message);
+ }
+ }
+
+ public static void showInternalMessageDialog(Component parentComponent,
+ Object message, String title, int messageType)
+ {
+ if (isInteractiveMode())
+ {
+ JOptionPane.showMessageDialog(parentComponent, message, title,
+ messageType);
+ }
+ else
+ {
+ outputMessage(message);
+ }
+ }
+
+ public static void showInternalMessageDialog(Component parentComponent,
+ Object message, String title, int messageType, Icon icon)
+ {
+ if (isInteractiveMode())
+ {
+ JOptionPane.showMessageDialog(parentComponent, message, title,
+ messageType, icon);
+ }
+ else
+ {
+ outputMessage(message);
+ }
+ }
+
+ public static String showInputDialog(Object message)
+ throws HeadlessException
+ {
+ return isInteractiveMode() ? JOptionPane.showInputDialog(message)
+ : getMockResponse().toString();
+ }
+
+ public static String showInputDialog(Object message,
+ Object initialSelectionValue)
+ {
+ return isInteractiveMode() ? JOptionPane.showInputDialog(message,
+ initialSelectionValue) : getMockResponse().toString();
+ }
+
+ public static String showInputDialog(Component parentComponent,
+ Object message) throws HeadlessException
+ {
+ return isInteractiveMode() ? JOptionPane.showInputDialog(
+ parentComponent, message) : getMockResponse().toString();
+ }
+
+ public static String showInputDialog(Component parentComponent,
+ Object message, Object initialSelectionValue)
+ {
+ return isInteractiveMode() ? JOptionPane.showInputDialog(
+ parentComponent, message, initialSelectionValue)
+ : getMockResponse().toString();
+ }
+
+ public static String showInputDialog(Component parentComponent,
+ Object message, String title, int messageType)
+ throws HeadlessException
+ {
+ return isInteractiveMode() ? JOptionPane.showInputDialog(
+ parentComponent, message, title, messageType)
+ : getMockResponse().toString();
+ }
+
+ public static Object showInputDialog(Component parentComponent,
+ Object message, String title, int messageType, Icon icon,
+ Object[] selectionValues, Object initialSelectionValue)
+ throws HeadlessException
+ {
+ return isInteractiveMode() ? JOptionPane.showInputDialog(
+ parentComponent, message, title, messageType, icon,
+ selectionValues, initialSelectionValue) : getMockResponse()
+ .toString();
+ }
+
+ public static String showInternalInputDialog(Component parentComponent,
+ Object message)
+ {
+ return isInteractiveMode() ? JOptionPane.showInternalInputDialog(
+ parentComponent, message) : getMockResponse().toString();
+ }
+
+ public static String showInternalInputDialog(Component parentComponent,
+ Object message, String title, int messageType)
+ {
+ return isInteractiveMode() ? JOptionPane.showInternalInputDialog(
+ parentComponent, message, title, messageType)
+ : getMockResponse().toString();
+ }
+
+ public static Object showInternalInputDialog(Component parentComponent,
+ Object message, String title, int messageType, Icon icon,
+ Object[] selectionValues, Object initialSelectionValue)
+ {
+ return isInteractiveMode() ? JOptionPane.showInternalInputDialog(
+ parentComponent, message, title, messageType, icon,
+ selectionValues, initialSelectionValue) : getMockResponse()
+ .toString();
+ }
+
+ private static void outputMessage(Object message)
+ {
+ System.out.println(">>> JOption Message : " + message.toString());
+ }
+
+ public static Object getMockResponse()
+ {
+ return mockResponse;
+ }
+
+ public static void setMockResponse(Object mockOption)
+ {
+ JvOptionPane.mockResponse = mockOption;
+ }
+
+ public static void resetMock()
+ {
+ setMockResponse(JvOptionPane.CANCEL_OPTION);
+ setInteractiveMode(true);
+ }
+
+ public static boolean isInteractiveMode()
+ {
+ return interactiveMode;
+ }
+
+ public static void setInteractiveMode(boolean interactiveMode)
+ {
+ JvOptionPane.interactiveMode = interactiveMode;
+ }
+
+}
this(string, oomerror, Desktop.desktop);
}
+ @Override
public void run()
{
- javax.swing.JOptionPane.showInternalMessageDialog(desktop,
+ JvOptionPane
+ .showInternalMessageDialog(desktop,
MessageManager.formatMessage("warn.out_of_memory_when_action",
new String[] { action }), MessageManager
.getString("label.out_of_memory"),
- javax.swing.JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
// hope that there's enough memory left that no more appear.
oomInprogress = false;
}
if (!sameLength)
{
- JOptionPane.showMessageDialog(Desktop.desktop,
+ JvOptionPane.showMessageDialog(Desktop.desktop,
MessageManager.getString("label.pca_sequences_not_aligned"),
MessageManager.getString("label.sequences_not_aligned"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
return;
}
import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceGroup;
import jalview.datamodel.SequenceI;
+import jalview.io.FileFormat;
+import jalview.io.FileFormatI;
import jalview.io.FormatAdapter;
import jalview.io.SequenceAnnotationReport;
import jalview.schemes.AnnotationColourGradient;
colours.add(purinePyrimidineColour);
colours.add(RNAInteractionColour);
- for (int i = 0; i < jalview.io.FormatAdapter.WRITEABLE_FORMATS.length; i++)
+ for (String ff : FileFormat.getWritableFormats(true))
{
- JMenuItem item = new JMenuItem(
- jalview.io.FormatAdapter.WRITEABLE_FORMATS[i]);
+ JMenuItem item = new JMenuItem(ff);
item.addActionListener(new java.awt.event.ActionListener()
{
public void createSequenceDetailsReport(SequenceI[] sequences)
{
CutAndPasteHtmlTransfer cap = new CutAndPasteHtmlTransfer();
- StringBuffer contents = new StringBuffer();
+ StringBuilder contents = new StringBuilder(128);
for (SequenceI seq : sequences)
{
contents.append("<p><h2>"
seq,
true,
true,
- false,
(ap.getSeqPanel().seqCanvas.fr != null) ? ap
.getSeqPanel().seqCanvas.fr.getMinMax()
: null);
{
if (dialog.getName().indexOf(" ") > -1)
{
- JOptionPane
+ JvOptionPane
.showMessageDialog(
ap,
MessageManager
.getString("label.spaces_converted_to_backslashes"),
MessageManager
.getString("label.no_spaces_allowed_sequence_name"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
}
sequence.setName(dialog.getName().replace(' ', '_'));
jalview.util.BrowserLauncher.openURL(url);
} catch (Exception ex)
{
- JOptionPane.showInternalMessageDialog(Desktop.desktop,
+ JvOptionPane.showInternalMessageDialog(Desktop.desktop,
MessageManager.getString("label.web_browser_not_found_unix"),
MessageManager.getString("label.web_browser_not_found"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
ex.printStackTrace();
}
// or we simply trust the user wants
// wysiwig behaviour
- cap.setText(new FormatAdapter(ap).formatSequences(e.getActionCommand(),
- ap, true));
+ FileFormatI fileFormat = FileFormat.forName(e.getActionCommand());
+ cap.setText(new FormatAdapter(ap).formatSequences(fileFormat, ap, true));
}
public void sequenceFeature_actionPerformed()
import jalview.bin.Cache;
import jalview.gui.Help.HelpId;
import jalview.gui.StructureViewer.ViewerType;
+import jalview.io.FileFormatI;
import jalview.io.JalviewFileChooser;
import jalview.io.JalviewFileView;
import jalview.jbgui.GPreferences;
import javax.swing.JColorChooser;
import javax.swing.JFileChooser;
import javax.swing.JInternalFrame;
-import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.ListSelectionModel;
import javax.swing.RowFilter;
@Override
public void startupFileTextfield_mouseClicked()
{
- JalviewFileChooser chooser = new JalviewFileChooser(
- jalview.bin.Cache.getProperty("LAST_DIRECTORY"), new String[] {
- "fa, fasta, fastq", "aln", "pfam", "msf", "pir", "blc",
- "jar" }, new String[] { "Fasta", "Clustal", "PFAM", "MSF",
- "PIR", "BLC", "Jalview" },
- jalview.bin.Cache.getProperty("DEFAULT_FILE_FORMAT"));
+ String fileFormat = Cache.getProperty("DEFAULT_FILE_FORMAT");
+ JalviewFileChooser chooser = JalviewFileChooser.forRead(
+ Cache.getProperty("LAST_DIRECTORY"), fileFormat);
chooser.setFileView(new JalviewFileView());
chooser.setDialogTitle(MessageManager
.getString("label.select_startup_file"));
if (value == JalviewFileChooser.APPROVE_OPTION)
{
- jalview.bin.Cache.applicationProperties.setProperty(
- "DEFAULT_FILE_FORMAT", chooser.getSelectedFormat());
+ FileFormatI format = chooser.getSelectedFormat();
+ if (format != null)
+ {
+ Cache.applicationProperties.setProperty("DEFAULT_FILE_FORMAT",
+ format.toString());
+ }
startupFileTextfield.setText(chooser.getSelectedFile()
.getAbsolutePath());
}
boolean valid = false;
while (!valid)
{
- if (JOptionPane.showInternalConfirmDialog(Desktop.desktop, link,
+ if (JvOptionPane.showInternalConfirmDialog(Desktop.desktop, link,
MessageManager.getString("label.new_sequence_url_link"),
- JOptionPane.OK_CANCEL_OPTION, -1, null) == JOptionPane.OK_OPTION)
+ JvOptionPane.OK_CANCEL_OPTION, -1, null) == JvOptionPane.OK_OPTION)
{
if (link.checkValid())
{
boolean valid = false;
while (!valid)
{
- if (JOptionPane.showInternalConfirmDialog(Desktop.desktop, link,
+ if (JvOptionPane.showInternalConfirmDialog(Desktop.desktop, link,
MessageManager.getString("label.edit_sequence_url_link"),
- JOptionPane.OK_CANCEL_OPTION, -1, null) == JOptionPane.OK_OPTION)
+ JvOptionPane.OK_CANCEL_OPTION, -1, null) == JvOptionPane.OK_OPTION)
{
if (link.checkValid())
{
}
} catch (NumberFormatException x)
{
- JOptionPane.showInternalMessageDialog(Desktop.desktop, MessageManager
+ JvOptionPane.showInternalMessageDialog(Desktop.desktop, MessageManager
.getString("warn.user_defined_width_requirements"),
MessageManager.getString("label.invalid_id_column_width"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
userIdWidth.setText("");
}
}
File f = new File(chimeraPath.getText());
if (!f.canExecute())
{
- JOptionPane.showInternalMessageDialog(Desktop.desktop,
+ JvOptionPane.showInternalMessageDialog(Desktop.desktop,
MessageManager.getString("label.invalid_chimera_path"),
MessageManager.getString("label.invalid_name"),
- JOptionPane.ERROR_MESSAGE);
+ JvOptionPane.ERROR_MESSAGE);
return false;
}
}
if (!found)
{
String[] options = { "OK", "Help" };
- int showHelp = JOptionPane.showInternalOptionDialog(
+ int showHelp = JvOptionPane.showInternalOptionDialog(
Desktop.desktop,
JvSwingUtils.wrapTooltip(true,
MessageManager.getString("label.chimera_missing")),
- "", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE,
+ "", JvOptionPane.YES_NO_OPTION, JvOptionPane.WARNING_MESSAGE,
null, options, options[0]);
- if (showHelp == JOptionPane.NO_OPTION)
+ if (showHelp == JvOptionPane.NO_OPTION)
{
try
{
}
try
{
- int reply = JOptionPane.showConfirmDialog(
+ int reply = JvOptionPane.showConfirmDialog(
Desktop.desktop, // component,
dialogText, dialogTitle,
- (allowCancel) ? JOptionPane.YES_NO_CANCEL_OPTION
- : JOptionPane.YES_NO_OPTION,
- JOptionPane.QUESTION_MESSAGE);
+ (allowCancel) ? JvOptionPane.YES_NO_CANCEL_OPTION
+ : JvOptionPane.YES_NO_OPTION,
+ JvOptionPane.QUESTION_MESSAGE);
// now, ask the desktop to relayer any external windows that might have
// been obsured
if (Desktop.instance != null)
}
// and finish parsing the result
jalview.bin.Cache.log.debug("Got response : " + reply);
- if (reply == JOptionPane.YES_OPTION)
+ if (reply == JvOptionPane.YES_OPTION)
{
jalview.bin.Cache.setProperty(property, "true");
}
- else if (reply == JOptionPane.NO_OPTION)
+ else if (reply == JvOptionPane.NO_OPTION)
{
if (removeifunset)
{
@Override
protected void okPressed()
{
- reply = JOptionPane.OK_OPTION;
+ reply = JvOptionPane.OK_OPTION;
}
@Override
protected void cancelPressed()
{
- reply = JOptionPane.CANCEL_OPTION;
+ reply = JvOptionPane.CANCEL_OPTION;
}
};
+ currentservice.getName(), 600, 800);
initTypeLists();
- reply = JOptionPane.CANCEL_OPTION;
+ reply = JvOptionPane.CANCEL_OPTION;
old = toedit;
current = null;
if (old != null)
{
setStateFor(old);
}
- updated = updated && reply == JOptionPane.OK_OPTION;
+ updated = updated && reply == JvOptionPane.OK_OPTION;
frame.validate();
}
bg.add(lineart);
bg.add(text);
- JOptionPane pane = new JOptionPane(null, JOptionPane.DEFAULT_OPTION,
- JOptionPane.DEFAULT_OPTION, null, new Object[] { this });
+ JOptionPane pane = new JOptionPane(null, JvOptionPane.DEFAULT_OPTION,
+ JvOptionPane.DEFAULT_OPTION, null, new Object[] { this });
dialog = pane.createDialog(Desktop.desktop, "SVG Rendering options");
dialog.setVisible(true);
ok.setText(MessageManager.getString("action.ok"));
ok.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
ok_actionPerformed(e);
cancel.setText(MessageManager.getString("action.cancel"));
cancel.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
cancel_actionPerformed(e);
package jalview.gui;
import jalview.datamodel.AlignmentI;
-import jalview.datamodel.SearchResults;
+import jalview.datamodel.SearchResultsI;
import jalview.datamodel.SequenceGroup;
import jalview.datamodel.SequenceI;
import jalview.renderer.ScaleRenderer;
AlignViewport av;
- SearchResults searchResults = null;
-
boolean fastPaint = false;
int LABEL_WEST;
// / Highlight search Results once all sequences have been drawn
// ////////////////////////////////////////////////////////
- if (searchResults != null)
+ if (av.hasSearchResults())
{
- int[] visibleResults = searchResults.getResults(nextSeq, startRes,
- endRes);
+ int[] visibleResults = av.getSearchResults().getResults(nextSeq,
+ startRes, endRes);
if (visibleResults != null)
{
for (int r = 0; r < visibleResults.length; r += 2)
* @param results
* DOCUMENT ME!
*/
- public void highlightSearchResults(SearchResults results)
+ public void highlightSearchResults(SearchResultsI results)
{
img = null;
- searchResults = results;
+ av.setSearchResults(results);
repaint();
}
import jalview.commands.EditCommand.Edit;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.ColumnSelection;
+import jalview.datamodel.SearchResultMatchI;
import jalview.datamodel.SearchResults;
-import jalview.datamodel.SearchResults.Match;
+import jalview.datamodel.SearchResultsI;
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceGroup;
private final SequenceAnnotationReport seqARep;
- StringBuffer tooltipText = new StringBuffer();
+ StringBuilder tooltipText = new StringBuilder();
String tmpString;
StructureSelectionManager ssm;
- SearchResults lastSearchResults;
+ SearchResultsI lastSearchResults;
/**
* Creates a new SeqPanel object.
* the start of the highlighted region.
*/
@Override
- public void highlightSequence(SearchResults results)
+ public void highlightSequence(SearchResultsI results)
{
if (results == null || results.equals(lastSearchResults))
{
seqARep.appendFeatures(tooltipText, rpos, features,
this.ap.getSeqPanel().seqCanvas.fr.getMinMax());
}
- if (tooltipText.length() == 6) // <html></html>
+ if (tooltipText.length() == 6) // <html>
{
setToolTipText(null);
lastTooltip = null;
*
* @param results
*/
- private void setStatusMessage(SearchResults results)
+ private void setStatusMessage(SearchResultsI results)
{
AlignmentI al = this.av.getAlignment();
int sequenceIndex = al.findIndex(results);
return;
}
SequenceI ds = al.getSequenceAt(sequenceIndex).getDatasetSequence();
- for (Match m : results.getResults())
+ for (SearchResultMatchI m : results.getResults())
{
SequenceI seq = m.getSequence();
if (seq.getDatasetSequence() != null)
if (features != null && features.size() > 0)
{
- SearchResults highlight = new SearchResults();
+ SearchResultsI highlight = new SearchResults();
highlight.addResult(sequence, features.get(0).getBegin(), features
.get(0).getEnd());
seqCanvas.highlightSearchResults(highlight);
if (av.getWrapAlignment() && seq > av.getAlignment().getHeight())
{
- JOptionPane.showInternalMessageDialog(Desktop.desktop, MessageManager
+ JvOptionPane.showInternalMessageDialog(Desktop.desktop, MessageManager
.getString("label.cannot_edit_annotations_in_wrapped_view"),
MessageManager.getString("label.wrapped_view_no_edit"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
return;
}
import jalview.datamodel.SequenceI;
import jalview.fts.service.pdb.PDBFTSPanel;
import jalview.fts.service.uniprot.UniprotFTSPanel;
+import jalview.io.FileFormatI;
import jalview.io.gff.SequenceOntologyI;
import jalview.util.DBRefUtils;
import jalview.util.MessageManager;
@Override
public void run()
{
- JOptionPane
+ JvOptionPane
.showInternalMessageDialog(
Desktop.desktop,
MessageManager
.getString("warn.couldnt_create_sequence_fetcher_client"),
MessageManager
.getString("label.couldnt_create_sequence_fetcher"),
- JOptionPane.ERROR_MESSAGE);
+ JvOptionPane.ERROR_MESSAGE);
}
});
}
AlignmentI parseResult(AlignmentI al, String title,
- String currentFileFormat,
+ FileFormatI currentFileFormat,
FeatureSettingsModelI preferredFeatureColours)
{
@Override
public void run()
{
- JOptionPane.showInternalMessageDialog(Desktop.desktop, error,
+ JvOptionPane.showInternalMessageDialog(Desktop.desktop, error,
MessageManager.getString("label.error_retrieving_data"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
}
});
}
import jalview.fts.core.FTSRestRequest;
import jalview.fts.core.FTSRestResponse;
import jalview.fts.service.pdb.PDBFTSRestClient;
+import jalview.io.DataSourceType;
import jalview.jbgui.GStructureChooser;
import jalview.structure.StructureMapping;
import jalview.structure.StructureSelectionManager;
public class StructureChooser extends GStructureChooser implements
IProgressIndicator
{
+ private static int MAX_QLENGTH = 7820;
+
private SequenceI selectedSequence;
private SequenceI[] selectedSequences;
{
errorMsg.append(error).append("\n");
}
- JOptionPane.showMessageDialog(this, errorMsg.toString(),
+ JvOptionPane.showMessageDialog(this, errorMsg.toString(),
MessageManager.getString("label.pdb_web-service_error"),
- JOptionPane.ERROR_MESSAGE);
+ JvOptionPane.ERROR_MESSAGE);
}
}
}
StringBuilder queryBuilder = new StringBuilder();
Set<String> seqRefs = new LinkedHashSet<String>();
- if (seq.getAllPDBEntries() != null)
+ if (seq.getAllPDBEntries() != null
+ && queryBuilder.length() < MAX_QLENGTH)
{
for (PDBEntry entry : seq.getAllPDBEntries())
{
queryBuilder.append("pdb_id:")
.append(entry.getId().toLowerCase()).append(" OR ");
isPDBRefsFound = true;
- // seqRefs.add(entry.getId());
}
}
}
{
for (DBRefEntry dbRef : seq.getDBRefs())
{
- if (isValidSeqName(getDBRefId(dbRef)))
+ if (isValidSeqName(getDBRefId(dbRef))
+ && queryBuilder.length() < MAX_QLENGTH)
{
if (dbRef.getSource().equalsIgnoreCase(DBRefSource.UNIPROT))
{
{
errorMsg.append(error).append("\n");
}
- JOptionPane.showMessageDialog(
+ JvOptionPane.showMessageDialog(
null,
errorMsg.toString(),
MessageManager.getString("label.pdb_web-service_error"),
- JOptionPane.ERROR_MESSAGE);
+ JvOptionPane.ERROR_MESSAGE);
}
}
int[] selectedRows = getResultTable().getSelectedRows();
PDBEntry[] pdbEntriesToView = new PDBEntry[selectedRows.length];
int count = 0;
- ArrayList<SequenceI> selectedSeqsToView = new ArrayList<SequenceI>();
+ List<SequenceI> selectedSeqsToView = new ArrayList<SequenceI>();
for (int row : selectedRows)
{
String pdbIdStr = getResultTable().getValueAt(row,
.getModelIndex();
int refSeqColIndex = tbl_local_pdb.getColumn("Ref Sequence")
.getModelIndex();
- ArrayList<SequenceI> selectedSeqsToView = new ArrayList<SequenceI>();
+ List<SequenceI> selectedSeqsToView = new ArrayList<SequenceI>();
for (int row : selectedRows)
{
PDBEntry pdbEntry = (PDBEntry) tbl_local_pdb.getValueAt(row,
PDBEntry[] pdbEntriesToView = new PDBEntry[] { pdbEntry };
launchStructureViewer(ssm, pdbEntriesToView, ap,
new SequenceI[] { selectedSequence });
- }
- else if (currentView == VIEWS_FROM_FILE)
- {
- SequenceI userSelectedSeq = ((AssociateSeqOptions) fileChooserAssSeqPanel
- .getCmb_assSeq().getSelectedItem()).getSequence();
- if (userSelectedSeq != null)
- {
- selectedSequence = userSelectedSeq;
- }
- PDBEntry fileEntry = new AssociatePdbFileWithSeq()
- .associatePdbWithSeq(selectedPdbFileName,
- jalview.io.AppletFormatAdapter.FILE,
- selectedSequence, true, Desktop.instance);
+ }
+ else if (currentView == VIEWS_FROM_FILE)
+ {
+ SequenceI userSelectedSeq = ((AssociateSeqOptions) fileChooserAssSeqPanel
+ .getCmb_assSeq().getSelectedItem()).getSequence();
+ if (userSelectedSeq != null)
+ {
+ selectedSequence = userSelectedSeq;
+ }
+ PDBEntry fileEntry = new AssociatePdbFileWithSeq()
+ .associatePdbWithSeq(selectedPdbFileName,
+ DataSourceType.FILE,
+ selectedSequence, true, Desktop.instance);
launchStructureViewer(ssm, new PDBEntry[] { fileEntry }, ap,
new SequenceI[] { selectedSequence });
import jalview.datamodel.SequenceI;
import jalview.gui.StructureViewer.ViewerType;
import jalview.gui.ViewSelectionMenu.ViewSetProvider;
-import jalview.io.AppletFormatAdapter;
+import jalview.io.DataSourceType;
import jalview.jbgui.GStructureViewer;
import jalview.structures.models.AAStructureBindingModel;
import jalview.util.MessageManager;
*
* @param pdbId
* @param view
- * @return YES, NO or CANCEL JOptionPane code
+ * @return YES, NO or CANCEL JvOptionPane code
*/
protected int chooseAlignStructureToViewer(String pdbId,
StructureViewerBase view)
{
- int option = JOptionPane.showInternalConfirmDialog(Desktop.desktop,
+ int option = JvOptionPane.showInternalConfirmDialog(Desktop.desktop,
MessageManager.formatMessage("label.add_pdbentry_to_view",
new Object[] { pdbId, view.getTitle() }),
MessageManager
.getString("label.align_to_existing_structure_view"),
- JOptionPane.YES_NO_CANCEL_OPTION);
+ JvOptionPane.YES_NO_CANCEL_OPTION);
return option;
}
continue;
}
int option = chooseAlignStructureToViewer(pdbId, view);
- if (option == JOptionPane.CANCEL_OPTION)
+ if (option == JvOptionPane.CANCEL_OPTION)
{
return true;
}
- else if (option == JOptionPane.YES_OPTION)
+ else if (option == JvOptionPane.YES_OPTION)
{
view.useAlignmentPanelForSuperposition(apanel);
view.addStructure(pdbentry, seq, chains, true, apanel.alignFrame);
* create the mappings
*/
apanel.getStructureSelectionManager().setMapping(seq, chains,
- pdbFilename, AppletFormatAdapter.FILE);
+ pdbFilename, DataSourceType.FILE);
/*
* alert the FeatureRenderer to show new (PDB RESNUM) features
/*
* the PDB file is already loaded
*/
- int option = JOptionPane.showInternalConfirmDialog(Desktop.desktop,
+ int option = JvOptionPane.showInternalConfirmDialog(Desktop.desktop,
MessageManager.formatMessage(
"label.pdb_entry_is_already_displayed",
new Object[] { pdbId }), MessageManager
.formatMessage(
"label.map_sequences_to_visible_window",
new Object[] { pdbId }),
- JOptionPane.YES_NO_CANCEL_OPTION);
- if (option == JOptionPane.CANCEL_OPTION)
+ JvOptionPane.YES_NO_CANCEL_OPTION);
+ if (option == JvOptionPane.CANCEL_OPTION)
{
finished = true;
}
- else if (option == JOptionPane.YES_OPTION)
+ else if (option == JvOptionPane.YES_OPTION)
{
addSequenceMappingsToStructure(seq, chains, apanel, alreadyMapped);
finished = true;
}
});
- int reply = JOptionPane
+ int reply = JvOptionPane
.showInternalOptionDialog(
ap,
bigpanel,
MessageManager
.getString("label.adjunst_foreground_text_colour_threshold"),
- JOptionPane.OK_CANCEL_OPTION,
- JOptionPane.QUESTION_MESSAGE, null, null, null);
+ JvOptionPane.OK_CANCEL_OPTION,
+ JvOptionPane.QUESTION_MESSAGE, null, null, null);
- if (reply == JOptionPane.CANCEL_OPTION)
+ if (reply == JvOptionPane.CANCEL_OPTION)
{
if (sg == null)
{
import jalview.io.NewickFile;
import jalview.jbgui.GTreePanel;
import jalview.schemes.ResidueProperties;
+import jalview.util.ImageMaker;
import jalview.util.MessageManager;
import jalview.viewmodel.AlignmentViewport;
try
{
- jalview.io.JalviewFileChooser chooser = new jalview.io.JalviewFileChooser(
- jalview.bin.Cache.getProperty("LAST_DIRECTORY"), new String[]
- { "eps" }, new String[] { "Encapsulated Postscript" },
- "Encapsulated Postscript");
- chooser.setFileView(new jalview.io.JalviewFileView());
+ JalviewFileChooser chooser = new JalviewFileChooser(
+ Cache.getProperty("LAST_DIRECTORY"),
+ ImageMaker.EPS_EXTENSION, ImageMaker.EPS_EXTENSION);
+ chooser.setFileView(new JalviewFileView());
chooser.setDialogTitle(MessageManager
.getString("label.create_eps_from_tree"));
chooser.setToolTipText(MessageManager.getString("action.save"));
int value = chooser.showSaveDialog(this);
- if (value != jalview.io.JalviewFileChooser.APPROVE_OPTION)
+ if (value != JalviewFileChooser.APPROVE_OPTION)
{
return;
}
- jalview.bin.Cache.setProperty("LAST_DIRECTORY", chooser
- .getSelectedFile().getParent());
+ Cache.setProperty("LAST_DIRECTORY", chooser.getSelectedFile()
+ .getParent());
FileOutputStream out = new FileOutputStream(chooser.getSelectedFile());
EpsGraphics2D pg = new EpsGraphics2D("Tree", out, 0, 0, width, height);
try
{
- jalview.io.JalviewFileChooser chooser = new jalview.io.JalviewFileChooser(
- jalview.bin.Cache.getProperty("LAST_DIRECTORY"), new String[]
- { "png" }, new String[] { "Portable network graphics" },
- "Portable network graphics");
+ JalviewFileChooser chooser = new JalviewFileChooser(
+ Cache.getProperty("LAST_DIRECTORY"),
+ ImageMaker.PNG_EXTENSION, ImageMaker.PNG_DESCRIPTION);
chooser.setFileView(new jalview.io.JalviewFileView());
chooser.setDialogTitle(MessageManager
package jalview.gui;
import jalview.api.structures.JalviewStructureDisplayI;
+import jalview.bin.Cache;
import jalview.datamodel.SequenceGroup;
import jalview.io.JalviewFileChooser;
+import jalview.io.JalviewFileView;
import jalview.jbgui.GUserDefinedColours;
import jalview.schemes.ColourSchemeI;
import jalview.schemes.ResidueProperties;
import javax.swing.JButton;
import javax.swing.JInternalFrame;
-import javax.swing.JOptionPane;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
{
if (isNoSelectionMade())
{
- JOptionPane.showMessageDialog(Desktop.desktop, MessageManager
+ JvOptionPane.showMessageDialog(Desktop.desktop, MessageManager
.getString("label.no_colour_selection_in_scheme"),
MessageManager.getString("label.no_colour_selection_warn"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
}
else
{
{
if (isNoSelectionMade())
{
- JOptionPane.showMessageDialog(Desktop.desktop, MessageManager
+ JvOptionPane.showMessageDialog(Desktop.desktop, MessageManager
.getString("label.no_colour_selection_in_scheme"),
MessageManager.getString("label.no_colour_selection_warn"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
}
UserColourScheme ucs = getSchemeFromButtons();
lowerCaseButtons = new ArrayList<JButton>();
JalviewFileChooser chooser = new JalviewFileChooser(
- jalview.bin.Cache.getProperty("LAST_DIRECTORY"),
- new String[] { "jc" }, new String[] { "Jalview User Colours" },
+ Cache.getProperty("LAST_DIRECTORY"), "jc",
"Jalview User Colours");
- chooser.setFileView(new jalview.io.JalviewFileView());
+ chooser.setFileView(new JalviewFileView());
chooser.setDialogTitle(MessageManager
.getString("label.load_colour_scheme"));
chooser.setToolTipText(MessageManager.getString("action.load"));
{
if (schemeName.getText().trim().length() < 1)
{
- JOptionPane.showInternalMessageDialog(Desktop.desktop, MessageManager
+ JvOptionPane.showInternalMessageDialog(Desktop.desktop, MessageManager
.getString("label.user_colour_scheme_must_have_name"),
MessageManager.getString("label.no_name_colour_scheme"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
return;
}
if (userColourSchemes != null
&& userColourSchemes.containsKey(schemeName.getText()))
{
- int reply = JOptionPane.showInternalConfirmDialog(Desktop.desktop,
+ int reply = JvOptionPane.showInternalConfirmDialog(Desktop.desktop,
MessageManager.formatMessage(
"label.colour_scheme_exists_overwrite", new Object[] {
schemeName.getText(), schemeName.getText() }),
MessageManager.getString("label.duplicate_scheme_name"),
- JOptionPane.YES_NO_OPTION);
- if (reply != JOptionPane.YES_OPTION)
+ JvOptionPane.YES_NO_OPTION);
+ if (reply != JvOptionPane.YES_OPTION)
{
return;
}
userColourSchemes.remove(schemeName.getText());
}
JalviewFileChooser chooser = new JalviewFileChooser(
- jalview.bin.Cache.getProperty("LAST_DIRECTORY"),
- new String[] { "jc" }, new String[] { "Jalview User Colours" },
+ Cache.getProperty("LAST_DIRECTORY"), "jc",
"Jalview User Colours");
- chooser.setFileView(new jalview.io.JalviewFileView());
+ chooser.setFileView(new JalviewFileView());
chooser.setDialogTitle(MessageManager
.getString("label.save_colour_scheme"));
chooser.setToolTipText(MessageManager.getString("action.save"));
+ qid + "&rid=" + rid;
jalview.bin.Cache.log.info("Prompting user for questionnaire at "
+ qurl);
- int reply = JOptionPane
+ int reply = JvOptionPane
.showInternalConfirmDialog(Desktop.desktop, MessageManager
.getString("label.jalview_new_questionnaire"),
MessageManager
.getString("label.jalview_user_survey"),
- JOptionPane.YES_NO_OPTION,
- JOptionPane.QUESTION_MESSAGE);
+ JvOptionPane.YES_NO_OPTION,
+ JvOptionPane.QUESTION_MESSAGE);
- if (reply == JOptionPane.YES_OPTION)
+ if (reply == JvOptionPane.YES_OPTION)
{
jalview.bin.Cache.log.debug("Opening " + qurl);
jalview.util.BrowserLauncher.openURL(qurl);
}
} catch (InvalidSessionDocumentException e)
{
- JOptionPane
+ JvOptionPane
.showInternalMessageDialog(
Desktop.desktop,
.getString("label.vamsas_doc_couldnt_be_opened_as_new_session"),
MessageManager
.getString("label.vamsas_document_import_failed"),
- JOptionPane.ERROR_MESSAGE);
+ JvOptionPane.ERROR_MESSAGE);
}
}
{
Cache.log
.debug("Asking user if the vamsas session should be stored.");
- int reply = JOptionPane
+ int reply = JvOptionPane
.showInternalConfirmDialog(
Desktop.desktop,
"The current VAMSAS session has unsaved data - do you want to save it ?",
"VAMSAS Session Shutdown",
- JOptionPane.YES_NO_OPTION,
- JOptionPane.QUESTION_MESSAGE);
+ JvOptionPane.YES_NO_OPTION,
+ JvOptionPane.QUESTION_MESSAGE);
- if (reply == JOptionPane.YES_OPTION)
+ if (reply == JvOptionPane.YES_OPTION)
{
Cache.log.debug("Prompting for vamsas store filename.");
Desktop.instance.vamsasSave_actionPerformed(null);
{
public void run()
{
- JOptionPane.showInternalMessageDialog(Desktop.desktop, message,
- title, JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.showInternalMessageDialog(Desktop.desktop, message,
+ title, JvOptionPane.WARNING_MESSAGE);
}
});
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
-import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
frame.validate();
javax.swing.SwingUtilities.invokeLater(new Runnable()
{
+ @Override
public void run()
{
// jobPanel.setDividerLocation(0.25);
new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
update_actionPerformed(e);
new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
delete_actionPerformed(e);
new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
create_actionPerformed(e);
new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
revert_actionPerformed(e);
MessageManager.getString("label.start_job_current_settings"),
new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
startjob_actionPerformed(e);
MessageManager.getString("label.cancel_job_close_dialog"),
new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
canceljob_actionPerformed(e);
validate();
}
+ @Override
public void argSetModified(Object modifiedElement, boolean b)
{
if (settingDialog)
settingDialog = stn;
}
+ @Override
public void refreshParamLayout()
{
// optsAndparams.setPreferredSize(null);
jf.addWindowListener(new WindowListener()
{
+ @Override
public void windowActivated(WindowEvent e)
{
// TODO Auto-generated method stub
}
+ @Override
public void windowClosed(WindowEvent e)
{
}
+ @Override
public void windowClosing(WindowEvent e)
{
thr.interrupt();
}
+ @Override
public void windowDeactivated(WindowEvent e)
{
// TODO Auto-generated method stub
}
+ @Override
public void windowDeiconified(WindowEvent e)
{
// TODO Auto-generated method stub
}
+ @Override
public void windowIconified(WindowEvent e)
{
// TODO Auto-generated method stub
}
+ @Override
public void windowOpened(WindowEvent e)
{
// TODO Auto-generated method stub
String curSetName = null;
+ @Override
public void itemStateChanged(ItemEvent e)
{
if (e.getSource() == setName && e.getStateChange() == e.SELECTED)
}
javax.swing.SwingUtilities.invokeLater(new Runnable()
{
+ @Override
public void run()
{
doPreferenceComboStateChange(setname);
}
settingDialog = true;
System.out.println("Prompting to save " + lsetname);
- if (javax.swing.JOptionPane
+ if (JvOptionPane
.showConfirmDialog(
this,
"Parameter set '"
+ lsetname
+ "' is modifed, and your changes will be lost.\nReally change preset ?",
"Warning: Unsaved Changes",
- javax.swing.JOptionPane.OK_CANCEL_OPTION) != JOptionPane.OK_OPTION)
+ JvOptionPane.OK_CANCEL_OPTION) != JvOptionPane.OK_OPTION)
{
// revert the combobox to the current item
settingDialog = true;
*/
String lastDescrText = null;
+ @Override
public void actionPerformed(ActionEvent e)
{
if (e.getSource() instanceof Component)
settingDialog = false;
javax.swing.SwingUtilities.invokeLater(new Runnable()
{
+ @Override
public void run()
{
- JOptionPane.showMessageDialog(ourframe, MessageManager
+ JvOptionPane.showMessageDialog(ourframe, MessageManager
.getString("label.invalid_name_preset_exists"),
MessageManager.getString("label.invalid_name"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
}
});
}
}
+ @Override
public void insertUpdate(DocumentEvent e)
{
checkDescrModified();
}
+ @Override
public void removeUpdate(DocumentEvent e)
{
checkDescrModified();
}
+ @Override
public void changedUpdate(DocumentEvent e)
{
checkDescrModified();
import jalview.bin.Cache;
import jalview.io.JalviewFileChooser;
+import jalview.io.JalviewFileView;
import jalview.util.MessageManager;
import jalview.ws.params.ParamDatastoreI;
import jalview.ws.params.ParamManager;
import java.util.List;
import java.util.StringTokenizer;
-import javax.swing.JOptionPane;
-
/**
* store and retrieve web service parameter sets.
*
if (filename == null)
{
JalviewFileChooser chooser = new JalviewFileChooser(
- jalview.bin.Cache.getProperty("LAST_DIRECTORY"), new String[]
- { "wsparams" },
- new String[] { "Web Service Parameter File" },
+ Cache.getProperty("LAST_DIRECTORY"), "wsparams",
"Web Service Parameter File");
- chooser.setFileView(new jalview.io.JalviewFileView());
+ chooser.setFileView(new JalviewFileView());
chooser.setDialogTitle(MessageManager
.getString("label.choose_filename_for_param_file"));
chooser.setToolTipText(MessageManager.getString("action.save"));
File pfile = new File(filename);
if (pfile.exists() && pfile.canWrite())
{
- if (JOptionPane.showConfirmDialog(Desktop.instance,
+ if (JvOptionPane.showConfirmDialog(Desktop.instance,
"Delete the preset's file, too ?", "Delete User Preset ?",
- JOptionPane.OK_CANCEL_OPTION) == JOptionPane.OK_OPTION)
+ JvOptionPane.OK_CANCEL_OPTION) == JvOptionPane.OK_OPTION)
{
pfile.delete();
}
pane12.add(urltf, BorderLayout.EAST);
panel.add(pane12, BorderLayout.NORTH);
boolean valid = false;
- int resp = JOptionPane.CANCEL_OPTION;
+ int resp = JvOptionPane.CANCEL_OPTION;
while (!valid
- && (resp = JOptionPane.showInternalConfirmDialog(
+ && (resp = JvOptionPane.showInternalConfirmDialog(
Desktop.desktop, panel, title,
- JOptionPane.OK_CANCEL_OPTION)) == JOptionPane.OK_OPTION)
+ JvOptionPane.OK_CANCEL_OPTION)) == JvOptionPane.OK_OPTION)
{
try
{
} catch (Exception e)
{
valid = false;
- JOptionPane.showInternalMessageDialog(Desktop.desktop,
+ JvOptionPane.showInternalMessageDialog(Desktop.desktop,
MessageManager.getString("label.invalid_url"));
}
}
- if (valid && resp == JOptionPane.OK_OPTION)
+ if (valid && resp == JvOptionPane.OK_OPTION)
{
- int validate = JOptionPane.showInternalConfirmDialog(Desktop.desktop,
+ int validate = JvOptionPane.showInternalConfirmDialog(Desktop.desktop,
MessageManager.getString("info.validate_jabaws_server"),
MessageManager.getString("label.test_server"),
- JOptionPane.YES_NO_OPTION);
+ JvOptionPane.YES_NO_OPTION);
- if (validate == JOptionPane.OK_OPTION)
+ if (validate == JvOptionPane.OK_OPTION)
{
if (Jws2Discoverer.testServiceUrl(foo))
{
}
else
{
- int opt = JOptionPane
+ int opt = JvOptionPane
.showInternalOptionDialog(
Desktop.desktop,
"The Server '"
+ foo.toString()
+ "' failed validation,\ndo you want to add it anyway? ",
"Server Validation Failed",
- JOptionPane.YES_NO_OPTION,
- JOptionPane.INFORMATION_MESSAGE, null, null, null);
- if (opt == JOptionPane.YES_OPTION)
+ JvOptionPane.YES_NO_OPTION,
+ JvOptionPane.INFORMATION_MESSAGE, null, null, null);
+ if (opt == JvOptionPane.YES_OPTION)
{
return foo.toString();
}
else
{
- JOptionPane
+ JvOptionPane
.showInternalMessageDialog(
Desktop.desktop,
MessageManager
import jalview.datamodel.AlignmentAnnotation;
import jalview.datamodel.AlignmentI;
+import jalview.datamodel.SequenceI;
+
+import java.io.IOException;
public class AMSAFile extends jalview.io.FastaFile
{
this.al = al;
}
+ public AMSAFile(String inFile, DataSourceType sourceType)
+ throws IOException
+ {
+ super(inFile, sourceType);
+ }
+
+ public AMSAFile(FileParse source) throws IOException
+ {
+ super(source);
+ }
+
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
- public String print()
+ @Override
+ public String print(SequenceI[] sqs, boolean jvsuffix)
{
- super.print(getSeqsAsArray());
+ super.print(sqs, jvsuffix);
AlignmentAnnotation aa;
if (al.getAlignmentAnnotation() != null)
* @author $author$
* @version $Revision$
*/
-public abstract class AlignFile extends FileParse
+public abstract class AlignFile extends FileParse implements AlignmentFileI
{
int noSeqs = 0;
/**
* Properties to be added to generated alignment object
*/
- protected Hashtable properties;
+ private Hashtable properties;
long start;
long end;
- boolean jvSuffix = true;
-
private boolean parseCalled;
/**
initData();
}
+ public AlignFile(SequenceI[] seqs)
+ {
+ this();
+ setSeqs(seqs);
+ }
+
/**
* Constructor which parses the data from a file of some specified type.
*
* @param dataObject
* Filename, URL or Pasted String to read from.
- * @param type
+ * @param sourceType
* What type of file to read from (File, URL, Pasted String)
*/
- public AlignFile(String dataObject, String type) throws IOException
+ public AlignFile(String dataObject, DataSourceType sourceType)
+ throws IOException
{
- this(true, dataObject, type);
+ this(true, dataObject, sourceType);
}
/**
* if false, need to call 'doParse()' to begin parsing data
* @param dataObject
* Filename, URL or Pasted String to read from.
- * @param type
+ * @param sourceType
* What type of file to read from (File, URL)
* @throws IOException
*/
- public AlignFile(boolean parseImmediately, String dataObject, String type)
+ public AlignFile(boolean parseImmediately, String dataObject,
+ DataSourceType sourceType)
throws IOException
{
- super(dataObject, type);
+ super(dataObject, sourceType);
initData();
if (parseImmediately)
{
/**
* Return the Sequences in the seqs Vector as an array of Sequences
*/
+ @Override
public SequenceI[] getSeqsAsArray()
{
SequenceI[] s = new SequenceI[seqs.size()];
*
* @param al
*/
+ @Override
public void addAnnotations(AlignmentI al)
{
addProperties(al);
* @param s
* DOCUMENT ME!
*/
- protected void setSeqs(SequenceI[] s)
+ @Override
+ public void setSeqs(SequenceI[] s)
{
seqs = new Vector<SequenceI>();
public abstract void parse() throws IOException;
/**
- * Print out in alignment file format the Sequences in the seqs Vector.
- */
- public abstract String print();
-
- public void addJVSuffix(boolean b)
- {
- jvSuffix = b;
- }
-
- /**
* A general parser for ids.
*
* @String id Id to be parsed
}
/**
- * Creates the output id. Adds prefix Uniprot format source|id And suffix
- * Jalview /start-end
+ * Creates the output id. Adds prefix Uniprot format source|id and optionally
+ * suffix Jalview /start-end
+ *
+ * @param jvsuffix
*
* @String id Id to be parsed
*/
+ String printId(SequenceI seq, boolean jvsuffix)
+ {
+ return seq.getDisplayId(jvsuffix);
+ }
+
String printId(SequenceI seq)
{
- return seq.getDisplayId(jvSuffix);
+ return printId(seq, true);
}
/**
return newickStrings == null ? 0 : newickStrings.size();
}
+ @Override
public void addGroups(AlignmentI al)
{
--- /dev/null
+package jalview.io;
+
+import jalview.api.AlignExportSettingI;
+import jalview.api.AlignmentViewPanel;
+import jalview.api.FeatureSettingsModelI;
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.SequenceI;
+
+public interface AlignmentFileI
+{
+
+ SequenceI[] getSeqsAsArray();
+
+ void addAnnotations(AlignmentI al);
+
+ void addGroups(AlignmentI al);
+
+ void setNewlineString(String newline);
+
+ void setExportSettings(AlignExportSettingI exportSettings);
+
+ void configureForView(AlignmentViewPanel viewpanel);
+
+ void setSeqs(SequenceI[] sequencesArray);
+
+ String print(SequenceI[] seqs, boolean jvsuffix);
+
+ boolean hasWarningMessage();
+
+ String getWarningMessage();
+
+ String getInFile();
+
+ DataSourceType getDataSourceType();
+
+ FeatureSettingsModelI getFeatureColourScheme();
+
+}
String refSeqId = null;
public boolean annotateAlignmentView(AlignViewportI viewport,
- String file, String protocol)
+ String file, DataSourceType protocol)
{
ColumnSelection colSel = viewport.getColumnSelection();
if (colSel == null)
}
public boolean readAnnotationFile(AlignmentI al, String file,
- String protocol)
+ DataSourceType sourceType)
{
- return readAnnotationFile(al, null, file, protocol);
+ return readAnnotationFile(al, null, file, sourceType);
}
public boolean readAnnotationFile(AlignmentI al, ColumnSelection colSel,
- String file, String protocol)
+ String file, DataSourceType sourceType)
{
BufferedReader in = null;
try
{
- if (protocol.equals(AppletFormatAdapter.FILE))
+ if (sourceType == DataSourceType.FILE)
{
in = new BufferedReader(new FileReader(file));
}
- else if (protocol.equals(AppletFormatAdapter.URL))
+ else if (sourceType == DataSourceType.URL)
{
URL url = new URL(file);
in = new BufferedReader(new InputStreamReader(url.openStream()));
}
- else if (protocol.equals(AppletFormatAdapter.PASTE))
+ else if (sourceType == DataSourceType.PASTE)
{
in = new BufferedReader(new StringReader(file));
}
- else if (protocol.equals(AppletFormatAdapter.CLASSLOADER))
+ else if (sourceType == DataSourceType.CLASSLOADER)
{
java.io.InputStream is = getClass().getResourceAsStream("/" + file);
if (is != null)
import jalview.datamodel.AlignmentI;
import jalview.datamodel.AlignmentView;
import jalview.datamodel.PDBEntry.Type;
+import jalview.datamodel.SequenceI;
import jalview.ext.jmol.JmolParser;
import jalview.structure.StructureImportSettings;
-import jalview.util.MessageManager;
import java.io.File;
import java.io.IOException;
{
private AlignmentViewPanel viewpanel;
- public static String FILE = "File";
-
- public static String URL = "URL";
-
- public static String PASTE = "Paste";
-
- public static String CLASSLOADER = "ClassLoader";
-
/**
* add jalview-derived non-secondary structure annotation from PDB structure
*/
*/
boolean serviceSecondaryStruct = false;
- private AlignFile alignFile = null;
+ private AlignmentFileI alignFile = null;
String inFile;
private AlignExportSettingI exportSettings;
- /**
- * List of valid format strings used in the isValidFormat method
- */
- public static final String[] READABLE_FORMATS = new String[] { "BLC",
- "CLUSTAL", "FASTA", "MSF", "PileUp", "PIR", "PFAM", "STH", "PDB",
- "JnetFile", "RNAML", PhylipFile.FILE_DESC, JSONFile.FILE_DESC,
- IdentifyFile.FeaturesFile, "HTML", "mmCIF" };
-
- /**
- * List of readable format file extensions by application in order
- * corresponding to READABLE_FNAMES
- */
- public static final String[] READABLE_EXTENSIONS = new String[] {
- "fa, fasta, mfa, fastq", "aln", "pfam", "msf", "pir", "blc", "amsa",
- "sto,stk", "xml,rnaml", PhylipFile.FILE_EXT, JSONFile.FILE_EXT,
- ".gff2,gff3", "jar,jvp", HtmlFile.FILE_EXT, "cif" };
-
- /**
- * List of readable formats by application in order corresponding to
- * READABLE_EXTENSIONS
- */
- public static final String[] READABLE_FNAMES = new String[] { "Fasta",
- "Clustal", "PFAM", "MSF", "PIR", "BLC", "AMSA", "Stockholm", "RNAML",
- PhylipFile.FILE_DESC, JSONFile.FILE_DESC, IdentifyFile.FeaturesFile,
- "Jalview", HtmlFile.FILE_DESC, "mmCIF" };
-
- /**
- * List of valid format strings for use by callers of the formatSequences
- * method
- */
- public static final String[] WRITEABLE_FORMATS = new String[] { "BLC",
- "CLUSTAL", "FASTA", "MSF", "PileUp", "PIR", "PFAM", "AMSA", "STH",
- PhylipFile.FILE_DESC, JSONFile.FILE_DESC };
-
- /**
- * List of extensions corresponding to file format types in WRITABLE_FNAMES
- * that are writable by the application.
- */
- public static final String[] WRITABLE_EXTENSIONS = new String[] {
- "fa, fasta, mfa, fastq", "aln", "pfam", "msf", "pir", "blc", "amsa",
- "sto,stk", PhylipFile.FILE_EXT, JSONFile.FILE_EXT, "jvp" };
-
- /**
- * List of writable formats by the application. Order must correspond with the
- * WRITABLE_EXTENSIONS list of formats.
- */
- public static final String[] WRITABLE_FNAMES = new String[] { "Fasta",
- "Clustal", "PFAM", "MSF", "PIR", "BLC", "AMSA", "STH",
- PhylipFile.FILE_DESC, JSONFile.FILE_DESC, "Jalview" };
-
public static String INVALID_CHARACTERS = "Contains invalid characters";
- // TODO: make these messages dynamic
public static String SUPPORTED_FORMATS = "Formats currently supported are\n"
- + prettyPrint(READABLE_FORMATS);
+ + prettyPrint(FileFormat.getReadableFormats());
public AppletFormatAdapter()
{
}
/**
- *
- * @param els
- * @return grammatically correct(ish) list consisting of els elements.
+ * Formats a grammatically correct(ish) list consisting of the given objects
+ *
+ * @param things
+ * @return
*/
- public static String prettyPrint(String[] els)
+ public static String prettyPrint(List<? extends Object> things)
{
StringBuffer list = new StringBuffer();
- for (int i = 0, iSize = els.length - 1; i < iSize; i++)
+ for (int i = 0, iSize = things.size() - 1; i < iSize; i++)
{
- list.append(els[i]);
+ list.append(things.get(i).toString());
list.append(", ");
}
- list.append(" and " + els[els.length - 1] + ".");
+ // could i18n 'and' here
+ list.append(" and " + things.get(things.size() - 1).toString() + ".");
return list.toString();
}
}
/**
- * check that this format is valid for reading
- *
- * @param format
- * a format string to be compared with READABLE_FORMATS
- * @return true if format is readable
- */
- public static final boolean isValidFormat(String format)
- {
- return isValidFormat(format, false);
- }
-
- /**
- * validate format is valid for IO
- *
- * @param format
- * a format string to be compared with either READABLE_FORMATS or
- * WRITEABLE_FORMATS
- * @param forwriting
- * when true, format is checked for containment in WRITEABLE_FORMATS
- * @return true if format is valid
- */
- public static final boolean isValidFormat(String format,
- boolean forwriting)
- {
- if (format == null)
- {
- return false;
- }
- boolean valid = false;
- String[] format_list = (forwriting) ? WRITEABLE_FORMATS
- : READABLE_FORMATS;
- for (String element : format_list)
- {
- if (element.equalsIgnoreCase(format))
- {
- return true;
- }
- }
-
- return valid;
- }
-
- /**
* Constructs the correct filetype parser for a characterised datasource
*
* @param inFile
* data/data location
- * @param type
+ * @param sourceType
* type of datasource
- * @param format
- * File format of data provided by datasource
+ * @param fileFormat
*
- * @return DOCUMENT ME!
+ * @return
*/
- public AlignmentI readFile(String inFile, String type, String format)
- throws java.io.IOException
+ public AlignmentI readFile(String file, DataSourceType sourceType,
+ FileFormatI fileFormat) throws IOException
{
- // TODO: generalise mapping between format string and io. class instances
- // using Constructor.invoke reflection
- this.inFile = inFile;
+ this.inFile = file;
try
{
- if (format.equals("FASTA"))
- {
- alignFile = new FastaFile(inFile, type);
- }
- else if (format.equals("MSF"))
- {
- alignFile = new MSFfile(inFile, type);
- }
- else if (format.equals("PileUp"))
- {
- alignFile = new PileUpfile(inFile, type);
- }
- else if (format.equals("CLUSTAL"))
- {
- alignFile = new ClustalFile(inFile, type);
- }
- else if (format.equals("BLC"))
- {
- alignFile = new BLCFile(inFile, type);
- }
- else if (format.equals("PIR"))
- {
- alignFile = new PIRFile(inFile, type);
- }
- else if (format.equals("PFAM"))
+ if (fileFormat.isStructureFile())
{
- alignFile = new PfamFile(inFile, type);
- }
- else if (format.equals("JnetFile"))
- {
- alignFile = new JPredFile(inFile, type);
- ((JPredFile) alignFile).removeNonSequences();
- }
- else if (format.equals("PDB"))
- {
- // TODO obtain config value from preference settings.
- // Set value to 'true' to test PDB processing with Jmol: JAL-1213
- boolean isParseWithJMOL = StructureImportSettings
- .getDefaultPDBFileParser().equalsIgnoreCase(
+ String structureParser = StructureImportSettings
+ .getDefaultPDBFileParser();
+ boolean isParseWithJMOL = structureParser.equalsIgnoreCase(
StructureImportSettings.StructureParser.JMOL_PARSER
.toString());
+ StructureImportSettings.addSettings(annotFromStructure,
+ localSecondaryStruct, serviceSecondaryStruct);
if (isParseWithJMOL)
{
- StructureImportSettings.addSettings(annotFromStructure,
- localSecondaryStruct, serviceSecondaryStruct);
- alignFile = new jalview.ext.jmol.JmolParser(inFile, type);
+ alignFile = new JmolParser(inFile, sourceType);
}
else
{
- StructureImportSettings.addSettings(annotFromStructure,
- localSecondaryStruct, serviceSecondaryStruct);
+ // todo is MCview parsing obsolete yet?
StructureImportSettings.setShowSeqFeatures(true);
alignFile = new MCview.PDBfile(annotFromStructure,
localSecondaryStruct, serviceSecondaryStruct, inFile,
- type);
+ sourceType);
}
- ((StructureFile) alignFile).setDbRefType(format);
- }
- else if (format.equalsIgnoreCase("mmCIF"))
- {
- StructureImportSettings.addSettings(annotFromStructure,
- localSecondaryStruct, serviceSecondaryStruct);
- alignFile = new jalview.ext.jmol.JmolParser(inFile, type);
- ((StructureFile) alignFile).setDbRefType(format);
- }
- else if (format.equals("STH"))
- {
- alignFile = new StockholmFile(inFile, type);
- }
- else if (format.equals("SimpleBLAST"))
- {
- alignFile = new SimpleBlastFile(inFile, type);
- }
- else if (format.equals(PhylipFile.FILE_DESC))
- {
- alignFile = new PhylipFile(inFile, type);
- }
- else if (format.equals(JSONFile.FILE_DESC))
- {
- alignFile = new JSONFile(inFile, type);
- }
- else if (format.equals(HtmlFile.FILE_DESC))
- {
- alignFile = new HtmlFile(inFile, type);
+ ((StructureFile) alignFile).setDbRefType(FileFormat.PDB
+ .equals(fileFormat) ? Type.PDB : Type.MMCIF);
}
- else if (format.equals("RNAML"))
- {
- alignFile = new RnamlFile(inFile, type);
- }
- else if (format.equals(IdentifyFile.FeaturesFile))
+ else
{
- alignFile = new FeaturesFile(true, inFile, type);
+ alignFile = fileFormat.getAlignmentFile(inFile, sourceType);
}
- return buildAlignmentFrom(alignFile);
+ return buildAlignmentFromFile();
} catch (Exception e)
{
e.printStackTrace();
- System.err.println("Failed to read alignment using the '" + format
- + "' reader.\n" + e);
+ System.err.println("Failed to read alignment using the '"
+ + fileFormat + "' reader.\n" + e);
if (e.getMessage() != null
&& e.getMessage().startsWith(INVALID_CHARACTERS))
{
- throw new java.io.IOException(e.getMessage());
+ throw new IOException(e.getMessage());
}
// Finally test if the user has pasted just the sequence, no id
- if (type.equalsIgnoreCase("Paste"))
+ if (sourceType == DataSourceType.PASTE)
{
try
{
// Possible sequence is just residues with no label
- alignFile = new FastaFile(">UNKNOWN\n" + inFile, "Paste");
- return buildAlignmentFrom(alignFile);
+ alignFile = new FastaFile(">UNKNOWN\n" + inFile,
+ DataSourceType.PASTE);
+ return buildAlignmentFromFile();
} catch (Exception ex)
{
if (ex.toString().startsWith(INVALID_CHARACTERS))
{
- throw new java.io.IOException(e.getMessage());
+ throw new IOException(e.getMessage());
}
ex.printStackTrace();
}
}
- if (format.equalsIgnoreCase("HTML"))
+ if (FileFormat.Html.equals(fileFormat))
{
throw new IOException(e.getMessage());
}
- // If we get to this stage, the format was not supported
- throw new java.io.IOException(SUPPORTED_FORMATS);
}
+ throw new FileFormatException(SUPPORTED_FORMATS);
}
/**
* @param format
* File format of data that will be provided by datasource
*
- * @return DOCUMENT ME!
+ * @return
*/
- public AlignmentI readFromFile(FileParse source, String format)
- throws java.io.IOException
+ public AlignmentI readFromFile(FileParse source, FileFormatI format)
+ throws IOException
{
- // TODO: generalise mapping between format string and io. class instances
- // using Constructor.invoke reflection
- // This is exactly the same as the readFile method except we substitute
- // 'inFile, type' with 'source'
this.inFile = source.getInFile();
- String type = source.type;
+ DataSourceType type = source.dataSourceType;
try
{
- if (format.equals("FASTA"))
- {
- alignFile = new FastaFile(source);
- }
- else if (format.equals("MSF"))
- {
- alignFile = new MSFfile(source);
- }
- else if (format.equals("PileUp"))
- {
- alignFile = new PileUpfile(source);
- }
- else if (format.equals("CLUSTAL"))
- {
- alignFile = new ClustalFile(source);
- }
- else if (format.equals("BLC"))
- {
- alignFile = new BLCFile(source);
- }
- else if (format.equals("PIR"))
- {
- alignFile = new PIRFile(source);
- }
- else if (format.equals("PFAM"))
- {
- alignFile = new PfamFile(source);
- }
- else if (format.equals("JnetFile"))
- {
- alignFile = new JPredFile(source);
- ((JPredFile) alignFile).removeNonSequences();
- }
- else if (format.equals("PDB"))
+ if (FileFormat.PDB.equals(format) || FileFormat.MMCif.equals(format))
{
// TODO obtain config value from preference settings
boolean isParseWithJMOL = false;
}
((StructureFile) alignFile).setDbRefType(Type.PDB);
}
- else if (format.equalsIgnoreCase("mmCIF"))
- {
- StructureImportSettings.addSettings(annotFromStructure,
- localSecondaryStruct, serviceSecondaryStruct);
- alignFile = new JmolParser(source);
- ((StructureFile) alignFile).setDbRefType(Type.MMCIF);
- }
- else if (format.equals("STH"))
- {
- alignFile = new StockholmFile(source);
- }
- else if (format.equals("RNAML"))
- {
- alignFile = new RnamlFile(source);
- }
- else if (format.equals("SimpleBLAST"))
- {
- alignFile = new SimpleBlastFile(source);
- }
- else if (format.equals(PhylipFile.FILE_DESC))
- {
- alignFile = new PhylipFile(source);
- }
- else if (format.equals(IdentifyFile.FeaturesFile))
- {
- alignFile = new FeaturesFile(inFile, type);
- }
- else if (format.equals(JSONFile.FILE_DESC))
- {
- alignFile = new JSONFile(source);
- }
- else if (format.equals(HtmlFile.FILE_DESC))
+ else
{
- alignFile = new HtmlFile(source);
+ alignFile = format.getAlignmentFile(source);
}
- return buildAlignmentFrom(alignFile);
+ return buildAlignmentFromFile();
} catch (Exception e)
{
if (e.getMessage() != null
&& e.getMessage().startsWith(INVALID_CHARACTERS))
{
- throw new java.io.IOException(e.getMessage());
+ throw new FileFormatException(e.getMessage());
}
// Finally test if the user has pasted just the sequence, no id
- if (type.equalsIgnoreCase("Paste"))
+ if (type == DataSourceType.PASTE)
{
try
{
// Possible sequence is just residues with no label
- alignFile = new FastaFile(">UNKNOWN\n" + inFile, "Paste");
- return buildAlignmentFrom(alignFile);
+ alignFile = new FastaFile(">UNKNOWN\n" + inFile,
+ DataSourceType.PASTE);
+ return buildAlignmentFromFile();
} catch (Exception ex)
{
if (ex.toString().startsWith(INVALID_CHARACTERS))
{
- throw new java.io.IOException(e.getMessage());
+ throw new IOException(e.getMessage());
}
ex.printStackTrace();
}
// If we get to this stage, the format was not supported
- throw new java.io.IOException(SUPPORTED_FORMATS);
+ throw new FileFormatException(SUPPORTED_FORMATS);
}
}
* boilerplate method to handle data from an AlignFile and construct a new
* alignment or import to an existing alignment
*
- * @param alignFile2
* @return AlignmentI instance ready to pass to a UI constructor
*/
- private AlignmentI buildAlignmentFrom(AlignFile alignFile2)
+ private AlignmentI buildAlignmentFromFile()
{
// Standard boilerplate for creating alignment from parser
// alignFile.configureForView(viewpanel);
* @param selectedOnly
* @return flatfile in a string
*/
- public String formatSequences(String format, boolean jvsuffix,
+ public String formatSequences(FileFormatI format, boolean jvsuffix,
AlignmentViewPanel ap, boolean selectedOnly)
{
*
* @return alignment flat file contents
*/
- public String formatSequences(String format, AlignmentI alignment,
+ public String formatSequences(FileFormatI format, AlignmentI alignment,
boolean jvsuffix)
{
try
{
- AlignFile afile = null;
- if (format.equalsIgnoreCase("FASTA"))
- {
- afile = new FastaFile();
- }
- else if (format.equalsIgnoreCase("MSF"))
- {
- afile = new MSFfile();
- }
- else if (format.equalsIgnoreCase("PileUp"))
- {
- afile = new PileUpfile();
- }
- else if (format.equalsIgnoreCase("CLUSTAL"))
- {
- afile = new ClustalFile();
- }
- else if (format.equalsIgnoreCase("BLC"))
- {
- afile = new BLCFile();
- }
- else if (format.equalsIgnoreCase("PIR"))
- {
- afile = new PIRFile();
- }
- else if (format.equalsIgnoreCase("PFAM"))
- {
- afile = new PfamFile();
- }
- else if (format.equalsIgnoreCase("STH"))
- {
- afile = new StockholmFile(alignment);
- }
- else if (format.equalsIgnoreCase("AMSA"))
- {
- afile = new AMSAFile(alignment);
- }
- else if (format.equalsIgnoreCase(PhylipFile.FILE_DESC))
- {
- afile = new PhylipFile();
- }
- else if (format.equalsIgnoreCase(JSONFile.FILE_DESC))
- {
- afile = new JSONFile();
- }
- else if (format.equalsIgnoreCase("RNAML"))
- {
- afile = new RnamlFile();
- }
-
- else
- {
- throw new Exception(
- MessageManager
- .getString("error.implementation_error_unknown_file_format_string"));
- }
+ AlignmentFileI afile = format.getAlignmentFile(alignment);
afile.setNewlineString(newline);
- afile.addJVSuffix(jvsuffix);
afile.setExportSettings(exportSettings);
afile.configureForView(viewpanel);
// check whether we were given a specific alignment to export, rather than
// the one in the viewpanel
+ SequenceI[] seqs = null;
if (viewpanel == null || viewpanel.getAlignment() == null
|| viewpanel.getAlignment() != alignment)
{
- afile.setSeqs(alignment.getSequencesArray());
+ seqs = alignment.getSequencesArray();
}
else
{
- afile.setSeqs(viewpanel.getAlignment().getSequencesArray());
+ seqs = viewpanel.getAlignment().getSequencesArray();
}
- String afileresp = afile.print();
+ String afileresp = afile.print(seqs, jvsuffix);
if (afile.hasWarningMessage())
{
System.err.println("Warning raised when writing as " + format
return null;
}
- public static String checkProtocol(String file)
+ public static DataSourceType checkProtocol(String file)
{
- String protocol = FILE;
+ DataSourceType protocol = DataSourceType.FILE;
String ft = file.toLowerCase().trim();
if (ft.indexOf("http:") == 0 || ft.indexOf("https:") == 0
|| ft.indexOf("file:") == 0)
{
- protocol = URL;
+ protocol = DataSourceType.URL;
}
return protocol;
}
System.gc();
long memf = -r.totalMemory() + r.freeMemory();
long t1 = -System.currentTimeMillis();
- AlignmentI al = afa.readFile(args[i], FILE,
- new IdentifyFile().identify(args[i], FILE));
+ AlignmentI al = afa
+ .readFile(args[i], DataSourceType.FILE,
+ new IdentifyFile().identify(args[i],
+ DataSourceType.FILE));
t1 += System.currentTimeMillis();
System.gc();
memf += r.totalMemory() - r.freeMemory();
try
{
System.out.println(new AppletFormatAdapter().formatSequences(
- "FASTA", al, true));
+ FileFormat.Fasta, al, true));
} catch (Exception e)
{
System.err
* @param format
* @return protocol that yields the data parsable as the given type
*/
- public static String resolveProtocol(String file, String format)
+ public static DataSourceType resolveProtocol(String file,
+ FileFormatI format)
{
return resolveProtocol(file, format, false);
}
- public static String resolveProtocol(String file, String format,
- boolean debug)
+ public static DataSourceType resolveProtocol(String file,
+ FileFormatI format, boolean debug)
{
// TODO: test thoroughly!
- String protocol = null;
+ DataSourceType protocol = null;
if (debug)
{
System.out.println("resolving datasource started with:\n>>file\n"
System.err.println("Resource '" + file + "' was "
+ (rtn ? "" : "not") + " located by classloader.");
}
- ;
if (rtn)
{
- protocol = AppletFormatAdapter.CLASSLOADER;
+ protocol = DataSourceType.CLASSLOADER;
}
} catch (Exception ex)
if (file.indexOf("://") > -1)
{
- protocol = AppletFormatAdapter.URL;
+ protocol = DataSourceType.URL;
}
else
{
// skipping codebase prepend check.
- protocol = AppletFormatAdapter.FILE;
+ protocol = DataSourceType.FILE;
}
FileParse fp = null;
try
{
System.out.println("Accessing as paste.");
}
- protocol = AppletFormatAdapter.PASTE;
+ protocol = DataSourceType.PASTE;
fp = null;
try
{
{
return null;
}
- if (format == null || format.length() == 0)
+ if (format == null)
{
return protocol;
}
{
try
{
- String idformat = new jalview.io.IdentifyFile().identify(file,
- protocol);
+ FileFormatI idformat = new IdentifyFile().identify(file, protocol);
if (idformat == null)
{
if (debug)
System.err.println("File deemed not accessible via " + protocol);
e.printStackTrace();
}
- ;
-
}
}
return null;
}
- public AlignFile getAlignFile()
+ public AlignmentFileI getAlignFile()
{
return alignFile;
}
-
- public void setAlignFile(AlignFile alignFile)
- {
- this.alignFile = alignFile;
- }
}
*
* @param inFile
* DOCUMENT ME!
- * @param type
+ * @param sourceType
* DOCUMENT ME!
*
* @throws IOException
* DOCUMENT ME!
*/
- public BLCFile(String inFile, String type) throws IOException
+ public BLCFile(String inFile, DataSourceType sourceType)
+ throws IOException
{
- super(inFile, type);
+ super(inFile, sourceType);
}
public BLCFile(FileParse source) throws IOException
/**
* DOCUMENT ME!
*/
+ @Override
public void initData()
{
super.initData();
/**
* DOCUMENT ME!
*/
+ @Override
public void parse() throws IOException
{
StringBuffer headerLines = new StringBuffer();
/**
* DOCUMENT ME!
*
- * @return DOCUMENT ME!
- */
- public String print()
- {
- return print(getSeqsAsArray());
- }
-
- /**
- * DOCUMENT ME!
- *
* @param s
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
- public String print(SequenceI[] s)
+ @Override
+ public String print(SequenceI[] s, boolean jvsuffix)
{
StringBuffer out = new StringBuffer();
/**
while ((i < s.length) && (s[i] != null))
{
- out.append(">" + printId(s[i]));
+ out.append(">" + printId(s[i], jvsuffix));
if (s[i].getDescription() != null)
{
out.append(" " + s[i].getDescription());
*/
package jalview.io;
-import jalview.api.AlignExportSettingI;
-import jalview.api.AlignmentViewPanel;
-import jalview.datamodel.AlignmentExportData;
import jalview.exceptions.NoFileSelectedException;
-import jalview.gui.IProgressIndicator;
+import jalview.gui.AlignmentPanel;
import jalview.gui.OOMWarning;
import jalview.json.binding.biojs.BioJSReleasePojo;
import jalview.json.binding.biojs.BioJSRepositoryPojo;
import java.util.Objects;
import java.util.TreeMap;
-public class BioJsHTMLOutput
+public class BioJsHTMLOutput extends HTMLOutput
{
- private AlignmentViewPanel ap;
-
- private long pSessionId;
-
- private IProgressIndicator pIndicator;
-
- private boolean headless;
private static File currentBJSTemplateFile;
"biojs_template_git_repo",
"https://raw.githubusercontent.com/jalview/exporter-templates/master/biojs/package.json");
- public BioJsHTMLOutput(AlignmentViewPanel ap,
- IProgressIndicator pIndicator)
+ public BioJsHTMLOutput(AlignmentPanel ap)
{
- if (ap != null)
- {
- this.ap = ap;
- this.pSessionId = System.currentTimeMillis();
- this.pIndicator = pIndicator;
- this.headless = (System.getProperty("java.awt.headless") != null && System
- .getProperty("java.awt.headless").equals("true"));
- }
+ super(ap);
}
- public void exportJalviewAlignmentAsBioJsHtmlFile(String outputFile)
+ @Override
+ public void exportHTML(String outputFile)
{
- // String outputFile = null;
+ exportStarted();
try
{
if (outputFile == null)
{
outputFile = getOutputFile();
}
- AlignExportSettingI exportSettings = new AlignExportSettingI()
- {
- @Override
- public boolean isExportHiddenSequences()
- {
- return true;
- }
-
- @Override
- public boolean isExportHiddenColumns()
- {
- return true;
- }
-
- @Override
- public boolean isExportAnnotations()
- {
- return true;
- }
-
- @Override
- public boolean isExportFeatures()
- {
- return true;
- }
-
- @Override
- public boolean isExportGroups()
- {
- return true;
- }
-
- @Override
- public boolean isCancelled()
- {
- return false;
- }
-
- };
- AlignmentExportData exportData = jalview.gui.AlignFrame
- .getAlignmentForExport(JSONFile.FILE_DESC,
- ap.getAlignViewport(), exportSettings);
- String bioJSON = new FormatAdapter(ap, exportData.getSettings())
- .formatSequences(JSONFile.FILE_DESC, exportData
- .getAlignment(), exportData.getOmitHidden(),
- exportData.getStartEndPostions(), ap
- .getAlignViewport().getColumnSelection());
-
- String bioJSTemplateString = getBioJsTemplateAsString();
- String generatedBioJsWithJalviewAlignmentAsJson = bioJSTemplateString
- .replaceAll("#sequenceData#", bioJSON).toString();
-
- PrintWriter out = new java.io.PrintWriter(new java.io.FileWriter(
- outputFile));
- out.print(generatedBioJsWithJalviewAlignmentAsJson);
- out.flush();
- out.close();
- jalview.util.BrowserLauncher.openURL("file:///" + outputFile);
- if (pIndicator != null && !headless)
- {
- pIndicator.setProgressBar(MessageManager.formatMessage(
- "status.export_complete", "BioJS"), pSessionId);
- }
- } catch (NoFileSelectedException ex)
+ generatedFile = new File(outputFile);
+ } catch (NoFileSelectedException e)
{
- // do noting if no file was selected
- } catch (OutOfMemoryError err)
- {
- System.out.println("########################\n" + "OUT OF MEMORY "
- + outputFile + "\n" + "########################");
- new OOMWarning("Creating Image for " + outputFile, err);
+ setProgressMessage(MessageManager.formatMessage(
+ "status.cancelled_image_export_operation", "BioJS MSA"));
+ return;
} catch (Exception e)
{
- if (pIndicator != null && !headless)
- {
- pIndicator.setProgressBar(MessageManager.formatMessage(
- "info.error_creating_file", "HTML"), pSessionId);
- }
+ setProgressMessage(MessageManager.formatMessage(
+ "info.error_creating_file", "BioJS MSA"));
e.printStackTrace();
+ return;
}
- }
+ new Thread(this).start();
- public String getOutputFile() throws NoFileSelectedException
- {
- String selectedFile = null;
- if (pIndicator != null && !headless)
- {
- pIndicator.setProgressBar(MessageManager.formatMessage(
- "status.waiting_for_user_to_select_output_file", "HTML"),
- pSessionId);
- }
-
- JalviewFileChooser jvFileChooser = new JalviewFileChooser(
- jalview.bin.Cache.getProperty("LAST_DIRECTORY"),
- new String[] { "html" }, new String[] { "HTML files" },
- "HTML files");
- jvFileChooser.setFileView(new JalviewFileView());
-
- jvFileChooser.setDialogTitle(MessageManager
- .getString("label.save_as_biojs_html"));
- jvFileChooser.setToolTipText(MessageManager.getString("action.save"));
-
- int fileChooserOpt = jvFileChooser.showSaveDialog(null);
- if (fileChooserOpt == JalviewFileChooser.APPROVE_OPTION)
- {
- jalview.bin.Cache.setProperty("LAST_DIRECTORY", jvFileChooser
- .getSelectedFile().getParent());
- selectedFile = jvFileChooser.getSelectedFile().getPath();
- }
- else
- {
- pIndicator.setProgressBar(MessageManager.formatMessage(
- "status.cancelled_image_export_operation", "BioJS"),
- pSessionId);
- throw new NoFileSelectedException("No file was selected.");
- }
- return selectedFile;
}
- public static String getBioJsTemplateAsString() throws IOException
- {
- InputStreamReader isReader = null;
- BufferedReader buffReader = null;
- StringBuilder sb = new StringBuilder();
- Objects.requireNonNull(getCurrentBJSTemplateFile(),
- "BioJsTemplate File not initialized!");
- @SuppressWarnings("deprecation")
- URL url = getCurrentBJSTemplateFile().toURL();
- if (url != null)
- {
- try
- {
- isReader = new InputStreamReader(url.openStream());
- buffReader = new BufferedReader(isReader);
- String line;
- String lineSeparator = System.getProperty("line.separator");
- while ((line = buffReader.readLine()) != null)
- {
- sb.append(line).append(lineSeparator);
- }
-
- } catch (Exception ex)
- {
- ex.printStackTrace();
- } finally
- {
- if (isReader != null)
- {
- isReader.close();
- }
- if (buffReader != null)
- {
- buffReader.close();
- }
- }
- }
- return sb.toString();
- }
- public static void refreshBioJSVersionsInfo(String dirName)
+ public static void refreshVersionInfo(String dirName)
throws URISyntaxException
{
File directory = new File(BJS_TEMPLATES_LOCAL_DIRECTORY);
BioJSRepositoryPojo release = new BioJSRepositoryPojo(
gitRepoPkgJson);
syncUpdates(BJS_TEMPLATES_LOCAL_DIRECTORY, release);
- refreshBioJSVersionsInfo(BJS_TEMPLATES_LOCAL_DIRECTORY);
+ refreshVersionInfo(BJS_TEMPLATES_LOCAL_DIRECTORY);
}
} catch (URISyntaxException e)
{
BioJsHTMLOutput.bioJsMSAVersions = bioJsMSAVersions;
}
+ @Override
+ public boolean isEmbedData()
+ {
+ return true;
+ }
+
+ @Override
+ public boolean isLaunchInBrowserAfterExport()
+ {
+ return true;
+ }
+
+ @Override
+ public File getExportedFile()
+ {
+ return generatedFile;
+ }
+
+ @Override
+ public void run()
+ {
+ try
+ {
+ String bioJSON = getBioJSONData();
+ String bioJSTemplateString = HTMLOutput
+ .readFileAsString(getCurrentBJSTemplateFile());
+ String generatedBioJsWithJalviewAlignmentAsJson = bioJSTemplateString
+ .replaceAll("#sequenceData#", bioJSON).toString();
+
+ PrintWriter out = new java.io.PrintWriter(new java.io.FileWriter(
+ generatedFile));
+ out.print(generatedBioJsWithJalviewAlignmentAsJson);
+ out.flush();
+ out.close();
+ setProgressMessage(MessageManager.formatMessage(
+ "status.export_complete", "BioJS"));
+ exportCompleted();
+
+ } catch (OutOfMemoryError err)
+ {
+ System.out.println("########################\n" + "OUT OF MEMORY "
+ + generatedFile + "\n" + "########################");
+ new OOMWarning("Creating Image for " + generatedFile, err);
+ } catch (Exception e)
+ {
+ setProgressMessage(MessageManager.formatMessage(
+ "info.error_creating_file", "HTML"));
+ e.printStackTrace();
+ }
+
+ }
+
}
{
}
- public ClustalFile(String inFile, String type) throws IOException
+ public ClustalFile(String inFile, DataSourceType sourceType)
+ throws IOException
{
- super(inFile, type);
+ super(inFile, sourceType);
}
public ClustalFile(FileParse source) throws IOException
}
@Override
- public String print()
- {
- return print(getSeqsAsArray());
- // TODO: locaRNA style aln output
- }
-
- public String print(SequenceI[] s)
+ public String print(SequenceI[] s, boolean jvsuffix)
{
StringBuffer out = new StringBuffer("CLUSTAL" + newline + newline);
while ((i < s.length) && (s[i] != null))
{
- String tmp = printId(s[i]);
+ String tmp = printId(s[i], jvsuffix);
if (s[i].getSequence().length > max)
{
while ((j < s.length) && (s[j] != null))
{
- out.append(new Format("%-" + maxid + "s").form(printId(s[j]) + " "));
+ out.append(new Format("%-" + maxid + "s").form(printId(s[j],
+ jvsuffix) + " "));
int start = i * len;
int end = start + len;
*/
package jalview.io;
+import jalview.datamodel.SequenceI;
+
import java.io.IOException;
/**
public class DBRefFile extends AlignFile
{
+ @Override
public void parse() throws IOException
{
// TODO Auto-generated method stub
}
- public String print()
+ @Override
+ public String print(SequenceI[] sqs, boolean jvsuffix)
{
// TODO Auto-generated method stub
return null;
--- /dev/null
+package jalview.io;
+
+public enum DataSourceType
+{
+ FILE, URL, PASTE, CLASSLOADER;
+}
*
* @param inFile
* DOCUMENT ME!
- * @param type
+ * @param sourceType
* DOCUMENT ME!
*
* @throws IOException
* DOCUMENT ME!
*/
- public FastaFile(String inFile, String type) throws IOException
+ public FastaFile(String inFile, DataSourceType sourceType)
+ throws IOException
{
- super(inFile, type);
+ super(inFile, sourceType);
}
public FastaFile(FileParse source) throws IOException
super(source);
}
+ public FastaFile(SequenceI[] seqs)
+ {
+ super(seqs);
+ }
+
/**
* DOCUMENT ME!
*
}
}
- /**
- * DOCUMENT ME!
- *
- * @param s
- * DOCUMENT ME!
- * @param len
- * DOCUMENT ME!
- * @param gaps
- * DOCUMENT ME!
- * @param displayId
- * DOCUMENT ME!
- *
- * @return DOCUMENT ME!
- */
- public String print(SequenceI[] s)
+ @Override
+ public String print(SequenceI[] s, boolean jvsuffix)
{
out = new StringBuffer();
int i = 0;
while ((i < s.length) && (s[i] != null))
{
- out.append(">" + printId(s[i]));
+ out.append(">" + printId(s[i], jvsuffix));
if (s[i].getDescription() != null)
{
out.append(" " + s[i].getDescription());
return out.toString();
}
-
- /**
- * DOCUMENT ME!
- *
- * @return DOCUMENT ME!
- */
- @Override
- public String print()
- {
- return print(getSeqsAsArray());
- }
}
* Constructor which does not parse the file immediately
*
* @param inFile
- * @param type
+ * @param paste
* @throws IOException
*/
- public FeaturesFile(String inFile, String type) throws IOException
+ public FeaturesFile(String inFile, DataSourceType paste)
+ throws IOException
{
- super(false, inFile, type);
+ super(false, inFile, paste);
}
/**
* @param type
* @throws IOException
*/
- public FeaturesFile(boolean parseImmediately, String inFile, String type)
+ public FeaturesFile(boolean parseImmediately, String inFile,
+ DataSourceType type)
throws IOException
{
super(parseImmediately, inFile, type);
dataset = new Alignment(new SequenceI[] {});
}
- boolean parseResult = parse(dataset, null, false, true);
+ Map<String, FeatureColourI> featureColours = new HashMap<String, FeatureColourI>();
+ boolean parseResult = parse(dataset, featureColours, false, true);
if (!parseResult)
{
// pass error up somehow
* @return error message
*/
@Override
- public String print()
+ public String print(SequenceI[] sqs, boolean jvsuffix)
{
- return "Use printGffFormat() or printJalviewFormat()";
+ System.out.println("Use printGffFormat() or printJalviewFormat()");
+ return null;
}
/**
--- /dev/null
+package jalview.io;
+
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.PDBEntry;
+import jalview.ext.jmol.JmolParser;
+import jalview.structure.StructureImportSettings;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public enum FileFormat implements FileFormatI
+{
+ Fasta("Fasta", "fa, fasta, mfa, fastq", true, true)
+ {
+ @Override
+ public AlignmentFileI getAlignmentFile(String inFile,
+ DataSourceType sourceType) throws IOException
+ {
+ return new FastaFile(inFile, sourceType);
+ }
+
+ @Override
+ public AlignmentFileI getAlignmentFile(FileParse source)
+ throws IOException
+ {
+ return new FastaFile(source);
+ }
+
+ @Override
+ public AlignmentFileI getAlignmentFile(AlignmentI al)
+ {
+ return new FastaFile();
+ }
+ },
+ Pfam("PFAM", "pfam", true, true)
+ {
+ @Override
+ public AlignmentFileI getAlignmentFile(String inFile,
+ DataSourceType sourceType) throws IOException
+ {
+ return new PfamFile(inFile, sourceType);
+ }
+
+ @Override
+ public AlignmentFileI getAlignmentFile(FileParse source)
+ throws IOException
+ {
+ return new PfamFile(source);
+ }
+
+ @Override
+ public AlignmentFileI getAlignmentFile(AlignmentI al)
+ {
+ return new PfamFile();
+ }
+ },
+ Stockholm("Stockholm", "sto,stk", true, true)
+ {
+ @Override
+ public AlignmentFileI getAlignmentFile(String inFile,
+ DataSourceType sourceType) throws IOException
+ {
+ return new StockholmFile(inFile, sourceType);
+ }
+ @Override
+ public AlignmentFileI getAlignmentFile(FileParse source)
+ throws IOException
+ {
+ return new StockholmFile(source);
+ }
+
+ @Override
+ public AlignmentFileI getAlignmentFile(AlignmentI al)
+ {
+ return new StockholmFile(al);
+ }
+
+ },
+
+ PIR("PIR", "pir", true, true)
+ {
+ @Override
+ public AlignmentFileI getAlignmentFile(String inFile,
+ DataSourceType sourceType) throws IOException
+ {
+ return new PIRFile(inFile, sourceType);
+ }
+ @Override
+ public AlignmentFileI getAlignmentFile(FileParse source)
+ throws IOException
+ {
+ return new PIRFile(source);
+ }
+
+ @Override
+ public AlignmentFileI getAlignmentFile(AlignmentI al)
+ {
+ return new PIRFile();
+ }
+ },
+ BLC("BLC", "BLC", true, true)
+ {
+ @Override
+ public AlignmentFileI getAlignmentFile(String inFile,
+ DataSourceType sourceType) throws IOException
+ {
+ return new BLCFile(inFile, sourceType);
+ } @Override
+ public AlignmentFileI getAlignmentFile(FileParse source)
+ throws IOException
+ {
+ return new BLCFile(source);
+ }
+
+ @Override
+ public AlignmentFileI getAlignmentFile(AlignmentI al)
+ {
+ return new BLCFile();
+ }
+ },
+ AMSA("AMSA", "amsa", true, true)
+ {
+ @Override
+ public AlignmentFileI getAlignmentFile(String inFile,
+ DataSourceType sourceType) throws IOException
+ {
+ return new AMSAFile(inFile, sourceType);
+ }
+
+ @Override
+ public AlignmentFileI getAlignmentFile(FileParse source)
+ throws IOException
+ {
+ return new AMSAFile(source);
+ }
+
+ @Override
+ public AlignmentFileI getAlignmentFile(AlignmentI al)
+ {
+ return new AMSAFile(al);
+ }
+ },
+ Html("HTML", "html", true, false)
+ {
+ @Override
+ public AlignmentFileI getAlignmentFile(String inFile,
+ DataSourceType sourceType) throws IOException
+ {
+ return new HtmlFile(inFile, sourceType);
+ } @Override
+ public AlignmentFileI getAlignmentFile(FileParse source)
+ throws IOException
+ {
+ return new HtmlFile(source);
+ }
+
+ @Override
+ public AlignmentFileI getAlignmentFile(AlignmentI al)
+ {
+ return new HtmlFile();
+ }
+
+ @Override
+ public boolean isComplexAlignFile()
+ {
+ return true;
+ }
+
+ },
+ Rnaml("RNAML", "xml,rnaml", true, false)
+ {
+ @Override
+ public AlignmentFileI getAlignmentFile(String inFile,
+ DataSourceType sourceType) throws IOException
+ {
+ return new RnamlFile(inFile, sourceType);
+ } @Override
+ public AlignmentFileI getAlignmentFile(FileParse source)
+ throws IOException
+ {
+ return new RnamlFile(source);
+ }
+
+ @Override
+ public AlignmentFileI getAlignmentFile(AlignmentI al)
+ {
+ return new RnamlFile();
+ }
+
+ },
+ Json("JSON","json", true, true)
+ {
+ @Override
+ public AlignmentFileI getAlignmentFile(String inFile,
+ DataSourceType sourceType) throws IOException
+ {
+ return new JSONFile(inFile, sourceType);
+ } @Override
+ public AlignmentFileI getAlignmentFile(FileParse source)
+ throws IOException
+ {
+ return new JSONFile(source);
+ }
+
+ @Override
+ public AlignmentFileI getAlignmentFile(AlignmentI al)
+ {
+ return new JSONFile();
+ }
+
+ @Override
+ public boolean isComplexAlignFile()
+ {
+ return true;
+ }
+
+ },
+ Pileup("PileUp", "pileup", true, true)
+ {
+ @Override
+ public AlignmentFileI getAlignmentFile(String inFile,
+ DataSourceType sourceType) throws IOException
+ {
+ return new PileUpfile(inFile, sourceType);
+ } @Override
+ public AlignmentFileI getAlignmentFile(FileParse source)
+ throws IOException
+ {
+ return new PileUpfile(source);
+ }
+
+ @Override
+ public AlignmentFileI getAlignmentFile(AlignmentI al)
+ {
+ return new PileUpfile();
+ }
+
+ },
+ MSF("MSF", "msf", true, true)
+ {
+ @Override
+ public AlignmentFileI getAlignmentFile(String inFile,
+ DataSourceType sourceType) throws IOException
+ {
+ return new MSFfile(inFile, sourceType);
+ } @Override
+ public AlignmentFileI getAlignmentFile(FileParse source)
+ throws IOException
+ {
+ return new MSFfile(source);
+ }
+
+ @Override
+ public AlignmentFileI getAlignmentFile(AlignmentI al)
+ {
+ return new MSFfile();
+ }
+
+ },
+ Clustal("Clustal", "aln", true, true)
+ {
+ @Override
+ public AlignmentFileI getAlignmentFile(String inFile,
+ DataSourceType sourceType) throws IOException
+ {
+ return new ClustalFile(inFile, sourceType);
+ } @Override
+ public AlignmentFileI getAlignmentFile(FileParse source)
+ throws IOException
+ {
+ return new ClustalFile(source);
+ }
+
+ @Override
+ public AlignmentFileI getAlignmentFile(AlignmentI al)
+ {
+ return new ClustalFile();
+ }
+ },
+ Phylip("PHYLIP", "phy", true, true)
+ {
+ @Override
+ public AlignmentFileI getAlignmentFile(String inFile,
+ DataSourceType sourceType) throws IOException
+ {
+ return new PhylipFile(inFile, sourceType);
+ }
+
+ @Override
+ public AlignmentFileI getAlignmentFile(FileParse source)
+ throws IOException
+ {
+ return new PhylipFile(source);
+ }
+
+ @Override
+ public AlignmentFileI getAlignmentFile(AlignmentI al)
+ {
+ return new PhylipFile();
+ }
+ },
+ Jnet("JnetFile", "", false, false)
+ {
+ @Override
+ public AlignmentFileI getAlignmentFile(String inFile,
+ DataSourceType sourceType) throws IOException
+ {
+ JPredFile af = new JPredFile(inFile, sourceType);
+ af.removeNonSequences();
+ return af;
+ }
+
+ @Override
+ public AlignmentFileI getAlignmentFile(FileParse source)
+ throws IOException
+ {
+ JPredFile af = new JPredFile(source);
+ af.removeNonSequences();
+ return af;
+ }
+
+ @Override
+ public AlignmentFileI getAlignmentFile(AlignmentI al)
+ {
+ return null; // todo is this called?
+ }
+
+ },
+ Features("GFF or Jalview features", "gff2,gff3", true, false)
+ {
+ @Override
+ public AlignmentFileI getAlignmentFile(String inFile,
+ DataSourceType sourceType) throws IOException
+ {
+ return new FeaturesFile(true, inFile, sourceType);
+ }
+
+ @Override
+ public AlignmentFileI getAlignmentFile(FileParse source)
+ throws IOException
+ {
+ return new FeaturesFile(source);
+ }
+
+ @Override
+ public AlignmentFileI getAlignmentFile(AlignmentI al)
+ {
+ return new FeaturesFile();
+ }
+ },
+ PDB("PDB", "pdb,ent", true, false)
+ {
+
+ @Override
+ public AlignmentFileI getAlignmentFile(String inFile,
+ DataSourceType sourceType) throws IOException
+ {
+ // TODO obtain config value from preference settings.
+ // Set value to 'true' to test PDB processing with Jmol: JAL-1213
+ boolean isParseWithJMOL = StructureImportSettings
+ .getDefaultStructureFileFormat() != PDBEntry.Type.PDB;
+ if (isParseWithJMOL)
+ {
+ return new JmolParser(inFile, sourceType);
+ }
+ else
+ {
+ StructureImportSettings.setShowSeqFeatures(true);
+ return new MCview.PDBfile(
+ StructureImportSettings.isVisibleChainAnnotation(),
+ StructureImportSettings.isProcessSecondaryStructure(),
+ StructureImportSettings.isExternalSecondaryStructure(),
+ inFile,
+ sourceType);
+ }
+ }
+
+ @Override
+ public AlignmentFileI getAlignmentFile(FileParse source)
+ throws IOException
+ {
+ boolean isParseWithJMOL = StructureImportSettings
+ .getDefaultStructureFileFormat() != PDBEntry.Type.PDB;
+ if (isParseWithJMOL)
+ {
+ return new JmolParser(source);
+ }
+ else
+ {
+ StructureImportSettings.setShowSeqFeatures(true);
+ return new MCview.PDBfile(
+ StructureImportSettings.isVisibleChainAnnotation(),
+ StructureImportSettings.isProcessSecondaryStructure(),
+ StructureImportSettings.isExternalSecondaryStructure(),
+ source);
+ }
+ }
+
+ @Override
+ public AlignmentFileI getAlignmentFile(AlignmentI al)
+ {
+ return new JmolParser(); // todo or null?
+ }
+
+ @Override
+ public boolean isStructureFile()
+ {
+ return true;
+ }
+ },
+ MMCif("mmCIF", "cif", true, false)
+ {
+
+ @Override
+ public AlignmentFileI getAlignmentFile(String inFile,
+ DataSourceType sourceType) throws IOException
+ {
+ return new JmolParser(inFile, sourceType);
+ }
+
+ @Override
+ public AlignmentFileI getAlignmentFile(FileParse source)
+ throws IOException
+ {
+ return new JmolParser(source);
+ }
+
+ @Override
+ public AlignmentFileI getAlignmentFile(AlignmentI al)
+ {
+ return new JmolParser(); // todo or null?
+ }
+
+ @Override
+ public boolean isStructureFile()
+ {
+ return true;
+ }
+ },
+ Jalview("Jalview", "jar,jvp", true, true)
+ {
+
+ @Override
+ public AlignmentFileI getAlignmentFile(String inFile,
+ DataSourceType sourceType) throws IOException
+ {
+ return null;
+ }
+
+ @Override
+ public AlignmentFileI getAlignmentFile(FileParse source)
+ throws IOException
+ {
+ return null;
+ }
+
+ @Override
+ public AlignmentFileI getAlignmentFile(AlignmentI al)
+ {
+ return null;
+ }
+
+ @Override
+ public boolean isTextFormat()
+ {
+ return false;
+ }
+ };
+
+ /**
+ * A lookup map of enums by upper-cased name
+ */
+ private static Map<String, FileFormat> names;
+ static
+ {
+ names = new HashMap<String, FileFormat>();
+ for (FileFormat format : FileFormat.values())
+ {
+ names.put(format.toString().toUpperCase(), format);
+ }
+ }
+
+ private boolean writable;
+
+ private boolean readable;
+
+ private String extensions;
+
+ private String name;
+
+ /**
+ * Answers a list of writeable file formats (as string, corresponding to the
+ * toString() and forName() methods)
+ *
+ * @return
+ */
+ public static List<String> getWritableFormats(boolean textOnly)
+ {
+ List<String> l = new ArrayList<String>();
+ for (FileFormatI ff : values())
+ {
+ if (ff.isWritable() && (!textOnly || ff.isTextFormat()))
+ {
+ l.add(ff.toString());
+ }
+ }
+ return l;
+ }
+
+ /**
+ * Answers a list of readable file formats (as string, corresponding to the
+ * toString() and forName() methods)
+ *
+ * @return
+ */
+ public static List<String> getReadableFormats()
+ {
+ List<String> l = new ArrayList<String>();
+ for (FileFormatI ff : values())
+ {
+ if (ff.isReadable())
+ {
+ l.add(ff.toString());
+ }
+ }
+ return l;
+ }
+
+ @Override
+ public boolean isComplexAlignFile()
+ {
+ return false;
+ }
+
+ /**
+ * Returns the file format with the given name, or null if format is null or
+ * invalid. Unlike valueOf(), this is not case-sensitive, to be kind to
+ * writers of javascript.
+ *
+ * @param format
+ * @return
+ */
+ public static FileFormatI forName(String format)
+ {
+ // or could store format.getShortDescription().toUpperCase()
+ // in order to decouple 'given name' from enum name
+ return format == null ? null : names.get(format.toUpperCase());
+ }
+
+ @Override
+ public boolean isReadable()
+ {
+ return readable;
+ }
+
+ @Override
+ public boolean isWritable()
+ {
+ return writable;
+ }
+
+ /**
+ * Constructor
+ *
+ * @param shortName
+ * @param extensions
+ * comma-separated list of file extensions associated with the format
+ * @param isReadable
+ * @param isWritable
+ */
+ private FileFormat(String shortName, String extensions,
+ boolean isReadable, boolean isWritable)
+ {
+ this.name = shortName;
+ this.extensions = extensions;
+ this.readable = isReadable;
+ this.writable = isWritable;
+ }
+
+ @Override
+ public String getExtensions()
+ {
+ return extensions;
+ }
+
+ @Override
+ public String toString()
+ {
+ return name;
+ }
+
+ @Override
+ public AlignmentFileI getAlignmentFile()
+ {
+ return getAlignmentFile((AlignmentI) null);
+ }
+
+ @Override
+ public boolean isTextFormat()
+ {
+ return true;
+ }
+
+ @Override
+ public boolean isStructureFile()
+ {
+ return false;
+ }
+}
--- /dev/null
+package jalview.io;
+
+import java.io.IOException;
+
+public class FileFormatException extends IOException
+{
+
+ public FileFormatException(String msg)
+ {
+ super(msg);
+ }
+
+}
--- /dev/null
+package jalview.io;
+
+import jalview.datamodel.AlignmentI;
+
+import java.io.IOException;
+
+public interface FileFormatI
+{
+
+ AlignmentFileI getAlignmentFile(String inFile, DataSourceType sourceType)
+ throws IOException;
+
+ // TODO can we get rid of one of these methods?
+ AlignmentFileI getAlignmentFile(FileParse source) throws IOException;
+
+ AlignmentFileI getAlignmentFile(AlignmentI al);
+
+ AlignmentFileI getAlignmentFile();
+
+ boolean isComplexAlignFile();
+
+ /**
+ * Returns a comma-separated list of file extensions associated with the
+ * format
+ *
+ * @return
+ */
+ String getExtensions();
+
+ /**
+ * Answers true if the format is one that Jalview can read. This implies that
+ * the format provides implementations for getAlignmentFile(FileParse) and
+ * getAlignmentFile(String, DataSourceType) which parse the data source for
+ * sequence data.
+ *
+ * @return
+ */
+ boolean isReadable();
+
+ /**
+ * Answers true if the format is one that Jalview can write. This implies that
+ * the object returned by getAlignmentFile provides an implementation of the
+ * print() method.
+ *
+ * @return
+ */
+ boolean isWritable();
+
+ /**
+ * Answers true if the format is one that Jalview can output as text, e.g. to
+ * a text box
+ *
+ * @return
+ */
+ boolean isTextFormat();
+
+ /**
+ * Answers true if the file format is one that provides a 3D structure
+ *
+ * @return
+ */
+ boolean isStructureFile();
+}
import jalview.api.FeatureSettingsModelI;
import jalview.api.FeaturesDisplayedI;
import jalview.api.FeaturesSourceI;
+import jalview.bin.Cache;
import jalview.bin.Jalview;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.ColumnSelection;
import jalview.gui.AlignViewport;
import jalview.gui.Desktop;
import jalview.gui.Jalview2XML;
+import jalview.gui.JvOptionPane;
import jalview.json.binding.biojson.v1.ColourSchemeMapper;
import jalview.schemes.ColourSchemeI;
import jalview.structure.StructureSelectionManager;
import java.util.StringTokenizer;
import java.util.Vector;
-import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
public class FileLoader implements Runnable
{
String file;
- String protocol;
+ DataSourceType protocol;
- String format;
+ FileFormatI format;
- FileParse source = null; // alternative specification of where data comes
+ AlignmentFileI source = null; // alternative specification of where data comes
// from
}
public void LoadFile(AlignViewport viewport, String file,
- String protocol, String format)
+ DataSourceType protocol, FileFormatI format)
{
this.viewport = viewport;
LoadFile(file, protocol, format);
}
- public void LoadFile(String file, String protocol, String format)
+ public void LoadFile(String file, DataSourceType protocol,
+ FileFormatI format)
{
this.file = file;
this.protocol = protocol;
* @param file
* @param protocol
*/
- public void LoadFile(String file, String protocol)
+ public void LoadFile(String file, DataSourceType protocol)
{
LoadFile(file, protocol, null);
}
* Load alignment from (file, protocol) and wait till loaded
*
* @param file
- * @param protocol
+ * @param sourceType
* @return alignFrame constructed from file contents
*/
- public AlignFrame LoadFileWaitTillLoaded(String file, String protocol)
+ public AlignFrame LoadFileWaitTillLoaded(String file,
+ DataSourceType sourceType)
{
- return LoadFileWaitTillLoaded(file, protocol, null);
+ return LoadFileWaitTillLoaded(file, sourceType, null);
}
/**
* Load alignment from (file, protocol) of type format and wait till loaded
*
* @param file
- * @param protocol
+ * @param sourceType
* @param format
* @return alignFrame constructed from file contents
*/
- public AlignFrame LoadFileWaitTillLoaded(String file, String protocol,
- String format)
+ public AlignFrame LoadFileWaitTillLoaded(String file,
+ DataSourceType sourceType, FileFormatI format)
{
this.file = file;
- this.protocol = protocol;
+ this.protocol = sourceType;
this.format = format;
return _LoadFileWaitTillLoaded();
}
* @param format
* @return alignFrame constructed from file contents
*/
- public AlignFrame LoadFileWaitTillLoaded(FileParse source, String format)
+ public AlignFrame LoadFileWaitTillLoaded(AlignmentFileI source,
+ FileFormatI format)
{
this.source = source;
file = source.getInFile();
- protocol = source.type;
+ protocol = source.getDataSourceType();
this.format = format;
return _LoadFileWaitTillLoaded();
}
public void updateRecentlyOpened()
{
Vector recent = new Vector();
- if (protocol.equals(FormatAdapter.PASTE))
+ if (protocol == DataSourceType.PASTE)
{
// do nothing if the file was pasted in as text... there is no filename to
// refer to it as.
return;
}
- String type = protocol.equals(FormatAdapter.FILE) ? "RECENT_FILE"
+ String type = protocol == DataSourceType.FILE ? "RECENT_FILE"
: "RECENT_URL";
String historyItems = jalview.bin.Cache.getProperty(type);
newHistory.append(recent.elementAt(i));
}
- jalview.bin.Cache.setProperty(type, newHistory.toString());
+ Cache.setProperty(type, newHistory.toString());
- if (protocol.equals(FormatAdapter.FILE))
+ if (protocol == DataSourceType.FILE)
{
- jalview.bin.Cache.setProperty("DEFAULT_FILE_FORMAT", format);
+ Cache.setProperty("DEFAULT_FILE_FORMAT", format.toString());
}
}
@Override
public void run()
{
- String title = protocol.equals(AppletFormatAdapter.PASTE) ? "Copied From Clipboard"
+ String title = protocol == DataSourceType.PASTE ? "Copied From Clipboard"
: file;
Runtime rt = Runtime.getRuntime();
try
// just in case the caller didn't identify the file for us
if (source != null)
{
- format = new IdentifyFile().identify(source, false); // identify
- // stream and
- // rewind rather
- // than close
+ format = new IdentifyFile().identify(source, false);
+ // identify stream and rewind rather than close
}
else
{
}
- if (format == null || format.equalsIgnoreCase("EMPTY DATA FILE"))
+ if (format == null)
{
Desktop.instance.stopLoading();
System.err.println("The input file \"" + file
+ "\" has null or unidentifiable data content!");
if (!Jalview.isHeadlessMode())
{
- javax.swing.JOptionPane.showInternalMessageDialog(
+ JvOptionPane.showInternalMessageDialog(
Desktop.desktop,
MessageManager.getString("label.couldnt_read_data")
+ " in " + file + "\n"
+ AppletFormatAdapter.SUPPORTED_FORMATS,
MessageManager.getString("label.couldnt_read_data"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
}
return;
}
loadtime = -System.currentTimeMillis();
AlignmentI al = null;
- if (format.equalsIgnoreCase("Jalview"))
+ if (FileFormat.Jalview.equals(format))
{
if (source != null)
{
else
{
String error = AppletFormatAdapter.SUPPORTED_FORMATS;
- if (FormatAdapter.isValidFormat(format))
- {
try
{
if (source != null)
{
// read from the provided source
- al = new FormatAdapter().readFromFile(source, format);
+ al = new FormatAdapter().readFromFile(source, format);
}
else
{
{
error = ex.getMessage();
}
- }
- else
- {
- if (format != null && format.length() > 7)
- {
- // ad hoc message in format.
- error = format + "\n" + error;
- }
- }
if ((al != null) && (al.getHeight() > 0) && al.hasValidSequence())
{
}
}
// add metadata and update ui
- if (!protocol.equals(AppletFormatAdapter.PASTE))
+ if (!(protocol == DataSourceType.PASTE))
{
alignFrame.setFileName(file, format);
}
@Override
public void run()
{
- JOptionPane.showInternalMessageDialog(Desktop.desktop,
+ JvOptionPane.showInternalMessageDialog(Desktop.desktop,
errorMessage, MessageManager
.getString("label.error_loading_file"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
}
});
}
@Override
public void run()
{
- javax.swing.JOptionPane.showInternalMessageDialog(
+ JvOptionPane.showInternalMessageDialog(
Desktop.desktop, MessageManager.formatMessage(
"label.problems_opening_file",
new String[] { file }), MessageManager
.getString("label.file_open_error"),
- javax.swing.JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
}
});
}
@Override
public void run()
{
- javax.swing.JOptionPane.showInternalMessageDialog(
+ JvOptionPane.showInternalMessageDialog(
Desktop.desktop, MessageManager.formatMessage(
"warn.out_of_memory_loading_file", new String[]
{ file }), MessageManager
.getString("label.out_of_memory"),
- javax.swing.JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
}
});
}
*/
protected String suffix = null;
- protected String type = null;
+ protected DataSourceType dataSourceType = null;
protected BufferedReader dataIn = null;
suffix = from.suffix;
errormessage = from.errormessage; // inherit potential error messages
error = false; // reset any error condition.
- type = from.type;
+ dataSourceType = from.dataSourceType;
dataIn = from.dataIn;
if (dataIn != null)
{
* configurable values for the origin and the type of the source
*/
public FileParse(BufferedReader source, String originString,
- String typeString)
+ DataSourceType sourceType)
{
- type = typeString;
+ dataSourceType = sourceType;
error = false;
inFile = null;
dataName = originString;
*
* @param fileStr
* - datasource locator/content
- * @param type
+ * @param sourceType
* - protocol of source
* @throws MalformedURLException
* @throws IOException
*/
- public FileParse(String fileStr, String type)
+ public FileParse(String fileStr, DataSourceType sourceType)
throws MalformedURLException, IOException
{
- this.type = type;
+ this.dataSourceType = sourceType;
error = false;
- if (type.equals(AppletFormatAdapter.FILE))
+ if (sourceType == DataSourceType.FILE)
{
if (checkFileSource(fileStr))
{
}
}
}
- else if (type.equals(AppletFormatAdapter.URL))
+ else if (sourceType == DataSourceType.URL)
{
try
{
error = true;
}
}
- else if (type.equals(AppletFormatAdapter.PASTE))
+ else if (sourceType == DataSourceType.PASTE)
{
errormessage = "PASTE INACCESSIBLE!";
dataIn = new BufferedReader(new StringReader(fileStr));
dataName = "Paste";
}
- else if (type.equals(AppletFormatAdapter.CLASSLOADER))
+ else if (sourceType == DataSourceType.CLASSLOADER)
{
errormessage = "RESOURCE CANNOT BE LOCATED";
java.io.InputStream is = getClass()
else
{
errormessage = "PROBABLE IMPLEMENTATION ERROR : Datasource Type given as '"
- + (type != null ? type : "null") + "'";
+ + (sourceType != null ? sourceType : "null") + "'";
error = true;
}
if (dataIn == null || error)
{
return null;
}
+
+ public DataSourceType getDataSourceType()
+ {
+ return dataSourceType;
+ }
}
import jalview.api.AlignExportSettingI;
import jalview.api.AlignmentViewPanel;
+import jalview.bin.Cache;
import jalview.datamodel.Alignment;
import jalview.datamodel.AlignmentAnnotation;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceGroup;
import jalview.datamodel.SequenceI;
+import jalview.util.Comparison;
+
+import java.io.IOException;
/**
* Additional formatting methods used by the application in a number of places.
}
}
- public String formatSequences(String format, SequenceI[] seqs,
+ public String formatSequences(FileFormatI format, SequenceI[] seqs,
String[] omitHiddenColumns, int[] exportRange)
{
startIndex = startEnd[0];
endIndex = startEnd[1];
// get first non-gaped residue start position
- while (jalview.util.Comparison.isGap(seqs[i]
+ while (Comparison.isGap(seqs[i]
.getCharAt(startIndex)) && startIndex < endIndex)
{
startIndex++;
}
// get last non-gaped residue end position
- while (jalview.util.Comparison.isGap(seqs[i].getCharAt(endIndex))
+ while (Comparison.isGap(seqs[i].getCharAt(endIndex))
&& endIndex > startIndex)
{
endIndex--;
*
*
* @param format
- * Format string as givien in the AppletFormatAdaptor list (exact
- * match to name of class implementing file io for that format)
* @param seqs
* vector of sequences to write
*
* @return String containing sequences in desired format
*/
- public String formatSequences(String format, SequenceI[] seqs)
+ public String formatSequences(FileFormatI format, SequenceI[] seqs)
{
+ //
+ // try
+ // {
+ boolean withSuffix = getCacheSuffixDefault(format);
+ return format.getAlignmentFile().print(seqs, withSuffix);
+ // null;
+ //
+ // if (format.equalsIgnoreCase("FASTA"))
+ // {
+ // afile = new FastaFile();
+ // afile.addJVSuffix(jalview.bin.Cache.getDefault("FASTA_JVSUFFIX",
+ // true));
+ // }
+ // else if (format.equalsIgnoreCase("MSF"))
+ // {
+ // afile = new MSFfile();
+ // afile.addJVSuffix(jalview.bin.Cache
+ // .getDefault("MSF_JVSUFFIX", true));
+ // }
+ // else if (format.equalsIgnoreCase("PileUp"))
+ // {
+ // afile = new PileUpfile();
+ // afile.addJVSuffix(jalview.bin.Cache.getDefault("PILEUP_JVSUFFIX",
+ // true));
+ // }
+ // else if (format.equalsIgnoreCase("CLUSTAL"))
+ // {
+ // afile = new ClustalFile();
+ // afile.addJVSuffix(jalview.bin.Cache.getDefault("CLUSTAL_JVSUFFIX",
+ // true));
+ // }
+ // else if (format.equalsIgnoreCase("BLC"))
+ // {
+ // afile = new BLCFile();
+ // afile.addJVSuffix(jalview.bin.Cache
+ // .getDefault("BLC_JVSUFFIX", true));
+ // }
+ // else if (format.equalsIgnoreCase("PIR"))
+ // {
+ // afile = new PIRFile();
+ // afile.addJVSuffix(jalview.bin.Cache
+ // .getDefault("PIR_JVSUFFIX", true));
+ // }
+ // else if (format.equalsIgnoreCase("PFAM"))
+ // {
+ // afile = new PfamFile();
+ // afile.addJVSuffix(jalview.bin.Cache.getDefault("PFAM_JVSUFFIX",
+ // true));
+ // }
+ // /*
+ // * amsa is not supported by this function - it requires an alignment
+ // * rather than a sequence vector else if
+ // (format.equalsIgnoreCase("AMSA"))
+ // * { afile = new AMSAFile(); afile.addJVSuffix(
+ // * jalview.bin.Cache.getDefault("AMSA_JVSUFFIX", true)); }
+ // */
- try
- {
- AlignFile afile = null;
-
- if (format.equalsIgnoreCase("FASTA"))
- {
- afile = new FastaFile();
- afile.addJVSuffix(jalview.bin.Cache.getDefault("FASTA_JVSUFFIX",
- true));
- }
- else if (format.equalsIgnoreCase("MSF"))
- {
- afile = new MSFfile();
- afile.addJVSuffix(jalview.bin.Cache
- .getDefault("MSF_JVSUFFIX", true));
- }
- else if (format.equalsIgnoreCase("PileUp"))
- {
- afile = new PileUpfile();
- afile.addJVSuffix(jalview.bin.Cache.getDefault("PILEUP_JVSUFFIX",
- true));
- }
- else if (format.equalsIgnoreCase("CLUSTAL"))
- {
- afile = new ClustalFile();
- afile.addJVSuffix(jalview.bin.Cache.getDefault("CLUSTAL_JVSUFFIX",
- true));
- }
- else if (format.equalsIgnoreCase("BLC"))
- {
- afile = new BLCFile();
- afile.addJVSuffix(jalview.bin.Cache
- .getDefault("BLC_JVSUFFIX", true));
- }
- else if (format.equalsIgnoreCase("PIR"))
- {
- afile = new PIRFile();
- afile.addJVSuffix(jalview.bin.Cache
- .getDefault("PIR_JVSUFFIX", true));
- }
- else if (format.equalsIgnoreCase("PFAM"))
- {
- afile = new PfamFile();
- afile.addJVSuffix(jalview.bin.Cache.getDefault("PFAM_JVSUFFIX",
- true));
- }
- /*
- * amsa is not supported by this function - it requires an alignment
- * rather than a sequence vector else if (format.equalsIgnoreCase("AMSA"))
- * { afile = new AMSAFile(); afile.addJVSuffix(
- * jalview.bin.Cache.getDefault("AMSA_JVSUFFIX", true)); }
- */
-
- afile.setSeqs(seqs);
- String afileresp = afile.print();
- if (afile.hasWarningMessage())
- {
- System.err.println("Warning raised when writing as " + format
- + " : " + afile.getWarningMessage());
- }
- return afileresp;
- } catch (Exception e)
- {
- System.err.println("Failed to write alignment as a '" + format
- + "' file\n");
- e.printStackTrace();
- }
-
- return null;
+// afile.setSeqs(seqs);
+// String afileresp = afile.print();
+// if (afile.hasWarningMessage())
+// {
+// System.err.println("Warning raised when writing as " + format
+// + " : " + afile.getWarningMessage());
+// }
+// return afileresp;
+// } catch (Exception e)
+// {
+// System.err.println("Failed to write alignment as a '" + format
+// + "' file\n");
+// e.printStackTrace();
+// }
+//
+// return null;
}
- public boolean getCacheSuffixDefault(String format)
+ public boolean getCacheSuffixDefault(FileFormatI format)
{
- if (isValidFormat(format))
- {
- return jalview.bin.Cache.getDefault(format.toUpperCase()
- + "_JVSUFFIX", true);
- }
- return false;
+ return Cache.getDefault(format.toString() + "_JVSUFFIX", true);
}
- public String formatSequences(String format, AlignmentI alignment,
+ public String formatSequences(FileFormatI format, AlignmentI alignment,
String[] omitHidden, int[] exportRange, ColumnSelection colSel)
{
return formatSequences(format, alignment, omitHidden, exportRange,
getCacheSuffixDefault(format), colSel, null);
}
- public String formatSequences(String format, AlignmentI alignment,
- String[] omitHidden, int[] exportRange, ColumnSelection colSel,
- SequenceGroup sgp)
- {
- return formatSequences(format, alignment, omitHidden, exportRange,
- getCacheSuffixDefault(format), colSel, sgp);
- }
-
/**
* hack function to replace seuqences with visible sequence strings before
* generating a string of the alignment in the given format.
* defines hidden columns that are edited out of annotation
* @return string representation of the alignment formatted as format
*/
- public String formatSequences(String format, AlignmentI alignment,
+ public String formatSequences(FileFormatI format, AlignmentI alignment,
String[] omitHidden, int[] exportRange, boolean suffix,
ColumnSelection colSel)
{
suffix, colSel, null);
}
- public String formatSequences(String format, AlignmentI alignment,
+ public String formatSequences(FileFormatI format, AlignmentI alignment,
String[] omitHidden, int[] exportRange, boolean suffix,
- ColumnSelection colSel, jalview.datamodel.SequenceGroup selgp)
+ ColumnSelection colSel, SequenceGroup selgp)
{
if (omitHidden != null)
{
return this.formatSequences(format, alignment, suffix);
}
- /**
- * validate format is valid for IO in Application. This is basically the
- * AppletFormatAdapter.isValidFormat call with additional checks for
- * Application only formats like 'Jalview'.
- *
- * @param format
- * a format string to be compared with list of readable or writable
- * formats (READABLE_FORMATS or WRITABLE_FORMATS)
- * @param forwriting
- * when true, format is checked against list of writable formats.
- * @return true if format is valid
- */
- public static final boolean isValidIOFormat(String format,
- boolean forwriting)
+ @Override
+ public AlignmentI readFile(String file, DataSourceType sourceType,
+ FileFormatI fileFormat) throws IOException
{
- if (format.equalsIgnoreCase("jalview"))
- {
- return true;
- }
- return AppletFormatAdapter.isValidFormat(format, forwriting);
+ AlignmentI al = super.readFile(file, sourceType, fileFormat);
+ return al;
+ }
+
+ @Override
+ public AlignmentI readFromFile(FileParse source, FileFormatI format)
+ throws IOException
+ {
+ AlignmentI al = super.readFromFile(source, format);
+ return al;
}
/**
* alignment panel originating the view
* @return String containing flat file
*/
- public String formatSequences(String format, AlignmentViewPanel ap,
+ public String formatSequences(FileFormatI format, AlignmentViewPanel ap,
boolean selectedOnly)
{
return formatSequences(format, getCacheSuffixDefault(format), ap,
selectedOnly);
}
+ public AlignmentI readFromFile(AlignmentFileI source, FileFormatI format)
+ throws IOException
+ {
+ FileParse fp = new FileParse(source.getInFile(),
+ source.getDataSourceType());
+ return readFromFile(fp, format);
+ }
+
}
-/*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- *
- * This file is part of Jalview.
- *
- * 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 Jalview. If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
- */
package jalview.io;
-import jalview.datamodel.AlignmentI;
-import jalview.datamodel.SequenceI;
-import jalview.gui.AlignViewport;
+import jalview.api.AlignExportSettingI;
+import jalview.bin.Cache;
+import jalview.datamodel.AlignmentExportData;
+import jalview.exceptions.NoFileSelectedException;
import jalview.gui.AlignmentPanel;
-import jalview.gui.FeatureRenderer;
-import jalview.gui.SequenceRenderer;
+import jalview.gui.IProgressIndicator;
import jalview.util.MessageManager;
-import java.awt.Color;
-import java.awt.Font;
-import java.io.PrintWriter;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.util.Objects;
-public class HTMLOutput
+public abstract class HTMLOutput implements Runnable
{
- AlignViewport av;
+ protected AlignmentPanel ap;
- SequenceRenderer sr;
+ protected long pSessionId;
- jalview.renderer.seqfeatures.FeatureRenderer fr;
+ protected IProgressIndicator pIndicator;
- Color color;
+ protected File generatedFile;
- public HTMLOutput(AlignmentPanel ap, SequenceRenderer sr,
- FeatureRenderer fr1)
+ public HTMLOutput(AlignmentPanel ap)
{
- this.av = ap.av;
- this.sr = sr;
-
- fr = new FeatureRenderer(ap);
- fr.transferSettings(fr1);
-
- JalviewFileChooser chooser = new JalviewFileChooser(
- jalview.bin.Cache.getProperty("LAST_DIRECTORY"),
- new String[] { "html" }, new String[] { "HTML files" },
- "HTML files");
-
- chooser.setFileView(new JalviewFileView());
- chooser.setDialogTitle(MessageManager.getString("label.save_as_html"));
- chooser.setToolTipText(MessageManager.getString("action.save"));
-
- int value = chooser.showSaveDialog(null);
-
- if (value == JalviewFileChooser.APPROVE_OPTION)
+ if (ap != null)
{
- String choice = chooser.getSelectedFile().getPath();
- jalview.bin.Cache.setProperty("LAST_DIRECTORY", chooser
- .getSelectedFile().getParent());
-
- try
- {
- PrintWriter out = new java.io.PrintWriter(new java.io.FileWriter(
- choice));
- out.println("<HTML>");
- out.println("<style type=\"text/css\">");
- out.println("<!--");
- out.print("td {font-family: \"" + av.getFont().getFamily()
- + "\", \"" + av.getFont().getName() + "\", mono; "
- + "font-size: " + av.getFont().getSize() + "px; ");
-
- if (av.getFont().getStyle() == Font.BOLD)
- {
- out.print("font-weight: BOLD; ");
- }
-
- if (av.getFont().getStyle() == Font.ITALIC)
- {
- out.print("font-style: italic; ");
- }
-
- out.println("text-align: center; }");
-
- out.println("-->");
- out.println("</style>");
- out.println("<BODY>");
-
- if (av.getWrapAlignment())
- {
- drawWrappedAlignment(out);
- }
- else
- {
- drawUnwrappedAlignment(out);
- }
-
- out.println("\n</body>\n</html>");
- out.close();
- jalview.util.BrowserLauncher.openURL("file:///" + choice);
- } catch (Exception ex)
- {
- ex.printStackTrace();
- }
+ this.ap = ap;
+ this.pIndicator = ap.alignFrame;
}
}
- void drawUnwrappedAlignment(PrintWriter out)
+ public String getBioJSONData()
{
- out.println("<table border=\"1\"><tr><td>\n");
- out.println("<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n");
-
- // ////////////
- SequenceI seq;
- AlignmentI alignment = av.getAlignment();
-
- // draws the top row, the measure rule
- out.println("<tr><td colspan=\"6\"></td>");
-
- int i = 0;
+ return getBioJSONData(null);
+ }
- for (i = 10; i < (alignment.getWidth() - 10); i += 10)
+ public String getBioJSONData(AlignExportSettingI exportSettings)
+ {
+ if (!isEmbedData())
{
- out.println("<td colspan=\"9\">" + i + "<br>|</td><td></td>");
+ return null;
}
-
- out.println("<td colspan=\"3\"></td><td colspan=\"3\">" + i
- + "<br>|</td>");
- out.println("</tr>");
-
- for (i = 0; i < alignment.getHeight(); i++)
+ if (exportSettings == null)
{
- seq = alignment.getSequenceAt(i);
-
- String id = seq.getDisplayId(av.getShowJVSuffix());
-
- out.println("<tr><td nowrap>" + id + " </td>");
-
- for (int res = 0; res < seq.getLength(); res++)
+ exportSettings = new AlignExportSettingI()
{
- if (!jalview.util.Comparison.isGap(seq.getCharAt(res)))
+ @Override
+ public boolean isExportHiddenSequences()
{
- color = sr.getResidueBoxColour(seq, res);
+ return true;
+ }
- color = fr.findFeatureColour(color, seq, res);
+ @Override
+ public boolean isExportHiddenColumns()
+ {
+ return true;
}
- else
+
+ @Override
+ public boolean isExportAnnotations()
{
- color = Color.white;
+ return true;
}
- if (color.getRGB() < -1)
+ @Override
+ public boolean isExportFeatures()
{
- out.println("<td bgcolor=\"#"
- + jalview.util.Format.getHexString(color) + "\">"
- + seq.getCharAt(res) + "</td>");
+ return true;
}
- else
+
+ @Override
+ public boolean isExportGroups()
{
- out.println("<td>" + seq.getCharAt(res) + "</td>");
+ return true;
}
- }
- out.println("</tr>");
+ @Override
+ public boolean isCancelled()
+ {
+ return false;
+ }
+ };
}
-
- // ////////////
- out.println("</table>");
- out.println("</td></tr></table>");
+ AlignmentExportData exportData = jalview.gui.AlignFrame
+ .getAlignmentForExport(FileFormat.Json,
+ ap.getAlignViewport(), exportSettings);
+ String bioJSON = new FormatAdapter(ap, exportData.getSettings())
+ .formatSequences(FileFormat.Json, exportData.getAlignment(),
+ exportData.getOmitHidden(), exportData
+ .getStartEndPostions(), ap.getAlignViewport()
+ .getColumnSelection());
+ return bioJSON;
}
- void drawWrappedAlignment(PrintWriter out)
+ /**
+ * Read a template file content as string
+ *
+ * @param file
+ * - the file to be read
+ * @return File content as String
+ * @throws IOException
+ */
+ public static String readFileAsString(File file) throws IOException
{
- // //////////////////////////////////
- // / How many sequences and residues can we fit on a printable page?
- AlignmentI al = av.getAlignment();
- SequenceI seq;
- String r;
- String g;
- String b;
-
- out.println("<table border=\"1\"><tr><td>\n");
- out.println("<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n");
-
- for (int startRes = 0; startRes < al.getWidth(); startRes += av
- .getWrappedWidth())
+ InputStreamReader isReader = null;
+ BufferedReader buffReader = null;
+ StringBuilder sb = new StringBuilder();
+ Objects.requireNonNull(file, "File must not be null!");
+ @SuppressWarnings("deprecation")
+ URL url = file.toURL();
+ if (url != null)
{
- int endRes = startRes + av.getWrappedWidth();
-
- if (endRes > al.getWidth())
- {
- endRes = al.getWidth();
- }
-
- if (av.getScaleAboveWrapped())
+ try
{
- out.println("<tr>");
-
- if (av.getScaleLeftWrapped())
+ isReader = new InputStreamReader(url.openStream());
+ buffReader = new BufferedReader(isReader);
+ String line;
+ String lineSeparator = System.getProperty("line.separator");
+ while ((line = buffReader.readLine()) != null)
{
- out.println("<td colspan=\"7\"> </td>");
+ sb.append(line).append(lineSeparator);
}
- else
- {
- out.println("<td colspan=\"6\"> </td>");
- }
-
- for (int i = startRes + 10; i < endRes; i += 10)
- {
- out.println("<td colspan=\"9\">" + i + "<br>|</td><td></td>");
- }
-
- out.println("</tr>");
- }
-
- int startPos, endPos;
- for (int s = 0; s < al.getHeight(); s++)
+
+ } catch (Exception ex)
{
- out.println("<tr>");
- seq = al.getSequenceAt(s);
-
- startPos = seq.findPosition(startRes);
- endPos = seq.findPosition(endRes) - 1;
-
- String id = seq.getDisplayId(av.getShowJVSuffix());
-
- out.println("<td nowrap>" + id + " </td>");
-
- if (av.getScaleLeftWrapped())
- {
- if (startPos > seq.getEnd() || endPos == 0)
- {
- out.println("<td nowrap> </td>");
- }
- else
- {
- out.println("<td nowrap>" + startPos + " </td>");
- }
- }
-
- for (int res = startRes; res < endRes; res++)
- {
- if (!jalview.util.Comparison.isGap(seq.getCharAt(res)))
- {
- color = sr.getResidueBoxColour(seq, res);
-
- color = fr.findFeatureColour(color, seq, res);
- }
- else
- {
- color = Color.white;
- }
-
- if (color.getRGB() < -1)
- {
- out.println("<td bgcolor=\"#"
- + jalview.util.Format.getHexString(color) + "\">"
- + seq.getCharAt(res) + "</td>");
- }
- else
- {
- out.println("<td>" + seq.getCharAt(res) + "</td>");
- }
-
- }
-
- if (av.getScaleRightWrapped()
- && endRes < startRes + av.getWrappedWidth())
+ ex.printStackTrace();
+ } finally
+ {
+ if (isReader != null)
{
- out.println("<td colspan=\""
- + (startRes + av.getWrappedWidth() - endRes) + "\">"
- + " </td>");
+ isReader.close();
}
-
- if (av.getScaleRightWrapped() && startPos < endPos)
+
+ if (buffReader != null)
{
- out.println("<td nowrap> " + endPos + " </td>");
+ buffReader.close();
}
-
- out.println("</tr>");
- }
-
- if (endRes < al.getWidth())
- {
- out.println("<tr><td height=\"5\"></td></tr>");
}
}
-
- out.println("</table>");
- out.println("</table>");
+ return sb.toString();
}
public static String getImageMapHTML()
+ "initToolTips(); //--></script>\n");
}
-}
+
+ public String getOutputFile() throws NoFileSelectedException
+ {
+ String selectedFile = null;
+ if (pIndicator != null && !isHeadless())
+ {
+ pIndicator.setProgressBar(MessageManager.formatMessage(
+ "status.waiting_for_user_to_select_output_file", "HTML"),
+ pSessionId);
+ }
+
+ JalviewFileChooser jvFileChooser = new JalviewFileChooser(
+ Cache.getProperty("LAST_DIRECTORY"), "html", "HTML files");
+ jvFileChooser.setFileView(new JalviewFileView());
+
+ jvFileChooser.setDialogTitle(MessageManager
+ .getString("label.save_as_html"));
+ jvFileChooser.setToolTipText(MessageManager.getString("action.save"));
+
+ int fileChooserOpt = jvFileChooser.showSaveDialog(null);
+ if (fileChooserOpt == JalviewFileChooser.APPROVE_OPTION)
+ {
+ jalview.bin.Cache.setProperty("LAST_DIRECTORY", jvFileChooser
+ .getSelectedFile().getParent());
+ selectedFile = jvFileChooser.getSelectedFile().getPath();
+ }
+ else
+ {
+ throw new NoFileSelectedException("No file was selected.");
+ }
+ return selectedFile;
+ }
+
+ protected void setProgressMessage(String message)
+ {
+ if (pIndicator != null && !isHeadless())
+ {
+ pIndicator.setProgressBar(message, pSessionId);
+ }
+ else
+ {
+ System.out.println(message);
+ }
+ }
+
+ /**
+ * Answers true if HTML export is invoke in headless mode or false otherwise
+ *
+ * @return
+ */
+ protected boolean isHeadless()
+ {
+ return System.getProperty("java.awt.headless") != null
+ && System.getProperty("java.awt.headless").equals("true");
+ }
+
+ /**
+ * This method provides implementation of consistent behaviour which should
+ * occur before a HTML file export. It MUST be called at the start of the
+ * exportHTML() method implementation.
+ */
+ protected void exportStarted()
+ {
+ pSessionId = System.currentTimeMillis();
+ }
+
+ /**
+ * This method provides implementation of consistent behaviour which should
+ * occur after a HTML file export. It MUST be called at the end of the
+ * exportHTML() method implementation.
+ */
+ protected void exportCompleted()
+ {
+ if (isLaunchInBrowserAfterExport() && !isHeadless())
+ {
+ try
+ {
+ jalview.util.BrowserLauncher
+ .openURL("file:///" + getExportedFile());
+ } catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ /**
+ * if this answers true then BioJSON data will be embedded to the exported
+ * HTML file otherwise it won't be embedded.
+ *
+ * @return
+ */
+ public abstract boolean isEmbedData();
+
+ /**
+ * if this answers true then the generated HTML file is opened for viewing in
+ * a browser after its generation otherwise it won't be opened in a browser
+ *
+ * @return
+ */
+ public abstract boolean isLaunchInBrowserAfterExport();
+
+ /**
+ * handle to the generated HTML file
+ *
+ * @return
+ */
+ public abstract File getExportedFile();
+
+ /**
+ * This is the main method to handle the HTML generation.
+ *
+ * @param outputFile
+ * the file path of the generated HTML
+ */
+ public abstract void exportHTML(String outputFile);
+}
\ No newline at end of file
super(source);
}
- public HtmlFile(String inFile, String type) throws IOException
+ public HtmlFile(String inFile, DataSourceType sourceType)
+ throws IOException
{
- super(inFile, type);
+ super(inFile, sourceType);
}
@Override
}
@Override
- public String print()
+ public String print(SequenceI[] sqs, boolean jvsuffix)
{
throw new UnsupportedOperationException(
"Print method of HtmlFile is not supported!");
*/
package jalview.io;
-import jalview.api.AlignExportSettingI;
-import jalview.api.FeatureRenderer;
-import jalview.datamodel.AlignmentExportData;
-import jalview.datamodel.SequenceI;
-import jalview.gui.AlignViewport;
+import jalview.exceptions.NoFileSelectedException;
import jalview.gui.AlignmentPanel;
import jalview.gui.HTMLOptions;
-import jalview.gui.IProgressIndicator;
import jalview.gui.OOMWarning;
import jalview.math.AlignmentDimension;
import jalview.util.MessageManager;
-import java.awt.Color;
-import java.awt.FontMetrics;
import java.awt.Graphics;
-import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.io.File;
import java.io.FileOutputStream;
+import java.io.IOException;
import org.jfree.graphics2d.svg.SVGGraphics2D;
import org.jfree.graphics2d.svg.SVGHints;
-public class HtmlSvgOutput
+public class HtmlSvgOutput extends HTMLOutput
{
- AlignViewport av;
- FeatureRenderer fr;
- AlignmentPanel ap;
-
- private IProgressIndicator pIndicator;
-
- private long pSessionId;
-
- private boolean headless;
-
- public HtmlSvgOutput(File file, AlignmentPanel ap)
+ public HtmlSvgOutput(AlignmentPanel ap)
{
- this.av = ap.av;
- this.ap = ap;
- fr = ap.cloneFeatureRenderer();
- generateHtmlSvgOutput(file);
+ super(ap);
}
- public void generateHtmlSvgOutput(File file)
+ @Override
+ public void exportHTML(String outputFile)
{
- pIndicator = ap.alignFrame;
- pSessionId = System.currentTimeMillis();
+ exportStarted();
try
{
- headless = (System.getProperty("java.awt.headless") != null && System
- .getProperty("java.awt.headless").equals("true"));
- if (file == null)
+ if (outputFile == null)
{
- setProgressMessage(MessageManager.formatMessage(
- "status.waiting_for_user_to_select_output_file", "HTML"));
- JalviewFileChooser chooser = getHTMLChooser();
- chooser.setFileView(new jalview.io.JalviewFileView());
- chooser.setDialogTitle(ap.alignFrame.getTitle());
- chooser.setToolTipText(MessageManager.getString("action.save"));
- int value = chooser.showSaveDialog(ap.alignFrame);
-
- if (value == jalview.io.JalviewFileChooser.APPROVE_OPTION)
- {
- jalview.bin.Cache.setProperty("LAST_DIRECTORY", chooser
- .getSelectedFile().getParent());
- file = chooser.getSelectedFile();
- ap.alignFrame.repaint();
- }
- else
- {
- setProgressMessage(MessageManager.formatMessage(
- "status.cancelled_image_export_operation", "HTML"));
- return;
- }
+ outputFile = getOutputFile();
}
+ generatedFile = new File(outputFile);
+ } catch (NoFileSelectedException e)
+ {
+ setProgressMessage(MessageManager.formatMessage(
+ "status.cancelled_image_export_operation", "HTML"));
+ return;
} catch (Exception e)
{
- pIndicator.setProgressBar(MessageManager.formatMessage(
- "info.error_creating_file", "HTML"), pSessionId);
+ setProgressMessage(MessageManager.formatMessage(
+ "info.error_creating_file", "HTML"));
e.printStackTrace();
return;
}
- final File fileX = file;
- new Thread()
- {
- @Override
- public void run()
- {
- try
- {
- setProgressMessage(null);
- setProgressMessage(MessageManager.formatMessage(
- "status.exporting_alignment_as_x_file", "HTML"));
- AlignmentDimension aDimension = ap.getAlignmentDimension();
- SVGGraphics2D g1 = new SVGGraphics2D(aDimension.getWidth(),
- aDimension.getHeight());
- SVGGraphics2D g2 = new SVGGraphics2D(aDimension.getWidth(),
- aDimension.getHeight());
-
- String renderStyle = jalview.bin.Cache.getDefault(
- "HTML_RENDERING", "Prompt each time");
-
- // If we need to prompt, and if the GUI is visible then
- // Prompt for rendering style
- if (renderStyle.equalsIgnoreCase("Prompt each time")
- && !(System.getProperty("java.awt.headless") != null && System
- .getProperty("java.awt.headless").equals("true")))
- {
- HTMLOptions svgOption = new HTMLOptions();
- renderStyle = svgOption.getValue();
-
- if (renderStyle == null || svgOption.cancelled)
- {
- setProgressMessage(MessageManager.formatMessage(
- "status.cancelled_image_export_operation", "HTML"));
- return;
- }
- }
-
- if (renderStyle.equalsIgnoreCase("Lineart"))
- {
- g1.setRenderingHint(SVGHints.KEY_DRAW_STRING_TYPE,
- SVGHints.VALUE_DRAW_STRING_TYPE_VECTOR);
- g2.setRenderingHint(SVGHints.KEY_DRAW_STRING_TYPE,
- SVGHints.VALUE_DRAW_STRING_TYPE_VECTOR);
- }
- if (av.getWrapAlignment())
- {
- printWrapped(aDimension.getWidth(), aDimension.getHeight(), 0,
- g1, g2);
- }
- else
- {
- printUnwrapped(aDimension.getWidth(), aDimension.getHeight(), 0,
- g1, g2);
- }
-
- String titleSvgData = g1.getSVGDocument();
- String alignSvgData = g2.getSVGDocument();
- String jsonData = null;
- boolean isEmbbedBioJSON = Boolean.valueOf(jalview.bin.Cache
- .getDefault("EXPORT_EMBBED_BIOJSON", "true"));
- if (isEmbbedBioJSON)
- {
- AlignExportSettingI exportSettings = new AlignExportSettingI()
- {
- @Override
- public boolean isExportHiddenSequences()
- {
- return true;
- }
-
- @Override
- public boolean isExportHiddenColumns()
- {
- return true;
- }
-
- @Override
- public boolean isExportAnnotations()
- {
- return true;
- }
-
- @Override
- public boolean isExportFeatures()
- {
- return true;
- }
-
- @Override
- public boolean isExportGroups()
- {
- return true;
- }
-
- @Override
- public boolean isCancelled()
- {
- return false;
- }
-
- };
- AlignmentExportData exportData = jalview.gui.AlignFrame
- .getAlignmentForExport(JSONFile.FILE_DESC, av,
- exportSettings);
- jsonData = new FormatAdapter(ap, exportData.getSettings())
- .formatSequences(JSONFile.FILE_DESC,
- exportData.getAlignment(),
- exportData.getOmitHidden(),
- exportData.getStartEndPostions(),
- av.getColumnSelection());
- }
- String htmlData = getHtml(titleSvgData, alignSvgData, jsonData,
- av.getWrapAlignment());
- FileOutputStream out = new FileOutputStream(fileX);
- out.write(htmlData.getBytes());
- out.flush();
- out.close();
- if (!(System.getProperty("java.awt.headless") != null && System
- .getProperty("java.awt.headless").equals("true")))
- {
- jalview.util.BrowserLauncher.openURL("file:///" + fileX);
- }
- } catch (OutOfMemoryError err)
- {
- System.out.println("########################\n"
- + "OUT OF MEMORY " + fileX + "\n"
- + "########################");
- new OOMWarning("Creating Image for " + fileX, err);
- } catch (Exception e)
- {
- e.printStackTrace();
- pIndicator.setProgressBar(MessageManager.formatMessage(
- "info.error_creating_file", "HTML"), pSessionId);
- }
- setProgressMessage(MessageManager.formatMessage(
- "status.export_complete", "HTML"));
- }
- }.start();
-
- }
-
- private void setProgressMessage(String message)
- {
- if (pIndicator != null && !headless)
- {
- pIndicator.setProgressBar(message, pSessionId);
- }
- else
- {
- System.out.println(message);
- }
- }
-
- static JalviewFileChooser getHTMLChooser()
- {
- return new jalview.io.JalviewFileChooser(
- jalview.bin.Cache.getProperty("LAST_DIRECTORY"),
- new String[] { "html" },
- new String[] { "Hypertext Markup Language" },
- "Hypertext Markup Language");
+ new Thread(this).start();
}
- public int printUnwrapped(int pwidth, int pheight, int pi, Graphics... pg)
+ public int printUnwrapped(int pwidth, int pheight, int pi,
+ Graphics idGraphics, Graphics alignmentGraphics)
throws PrinterException
{
- int idWidth = ap.getVisibleIdWidth(false);
- FontMetrics fm = ap.getFontMetrics(av.getFont());
- int scaleHeight = av.getCharHeight() + fm.getDescent();
-
- pg[0].setColor(Color.white);
- pg[0].fillRect(0, 0, pwidth, pheight);
- pg[0].setFont(av.getFont());
-
- // //////////////////////////////////
- // / How many sequences and residues can we fit on a printable page?
- int totalRes = (pwidth - idWidth) / av.getCharWidth();
- int totalSeq = (pheight - scaleHeight) / av.getCharHeight() - 1;
- int pagesWide = (av.getAlignment().getWidth() / totalRes) + 1;
-
- // ///////////////////////////
- // / Only print these sequences and residues on this page
- int startRes;
-
- // ///////////////////////////
- // / Only print these sequences and residues on this page
- int endRes;
-
- // ///////////////////////////
- // / Only print these sequences and residues on this page
- int startSeq;
-
- // ///////////////////////////
- // / Only print these sequences and residues on this page
- int endSeq;
- startRes = (pi % pagesWide) * totalRes;
- endRes = (startRes + totalRes) - 1;
-
- if (endRes > (av.getAlignment().getWidth() - 1))
- {
- endRes = av.getAlignment().getWidth() - 1;
- }
- startSeq = (pi / pagesWide) * totalSeq;
- endSeq = startSeq + totalSeq;
- if (endSeq > av.getAlignment().getHeight())
- {
- endSeq = av.getAlignment().getHeight();
- }
- int pagesHigh = ((av.getAlignment().getHeight() / totalSeq) + 1)
- * pheight;
- if (av.isShowAnnotation())
- {
- pagesHigh += ap.getAnnotationPanel().adjustPanelHeight() + 3;
- }
- pagesHigh /= pheight;
- if (pi >= (pagesWide * pagesHigh))
- {
- return Printable.NO_SUCH_PAGE;
- }
-
- // draw Scale
- pg[1].translate(0, 0);
- ap.getScalePanel().drawScale(pg[1], startRes, endRes, pwidth - idWidth,
- scaleHeight);
- pg[1].translate(-idWidth, scaleHeight);
-
- // //////////////
- // Draw the ids
- Color currentColor = null;
- Color currentTextColor = null;
- pg[0].translate(0, scaleHeight);
- pg[0].setFont(ap.getIdPanel().getIdCanvas().getIdfont());
- SequenceI seq;
- for (int i = startSeq; i < endSeq; i++)
- {
- seq = av.getAlignment().getSequenceAt(i);
- if ((av.getSelectionGroup() != null)
- && av.getSelectionGroup().getSequences(null).contains(seq))
- {
- currentColor = Color.gray;
- currentTextColor = Color.black;
- }
- else
- {
- currentColor = av.getSequenceColour(seq);
- currentTextColor = Color.black;
- }
- pg[0].setColor(currentColor);
- pg[0].fillRect(0, (i - startSeq) * av.getCharHeight(), idWidth,
- av.getCharHeight());
- pg[0].setColor(currentTextColor);
- int xPos = 0;
- if (av.isRightAlignIds())
- {
- fm = pg[0].getFontMetrics();
- xPos = idWidth
- - fm.stringWidth(seq.getDisplayId(av.getShowJVSuffix()))
- - 4;
- }
- pg[0].drawString(seq.getDisplayId(av.getShowJVSuffix()), xPos,
- (((i - startSeq) * av.getCharHeight()) + av.getCharHeight())
- - (av.getCharHeight() / 5));
- }
- pg[0].setFont(av.getFont());
- pg[0].translate(idWidth, 0);
-
- // draw main sequence panel
- pg[1].translate(idWidth, 0);
- ap.getSeqPanel().seqCanvas.drawPanel(pg[1], startRes, endRes, startSeq,
- endSeq, 0);
- if (av.isShowAnnotation() && (endSeq == av.getAlignment().getHeight()))
- {
- // draw annotation label - need to offset for current scroll position
- int offset = -ap.getAlabels().getScrollOffset();
- pg[0].translate(0, offset);
- pg[0].translate(-idWidth - 3,
- (endSeq - startSeq) * av.getCharHeight() + 3);
- ap.getAlabels().drawComponent(pg[0], idWidth);
- pg[0].translate(idWidth + 3, 0);
- pg[0].translate(0, -offset);
-
- // draw annotation - need to offset for current scroll position
- pg[1].translate(0, offset);
- pg[1].translate(-idWidth - 3,
- (endSeq - startSeq) * av.getCharHeight() + 3);
- pg[1].translate(idWidth + 3, 0);
- ap.getAnnotationPanel().renderer.drawComponent(
- ap.getAnnotationPanel(), av, pg[1], -1, startRes, endRes + 1);
- pg[1].translate(0, -offset);
- }
-
- return Printable.PAGE_EXISTS;
+ return ap.printUnwrapped(pwidth, pheight, pi, idGraphics,
+ alignmentGraphics);
}
public int printWrapped(int pwidth, int pheight, int pi, Graphics... pg)
throws PrinterException
{
- return ap.printWrappedAlignment(pg[1], pwidth, pheight, pi);
+ return ap.printWrappedAlignment(pwidth, pheight, pi, pg[0]);
}
private String getHtml(String titleSvg, String alignmentSvg,
.append(alignmentSvg).append("</div>");
htmlSvg.append("<script language=\"JavaScript\" type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js\"></script>\n"
+ "<script language=\"JavaScript\" type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js\"></script>\n");
-
}
// javascript for launching file in Jalview
-
htmlSvg.append("<script language=\"JavaScript\">\n");
htmlSvg.append("function openJalviewUsingCurrentUrl(){\n");
htmlSvg.append(" var json = JSON.parse(document.getElementById(\"seqData\").innerHTML);\n");
htmlSvg.append(" document.body.removeChild(myForm);\n");
htmlSvg.append("}\n");
- // jquery facebox for displaying raw BioJSON data");
if (jsonData != null)
{
- htmlSvg.append("/* Facebox (for jQuery)\n");
- htmlSvg.append("* version: 1.3\n");
- htmlSvg.append(" * @requires jQuery v1.2 or later\n");
- htmlSvg.append(" * @homepage https://github.com/defunkt/facebox\n");
- htmlSvg.append(" * Licensed under the MIT:\n");
- htmlSvg.append(" * http://www.opensource.org/licenses/mit-license.php\n");
- htmlSvg.append(" * Copyright Forever Chris Wanstrath, Kyle Neath\n");
- htmlSvg.append(" * Usage:\n");
- htmlSvg.append(" * jQuery(document).ready(function() {\n");
- htmlSvg.append(" * jQuery('a[rel*=facebox]').facebox()\n");
- htmlSvg.append(" * })\n");
- htmlSvg.append(" * <a href=\"#terms\" rel=\"facebox\">Terms</a>\n");
- htmlSvg.append(" * Loads the #terms div in the box\n");
- htmlSvg.append(" * <a href=\"terms.html\" rel=\"facebox\">Terms</a>\n");
- htmlSvg.append(" * Loads the terms.html page in the box\n");
- htmlSvg.append(" * <a href=\"terms.png\" rel=\"facebox\">Terms</a>\n");
- htmlSvg.append(" * Loads the terms.png image in the box\n");
- htmlSvg.append(" * You can also use it programmatically:\n");
- htmlSvg.append(" * jQuery.facebox('some html')\n");
- htmlSvg.append(" * jQuery.facebox('some html', 'my-groovy-style')\n");
- htmlSvg.append(" * The above will open a facebox with \"some html\" as the content.\n");
- htmlSvg.append(" * jQuery.facebox(function($) {\n");
- htmlSvg.append(" * $.get('blah.html', function(data) { $.facebox(data) })\n");
- htmlSvg.append(" * })\n");
- htmlSvg.append(" * The above will show a loading screen before the passed function is called,\n");
- htmlSvg.append(" * allowing for a better ajaxy experience.\n");
- htmlSvg.append(" * The facebox function can also display an ajax page, an image, or the contents of a div:\n");
- htmlSvg.append(" * jQuery.facebox({ ajax: 'remote.html' })\n");
- htmlSvg.append(" * jQuery.facebox({ ajax: 'remote.html' }, 'my-groovy-style')\n");
- htmlSvg.append(" * jQuery.facebox({ image: 'stairs.jpg' })\n");
- htmlSvg.append(" * jQuery.facebox({ image: 'stairs.jpg' }, 'my-groovy-style')\n");
- htmlSvg.append(" * jQuery.facebox({ div: '#box' })\n");
- htmlSvg.append(" * jQuery.facebox({ div: '#box' }, 'my-groovy-style')\n");
- htmlSvg.append(" * Want to close the facebox? Trigger the 'close.facebox' document event:\n");
- htmlSvg.append(" * jQuery(document).trigger('close.facebox')\n");
- htmlSvg.append(" * Facebox also has a bunch of other hooks:\n");
- htmlSvg.append(" * loading.facebox\n");
- htmlSvg.append(" * beforeReveal.facebox\n");
- htmlSvg.append(" * reveal.facebox (aliased as 'afterReveal.facebox')\n");
- htmlSvg.append(" * init.facebox\n");
- htmlSvg.append(" * afterClose.facebox\n");
- htmlSvg.append(" * Simply bind a function to any of these hooks:\n");
- htmlSvg.append(" * $(document).bind('reveal.facebox', function() { ...stuff to do after the facebox and contents are revealed... })\n");
- htmlSvg.append(" *\n");
- htmlSvg.append(" */\n");
- htmlSvg.append("(function($) {\n");
- htmlSvg.append(" $.facebox = function(data, klass) {\n");
- htmlSvg.append(" $.facebox.loading()\n");
- htmlSvg.append(" if (data.ajax) fillFaceboxFromAjax(data.ajax, klass)\n");
- htmlSvg.append(" else if (data.image) fillFaceboxFromImage(data.image, klass)\n");
- htmlSvg.append(" else if (data.div) fillFaceboxFromHref(data.div, klass)\n");
- htmlSvg.append(" else if ($.isFunction(data)) data.call($)\n");
- htmlSvg.append(" else $.facebox.reveal(data, klass)\n");
- htmlSvg.append(" }\n");
-
- htmlSvg.append(" $.extend($.facebox, {\n");
- htmlSvg.append(" settings: {\n");
- htmlSvg.append(" opacity : 0.2,\n");
- htmlSvg.append(" overlay : true,\n");
- htmlSvg.append(" loadingImage : 'https://raw.githubusercontent.com/jalview/biojson/gh-pages/images/loading.gif',\n");
- htmlSvg.append(" closeImage : 'https://raw.githubusercontent.com/jalview/biojson/gh-pages/images/cancel.png',\n");
- htmlSvg.append(" imageTypes : [ 'png', 'jpg', 'jpeg', 'gif' ],\n");
- htmlSvg.append(" faceboxHtml : '<div id=\"facebox\" style=\"display:none; width: 95%; height: 85%; overflow: auto;\"> ");
- htmlSvg.append(" <div class=\"popup\"> ");
- htmlSvg.append(" <div class=\"content\"> ");
- htmlSvg.append(" </div> ");
- htmlSvg.append(" <a href=\"#\" class=\"close\"></a> ");
- htmlSvg.append(" </div> ");
- htmlSvg.append(" </div>'\n");
- htmlSvg.append(" }, \n");
- htmlSvg.append(" loading: function() {\n");
- htmlSvg.append(" init()\n");
- htmlSvg.append(" if ($('#facebox .loading').length == 1) return true\n");
- htmlSvg.append(" showOverlay() \n");
- htmlSvg.append(" $('#facebox .content').empty().\n");
- htmlSvg.append(" append('<div class=\"loading\"><img src=\"'+$.facebox.settings.loadingImage+'\"/></div>')\n");
- htmlSvg.append(" $('#facebox').show().css({\n");
- htmlSvg.append(" top: getPageScroll()[1] + (getPageHeight() / 10),\n");
- htmlSvg.append(" left: $(window).width() / 2 - ($('#facebox .popup').outerWidth() / 2)\n");
- htmlSvg.append(" }) \n");
- htmlSvg.append(" $(document).bind('keydown.facebox', function(e) {\n");
- htmlSvg.append(" if (e.keyCode == 27) $.facebox.close()\n");
- htmlSvg.append(" return true\n");
- htmlSvg.append(" })\n");
- htmlSvg.append(" $(document).trigger('loading.facebox')\n");
- htmlSvg.append(" },\n");
- htmlSvg.append(" reveal: function(data, klass) {\n");
- htmlSvg.append(" $(document).trigger('beforeReveal.facebox')\n");
- htmlSvg.append(" if (klass) $('#facebox .content').addClass(klass)\n");
- htmlSvg.append(" $('#facebox .content').empty().append('<pre><code>'+JSON.stringify(JSON.parse(data),null,4)+'</pre></code>')\n");
- htmlSvg.append(" $('#facebox .popup').children().fadeIn('normal')\n");
- htmlSvg.append(" $('#facebox').css('left', $(window).width() / 2 - ($('#facebox .popup').outerWidth() / 2))\n");
- htmlSvg.append(" $(document).trigger('reveal.facebox').trigger('afterReveal.facebox')\n");
- htmlSvg.append(" }, \n");
- htmlSvg.append(" close: function() {\n");
- htmlSvg.append(" $(document).trigger('close.facebox')\n");
- htmlSvg.append(" return false\n");
- htmlSvg.append(" }\n");
- htmlSvg.append(" })\n");
- htmlSvg.append(" $.fn.facebox = function(settings) {\n");
- htmlSvg.append(" if ($(this).length == 0) return \n");
- htmlSvg.append(" init(settings) \n");
- htmlSvg.append(" function clickHandler() {\n");
- htmlSvg.append(" $.facebox.loading(true) \n");
- htmlSvg.append(" // support for rel=\"facebox.inline_popup\" syntax, to add a class\n");
- htmlSvg.append(" // also supports deprecated \"facebox[.inline_popup]\" syntax\n");
- htmlSvg.append(" var klass = this.rel.match(/facebox\\[?\\.(\\w+)\\]?/)\n");
- htmlSvg.append(" if (klass) klass = klass[1]\n");
- htmlSvg.append(" fillFaceboxFromHref(this.href, klass)\n");
- htmlSvg.append(" return false\n");
- htmlSvg.append(" } \n");
- htmlSvg.append(" return this.bind('click.facebox', clickHandler)\n");
- htmlSvg.append(" }\n");
- htmlSvg.append(" // called one time to setup facebox on this page\n");
- htmlSvg.append(" function init(settings) {\n");
- htmlSvg.append(" if ($.facebox.settings.inited) return true\n");
- htmlSvg.append(" else $.facebox.settings.inited = true\n");
- htmlSvg.append(" $(document).trigger('init.facebox')\n");
- htmlSvg.append(" makeCompatible()\n");
- htmlSvg.append(" var imageTypes = $.facebox.settings.imageTypes.join('|')\n");
- htmlSvg.append(" $.facebox.settings.imageTypesRegexp = new RegExp('\\\\.(' + imageTypes + ')(\\\\?.*)?$', 'i')\n");
-
- htmlSvg.append(" if (settings) $.extend($.facebox.settings, settings)\n");
- htmlSvg.append(" $('body').append($.facebox.settings.faceboxHtml)\n");
-
- htmlSvg.append(" var preload = [ new Image(), new Image() ]\n");
- htmlSvg.append(" preload[0].src = $.facebox.settings.closeImage\n");
- htmlSvg.append(" preload[1].src = $.facebox.settings.loadingImage\n");
-
- htmlSvg.append(" $('#facebox').find('.b:first, .bl').each(function() {\n");
- htmlSvg.append(" preload.push(new Image())\n");
- htmlSvg.append(" preload.slice(-1).src = $(this).css('background-image').replace(/url\\((.+)\\)/, '$1')\n");
- htmlSvg.append(" })\n");
-
- htmlSvg.append(" $('#facebox .close')\n");
- htmlSvg.append(" .click($.facebox.close)\n");
- htmlSvg.append(" .append('<img src=\"'\n");
- htmlSvg.append(" + $.facebox.settings.closeImage\n");
- htmlSvg.append(" + '\" class=\"close_image\" title=\"close\">')\n");
- htmlSvg.append(" }\n");
-
- htmlSvg.append(" // getPageScroll() by quirksmode.com\n");
- htmlSvg.append(" function getPageScroll() {\n");
- htmlSvg.append(" var xScroll, yScroll;\n");
- htmlSvg.append(" if (self.pageYOffset) {\n");
- htmlSvg.append(" yScroll = self.pageYOffset;\n");
- htmlSvg.append(" xScroll = self.pageXOffset;\n");
- htmlSvg.append(" } else if (document.documentElement && document.documentElement.scrollTop) { // Explorer 6 Strict\n");
- htmlSvg.append(" yScroll = document.documentElement.scrollTop;\n");
- htmlSvg.append(" xScroll = document.documentElement.scrollLeft;\n");
- htmlSvg.append(" } else if (document.body) {// all other Explorers\n");
- htmlSvg.append(" yScroll = document.body.scrollTop;\n");
- htmlSvg.append(" xScroll = document.body.scrollLeft;\n");
- htmlSvg.append(" }\n");
- htmlSvg.append(" return new Array(xScroll,yScroll)\n");
- htmlSvg.append(" }\n");
-
- // Adapted from getPageSize() by quirksmode.com");
- htmlSvg.append(" function getPageHeight() {\n");
- htmlSvg.append(" var windowHeight\n");
- htmlSvg.append(" if (self.innerHeight) { // all except Explorer\n");
- htmlSvg.append(" windowHeight = self.innerHeight;\n");
- htmlSvg.append(" } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode\n");
- htmlSvg.append(" windowHeight = document.documentElement.clientHeight;\n");
- htmlSvg.append(" } else if (document.body) { // other Explorers\n");
- htmlSvg.append(" windowHeight = document.body.clientHeight;\n");
- htmlSvg.append(" }\n");
- htmlSvg.append(" return windowHeight\n");
- htmlSvg.append(" }\n");
-
- htmlSvg.append(" // Backwards compatibility\n");
- htmlSvg.append(" function makeCompatible() {\n");
- htmlSvg.append(" var $s = $.facebox.settings \n");
- htmlSvg.append(" $s.loadingImage = $s.loading_image || $s.loadingImage\n");
- htmlSvg.append(" $s.closeImage = $s.close_image || $s.closeImage\n");
- htmlSvg.append(" $s.imageTypes = $s.image_types || $s.imageTypes\n");
- htmlSvg.append(" $s.faceboxHtml = $s.facebox_html || $s.faceboxHtml\n");
- htmlSvg.append(" }\n");
-
- htmlSvg.append(" // Figures out what you want to display and displays it\n");
- htmlSvg.append(" // formats are:\n");
- htmlSvg.append(" // div: #id\n");
- htmlSvg.append(" // image: blah.extension\n");
- htmlSvg.append(" // ajax: anything else\n");
- htmlSvg.append(" function fillFaceboxFromHref(href, klass) {\n");
- htmlSvg.append(" // div\n");
- htmlSvg.append(" if (href.match(/#/)) {\n");
- htmlSvg.append(" var url = window.location.href.split('#')[0]\n");
- htmlSvg.append(" var target = href.replace(url,'')\n");
- htmlSvg.append(" if (target == '#') return\n");
- htmlSvg.append(" $.facebox.reveal($(target).html(), klass)\n");
-
- htmlSvg.append(" // image\n");
- htmlSvg.append(" } else if (href.match($.facebox.settings.imageTypesRegexp)) {\n");
- htmlSvg.append(" fillFaceboxFromImage(href, klass)\n");
- htmlSvg.append(" // ajax\n");
- htmlSvg.append(" } else {\n");
- htmlSvg.append(" fillFaceboxFromAjax(href, klass)\n");
- htmlSvg.append(" }\n");
- htmlSvg.append(" }\n");
-
- htmlSvg.append(" function fillFaceboxFromImage(href, klass) {\n");
- htmlSvg.append(" var image = new Image()\n");
- htmlSvg.append(" image.onload = function() {\n");
- htmlSvg.append(" $.facebox.reveal('<div class=\"image\"><img src=\"' + image.src + '\" /></div>', klass)\n");
- htmlSvg.append(" }\n");
- htmlSvg.append(" image.src = href\n");
- htmlSvg.append(" }\n");
-
- htmlSvg.append(" function fillFaceboxFromAjax(href, klass) {\n");
- htmlSvg.append(" $.facebox.jqxhr = $.get(href, function(data) { $.facebox.reveal(data, klass) })\n");
- htmlSvg.append(" }\n");
+ // JQuery FaceBox for displaying raw BioJSON data");
+ File faceBoxJsFile = new File("examples/javascript/facebox-1.3.js");
+ try
+ {
+ htmlSvg.append(HTMLOutput.readFileAsString(faceBoxJsFile));
+ } catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ }
- htmlSvg.append(" function skipOverlay() {\n");
- htmlSvg.append(" return $.facebox.settings.overlay == false || $.facebox.settings.opacity === null\n");
- htmlSvg.append(" }\n");
+ htmlSvg.append("</script>\n");
+ htmlSvg.append("</html>");
+ return htmlSvg.toString();
+ }
- htmlSvg.append(" function showOverlay() {\n");
- htmlSvg.append(" if (skipOverlay()) return\n");
+ @Override
+ public boolean isEmbedData()
+ {
+ return Boolean.valueOf(jalview.bin.Cache.getDefault(
+ "EXPORT_EMBBED_BIOJSON", "true"));
+ }
- htmlSvg.append(" if ($('#facebox_overlay').length == 0)\n");
- htmlSvg.append(" $(\"body\").append('<div id=\"facebox_overlay\" class=\"facebox_hide\"></div>')\n");
+ @Override
+ public boolean isLaunchInBrowserAfterExport()
+ {
+ return true;
+ }
- htmlSvg.append(" $('#facebox_overlay').hide().addClass(\"facebox_overlayBG\")\n");
- htmlSvg.append(" .css('opacity', $.facebox.settings.opacity)\n");
- htmlSvg.append(" .click(function() { $(document).trigger('close.facebox') })\n");
- htmlSvg.append(" .fadeIn(200)\n");
- htmlSvg.append(" return false\n");
- htmlSvg.append(" }\n");
+ @Override
+ public File getExportedFile()
+ {
+ return generatedFile;
+ }
- htmlSvg.append(" function hideOverlay() {\n");
- htmlSvg.append(" if (skipOverlay()) return \n");
- htmlSvg.append(" $('#facebox_overlay').fadeOut(200, function(){\n");
- htmlSvg.append(" $(\"#facebox_overlay\").removeClass(\"facebox_overlayBG\")\n");
- htmlSvg.append(" $(\"#facebox_overlay\").addClass(\"facebox_hide\")\n");
- htmlSvg.append(" $(\"#facebox_overlay\").remove()\n");
- htmlSvg.append(" }) \n");
- htmlSvg.append(" return false\n");
- htmlSvg.append(" }\n");
+ @Override
+ public void run()
+ {
+ try
+ {
+ setProgressMessage(null);
+ setProgressMessage(MessageManager.formatMessage(
+ "status.exporting_alignment_as_x_file", "HTML"));
+ AlignmentDimension aDimension = ap.getAlignmentDimension();
+ SVGGraphics2D idPanelGraphics = new SVGGraphics2D(
+ aDimension.getWidth(), aDimension.getHeight());
+ SVGGraphics2D alignPanelGraphics = new SVGGraphics2D(
+ aDimension.getWidth(), aDimension.getHeight());
+
+ String renderStyle = jalview.bin.Cache.getDefault("HTML_RENDERING",
+ "Prompt each time");
+
+ // If we need to prompt, and if the GUI is visible then
+ // Prompt for rendering style
+ if (renderStyle.equalsIgnoreCase("Prompt each time") && !isHeadless())
+ {
+ HTMLOptions svgOption = new HTMLOptions();
+ renderStyle = svgOption.getValue();
- htmlSvg.append(" $(document).bind('close.facebox', function() {\n");
- htmlSvg.append(" if ($.facebox.jqxhr) {\n");
- htmlSvg.append(" $.facebox.jqxhr.abort()\n");
- htmlSvg.append(" $.facebox.jqxhr = null\n");
- htmlSvg.append(" }\n");
- htmlSvg.append(" $(document).unbind('keydown.facebox')\n");
- htmlSvg.append(" $('#facebox').fadeOut(function() {\n");
- htmlSvg.append(" $('#facebox .content').removeClass().addClass('content')\n");
- htmlSvg.append(" $('#facebox .loading').remove()\n");
- htmlSvg.append(" $(document).trigger('afterClose.facebox')\n");
- htmlSvg.append(" })\n");
- htmlSvg.append(" hideOverlay()\n");
- htmlSvg.append(" })\n");
+ if (renderStyle == null || svgOption.cancelled)
+ {
+ setProgressMessage(MessageManager.formatMessage(
+ "status.cancelled_image_export_operation", "HTML"));
+ return;
+ }
+ }
- htmlSvg.append("})(jQuery);\n");
+ if (renderStyle.equalsIgnoreCase("Lineart"))
+ {
+ idPanelGraphics.setRenderingHint(SVGHints.KEY_DRAW_STRING_TYPE,
+ SVGHints.VALUE_DRAW_STRING_TYPE_VECTOR);
+ alignPanelGraphics.setRenderingHint(SVGHints.KEY_DRAW_STRING_TYPE,
+ SVGHints.VALUE_DRAW_STRING_TYPE_VECTOR);
+ }
+ if (ap.av.getWrapAlignment())
+ {
+ printWrapped(aDimension.getWidth(), aDimension.getHeight(), 0,
+ alignPanelGraphics);
+ }
+ else
+ {
+ printUnwrapped(aDimension.getWidth(), aDimension.getHeight(), 0,
+ idPanelGraphics, alignPanelGraphics);
+ }
+ String idPanelSvgData = idPanelGraphics.getSVGDocument();
+ String alignPanelSvgData = alignPanelGraphics.getSVGDocument();
+ String jsonData = getBioJSONData();
+ String htmlData = getHtml(idPanelSvgData, alignPanelSvgData,
+ jsonData, ap.av.getWrapAlignment());
+ FileOutputStream out = new FileOutputStream(generatedFile);
+ out.write(htmlData.getBytes());
+ out.flush();
+ out.close();
+ setProgressMessage(MessageManager.formatMessage(
+ "status.export_complete", "HTML"));
+ exportCompleted();
+ } catch (OutOfMemoryError err)
+ {
+ System.out.println("########################\n" + "OUT OF MEMORY "
+ + generatedFile + "\n" + "########################");
+ new OOMWarning("Creating Image for " + generatedFile, err);
+ } catch (Exception e)
+ {
+ e.printStackTrace();
+ setProgressMessage(MessageManager.formatMessage(
+ "info.error_creating_file", "HTML"));
}
-
- htmlSvg.append("</script>\n");
- htmlSvg.append("</html>");
- return htmlSvg.toString();
}
}
*/
public class IdentifyFile
{
- public static final String FeaturesFile = "GFF or Jalview features";
-
/**
* Identify a datasource's file content.
*
* instead.
*
* @param file
- * DOCUMENT ME!
- * @param protocol
- * DOCUMENT ME!
- * @return ID String
+ * @param sourceType
+ * @return
+ * @throws FileFormatException
*/
- public String identify(String file, String protocol)
+ public FileFormatI identify(String file, DataSourceType sourceType)
+ throws FileFormatException
{
String emessage = "UNIDENTIFIED FILE PARSING ERROR";
FileParse parser = null;
try
{
- parser = new FileParse(file, protocol);
+ parser = new FileParse(file, sourceType);
if (parser.isValid())
{
return identify(parser);
}
if (parser != null)
{
- return parser.errormessage;
+ throw new FileFormatException(parser.errormessage);
}
- return emessage;
+ throw new FileFormatException(emessage);
+ }
+
+ public FileFormatI identify(FileParse source) throws FileFormatException
+ {
+ return identify(source, true);
+ // preserves original behaviour prior to version 2.3
}
- public String identify(FileParse source)
+ public FileFormatI identify(AlignmentFileI file, boolean closeSource)
+ throws IOException
{
- return identify(source, true); // preserves original behaviour prior to
- // version 2.3
+ FileParse fp = new FileParse(file.getInFile(), file.getDataSourceType());
+ return identify(fp, closeSource);
}
/**
*
* @param source
* @param closeSource
- * @return filetype string
+ * @return (best guess at) file format
+ * @throws FileFormatException
*/
- public String identify(FileParse source, boolean closeSource)
+ public FileFormatI identify(FileParse source, boolean closeSource)
+ throws FileFormatException
{
- String reply = "PFAM";
+ FileFormatI reply = FileFormat.Pfam;
String data;
int bytesRead = 0;
int trimmedLength = 0;
if (fileStr.lastIndexOf(".jar") > -1
|| fileStr.lastIndexOf(".zip") > -1)
{
- reply = "Jalview";
+ reply = FileFormat.Jalview;
}
}
if (!lineswereskipped && data.startsWith("PK"))
{
- reply = "Jalview"; // archive.
+ reply = FileFormat.Jalview; // archive.
break;
}
}
if (data.startsWith("##GFF-VERSION"))
{
// GFF - possibly embedded in a Jalview features file!
- reply = FeaturesFile;
+ reply = FileFormat.Features;
break;
}
if (looksLikeFeatureData(data))
{
- reply = FeaturesFile;
+ reply = FileFormat.Features;
break;
}
if (data.indexOf("# STOCKHOLM") > -1)
{
- reply = "STH";
+ reply = FileFormat.Stockholm;
break;
}
if (data.indexOf("_ENTRY.ID") > -1
|| data.indexOf("_AUDIT_AUTHOR.NAME") > -1
|| data.indexOf("_ATOM_SITE.") > -1)
{
- reply = "mmCIF";
+ reply = FileFormat.MMCif;
break;
}
// if (data.indexOf(">") > -1)
{
// watch for PIR file attributes
checkPIR = true;
- reply = "PIR";
+ reply = FileFormat.PIR;
}
// could also be BLC file, read next line to confirm
data = source.nextLine();
if (data.indexOf(">") > -1)
{
- reply = "BLC";
+ reply = FileFormat.BLC;
}
else
{
{
if (c1 == 0 && c1 == data2.indexOf("*"))
{
- reply = "BLC";
+ reply = FileFormat.BLC;
}
else
{
- reply = "FASTA"; // possibly a bad choice - may be recognised as
+ reply = FileFormat.Fasta; // possibly a bad choice - may be
+ // recognised as
// PIR
}
// otherwise can still possibly be a PIR file
}
else
{
- reply = "FASTA";
+ reply = FileFormat.Fasta;
// TODO : AMSA File is indicated if there is annotation in the
// FASTA file - but FASTA will automatically generate this at the
// mo.
}
if (starterm)
{
- reply = "PIR";
+ reply = FileFormat.PIR;
break;
}
else
{
- reply = "FASTA"; // probably a bad choice!
+ reply = FileFormat.Fasta; // probably a bad choice!
}
}
// read as a FASTA (probably)
String upper = data.toUpperCase();
if (upper.substring(lessThan).startsWith("<HTML"))
{
- reply = HtmlFile.FILE_DESC;
+ reply = FileFormat.Html;
break;
}
if (upper.substring(lessThan).startsWith("<RNAML"))
{
- reply = "RNAML";
+ reply = FileFormat.Rnaml;
break;
}
}
if (data.indexOf("{\"") > -1)
{
- reply = JSONFile.FILE_DESC;
+ reply = FileFormat.Json;
break;
}
if ((data.length() < 1) || (data.indexOf("#") == 0))
if (data.indexOf("PILEUP") > -1)
{
- reply = "PileUp";
+ reply = FileFormat.Pileup;
break;
}
|| ((data.indexOf("!!") > -1) && (data.indexOf("!!") < data
.indexOf("_MULTIPLE_ALIGNMENT "))))
{
- reply = "MSF";
+ reply = FileFormat.MSF;
break;
}
else if (data.indexOf("CLUSTAL") > -1)
{
- reply = "CLUSTAL";
+ reply = FileFormat.Clustal;
break;
}
else if (data.indexOf("HEADER") == 0 || data.indexOf("ATOM") == 0)
{
- reply = "PDB";
+ reply = FileFormat.PDB;
break;
}
else if (data.matches("\\s*\\d+\\s+\\d+\\s*"))
{
- reply = PhylipFile.FILE_DESC;
+ reply = FileFormat.Phylip;
break;
}
else
{
if (!lineswereskipped && looksLikeJnetData(data))
{
- reply = "JnetFile";
+ reply = FileFormat.Jnet;
break;
}
}
} catch (Exception ex)
{
System.err.println("File Identification failed!\n" + ex);
- return source.errormessage;
+ throw new FileFormatException(source.errormessage);
}
if (trimmedLength == 0)
{
System.err
.println("File Identification failed! - Empty file was read.");
- return "EMPTY DATA FILE";
+ throw new FileFormatException("EMPTY DATA FILE");
}
+ System.out.println("File format identified as " + reply.toString());
return reply;
}
public static void main(String[] args)
{
-
for (int i = 0; args != null && i < args.length; i++)
{
IdentifyFile ider = new IdentifyFile();
- String type = ider.identify(args[i], AppletFormatAdapter.FILE);
+ FileFormatI type = null;
+ try
+ {
+ type = ider.identify(args[i], DataSourceType.FILE);
+ } catch (FileFormatException e)
+ {
+ System.err.println(String.format(
+ "Error '%s' identifying file type for %s", args[i],
+ e.getMessage()));
+ }
System.out.println("Type of " + args[i] + " is " + type);
}
if (args == null || args.length == 0)
*
* @param inFile
* DOCUMENT ME!
- * @param type
+ * @param sourceType
* DOCUMENT ME!
*
* @throws IOException
* DOCUMENT ME!
*/
- public JPredFile(String inFile, String type) throws IOException
+ public JPredFile(String inFile, DataSourceType sourceType)
+ throws IOException
{
- super(inFile, type);
+ super(inFile, sourceType);
}
public JPredFile(FileParse source) throws IOException
/**
* DOCUMENT ME!
*/
+ @Override
public void initData()
{
super.initData();
/**
* parse a JPred concise file into a sequence-alignment like object.
*/
+ @Override
public void parse() throws IOException
{
// JBPNote log.System.out.println("all read in ");
ascore = symbols.nextToken();
Float score = new Float(ascore);
- scores.addElement((Object) score);
+ scores.addElement(score);
}
Scores.put(id, scores);
for (int j = 0; j < i; j++)
{
scores.setElementAt(
- (Object) ((Float) scores.elementAt(j)).toString(), j);
+ ((Float) scores.elementAt(j)).toString(), j);
}
- scores.addElement((Object) ascore);
+ scores.addElement(ascore);
while (symbols.hasMoreTokens())
{
ascore = symbols.nextToken();
- scores.addElement((Object) ascore);
+ scores.addElement(ascore);
}
Scores.put(id, scores);
}
if (QuerySeqPosition == -1)
+ {
QuerySeqPosition = ids.size();
+ }
ids.addElement(name);
noSeqs++;
}
seq_entries.addElement(newseq.toString());
ids.addElement(id);
- Symscores.put((Object) id, (Object) new Integer(ids.size() - 1));
+ Symscores.put(id, new Integer(ids.size() - 1));
}
}
}
*
* @return String
*/
- public String print()
+ @Override
+ public String print(SequenceI[] sqs, boolean jvsuffix)
{
return "Not Supported";
}
{
try
{
- JPredFile blc = new JPredFile(args[0], "File");
+ JPredFile jpred = new JPredFile(args[0], DataSourceType.FILE);
- for (int i = 0; i < blc.seqs.size(); i++)
+ for (int i = 0; i < jpred.seqs.size(); i++)
{
- System.out.println(((Sequence) blc.seqs.elementAt(i)).getName()
+ System.out.println(((Sequence) jpred.seqs.elementAt(i)).getName()
+ "\n"
- + ((Sequence) blc.seqs.elementAt(i)).getSequenceAsString()
+ + ((Sequence) jpred.seqs.elementAt(i)).getSequenceAsString()
+ "\n");
}
} catch (java.io.IOException e)
}
// check that no stray annotations have been added at the end.
{
- SequenceI sq = (SequenceI) seqs.elementAt(j - 1);
+ SequenceI sq = seqs.elementAt(j - 1);
if (sq.getName().toUpperCase().startsWith("JPRED"))
{
annotSeqs.addElement(sq);
private String application = "Jalview";
- public static final String FILE_EXT = "json";
-
- public static final String FILE_DESC = "JSON";
-
private String globalColourScheme;
private boolean showSeqFeatures;
super(source);
}
- public JSONFile(String inFile, String type) throws IOException
+ public JSONFile(String inFile, DataSourceType sourceType)
+ throws IOException
{
- super(inFile, type);
+ super(inFile, sourceType);
}
@Override
}
@Override
- public String print()
+ public String print(SequenceI[] sqs, boolean jvsuffix)
{
String jsonOutput = null;
try
}
int count = 0;
- for (SequenceI seq : seqs)
+ for (SequenceI seq : sqs)
{
StringBuilder name = new StringBuilder();
name.append(seq.getName()).append("/").append(seq.getStart())
if (exportSettings.isExportFeatures())
{
jsonAlignmentPojo
- .setSeqFeatures(sequenceFeatureToJsonPojo(seqs, fr));
+ .setSeqFeatures(sequenceFeatureToJsonPojo(sqs, fr));
}
if (exportSettings.isExportGroups() && seqGroups != null
}
public List<SequenceFeaturesPojo> sequenceFeatureToJsonPojo(
- List<SequenceI> seqs, FeatureRenderer fr)
+ SequenceI[] sqs, FeatureRenderer fr)
{
displayedFeatures = (fr == null) ? null : fr.getFeaturesDisplayed();
List<SequenceFeaturesPojo> sequenceFeaturesPojo = new ArrayList<SequenceFeaturesPojo>();
- for (SequenceI seq : seqs)
+ if (sqs == null)
+ {
+ return sequenceFeaturesPojo;
+ }
+
+ for (SequenceI seq : sqs)
{
SequenceI dataSetSequence = seq.getDatasetSequence();
SequenceFeature[] seqFeatures = (dataSetSequence == null) ? null
//////////////////////////////////////////////////////////////////
package jalview.io;
+import jalview.gui.JvOptionPane;
import jalview.util.MessageManager;
import jalview.util.Platform;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
import java.util.StringTokenizer;
import java.util.Vector;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JFileChooser;
import javax.swing.JList;
-import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.SpringLayout;
+import javax.swing.plaf.basic.BasicFileChooserUI;
/**
* Enhanced file chooser dialog box.
*/
public class JalviewFileChooser extends JFileChooser
{
+ /**
+ * Factory method to return a file chooser that offers readable alignment file
+ * formats
+ *
+ * @param directory
+ * @param selected
+ * @return
+ */
+ public static JalviewFileChooser forRead(String directory, String selected)
+ {
+ List<String> extensions = new ArrayList<String>();
+ List<String> descs = new ArrayList<String>();
+ for (FileFormatI format : FileFormat.values())
+ {
+ if (format.isReadable())
+ {
+ extensions.add(format.getExtensions());
+ descs.add(format.toString());
+ }
+ }
+ return new JalviewFileChooser(directory,
+ extensions.toArray(new String[extensions.size()]),
+ descs.toArray(new String[descs.size()]), selected, true);
+ }
+
+ /**
+ * Factory method to return a file chooser that offers writable alignment file
+ * formats
+ *
+ * @param directory
+ * @param selected
+ * @return
+ */
+ public static JalviewFileChooser forWrite(String directory,
+ String selected)
+ {
+ // TODO in Java 8, forRead and forWrite can be a single method
+ // with a lambda expression parameter for isReadable/isWritable
+ List<String> extensions = new ArrayList<String>();
+ List<String> descs = new ArrayList<String>();
+ for (FileFormatI format : FileFormat.values())
+ {
+ if (format.isWritable())
+ {
+ extensions.add(format.getExtensions());
+ descs.add(format.toString());
+ }
+ }
+ return new JalviewFileChooser(directory,
+ extensions.toArray(new String[extensions.size()]),
+ descs.toArray(new String[descs.size()]), selected, false);
+ }
+
public JalviewFileChooser(String dir)
{
super(safePath(dir));
setAccessory(new RecentlyOpened());
}
+ public JalviewFileChooser(String dir, String[] suffix, String[] desc,
+ String selected)
+ {
+ this(dir, suffix, desc, selected, true);
+ }
+
+ /**
+ * Constructor for a single choice of file extension and description
+ *
+ * @param dir
+ * @param extension
+ * @param desc
+ */
+ public JalviewFileChooser(String dir, String extension, String desc)
+ {
+ // TODO inline dir as Cache.getProperty("LAST_DIRECTORY") ? if applet
+ // builds ok
+ this(dir, new String[] { extension }, new String[] { desc }, desc,
+ true);
+ }
+
+ JalviewFileChooser(String dir, String[] extensions, String[] descs,
+ String selected, boolean allFiles)
+ {
+ super(safePath(dir));
+ if (extensions.length == descs.length)
+ {
+ List<String[]> formats = new ArrayList<String[]>();
+ for (int i = 0; i < extensions.length; i++)
+ {
+ formats.add(new String[] { extensions[i], descs[i] });
+ }
+ init(formats, selected, allFiles);
+ }
+ else
+ {
+ System.err.println("JalviewFileChooser arguments mismatch: "
+ + extensions + ", " + descs);
+ }
+ }
+
private static File safePath(String dir)
{
if (dir == null)
return f;
}
- public JalviewFileChooser(String dir, String[] suffix, String[] desc,
- String selected, boolean selectAll)
- {
- super(safePath(dir));
- init(suffix, desc, selected, selectAll);
- }
-
- public JalviewFileChooser(String dir, String[] suffix, String[] desc,
- String selected)
- {
- super(safePath(dir));
- init(suffix, desc, selected, true);
- }
-
- void init(String[] suffix, String[] desc, String selected,
- boolean selectAll)
+ /**
+ *
+ * @param formats
+ * a list of {extensions, description} for each file format
+ * @param selected
+ * @param allFiles
+ * if true, 'any format' option is included
+ */
+ void init(List<String[]> formats, String selected, boolean allFiles)
{
JalviewFileFilter chosen = null;
// SelectAllFilter needs to be set first before adding further
// file filters to fix bug on Mac OSX
- setAcceptAllFileFilterUsed(selectAll);
+ setAcceptAllFileFilterUsed(allFiles);
- for (int i = 0; i < suffix.length; i++)
+ for (String[] format : formats)
{
- JalviewFileFilter jvf = new JalviewFileFilter(suffix[i], desc[i]);
+ JalviewFileFilter jvf = new JalviewFileFilter(format[0], format[1]);
addChoosableFileFilter(jvf);
- if ((selected != null) && selected.equalsIgnoreCase(desc[i]))
+ if ((selected != null) && selected.equalsIgnoreCase(format[1]))
{
chosen = jvf;
}
try
{
- if (getUI() instanceof javax.swing.plaf.basic.BasicFileChooserUI)
+ if (getUI() instanceof BasicFileChooserUI)
{
- final javax.swing.plaf.basic.BasicFileChooserUI ui = (javax.swing.plaf.basic.BasicFileChooserUI) getUI();
- final String name = ui.getFileName().trim();
+ final BasicFileChooserUI fcui = (BasicFileChooserUI) getUI();
+ final String name = fcui.getFileName().trim();
if ((name == null) || (name.length() == 0))
{
@Override
public void run()
{
- String currentName = ui.getFileName();
+ String currentName = fcui.getFileName();
if ((currentName == null) || (currentName.length() == 0))
{
- ui.setFileName(name);
+ fcui.setFileName(name);
}
}
});
}
}
- public String getSelectedFormat()
+ /**
+ * Returns the selected file format, or null if none selected
+ *
+ * @return
+ */
+ public FileFormatI getSelectedFormat()
{
if (getFileFilter() == null)
{
return null;
}
+ /*
+ * logic here depends on option description being formatted as
+ * formatName (extension, extension...)
+ * or the 'no option selected' value
+ * All Files
+ * @see JalviewFileFilter.getDescription
+ */
String format = getFileFilter().getDescription();
-
- if (format.toUpperCase().startsWith("JALVIEW"))
- {
- format = "Jalview";
- }
- else if (format.toUpperCase().startsWith("FASTA"))
+ int parenPos = format.indexOf("(");
+ if (parenPos > 0)
{
- format = "FASTA";
- }
- else if (format.toUpperCase().startsWith("MSF"))
- {
- format = "MSF";
- }
- else if (format.toUpperCase().startsWith("CLUSTAL"))
- {
- format = "CLUSTAL";
- }
- else if (format.toUpperCase().startsWith("BLC"))
- {
- format = "BLC";
- }
- else if (format.toUpperCase().startsWith("PIR"))
- {
- format = "PIR";
- }
- else if (format.toUpperCase().startsWith("PFAM"))
- {
- format = "PFAM";
- }
- else if (format.toUpperCase().startsWith(PhylipFile.FILE_DESC))
- {
- format = PhylipFile.FILE_DESC;
+ format = format.substring(0, parenPos).trim();
+ try
+ {
+ return FileFormat.valueOf(format);
+ } catch (IllegalArgumentException e)
+ {
+ System.err.println("Unexpected format: " + format);
+ }
}
-
- return format;
+ return null;
}
@Override
if ((ret == JalviewFileChooser.APPROVE_OPTION)
&& getSelectedFile().exists())
{
- int confirm = JOptionPane.showConfirmDialog(parent,
+ int confirm = JvOptionPane.showConfirmDialog(parent,
MessageManager.getString("label.overwrite_existing_file"),
MessageManager.getString("label.file_already_exists"),
- JOptionPane.YES_NO_OPTION);
+ JvOptionPane.YES_NO_OPTION);
- if (confirm != JOptionPane.YES_OPTION)
+ if (confirm != JvOptionPane.YES_OPTION)
{
ret = JalviewFileChooser.CANCEL_OPTION;
}
package jalview.io;
import java.io.File;
-import java.util.Hashtable;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
import javax.swing.Icon;
import javax.swing.ImageIcon;
public class JalviewFileView extends FileView
{
- static Hashtable alignSuffix = new Hashtable();
+ private static Map<String, String> extensions;
- static
+ private static Map<String, ImageIcon> icons;
+
+ private void loadExtensions()
{
- // TODO: these names should come from the FormatAdapter lists for
- // readable/writable extensions
- alignSuffix.put("amsa", "AMSA file");
- alignSuffix.put("fasta", "Fasta file");
- alignSuffix.put("fa", "Fasta file");
- alignSuffix.put("fastq", "Fasta file");
- alignSuffix.put("mfa", "Fasta file");
- alignSuffix.put("blc", "BLC file");
- alignSuffix.put("msf", "MSF file");
- alignSuffix.put("pfam", "PFAM file");
- alignSuffix.put("aln", "Clustal file");
- alignSuffix.put("pir", "PIR file");
- alignSuffix.put("jar", "Jalview Project file (old)");
- alignSuffix.put("jvp", "Jalview Project file");
- alignSuffix.put("amsa", "AMSA file");
- alignSuffix.put("sto", "Stockholm File");
- alignSuffix.put("stk", "Stockholm File");
- alignSuffix.put("sto", "Stockholm File");
+ extensions = new HashMap<String, String>();
+ for (FileFormatI ff : FileFormat.values())
+ {
+ String desc = ff.toString() + " file";
+ String exts = ff.getExtensions();
+ for (String ext : exts.split(","))
+ {
+ extensions.put(ext.trim().toLowerCase(), desc
+ + ("jar".equals(ext) ? " (old)" : ""));
+ }
+ }
}
+ @Override
public String getTypeDescription(File f)
{
String extension = getExtension(f);
- String type = null;
-
+ String type = getDescriptionForExtension(extension);
if (extension != null)
{
- if (alignSuffix.containsKey(extension))
+ if (extensions.containsKey(extension))
{
- type = alignSuffix.get(extension).toString();
+ type = extensions.get(extension).toString();
}
}
return type;
}
+ private String getDescriptionForExtension(String extension)
+ {
+ synchronized (this)
+ {
+ if (extensions == null)
+ {
+ loadExtensions();
+ }
+ }
+ return extensions.get(extension);
+ }
+
+ @Override
public Icon getIcon(File f)
{
String extension = getExtension(f);
Icon icon = null;
- if (extension != null)
+ if (getDescriptionForExtension(extension) != null)
{
- if (alignSuffix.containsKey(extension))
- {
- icon = createImageIcon("/images/file.png");
- }
+ icon = getImageIcon("/images/file.png");
}
return icon;
}
- /*
- * Get the extension of a file.
+ /**
+ * Returns the extension of a file (part of the name after the last period),
+ * in lower case, or null if the name ends in or does not include a period.
*/
public static String getExtension(File f)
{
return ext;
}
- /** Returns an ImageIcon, or null if the path was invalid. */
- protected static ImageIcon createImageIcon(String path)
+ /**
+ * Returns an ImageIcon, or null if the file was not found
+ *
+ * @param filePath
+ */
+ protected ImageIcon getImageIcon(String filePath)
{
- java.net.URL imgURL = JalviewFileView.class.getResource(path);
-
- if (imgURL != null)
+ /*
+ * we reuse a single icon object per path here
+ */
+ synchronized (this)
{
- return new ImageIcon(imgURL);
+ if (icons == null)
+ {
+ icons = new HashMap<String, ImageIcon>();
+ }
+ if (!icons.containsKey(filePath))
+ {
+ ImageIcon icon = null;
+ URL imgURL = JalviewFileView.class.getResource(filePath);
+ if (imgURL != null)
+ {
+ icon = new ImageIcon(imgURL);
+ }
+ else
+ {
+ System.err
+ .println("JalviewFileView.createImageIcon: Couldn't find file: "
+ + filePath);
+ }
+ icons.put(filePath, icon);
+ }
}
- else
- {
- System.err
- .println("JalviewFileView.createImageIcon: Couldn't find file: "
- + path);
- return null;
- }
+ /*
+ * return the image from the table (which may be null if
+ * icon creation failed)
+ */
+ return icons.get(filePath);
}
}
if (id.equals("JNETCONF"))
{
annot = new AlignmentAnnotation(preds[i].getName(),
- "JNet Output", annotations, 0f, 10f,
+ "JPred Output", annotations, 0f, 10f,
AlignmentAnnotation.BAR_GRAPH);
}
else
{
annot = new AlignmentAnnotation(preds[i].getName(),
- "JNet Output", annotations);
+ "JPred Output", annotations);
}
if (seqRef != null)
* @throws IOException
* DOCUMENT ME!
*/
- public MSFfile(String inFile, String type) throws IOException
+ public MSFfile(String inFile, DataSourceType type) throws IOException
{
super(inFile, type);
}
*
* @return DOCUMENT ME!
*/
- public String print(SequenceI[] sqs)
+ @Override
+ public String print(SequenceI[] sqs, boolean jvSuffix)
{
boolean is_NA = Comparison.isNucleotide(sqs);
while ((i < s.length) && (s[i] != null))
{
- nameBlock[i] = new String(" Name: " + printId(s[i]) + " ");
+ nameBlock[i] = new String(" Name: " + printId(s[i], jvSuffix) + " ");
idBlock[i] = new String("Len: "
+ maxLenpad.form(s[i].getSequence().length) + " Check: "
while ((j < s.length) && (s[j] != null))
{
- String name = printId(s[j]);
+ String name = printId(s[j], jvSuffix);
out.append(new Format("%-" + maxid + "s").form(name + " "));
return out.toString();
}
-
- /**
- * DOCUMENT ME!
- *
- * @return DOCUMENT ME!
- */
- @Override
- public String print()
- {
- return print(getSeqsAsArray());
- }
}
*/
public NewickFile(String inStr) throws IOException
{
- super(inStr, "Paste");
+ super(inStr, DataSourceType.PASTE);
}
/**
*
* @param inFile
* DOCUMENT ME!
- * @param type
+ * @param protocol
* DOCUMENT ME!
*
* @throws IOException
* DOCUMENT ME!
*/
- public NewickFile(String inFile, String type) throws IOException
+ public NewickFile(String inFile, DataSourceType protocol)
+ throws IOException
{
- super(inFile, type);
+ super(inFile, protocol);
}
public NewickFile(FileParse source) throws IOException
treefile.close();
System.out.println("Read file :\n");
- NewickFile trf = new NewickFile(args[0], "File");
+ NewickFile trf = new NewickFile(args[0], DataSourceType.FILE);
trf.parse();
System.out.println("Original file :\n");
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceI;
+import jalview.util.Comparison;
import java.io.IOException;
import java.util.Vector;
{
}
- public PIRFile(String inFile, String type) throws IOException
+ public PIRFile(String inFile, DataSourceType sourceType)
+ throws IOException
{
- super(inFile, type);
+ super(inFile, sourceType);
}
public PIRFile(FileParse source) throws IOException
}
@Override
- public String print()
+ public String print(SequenceI[] s, boolean jvsuffix)
{
- return print(getSeqsAsArray());
- }
-
- public String print(SequenceI[] s)
- {
- boolean is_NA = jalview.util.Comparison.isNucleotide(s);
+ boolean is_NA = Comparison.isNucleotide(s);
int len = 72;
StringBuffer out = new StringBuffer();
int i = 0;
}
else
{
- out.append(">P1;" + printId(s[i]));
+ out.append(">P1;" + printId(s[i], jvsuffix));
out.append(newline);
if (s[i].getDescription() != null)
{
{
}
- public PfamFile(String inFile, String type) throws IOException
+ public PfamFile(String inFile, DataSourceType sourceType)
+ throws IOException
{
- super(inFile, type);
+ super(inFile, sourceType);
}
public PfamFile(FileParse source) throws IOException
}
}
- public String print(SequenceI[] s)
+ @Override
+ public String print(SequenceI[] s, boolean jvsuffix)
{
StringBuffer out = new StringBuffer("");
while ((i < s.length) && (s[i] != null))
{
- String tmp = printId(s[i]);
+ String tmp = printId(s[i], jvsuffix);
if (s[i].getSequence().length > max)
{
while ((j < s.length) && (s[j] != null))
{
- out.append(new Format("%-" + maxid + "s").form(printId(s[j]) + " "));
+ out.append(new Format("%-" + maxid + "s")
+ .form(printId(s[j], jvsuffix) + " "));
out.append(s[j].getSequenceAsString());
out.append(newline);
return out.toString();
}
-
- @Override
- public String print()
- {
- return print(getSeqsAsArray());
- }
}
public class PhylipFile extends AlignFile
{
- // Define file extension and description to save repeating it elsewhere
- public static final String FILE_EXT = "phy";
-
public static final String FILE_DESC = "PHYLIP";
/**
/**
* @param inFile
- * @param type
+ * @param sourceType
* @throws IOException
* @see {@link AlignFile#AlignFile(FileParse)}
*/
- public PhylipFile(String inFile, String type) throws IOException
+ public PhylipFile(String inFile, DataSourceType sourceType)
+ throws IOException
{
- super(inFile, type);
+ super(inFile, sourceType);
}
/**
* @see {@link AlignFile#print()}
*/
@Override
- public String print()
+ public String print(SequenceI[] sqs, boolean jvsuffix)
{
- StringBuffer sb = new StringBuffer(Integer.toString(seqs.size()));
+ StringBuffer sb = new StringBuffer(Integer.toString(sqs.length));
sb.append(" ");
// if there are no sequences, then define the number of characters as 0
sb.append(
- (seqs.size() > 0) ? Integer
- .toString(seqs.get(0).getSequence().length) : "0")
+ (sqs.length > 0) ? Integer.toString(sqs[0].getSequence().length)
+ : "0")
.append(newline);
// Due to how IO is handled, there doesn't appear to be a way to store
int numInterleavedColumns = 60;
int sequenceLength = 0;
- for (SequenceI s : seqs)
+ for (SequenceI s : sqs)
{
// ensure name is only 10 characters
// add blank line to separate this matrix from previous
sb.append(newline);
int start = i * numInterleavedColumns;
- for (SequenceI s : seqs)
+ for (SequenceI s : sqs)
{
sb.append(
s.getSequence(start, Math.min(start
*
* @param inFile
* DOCUMENT ME!
- * @param type
+ * @param sourceType
* DOCUMENT ME!
*
* @throws IOException
* DOCUMENT ME!
*/
- public PileUpfile(String inFile, String type) throws IOException
+ public PileUpfile(String inFile, DataSourceType sourceType)
+ throws IOException
{
- super(inFile, type);
+ super(inFile, sourceType);
}
public PileUpfile(FileParse source) throws IOException
super(source);
}
- /**
- * DOCUMENT ME!
- *
- * @return DOCUMENT ME!
- */
- @Override
- public String print()
- {
- return print(getSeqsAsArray());
- }
-
@Override
- public String print(SequenceI[] s)
+ public String print(SequenceI[] s, boolean jvsuffix)
{
StringBuffer out = new StringBuffer("PileUp");
out.append(newline);
while ((i < s.length) && (s[i] != null))
{
String seq = s[i].getSequenceAsString();
- out.append(" Name: " + printId(s[i]) + " oo Len: " + seq.length()
+ out.append(" Name: " + printId(s[i], jvsuffix) + " oo Len: "
+ + seq.length()
+ " Check: " + checksums[i] + " Weight: 1.00");
out.append(newline);
while ((j < s.length) && (s[j] != null))
{
- String name = printId(s[j]);
+ String name = printId(s[j], jvsuffix);
out.append(new Format("%-" + maxid + "s").form(name + " "));
}
- public RnamlFile(String inFile, String type) throws IOException
+ public RnamlFile(String inFile, DataSourceType type) throws IOException
{
super(inFile, type);
setSeqs(sqs);
}
- public static String print(SequenceI[] s)
- {
- return "not yet implemented";
- }
-
@Override
- public String print()
+ public String print(SequenceI[] s, boolean jvSuffix)
{
- System.out.print("print :");
- return print(getSeqsAsArray());
+ return "not yet implemented";
}
public List<RNA> getRNA()
package jalview.io;
import jalview.datamodel.DBRefEntry;
+import jalview.datamodel.DBRefSource;
import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceI;
import jalview.io.gff.GffConstants;
+import jalview.util.MessageManager;
import jalview.util.UrlLink;
-import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
+import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
*/
public class SequenceAnnotationReport
{
+ private static final String COMMA = ",";
+
+ private static final String ELLIPSIS = "...";
+
+ private static final int MAX_REFS_PER_SOURCE = 4;
+
+ private static final int MAX_SOURCES = 40;
+
+ private static final String[][] PRIMARY_SOURCES = new String[][] {
+ DBRefSource.CODINGDBS, DBRefSource.DNACODINGDBS,
+ DBRefSource.PROTEINDBS };
+
final String linkImageURL;
+ /*
+ * Comparator to order DBRefEntry by Source + accession id (case-insensitive)
+ */
+ private static Comparator<DBRefEntry> comparator = new Comparator<DBRefEntry>()
+ {
+
+ @Override
+ public int compare(DBRefEntry ref1, DBRefEntry ref2)
+ {
+ String s1 = ref1.getSource();
+ String s2 = ref2.getSource();
+ boolean s1Primary = isPrimarySource(s1);
+ boolean s2Primary = isPrimarySource(s2);
+ if (s1Primary && !s2Primary)
+ {
+ return -1;
+ }
+ if (!s1Primary && s2Primary)
+ {
+ return 1;
+ }
+ int comp = s1 == null ? -1 : (s2 == null ? 1 : s1
+ .compareToIgnoreCase(s2));
+ if (comp == 0)
+ {
+ String a1 = ref1.getAccessionId();
+ String a2 = ref2.getAccessionId();
+ comp = a1 == null ? -1 : (a2 == null ? 1 : a1
+ .compareToIgnoreCase(a2));
+ }
+ return comp;
+ }
+
+ private boolean isPrimarySource(String source)
+ {
+ for (String[] primary : PRIMARY_SOURCES)
+ {
+ for (String s : primary)
+ {
+ if (source.equals(s))
+ {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+ };
+
public SequenceAnnotationReport(String linkImageURL)
{
this.linkImageURL = linkImageURL;
/**
* Append text for the list of features to the tooltip
*
- * @param tooltipText2
+ * @param sb
* @param rpos
* @param features
* @param minmax
*/
- public void appendFeatures(final StringBuffer tooltipText2, int rpos,
+ public void appendFeatures(final StringBuilder sb, int rpos,
List<SequenceFeature> features, Map<String, float[][]> minmax)
{
if (features != null)
{
for (SequenceFeature feature : features)
{
- appendFeature(tooltipText2, rpos, minmax, feature);
+ appendFeature(sb, rpos, minmax, feature);
}
}
}
/**
- * Appends text for one sequence feature to the string buffer
+ * Appends the feature at rpos to the given buffer
*
* @param sb
* @param rpos
* @param minmax
- * {{min, max}, {min, max}} positional and non-positional feature
- * scores for this type
* @param feature
*/
- void appendFeature(final StringBuffer sb, int rpos,
+ void appendFeature(final StringBuilder sb, int rpos,
Map<String, float[][]> minmax, SequenceFeature feature)
{
- if ("disulfide bond".equals(feature.getType()))
+ if (feature.isContactFeature())
{
if (feature.getBegin() == rpos || feature.getEnd() == rpos)
{
{
sb.append("<br>");
}
- sb.append("disulfide bond ").append(feature.getBegin()).append(":")
+ sb.append(feature.getType()).append(" ").append(feature.getBegin())
+ .append(":")
.append(feature.getEnd());
}
}
}
if (feature.begin != feature.end)
{
- sb.append(" " + feature.end);
+ sb.append(" ").append(feature.end);
}
if (feature.getDescription() != null
{
String tmpString = feature.getDescription();
String tmp2up = tmpString.toUpperCase();
- final int startTag = tmp2up.indexOf("<HTML>");
+ int startTag = tmp2up.indexOf("<HTML>");
if (startTag > -1)
{
tmpString = tmpString.substring(startTag + 6);
tmp2up = tmp2up.substring(startTag + 6);
}
- // TODO strips off </body> but not <body> - is that intended?
int endTag = tmp2up.indexOf("</BODY>");
if (endTag > -1)
{
// be used, so we must remove < > symbols
tmpString = tmpString.replaceAll("<", "<");
tmpString = tmpString.replaceAll(">", ">");
- sb.append("; ").append(tmpString);
+
+ sb.append("; ");
+ sb.append(tmpString);
}
else
{
}
}
}
-
- /*
- * score should be shown if there is one, and min != max
- * for this feature type (e.g. not all 0)
- */
+ // check score should be shown
if (!Float.isNaN(feature.getScore()))
{
float[][] rng = (minmax == null) ? null : minmax.get(feature
}
}
}
- appendLinks(sb, feature);
}
/**
return urlSets.values();
}
- public void createSequenceAnnotationReport(final StringBuffer tip,
+ public void createSequenceAnnotationReport(final StringBuilder tip,
SequenceI sequence, boolean showDbRefs, boolean showNpFeats,
Map<String, float[][]> minmax)
{
createSequenceAnnotationReport(tip, sequence, showDbRefs, showNpFeats,
- true, minmax);
+ minmax, false);
}
- public void createSequenceAnnotationReport(final StringBuffer tip,
+ /**
+ * Builds an html formatted report of sequence details and appends it to the
+ * provided buffer.
+ *
+ * @param sb
+ * buffer to append report to
+ * @param sequence
+ * the sequence the report is for
+ * @param showDbRefs
+ * whether to include database references for the sequence
+ * @param showNpFeats
+ * whether to include non-positional sequence features
+ * @param minmax
+ * @param summary
+ * @return
+ */
+ int createSequenceAnnotationReport(final StringBuilder sb,
SequenceI sequence, boolean showDbRefs, boolean showNpFeats,
- boolean tableWrap, Map<String, float[][]> minmax)
+ Map<String, float[][]> minmax, boolean summary)
{
String tmp;
- tip.append("<i>");
+ sb.append("<i>");
int maxWidth = 0;
if (sequence.getDescription() != null)
{
tmp = sequence.getDescription();
- tip.append("<br>" + tmp);
+ sb.append("<br>").append(tmp);
maxWidth = Math.max(maxWidth, tmp.length());
}
SequenceI ds = sequence;
DBRefEntry[] dbrefs = ds.getDBRefs();
if (showDbRefs && dbrefs != null)
{
- for (int i = 0; i < dbrefs.length; i++)
+ // note this sorts the refs held on the sequence!
+ Arrays.sort(dbrefs, comparator);
+ boolean ellipsis = false;
+ String source = null;
+ String lastSource = null;
+ int countForSource = 0;
+ int sourceCount = 0;
+ boolean moreSources = false;
+ int lineLength = 0;
+
+ for (DBRefEntry ref : dbrefs)
+ {
+ source = ref.getSource();
+ if (source == null)
+ {
+ // shouldn't happen
+ continue;
+ }
+ boolean sourceChanged = !source.equals(lastSource);
+ if (sourceChanged)
+ {
+ lineLength = 0;
+ countForSource = 0;
+ sourceCount++;
+ }
+ if (sourceCount > MAX_SOURCES && summary)
+ {
+ ellipsis = true;
+ moreSources = true;
+ break;
+ }
+ lastSource = source;
+ countForSource++;
+ if (countForSource == 1 || !summary)
+ {
+ sb.append("<br>");
+ }
+ if (countForSource <= MAX_REFS_PER_SOURCE || !summary)
+ {
+ String accessionId = ref.getAccessionId();
+ lineLength += accessionId.length() + 1;
+ if (countForSource > 1 && summary)
+ {
+ sb.append(", ").append(accessionId);
+ lineLength++;
+ }
+ else
+ {
+ sb.append(source).append(" ").append(accessionId);
+ lineLength += source.length();
+ }
+ maxWidth = Math.max(maxWidth, lineLength);
+ }
+ if (countForSource == MAX_REFS_PER_SOURCE && summary)
+ {
+ sb.append(COMMA).append(ELLIPSIS);
+ ellipsis = true;
+ }
+ }
+ if (moreSources)
{
- tip.append("<br>");
- tmp = dbrefs[i].getSource() + " " + dbrefs[i].getAccessionId();
- tip.append(tmp);
- maxWidth = Math.max(maxWidth, tmp.length());
+ sb.append("<br>").append(ELLIPSIS).append(COMMA).append(source)
+ .append(COMMA).append(ELLIPSIS);
+ }
+ if (ellipsis)
+ {
+ sb.append("<br>(");
+ sb.append(MessageManager.getString("label.output_seq_details"));
+ sb.append(")");
}
}
- // ADD NON POSITIONAL SEQUENCE INFO
+ /*
+ * add non-positional features if wanted
+ */
SequenceFeature[] features = sequence.getSequenceFeatures();
if (showNpFeats && features != null)
{
{
if (features[i].begin == 0 && features[i].end == 0)
{
- int sz = -tip.length();
- List<SequenceFeature> tfeat = new ArrayList<SequenceFeature>();
- tfeat.add(features[i]);
- appendFeatures(tip, 0, tfeat, minmax);
- sz += tip.length();
+ int sz = -sb.length();
+ appendFeature(sb, 0, minmax, features[i]);
+ sz += sb.length();
maxWidth = Math.max(maxWidth, sz);
}
}
}
+ sb.append("</i>");
+ return maxWidth;
+ }
+
+ public void createTooltipAnnotationReport(final StringBuilder tip,
+ SequenceI sequence, boolean showDbRefs, boolean showNpFeats,
+ Map<String, float[][]> minmax)
+ {
+ int maxWidth = createSequenceAnnotationReport(tip, sequence,
+ showDbRefs, showNpFeats, minmax, true);
- if (tableWrap && maxWidth > 60)
+ if (maxWidth > 60)
{
- tip.insert(0, "<table width=350 border=0><tr><td><i>");
- tip.append("</i></td></tr></table>");
+ // ? not sure this serves any useful purpose
+ // tip.insert(0, "<table width=350 border=0><tr><td>");
+ // tip.append("</td></tr></table>");
}
-
}
}
{
}
- public SimpleBlastFile(String inFile, String type) throws IOException
+ public SimpleBlastFile(String inFile, DataSourceType sourceType)
+ throws IOException
{
- super(inFile, type);
+ super(inFile, sourceType);
}
public SimpleBlastFile(FileParse source) throws IOException
super(source);
}
+ @Override
public void initData()
{
super.initData();
seqids = new Vector();
}
+ @Override
public void parse() throws IOException
{
String line;
}
}
- public String print(SequenceI[] s)
+ @Override
+ public String print(SequenceI[] sqs, boolean jvsuffix)
{
return new String("Not Implemented.");
}
-
- public String print()
- {
- return print(getSeqsAsArray());
- }
}
this.al = al;
}
- public StockholmFile(String inFile, String type) throws IOException
+ public StockholmFile(String inFile, DataSourceType type)
+ throws IOException
{
super(inFile, type);
}
return annot;
}
- public String print(SequenceI[] s)
+ @Override
+ public String print(SequenceI[] s, boolean jvSuffix)
{
+ out = new StringBuffer();
+ out.append("# STOCKHOLM 1.0");
+ out.append(newline);
+
// find max length of id
int max = 0;
int maxid = 0;
Hashtable dataRef = null;
while ((in < s.length) && (s[in] != null))
{
- String tmp = printId(s[in]);
+ String tmp = printId(s[in], jvSuffix);
if (s[in].getSequence().length > max)
{
max = s[in].getSequence().length;
// out.append("#=GR ");
out.append(new Format("%-" + maxid + "s").form("#=GR "
- + printId(s[i]) + " " + key + " "));
+ + printId(s[i], jvSuffix) + " " + key + " "));
ann = alAnot[j].annotations;
boolean isrna = alAnot[j].isValidStruc();
String seq = "";
}
}
- out.append(new Format("%-" + maxid + "s").form(printId(s[i]) + " "));
+ out.append(new Format("%-" + maxid + "s")
+ .form(printId(s[i], jvSuffix) + " "));
out.append(s[i].getSequenceAsString());
out.append(newline);
i++;
out.append(newline);
}
}
+
+ out.append("//");
+ out.append(newline);
+
return out.toString();
}
return seq;
}
- @Override
public String print()
{
out = new StringBuffer();
out.append("# STOCKHOLM 1.0");
out.append(newline);
- print(getSeqsAsArray());
+ print(getSeqsAsArray(), false);
out.append("//");
out.append(newline);
public abstract class StructureFile extends AlignFile
{
-
private String id;
- public enum StructureFileType
- {
- PDB, MMCIF, MMTF
- };
-
private PDBEntry.Type dbRefType;
/**
private boolean pdbIdAvailable;
- public StructureFile(String inFile, String type) throws IOException
+ public StructureFile(String inFile, DataSourceType sourceType)
+ throws IOException
{
- super(inFile, type);
+ super(inFile, sourceType);
}
public StructureFile(FileParse fp) throws IOException
}
public StructureFile(boolean parseImmediately, String dataObject,
- String type) throws IOException
+ DataSourceType sourceType) throws IOException
{
- super(parseImmediately, dataObject, type);
+ super(parseImmediately, dataObject, sourceType);
}
public StructureFile(boolean a, FileParse fp) throws IOException
new Object[] {});
AlignmentI al = ((AlignmentI) cl.getMethod("getRNAMLFor",
new Class[] { FileParse.class }).invoke(annotate3d,
- new Object[] { new FileParse(getDataName(), type) }));
+ new Object[] { new FileParse(getDataName(), dataSourceType) }));
for (SequenceI sq : al.getSequences())
{
if (sq.getDatasetSequence() != null)
Class cl = Class.forName("jalview.ext.jmol.JmolParser");
if (cl != null)
{
- final Constructor constructor = cl
- .getConstructor(new Class[] { FileParse.class });
- final Object[] args = new Object[] { new FileParse(getDataName(),
- type) };
+ final Constructor constructor = cl.getConstructor(new Class[] {FileParse.class });
+ final Object[] args = new Object[] { new FileParse(getDataName(), dataSourceType) };
StructureImportSettings.setShowSeqFeatures(false);
StructureImportSettings.setVisibleChainAnnotation(false);
{
this.pdbIdAvailable = pdbIdAvailable;
}
-
- public static boolean isStructureFile(String fileType)
- {
- if (fileType == null)
- {
- return false;
- }
- for (StructureFileType sfType : StructureFileType.values())
- {
- if (sfType.name().equalsIgnoreCase(fileType))
- {
- return true;
- }
- }
- return false;
- }
}
*/
public class TCoffeeScoreFile extends AlignFile
{
- public TCoffeeScoreFile(String inFile, String type) throws IOException
+ public TCoffeeScoreFile(String inFile, DataSourceType fileSourceType)
+ throws IOException
{
- super(inFile, type);
+ super(inFile, fileSourceType);
}
return result;
}
+ @Override
public void parse() throws IOException
{
/*
}
@Override
- public String print()
+ public String print(SequenceI[] sqs, boolean jvsuffix)
{
// TODO Auto-generated method stub
return "Not valid.";
import jalview.gui.AlignmentPanel;
import jalview.gui.CutAndPasteTransfer;
import jalview.gui.Desktop;
+import jalview.gui.JvOptionPane;
import jalview.util.MessageManager;
import java.util.ArrayList;
import java.util.Vector;
import javax.swing.ImageIcon;
-import javax.swing.JOptionPane;
import uk.ac.ebi.www.Data;
import uk.ac.ebi.www.InputParams;
{
// This must be outside the run() body as java 1.5
// will not return any value from the OptionPane to the expired thread.
- int reply = JOptionPane.showConfirmDialog(Desktop.desktop,
+ int reply = JvOptionPane.showConfirmDialog(Desktop.desktop,
"Automatically update suggested ids?",
- "Auto replace sequence ids", JOptionPane.YES_NO_OPTION);
+ "Auto replace sequence ids", JvOptionPane.YES_NO_OPTION);
- if (reply == JOptionPane.YES_OPTION)
+ if (reply == JvOptionPane.YES_OPTION)
{
Enumeration keys = suggestedIds.elements();
while (keys.hasMoreElements())
}
}
+ @Override
public void run()
{
while (jobsRunning > 0)
this.sequence = sequence;
}
+ @Override
public void run()
{
StartJob();
import jalview.api.FeatureColourI;
import jalview.datamodel.AlignmentI;
import jalview.io.AppletFormatAdapter;
+import jalview.io.FileFormatI;
import jalview.io.FileParse;
import jalview.io.FormatAdapter;
import jalview.io.IdentifyFile;
FileParse src = dta.getDataSource();
if (dta.getType().equals(DataProvider.JvDataType.ALIGNMENT))
{
- String fmt = null;
+ FileFormatI fmt = null;
try
{
fmt = new IdentifyFile().identify(src, false);
if (fmt != null)
{
- if (!FormatAdapter.isValidIOFormat(fmt, false))
+ // parse the alignment
+ AlignmentI al = null;
+ try
{
- errmsg = fmt;
- exerror = null;
+ al = new FormatAdapter().readFromFile(src, fmt);
+ } catch (Exception e)
+ {
+ errmsg = "Failed to parse alignment from result set";
+ exerror = e;
}
- else
+ if (al != null)
{
- // parse the alignment
- AlignmentI al = null;
- try
- {
- al = new FormatAdapter().readFromFile(src, fmt);
- } catch (Exception e)
- {
- errmsg = "Failed to parse alignment from result set";
- exerror = e;
- }
- if (al != null)
- {
- // deuniquify and construct/merge additional dataset entries if
- // necessary.
- context.addAlignment(al);
- context.updateSetModified(true);
- rslt.add(al);
- deuniquify = true;
- }
+ // deuniquify and construct/merge additional dataset entries if
+ // necessary.
+ context.addAlignment(al);
+ context.updateSetModified(true);
+ rslt.add(al);
+ deuniquify = true;
}
}
}
*/
package jalview.jbgui;
+import jalview.io.FileFormatI;
import jalview.util.MessageManager;
import java.awt.BorderLayout;
showDialog;
public GAlignExportSettings(boolean hasHiddenSeq, boolean hasHiddenCols,
- String alignFileFormat)
+ FileFormatI format)
{
this.hasHiddenSeq = hasHiddenSeq;
this.hasHiddenCols = hasHiddenCols;
- String[] complexFormats = { "JSON", "HTML" };
-
- for (String format : complexFormats)
- {
- if (format.equalsIgnoreCase(alignFileFormat))
- {
- this.isComplexAlignFile = true;
- break;
- }
- }
+ this.isComplexAlignFile = format.isComplexAlignFile();
if (this.hasHiddenCols || this.hasHiddenSeq || this.isComplexAlignFile)
{
this.showDialog = true;
chkAll.addItemListener(new ItemListener()
{
+ @Override
public void itemStateChanged(ItemEvent e)
{
checkAllAction();
btnOk.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
ok_actionPerformed(e);
btnCancel.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
cancel_actionPerformed(e);
import jalview.analysis.AnnotationSorter.SequenceAnnotationOrder;
import jalview.api.SplitContainerI;
import jalview.bin.Cache;
+import jalview.gui.JvOptionPane;
import jalview.gui.JvSwingUtils;
import jalview.gui.Preferences;
+import jalview.io.FileFormat;
import jalview.schemes.ColourSchemeProperty;
import jalview.util.MessageManager;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
-import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JTabbedPane;
setJMenuBar(alignFrameMenuBar);
// dynamically fill save as menu with available formats
- for (int i = 0; i < jalview.io.FormatAdapter.WRITEABLE_FORMATS.length; i++)
+ for (String ff : FileFormat.getWritableFormats(true))
{
- JMenuItem item = new JMenuItem(
- jalview.io.FormatAdapter.WRITEABLE_FORMATS[i]);
+ JMenuItem item = new JMenuItem(ff);
item.addActionListener(new ActionListener()
{
{
radioItem.removeActionListener(radioItem.getActionListeners()[0]);
- int option = JOptionPane.showInternalConfirmDialog(
+ int option = JvOptionPane.showInternalConfirmDialog(
jalview.gui.Desktop.desktop, MessageManager
.getString("label.remove_from_default_list"),
MessageManager
.getString("label.remove_user_defined_colour"),
- JOptionPane.YES_NO_OPTION);
- if (option == JOptionPane.YES_OPTION)
+ JvOptionPane.YES_NO_OPTION);
+ if (option == JvOptionPane.YES_OPTION)
{
jalview.gui.UserDefinedColours
.removeColourFromDefaults(radioItem.getText());
alignmentProperties();
}
});
+ JMenuItem selectHighlighted = new JMenuItem(
+ MessageManager.getString("action.select_highlighted_columns"));
+ selectHighlighted.setToolTipText(MessageManager
+ .getString("tooltip.select_highlighted_columns"));
+ al = new ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent actionEvent)
+ {
+ selectHighlightedColumns_actionPerformed(actionEvent);
+ }
+ };
+ selectHighlighted.addActionListener(al);
JMenu tooltipSettingsMenu = new JMenu(
MessageManager.getString("label.sequence_id_tooltip"));
JMenu autoAnnMenu = new JMenu(
selectMenu.add(grpsFromSelection);
selectMenu.add(deleteGroups);
selectMenu.add(annotationColumn);
+ selectMenu.add(selectHighlighted);
// TODO - determine if the listenToViewSelections button is needed : see bug
// JAL-574
// selectMenu.addSeparator();
// selectMenu.add(listenToViewSelections);
}
+ protected void selectHighlightedColumns_actionPerformed(
+ ActionEvent actionEvent)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
/**
* Generate the reverse sequence (or reverse complement if the flag is true)
* and add it to the alignment
package jalview.jbgui;
import jalview.api.AlignmentViewPanel;
+import jalview.io.FileFormatException;
import jalview.util.MessageManager;
import java.awt.FlowLayout;
inputLocalFileMenuItem
.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
inputLocalFileMenuItem_actionPerformed(null);
inputURLMenuItem.setText(MessageManager.getString("label.from_url"));
inputURLMenuItem.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
- inputURLMenuItem_actionPerformed(null);
+ try
+ {
+ inputURLMenuItem_actionPerformed(null);
+ } catch (FileFormatException e1)
+ {
+ System.err.println("Error loading from URL: " + e1.getMessage());
+ }
}
});
inputTextboxMenuItem.setText(MessageManager
inputTextboxMenuItem
.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
inputTextboxMenuItem_actionPerformed(null);
quit.setText(MessageManager.getString("action.quit"));
quit.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
quit();
aboutMenuItem.setText(MessageManager.getString("label.about"));
aboutMenuItem.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
aboutMenuItem_actionPerformed(e);
documentationMenuItem
.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
documentationMenuItem_actionPerformed(e);
preferences.setText(MessageManager.getString("label.preferences"));
preferences.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
preferences_actionPerformed(e);
saveState.setText(MessageManager.getString("action.save_project"));
saveState.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
saveState_actionPerformed(e);
loadState.setText(MessageManager.getString("action.load_project"));
loadState.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
loadState_actionPerformed(e);
vamsasStart.setVisible(false);
vamsasStart.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
vamsasStart_actionPerformed(e);
vamsasImport.setVisible(false);
vamsasImport.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
vamsasImport_actionPerformed(e);
vamsasSave.setVisible(false);
vamsasSave.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
vamsasSave_actionPerformed(e);
.getString("action.fetch_sequences"));
inputSequence.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
inputSequence_actionPerformed(e);
vamsasStop.setVisible(false);
vamsasStop.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
vamsasStop_actionPerformed(e);
closeAll.setText(MessageManager.getString("action.close_all"));
closeAll.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
closeAll_actionPerformed(e);
.getString("action.raise_associated_windows"));
raiseRelated.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
raiseRelated_actionPerformed(e);
.getString("action.minimize_associated_windows"));
minimizeAssociated.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
minimizeAssociated_actionPerformed(e);
.getString("label.collect_garbage"));
garbageCollect.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
garbageCollect_actionPerformed(e);
.getString("label.show_memory_usage"));
showMemusage.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
showMemusage_actionPerformed(e);
.setText(MessageManager.getString("label.show_java_console"));
showConsole.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
showConsole_actionPerformed(e);
showNews.setText(MessageManager.getString("label.show_jalview_news"));
showNews.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
showNews_actionPerformed(e);
snapShotWindow.setText(MessageManager.getString("label.take_snapshot"));
snapShotWindow.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
snapShotWindow_actionPerformed(e);
*
* @param e
* DOCUMENT ME!
+ * @throws FileFormatException
*/
protected void inputURLMenuItem_actionPerformed(
- jalview.gui.AlignViewport av)
+ jalview.gui.AlignViewport av) throws FileFormatException
{
}
package jalview.jbgui;
import jalview.datamodel.AlignmentI;
+import jalview.io.DataSourceType;
+import jalview.io.FileFormat;
import jalview.io.FormatAdapter;
import jalview.util.MessageManager;
findAll.setText(MessageManager.getString("action.find_all"));
findAll.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
findAll_actionPerformed(e);
findNext.setText(MessageManager.getString("action.find_next"));
findNext.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
findNext_actionPerformed(e);
createNewGroup.setText(MessageManager.getString("label.new_feature"));
createNewGroup.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
createNewGroup_actionPerformed(e);
textfield.setLineWrap(true);
textfield.addCaretListener(new CaretListener()
{
+ @Override
public void caretUpdate(CaretEvent e)
{
textfield_caretUpdate(e);
});
textfield.addKeyListener(new java.awt.event.KeyAdapter()
{
+ @Override
public void keyPressed(KeyEvent e)
{
textfield_keyPressed(e);
{
SwingUtilities.invokeLater(new Runnable()
{
+ @Override
public void run()
{
String str = textfield.getText();
AlignmentI al = null;
try
{
- al = new FormatAdapter().readFile(str, "Paste", "FASTA");
+ al = new FormatAdapter().readFile(str, DataSourceType.PASTE,
+ FileFormat.Fasta);
} catch (Exception ex)
{
}
*/
package jalview.jbgui;
+import jalview.gui.JvOptionPane;
import jalview.gui.JvSwingUtils;
import jalview.util.MessageManager;
import jalview.util.UrlLink;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JLabel;
-import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
return true;
}
- JOptionPane.showInternalMessageDialog(jalview.gui.Desktop.desktop,
+ JvOptionPane.showInternalMessageDialog(jalview.gui.Desktop.desktop,
MessageManager.getString("warn.url_must_contain"),
MessageManager.getString("label.invalid_url"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
return false;
}
public void notifyDuplicate()
{
- JOptionPane.showInternalMessageDialog(jalview.gui.Desktop.desktop,
+ JvOptionPane.showInternalMessageDialog(jalview.gui.Desktop.desktop,
MessageManager.getString("warn.name_cannot_be_duplicate"),
MessageManager.getString("label.invalid_name"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
}
public void nameTB_keyTyped(KeyEvent e)
import jalview.datamodel.AlignmentAnnotation;
import jalview.datamodel.Annotation;
import jalview.datamodel.ColumnSelection;
-import jalview.datamodel.ProfileI;
+import jalview.datamodel.ProfilesI;
import jalview.schemes.ColourSchemeI;
import jalview.schemes.ResidueProperties;
import jalview.util.Platform;
private ColumnSelection columnSelection;
- private ProfileI[] hconsensus;
+ private ProfilesI hconsensus;
private Hashtable[] complementConsensus;
{
// TODO? group consensus for cDNA complement
return AAFrequency.extractProfile(
- aa.groupRef.consensusData[column],
+ aa.groupRef.consensusData.get(column),
aa.groupRef.getIgnoreGapsConsensus());
}
// TODO extend annotation row to enable dynamic and static profile data to
}
else
{
- return AAFrequency.extractProfile(hconsensus[column],
+ return AAFrequency.extractProfile(
+hconsensus.get(column),
av_ignoreGapsConsensus);
}
}
}
/**
- * This is used by the Molecule Viewer and Overview to get the accurate colour
- * of the rendered sequence
+ * This is used by Structure Viewers and the Overview Window to get the
+ * feature colour of the rendered sequence, returned as an RGB value
+ *
+ * @param defaultColour
+ * @param seq
+ * @param column
+ * @return
*/
- public synchronized int findFeatureColour(int initialCol,
+ public synchronized int findFeatureColour(int defaultColour,
final SequenceI seq, int column)
{
if (!av.isShowSequenceFeatures())
{
- return initialCol;
+ return defaultColour;
}
SequenceFeature[] sequenceFeatures = seq.getSequenceFeatures();
if (lastSequenceFeatures == null || sfSize == 0)
{
- return initialCol;
+ return defaultColour;
}
if (jalview.util.Comparison.isGap(lastSeq.getCharAt(column)))
if (offscreenImage != null)
{
- offscreenImage.setRGB(0, 0, initialCol);
+ offscreenImage.setRGB(0, 0, defaultColour);
drawSequence(offscreenImage.getGraphics(), lastSeq, column, column, 0);
return offscreenImage.getRGB(0, 0);
if (currentColour == null)
{
- return initialCol;
+ return defaultColour;
}
else
{
int epos;
+ /**
+ * Draws the sequence on the graphics context, or just determines the colour
+ * that would be drawn (if flag offscreenrender is true).
+ *
+ * @param g
+ * @param seq
+ * @param start
+ * start column (or sequence position in offscreenrender mode)
+ * @param end
+ * end column (not used in offscreenrender mode)
+ * @param y1
+ * vertical offset at which to draw on the graphics
+ */
public synchronized void drawSequence(Graphics g, final SequenceI seq,
int start, int end, int y1)
{
}
sfSize = lastSequenceFeatures.length;
- String type;
for (int renderIndex = 0; renderIndex < renderOrder.length; renderIndex++)
{
- type = renderOrder[renderIndex];
-
- if (type == null || !showFeatureOfType(type))
+ String type = renderOrder[renderIndex];
+ if (!showFeatureOfType(type))
{
continue;
}
continue;
}
- if (featureGroups != null
- && sequenceFeature.featureGroup != null
- && sequenceFeature.featureGroup.length() != 0
- && featureGroups.containsKey(sequenceFeature.featureGroup)
- && !featureGroups.get(sequenceFeature.featureGroup)
- .booleanValue())
+ if (featureGroupNotShown(sequenceFeature))
{
continue;
}
+ /*
+ * check feature overlaps the visible part of the alignment,
+ * unless doing offscreenRender (to the Overview window or a
+ * structure viewer) which is not limited
+ */
if (!offscreenRender
&& (sequenceFeature.getBegin() > epos || sequenceFeature
.getEnd() < spos))
continue;
}
+ Color featureColour = getColour(sequenceFeature);
+ boolean isContactFeature = sequenceFeature.isContactFeature();
+
if (offscreenRender && offscreenImage == null)
{
- if (sequenceFeature.begin <= start
- && sequenceFeature.end >= start)
+ /*
+ * offscreen mode with no image (image is only needed if transparency
+ * is applied to feature colours) - just check feature is rendered at
+ * the requested position (start == sequence position in this mode)
+ */
+ boolean featureIsAtPosition = sequenceFeature.begin <= start
+ && sequenceFeature.end >= start;
+ if (isContactFeature)
+ {
+ featureIsAtPosition = sequenceFeature.begin == start
+ || sequenceFeature.end == start;
+ }
+ if (featureIsAtPosition)
{
// this is passed out to the overview and other sequence renderers
// (e.g. molecule viewer) to get displayed colour for rendered
// sequence
- currentColour = new Integer(getColour(sequenceFeature).getRGB());
+ currentColour = new Integer(featureColour.getRGB());
// used to be retreived from av.featuresDisplayed
// currentColour = av.featuresDisplayed
// .get(sequenceFeatures[sfindex].type);
}
}
- else if (sequenceFeature.type.equals("disulfide bond"))
+ else if (isContactFeature)
{
renderFeature(g, seq, seq.findIndex(sequenceFeature.begin) - 1,
- seq.findIndex(sequenceFeature.begin) - 1,
- getColour(sequenceFeature)
- // new Color(((Integer) av.featuresDisplayed
- // .get(sequenceFeatures[sfindex].type)).intValue())
- , start, end, y1);
+ seq.findIndex(sequenceFeature.begin) - 1, featureColour,
+ start, end, y1);
renderFeature(g, seq, seq.findIndex(sequenceFeature.end) - 1,
- seq.findIndex(sequenceFeature.end) - 1,
- getColour(sequenceFeature)
- // new Color(((Integer) av.featuresDisplayed
- // .get(sequenceFeatures[sfindex].type)).intValue())
- , start, end, y1);
+ seq.findIndex(sequenceFeature.end) - 1, featureColour,
+ start, end, y1);
}
else if (showFeature(sequenceFeature))
renderScoreFeature(g, seq,
seq.findIndex(sequenceFeature.begin) - 1,
seq.findIndex(sequenceFeature.end) - 1,
- getColour(sequenceFeature), start, end, y1,
+ featureColour, start, end, y1,
normaliseScore(sequenceFeature));
}
else
{
renderFeature(g, seq, seq.findIndex(sequenceFeature.begin) - 1,
seq.findIndex(sequenceFeature.end) - 1,
- getColour(sequenceFeature), start, end, y1);
+ featureColour, start, end, y1);
}
}
-
}
-
}
if (transparency != 1.0f && g != null)
}
/**
+ * Answers true if the feature belongs to a feature group which is not
+ * currently displayed, else false
+ *
+ * @param sequenceFeature
+ * @return
+ */
+ protected boolean featureGroupNotShown(
+ final SequenceFeature sequenceFeature)
+ {
+ return featureGroups != null
+ && sequenceFeature.featureGroup != null
+ && sequenceFeature.featureGroup.length() != 0
+ && featureGroups.containsKey(sequenceFeature.featureGroup)
+ && !featureGroups.get(sequenceFeature.featureGroup)
+ .booleanValue();
+ }
+
+ /**
* Called when alignment in associated view has new/modified features to
* discover and display.
*
res -= ('a' - 'A');
}
- if (consensus == null || j >= consensus.length || consensus[j] == null
+ if (consensus == null || consensus.get(j) == null
|| (threshold != 0 && !aboveThreshold(res, j)))
{
return Color.white;
/*
* test if this is the consensus (or joint consensus) residue
*/
- String max = consensus[j].getModalResidue();
+ String max = consensus.get(j).getModalResidue();
if (max.indexOf(res) > -1)
{
package jalview.schemes;
import jalview.datamodel.AnnotatedCollectionI;
-import jalview.datamodel.ProfileI;
+import jalview.datamodel.ProfilesI;
import jalview.datamodel.SequenceCollectionI;
import jalview.datamodel.SequenceI;
/**
* assign the given consensus profile for the colourscheme
*/
- public void setConsensus(ProfileI[] hconsensus);
+ public void setConsensus(ProfilesI hconsensus);
/**
* assign the given conservation to the colourscheme
package jalview.schemes;
import jalview.analysis.Conservation;
-import jalview.datamodel.ProfileI;
+import jalview.datamodel.ProfilesI;
/**
* Colourscheme that takes its colours from some other colourscheme
}
@Override
- public void setConsensus(ProfileI[] consensus)
+ public void setConsensus(ProfilesI consensus)
{
if (colourScheme != null)
{
*/
package jalview.schemes;
+import jalview.datamodel.ProfileI;
import jalview.datamodel.SequenceGroup;
import jalview.datamodel.SequenceI;
import jalview.util.Comparison;
c -= ('a' - 'A');
}
- if (consensus == null || j >= consensus.length || consensus[j] == null)
+ if (consensus == null || consensus.get(j) == null)
{
return Color.white;
}
double sc = 0;
- if (consensus.length <= j)
- {
- return Color.white;
- }
/*
* test whether this is the consensus (or joint consensus) residue
*/
- boolean matchesConsensus = consensus[j].getModalResidue().contains(
+ ProfileI profile = consensus.get(j);
+ boolean matchesConsensus = profile.getModalResidue().contains(
String.valueOf(c));
if (matchesConsensus)
{
- sc = consensus[j].getPercentageIdentity(ignoreGaps);
+ sc = profile.getPercentageIdentity(ignoreGaps);
if (!Comparison.isGap(c))
{
import jalview.analysis.Conservation;
import jalview.datamodel.AnnotatedCollectionI;
import jalview.datamodel.ProfileI;
+import jalview.datamodel.ProfilesI;
import jalview.datamodel.SequenceCollectionI;
import jalview.datamodel.SequenceI;
import jalview.util.ColorUtils;
/*
* Consensus data indexed by column
*/
- ProfileI[] consensus;
+ ProfilesI consensus;
/*
* Conservation string as a char array
residue -= ('a' - 'A');
}
- if (consensus == null || consensus.length < column
- || consensus[column] == null)
+ if (consensus == null)
{
return false;
}
+ ProfileI profile = consensus.get(column);
+
/*
* test whether this is the consensus (or joint consensus) residue
*/
- if (consensus[column].getModalResidue().contains(
- String.valueOf(residue)))
+ if (profile != null
+ && profile.getModalResidue().contains(String.valueOf(residue)))
{
- if (consensus[column].getPercentageIdentity(ignoreGaps) >= threshold)
+ if (profile.getPercentageIdentity(ignoreGaps) >= threshold)
{
return true;
}
* DOCUMENT ME!
*/
@Override
- public void setConsensus(ProfileI[] consensus)
+ public void setConsensus(ProfilesI consensus)
{
if (consensus == null)
{
*/
package jalview.structure;
+import jalview.datamodel.SearchResultsI;
import jalview.datamodel.SequenceI;
public interface SequenceListener
// TODO remove this? never called on SequenceListener type
public void mouseOverSequence(SequenceI sequence, int index, int pos);
- public void highlightSequence(jalview.datamodel.SearchResults results);
+ public void highlightSequence(SearchResultsI results);
// TODO remove this? never called
public void updateColours(SequenceI sequence, int index);
StructureImportSettings.showSeqFeatures = showSeqFeatures;
}
- public static String getDefaultStructureFileFormat()
+ public static PDBEntry.Type getDefaultStructureFileFormat()
{
- return defaultStructureFileFormat.toString();
+ return defaultStructureFileFormat;
}
public static void setDefaultStructureFileFormat(
import jalview.datamodel.Annotation;
import jalview.datamodel.PDBEntry;
import jalview.datamodel.SearchResults;
+import jalview.datamodel.SearchResultsI;
import jalview.datamodel.SequenceI;
import jalview.ext.jmol.JmolParser;
import jalview.gui.IProgressIndicator;
-import jalview.io.AppletFormatAdapter;
+import jalview.io.DataSourceType;
import jalview.io.StructureFile;
import jalview.util.MappingUtils;
import jalview.util.MessageManager;
* @return null or the structure data parsed as a pdb file
*/
synchronized public StructureFile setMapping(SequenceI[] sequence,
- String[] targetChains, String pdbFile, String protocol)
+ String[] targetChains, String pdbFile, DataSourceType protocol)
{
return setMapping(true, sequence, targetChains, pdbFile, protocol);
}
* (may be nill, individual elements may be nill)
* @param pdbFile
* - structure data resource
- * @param protocol
+ * @param sourceType
* - how to resolve data from resource
* @return null or the structure data parsed as a pdb file
*/
synchronized public StructureFile setMapping(boolean forStructureView,
SequenceI[] sequenceArray, String[] targetChainIds,
- String pdbFile, String protocol)
+ String pdbFile, DataSourceType sourceType)
{
/*
* There will be better ways of doing this in the future, for now we'll use
boolean isMapUsingSIFTs = SiftsSettings.isMapWithSifts();
try
{
- pdb = new JmolParser(pdbFile, protocol);
+ pdb = new JmolParser(pdbFile, sourceType);
if (pdb.getId() != null && pdb.getId().trim().length() > 0
- && AppletFormatAdapter.FILE.equals(protocol))
+ && DataSourceType.FILE == sourceType)
{
registerPDBFile(pdb.getId().trim(), pdbFile);
}
continue;
}
- if (protocol.equals(jalview.io.AppletFormatAdapter.PASTE))
+ if (sourceType == DataSourceType.PASTE)
{
pdbFile = "INLINE" + pdb.getId();
}
- ArrayList<StructureMapping> seqToStrucMapping = new ArrayList<StructureMapping>();
+ List<StructureMapping> seqToStrucMapping = new ArrayList<StructureMapping>();
if (isMapUsingSIFTs && seq.isProtein())
{
setProgressBar(null);
}
else
{
- ArrayList<StructureMapping> foundSiftsMappings = new ArrayList<StructureMapping>();
+ List<StructureMapping> foundSiftsMappings = new ArrayList<StructureMapping>();
for (PDBChain chain : pdb.getChains())
{
try
return;
}
- SearchResults results = new SearchResults();
+ SearchResultsI results = new SearchResults();
for (AtomSpec atom : atoms)
{
SequenceI lastseq = null;
{
boolean hasSequenceListeners = handlingVamsasMo
|| !seqmappings.isEmpty();
- SearchResults results = null;
+ SearchResultsI results = null;
if (seqPos == -1)
{
seqPos = seq.findPosition(indexpos);
package jalview.structures.models;
import jalview.api.StructureSelectionManagerProvider;
+import jalview.api.structures.JalviewStructureDisplayI;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.PDBEntry;
import jalview.datamodel.SequenceI;
+import jalview.io.DataSourceType;
import jalview.structure.AtomSpec;
import jalview.structure.StructureListener;
import jalview.structure.StructureMapping;
/*
* datasource protocol for access to PDBEntrylatest
*/
- String protocol = null;
+ DataSourceType protocol = null;
protected boolean colourBySequence = true;
*/
public AAStructureBindingModel(StructureSelectionManager ssm,
PDBEntry[] pdbentry, SequenceI[][] sequenceIs,
- String protocol)
+ DataSourceType protocol)
{
this.ssm = ssm;
this.sequence = sequenceIs;
return chains;
}
- public String getProtocol()
+ public DataSourceType getProtocol()
{
return protocol;
}
*/
public abstract List<String> getChainNames();
+ /**
+ * Returns the Jalview panel hosting the structure viewer (if any)
+ *
+ * @return
+ */
+ public JalviewStructureDisplayI getViewer()
+ {
+ return null;
+ }
}
*/
package jalview.util;
+import jalview.bin.Cache;
import jalview.bin.Jalview;
import jalview.gui.EPSOptions;
import jalview.gui.IProgressIndicator;
public class ImageMaker
{
+ public static final String SVG_DESCRIPTION = "Scalable Vector Graphics";
+
+ public static final String SVG_EXTENSION = "svg";
+
+ public static final String EPS_DESCRIPTION = "Encapsulated Postscript";
+
+ public static final String EPS_EXTENSION = "eps";
+
+ public static final String PNG_EXTENSION = "png";
+
+ public static final String PNG_DESCRIPTION = "Portable network graphics";
+
+ public static final String HTML_EXTENSION = "html";
+
+ public static final String HTML_DESCRIPTION = "Hypertext Markup Language";
+
EpsGraphics2D pg;
SVGGraphics2D g2;
out.close();
break;
case PNG:
- ImageIO.write(bi, "png", out);
+ ImageIO.write(bi, PNG_EXTENSION, out);
out.flush();
out.close();
break;
{
return null;
}
- return new jalview.io.JalviewFileChooser(
- jalview.bin.Cache.getProperty("LAST_DIRECTORY"),
- new String[] { "png" },
- new String[] { "Portable network graphics" },
- "Portable network graphics");
+ return new JalviewFileChooser(Cache.getProperty("LAST_DIRECTORY"),
+ PNG_EXTENSION, PNG_DESCRIPTION);
}
static JalviewFileChooser getEPSChooser()
{
return null;
}
- return new jalview.io.JalviewFileChooser(
- jalview.bin.Cache.getProperty("LAST_DIRECTORY"),
- new String[] { "eps" },
- new String[] { "Encapsulated Postscript" },
- "Encapsulated Postscript");
+ return new JalviewFileChooser(Cache.getProperty("LAST_DIRECTORY"),
+ EPS_EXTENSION, EPS_DESCRIPTION);
}
private void setProgressMessage(String message)
{
return null;
}
- return new jalview.io.JalviewFileChooser(
- jalview.bin.Cache.getProperty("LAST_DIRECTORY"),
- new String[] { "svg" },
- new String[] { "Scalable Vector Graphics" },
- "Scalable Vector Graphics");
+ return new JalviewFileChooser(Cache.getProperty("LAST_DIRECTORY"),
+ SVG_EXTENSION, SVG_DESCRIPTION);
}
}
import jalview.datamodel.AlignmentI;
import jalview.datamodel.AlignmentOrder;
import jalview.datamodel.ColumnSelection;
+import jalview.datamodel.SearchResultMatchI;
import jalview.datamodel.SearchResults;
-import jalview.datamodel.SearchResults.Match;
+import jalview.datamodel.SearchResultsI;
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceGroup;
import jalview.datamodel.SequenceI;
/*
* Determine all mappings from this position to mapped sequences.
*/
- SearchResults sr = buildSearchResults(seq, seqpos, mappings);
+ SearchResultsI sr = buildSearchResults(seq, seqpos, mappings);
if (!sr.isEmpty())
{
* @param seqmappings
* @return
*/
- public static SearchResults buildSearchResults(SequenceI seq, int index,
+ public static SearchResultsI buildSearchResults(SequenceI seq, int index,
List<AlignedCodonFrame> seqmappings)
{
- SearchResults results = new SearchResults();
+ SearchResultsI results = new SearchResults();
addSearchResults(results, seq, index, seqmappings);
return results;
}
* @param index
* @param seqmappings
*/
- public static void addSearchResults(SearchResults results, SequenceI seq,
+ public static void addSearchResults(SearchResultsI results, SequenceI seq,
int index, List<AlignedCodonFrame> seqmappings)
{
if (index >= seq.getStart() && index <= seq.getEnd())
*/
List<AlignedCodonFrame> mapping = Arrays
.asList(new AlignedCodonFrame[] { acf });
- SearchResults sr = buildSearchResults(selected,
+ SearchResultsI sr = buildSearchResults(selected,
startResiduePos, mapping);
- for (Match m : sr.getResults())
+ for (SearchResultMatchI m : sr.getResults())
{
mappedStartResidue = m.getStart();
mappedEndResidue = m.getEnd();
}
sr = buildSearchResults(selected, endResiduePos, mapping);
- for (Match m : sr.getResults())
+ for (SearchResultMatchI m : sr.getResults())
{
mappedStartResidue = Math.min(mappedStartResidue,
m.getStart());
* Get the residue position and find the mapped position.
*/
int residuePos = fromSeq.findPosition(col);
- SearchResults sr = buildSearchResults(fromSeq, residuePos, mappings);
- for (Match m : sr.getResults())
+ SearchResultsI sr = buildSearchResults(fromSeq, residuePos, mappings);
+ for (SearchResultMatchI m : sr.getResults())
{
int mappedStartResidue = m.getStart();
int mappedEndResidue = m.getEnd();
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * 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 Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.util;
import jalview.ext.android.SparseIntArray;
import jalview.datamodel.CigarArray;
import jalview.datamodel.ColumnSelection;
import jalview.datamodel.HiddenSequences;
-import jalview.datamodel.ProfileI;
-import jalview.datamodel.SearchResults;
+import jalview.datamodel.ProfilesI;
+import jalview.datamodel.SearchResultsI;
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceCollectionI;
import jalview.datamodel.SequenceGroup;
/**
* results of alignment consensus analysis for visible portion of view
*/
- protected ProfileI[] hconsensus = null;
+ protected ProfilesI hconsensus = null;
/**
* results of cDNA complement consensus visible portion of view
}
@Override
- public void setSequenceConsensusHash(ProfileI[] hconsensus)
+ public void setSequenceConsensusHash(ProfilesI hconsensus)
{
this.hconsensus = hconsensus;
}
}
@Override
- public ProfileI[] getSequenceConsensusHash()
+ public ProfilesI getSequenceConsensusHash()
{
return hconsensus;
}
* the SearchResults to add to
* @return the offset (below top of visible region) of the matched sequence
*/
- protected int findComplementScrollTarget(SearchResults sr)
+ protected int findComplementScrollTarget(SearchResultsI sr)
{
final AlignViewportI complement = getCodingComplement();
if (complement == null || !complement.isFollowHighlight())
*/
private boolean selectionIsDefinedGroup = false;
+
@Override
public boolean isSelectionDefinedGroup()
{
return selectionGroup.getContext() == alignment
|| selectionIsDefinedGroup;
}
+
+ /**
+ * null, or currently highlighted results on this view
+ */
+ private SearchResultsI searchResults = null;
+
+ @Override
+ public boolean hasSearchResults()
+ {
+ return searchResults != null;
+ }
+
+ @Override
+ public void setSearchResults(SearchResultsI results)
+ {
+ searchResults = results;
+ }
+
+ @Override
+ public SearchResultsI getSearchResults()
+ {
+ return searchResults;
+ }
}
continue;
}
- if ((features[i].getBegin() <= res)
- && (features[i].getEnd() >= res))
+ // check if start/end are at res, and if not a contact feature, that res
+ // lies between start and end
+ if ((features[i].getBegin() == res || features[i].getEnd() == res)
+ || (!features[i].isContactFeature()
+ && (features[i].getBegin() < res) && (features[i]
+ .getEnd() >= res)))
{
tmp.add(features[i]);
}
return fc.isColored(sequenceFeature);
}
+ /**
+ * Answers true if the feature type is currently selected to be displayed,
+ * else false
+ *
+ * @param type
+ * @return
+ */
protected boolean showFeatureOfType(String type)
{
- return av.getFeaturesDisplayed().isVisible(type);
+ return type == null ? false : av.getFeaturesDisplayed().isVisible(type);
}
@Override
import jalview.datamodel.AlignmentAnnotation;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.Annotation;
-import jalview.datamodel.ProfileI;
+import jalview.datamodel.ProfilesI;
import jalview.datamodel.SequenceI;
import jalview.schemes.ColourSchemeI;
*/
protected void computeConsensus(AlignmentI alignment)
{
- ProfileI[] hconsensus = new ProfileI[alignment.getWidth()];
SequenceI[] aseqs = getSequences();
- AAFrequency.calculate(aseqs, 0, alignment.getWidth(), hconsensus, true);
+ int width = alignment.getWidth();
+ ProfilesI hconsensus = AAFrequency.calculate(aseqs, width, 0,
+ width, true);
alignViewport.setSequenceConsensusHash(hconsensus);
setColourSchemeConsensus(hconsensus);
/**
* @param hconsensus
*/
- protected void setColourSchemeConsensus(ProfileI[] hconsensus)
+ protected void setColourSchemeConsensus(ProfilesI hconsensus)
{
ColourSchemeI globalColourScheme = alignViewport
.getGlobalColourScheme();
public void updateResultAnnotation(boolean immediate)
{
AlignmentAnnotation consensus = getConsensusAnnotation();
- ProfileI[] hconsensus = (ProfileI[]) getViewportConsensus();
+ ProfilesI hconsensus = (ProfilesI) getViewportConsensus();
if (immediate || !calcMan.isWorking(this) && consensus != null
&& hconsensus != null)
{
* the computed consensus data
*/
protected void deriveConsensus(AlignmentAnnotation consensusAnnotation,
- ProfileI[] hconsensus)
+ ProfilesI hconsensus)
{
+
long nseq = getSequences().length;
- AAFrequency.completeConsensus(consensusAnnotation, hconsensus, 0,
- hconsensus.length, alignViewport.isIgnoreGapsConsensus(),
+ AAFrequency.completeConsensus(consensusAnnotation, hconsensus,
+ hconsensus.getStartColumn(),
+ hconsensus.getEndColumn() + 1,
+ alignViewport.isIgnoreGapsConsensus(),
alignViewport.isShowSequenceLogo(), nseq);
}
*
* @return
*/
- protected Object[] getViewportConsensus()
+ protected Object getViewportConsensus()
{
// TODO convert ComplementConsensusThread to use Profile
return alignViewport.getSequenceConsensusHash();
import jalview.gui.AlignFrame;
import jalview.gui.Desktop;
import jalview.gui.FeatureSettings;
+import jalview.gui.JvOptionPane;
import jalview.util.DBRefUtils;
import jalview.util.MessageManager;
import jalview.util.UrlLink;
import java.util.StringTokenizer;
import java.util.Vector;
-import javax.swing.JOptionPane;
-
import org.biodas.jdas.client.FeaturesClient;
import org.biodas.jdas.client.adapters.features.DasGFFAdapter;
import org.biodas.jdas.client.adapters.features.DasGFFAdapter.GFFAdapter;
if (checkDbrefs && refCount < sequences.length && uniprotCount > 0)
{
- int reply = JOptionPane.YES_OPTION;
+ int reply = JvOptionPane.YES_OPTION;
if (promptFetchDbrefs)
{
- reply = JOptionPane
+ reply = JvOptionPane
.showInternalConfirmDialog(
Desktop.desktop,
MessageManager
.getString("info.you_want_jalview_to_find_uniprot_accessions"),
MessageManager
.getString("label.find_uniprot_accession_ids"),
- JOptionPane.YES_NO_OPTION,
- JOptionPane.QUESTION_MESSAGE);
+ JvOptionPane.YES_NO_OPTION,
+ JvOptionPane.QUESTION_MESSAGE);
}
- if (reply == JOptionPane.YES_OPTION)
+ if (reply == JvOptionPane.YES_OPTION)
{
Thread thread = new Thread(new FetchDBRefs());
thread.start();
{
reply = dbFetch.fetchDataAsFile(
emprefx.toLowerCase() + ":" + query.trim(), "display=xml",
- ".xml");
+ "xml");
} catch (Exception e)
{
stopQuery();
+
/*
* Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
* Copyright (C) $$Year-Rel$$ The Jalview Authors
import jalview.datamodel.PDBEntry;
import jalview.datamodel.PDBEntry.Type;
import jalview.datamodel.SequenceI;
+import jalview.io.DataSourceType;
+import jalview.io.FileFormat;
+import jalview.io.FileFormatI;
import jalview.io.FormatAdapter;
import jalview.io.PDBFeatureSettings;
import jalview.structure.StructureImportSettings;
import jalview.util.MessageManager;
import jalview.ws.ebi.EBIFetchClient;
+import java.io.File;
import java.util.ArrayList;
import java.util.List;
stopQuery();
return null;
}
- String ext = StructureImportSettings.getDefaultStructureFileFormat()
- .equalsIgnoreCase(Type.MMCIF.toString()) ? ".cif" : ".xml";
+
+ /*
+ * ensure that an mmCIF format structure file is saved with extension.cif,
+ * because the Chimera "open" command recognises this extension
+ */
+ Type pdbFileFormat = StructureImportSettings
+ .getDefaultStructureFileFormat();
+ String ext = pdbFileFormat.getExtension();
+ String fetchFormat = pdbFileFormat.getFormat();
+
EBIFetchClient ebi = new EBIFetchClient();
- file = ebi.fetchDataAsFile(
- "pdb:" + id,
- StructureImportSettings.getDefaultStructureFileFormat()
- .toLowerCase(), ext).getAbsolutePath();
+ File tmpFile = ebi.fetchDataAsFile("pdb:" + id, fetchFormat, ext);
+ file = tmpFile.getAbsolutePath();
stopQuery();
if (file == null)
{
}
try
{
-
+ // todo get rid of Type and use FileFormatI instead?
+ FileFormatI fileFormat = (pdbFileFormat == Type.PDB) ? FileFormat.PDB
+ : FileFormat.MMCif;
pdbAlignment = new FormatAdapter().readFile(file,
- jalview.io.AppletFormatAdapter.FILE,
- StructureImportSettings.getDefaultStructureFileFormat());
+ DataSourceType.FILE, fileFormat);
if (pdbAlignment != null)
{
List<SequenceI> toremove = new ArrayList<SequenceI>();
import jalview.datamodel.AlignmentI;
import jalview.datamodel.DBRefEntry;
import jalview.datamodel.DBRefSource;
+import jalview.io.DataSourceType;
+import jalview.io.FileFormat;
import jalview.io.FormatAdapter;
import com.stevesoft.pat.Regex;
// retrieved.
startQuery();
AlignmentI rcds = new FormatAdapter().readFile(getXFAMURL()
- + queries.trim().toUpperCase(), jalview.io.FormatAdapter.URL,
- "STH");
+ + queries.trim().toUpperCase(), DataSourceType.URL,
+ FileFormat.Stockholm);
for (int s = 0, sNum = rcds.getHeight(); s < sNum; s++)
{
rcds.getSequenceAt(s).addDBRef(new DBRefEntry(DBRefSource.PFAM,
// uniprotxml parameter required since december 2007
// uniprotkb dbname changed introduced december 2008
File file = ebi.fetchDataAsFile("uniprotkb:" + queries, "uniprotxml",
- ".xml");
+ "xml");
Vector<UniprotEntry> entries = getUniprotEntries(new FileReader(file));
if (entries != null)
import jalview.datamodel.AlignmentI;
import jalview.datamodel.DBRefEntry;
+import jalview.io.DataSourceType;
+import jalview.io.FileFormat;
import jalview.io.FormatAdapter;
import jalview.ws.seqfetcher.DbSourceProxyImpl;
// TODO: trap HTTP 404 exceptions and return null
AlignmentI rcds = new FormatAdapter().readFile(getXFAMURL()
+ queries.trim().toUpperCase() + getXFAMURLSUFFIX(),
- jalview.io.FormatAdapter.URL, "STH");
+ DataSourceType.URL, FileFormat.Stockholm);
for (int s = 0, sNum = rcds.getHeight(); s < sNum; s++)
{
rcds.getSequenceAt(s).addDBRef(new DBRefEntry(getXfamSource(),
* @param format
* the format wanted
* @param extension
- * for the temporary file to hold response
+ * for the temporary file to hold response (without separator)
* @return the file holding the response
* @throws OutOfMemoryError
*/
File outFile = null;
try
{
- outFile = File.createTempFile("jalview", ext);
+ outFile = File.createTempFile("jalview", "." + ext);
outFile.deleteOnExit();
fetchData(ids, format, outFile);
if (outFile.length() == 0)
package jalview.ws.jws1;
import jalview.datamodel.AlignmentI;
+import jalview.io.FileFormat;
import jalview.io.FileParse;
import jalview.io.FormatAdapter;
import jalview.io.InputStreamParser;
while (r.hasNext())
{
FileParse fp = new InputStreamParser(r.next(), source.getDataName());
- AlignmentI nal = new FormatAdapter().readFromFile(fp, "RNAML");
+ AlignmentI nal = new FormatAdapter().readFromFile(fp,
+ FileFormat.Rnaml);
if (al == null)
{
al = nal;
*/
package jalview.ws.jws1;
+import jalview.gui.JvOptionPane;
import jalview.util.MessageManager;
import java.util.Hashtable;
import java.util.StringTokenizer;
import java.util.Vector;
-import javax.swing.JOptionPane;
-
import ext.vamsas.IRegistry;
import ext.vamsas.IRegistryServiceLocator;
import ext.vamsas.RegistryServiceSoapBindingStub;
{
if (jalview.gui.Desktop.desktop != null)
{
- JOptionPane.showMessageDialog(jalview.gui.Desktop.desktop,
+ JvOptionPane.showMessageDialog(jalview.gui.Desktop.desktop,
MessageManager.getString("label.set_proxy_settings"),
MessageManager
.getString("label.proxy_authorization_failed"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
}
}
else
/**
* creates a new thread to call discoverServices()
*/
+ @Override
public void run()
{
final Discoverer discoverer = this;
Thread discoverThread = new Thread()
{
+ @Override
public void run()
{
discoverer.doDiscovery();
import jalview.datamodel.SequenceI;
import jalview.gui.AlignFrame;
import jalview.gui.Desktop;
+import jalview.gui.JvOptionPane;
import jalview.gui.WebserviceInfo;
import jalview.util.MessageManager;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
-import javax.swing.JOptionPane;
import ext.vamsas.Jpred;
import ext.vamsas.JpredServiceLocator;
} catch (Exception ex)
{
- JOptionPane
+ JvOptionPane
.showMessageDialog(
Desktop.desktop,
MessageManager
new String[] { WebServiceName, WsURL }),
MessageManager
.getString("label.internal_jalview_error"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
wsInfo.setProgressText(MessageManager
.formatMessage(
"label.secondary_structure_prediction_service_couldnt_be_located",
return server;
}
+ @Override
public void attachWSMenuEntry(JMenu wsmenu, final ServiceHandle sh,
final AlignFrame af)
{
method.setToolTipText(sh.getEndpointURL());
method.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
AlignmentView msa = af.gatherSeqOrMsaForSecStrPrediction();
package jalview.ws.jws1;
import jalview.analysis.AlignSeq;
+import jalview.analysis.SeqsetUtils;
import jalview.bin.Cache;
import jalview.datamodel.Alignment;
import jalview.datamodel.AlignmentAnnotation;
import jalview.gui.AlignFrame;
import jalview.gui.Desktop;
import jalview.gui.WebserviceInfo;
+import jalview.io.DataSourceType;
+import jalview.io.FileFormatI;
import jalview.io.FormatAdapter;
+import jalview.io.IdentifyFile;
+import jalview.io.JPredFile;
+import jalview.io.JnetAnnotationMaker;
+import jalview.io.PileUpfile;
import jalview.util.Comparison;
import jalview.util.MessageManager;
import jalview.ws.AWsJob;
* @return true if getResultSet will return a valid alignment and prediction
* result.
*/
+ @Override
public boolean hasResults()
{
if (subjobComplete && result != null && result.isFinished()
return false;
}
+ @Override
public boolean hasValidInput()
{
if (sequence != null)
JpredResult result = (JpredResult) this.result;
- jalview.bin.Cache.log.debug("Parsing output from JNet job.");
+ Cache.log.debug("Parsing output from JNet job.");
// JPredFile prediction = new JPredFile("C:/JalviewX/files/jpred.txt",
// "File");
- jalview.io.JPredFile prediction = new jalview.io.JPredFile(
- result.getPredfile(), "Paste");
+ JPredFile prediction = new JPredFile(
+ result.getPredfile(), DataSourceType.PASTE);
SequenceI[] preds = prediction.getSeqsAsArray();
- jalview.bin.Cache.log.debug("Got prediction profile.");
+ Cache.log.debug("Got prediction profile.");
if ((this.msa != null) && (result.getAligfile() != null))
{
- jalview.bin.Cache.log.debug("Getting associated alignment.");
+ Cache.log.debug("Getting associated alignment.");
// we ignore the returned alignment if we only predicted on a single
// sequence
- String format = new jalview.io.IdentifyFile().identify(
- result.getAligfile(), "Paste");
+ FileFormatI format = new IdentifyFile().identify(
+ result.getAligfile(), DataSourceType.PASTE);
- if (jalview.io.FormatAdapter.isValidFormat(format))
+ if (format != null)
{
SequenceI sqs[];
if (predMap != null)
else
{
al = new FormatAdapter().readFile(result.getAligfile(),
- "Paste", format);
+ DataSourceType.PASTE, format);
sqs = new SequenceI[al.getHeight()];
for (int i = 0, j = al.getHeight(); i < j; i++)
{
sqs[i] = al.getSequenceAt(i);
}
- if (!jalview.analysis.SeqsetUtils.deuniquify(SequenceInfo, sqs))
+ if (!SeqsetUtils.deuniquify(SequenceInfo, sqs))
{
throw (new Exception(
MessageManager
{
al.setDataset(null);
}
- jalview.io.JnetAnnotationMaker.add_annotation(prediction, al,
+ JnetAnnotationMaker.add_annotation(prediction, al,
FirstSeq, false, predMap);
}
{
throw (new Exception(MessageManager.formatMessage(
"exception.unknown_format_for_file", new String[] {
- format, result.getAligfile() })));
+ format.toString(), result.getAligfile() })));
}
}
else
if (msf.length > 1)
{
msa = new vamsas.objects.simple.Msfalignment();
- jalview.io.PileUpfile pileup = new jalview.io.PileUpfile();
- msa.setMsf(pileup.print(msf));
+ PileUpfile pileup = new PileUpfile();
+ msa.setMsf(pileup.print(msf, true));
}
}
}
}
}
+ @Override
public void StartJob(AWsJob j)
{
if (!(j instanceof JPredJob))
}
}
+ @Override
public void parseResult()
{
int results = 0; // number of result sets received
wsInfo.showResultsNewFrame
.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(java.awt.event.ActionEvent evt)
{
displayResults(true);
wsInfo.mergeResults
.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(java.awt.event.ActionEvent evt)
{
displayResults(false);
}
}
+ @Override
public void pollJob(AWsJob job) throws Exception
{
((JPredJob) job).result = server.getresult(job.getJobId());
}
+ @Override
public boolean isCancellable()
{
return false;
}
+ @Override
public void cancelJob()
{
throw new Error(MessageManager.getString("error.implementation_error"));
}
+ @Override
public boolean canMergeResults()
{
return false;
import jalview.datamodel.AlignmentView;
import jalview.gui.AlignFrame;
import jalview.gui.Desktop;
+import jalview.gui.JvOptionPane;
import jalview.gui.WebserviceInfo;
import jalview.util.MessageManager;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
-import javax.swing.JOptionPane;
import ext.vamsas.MuscleWSServiceLocator;
import ext.vamsas.MuscleWSSoapBindingStub;
alignFrame = _alignFrame;
if (!sh.getAbstractName().equals("MsaWS"))
{
- JOptionPane.showMessageDialog(Desktop.desktop, MessageManager
+ JvOptionPane.showMessageDialog(Desktop.desktop, MessageManager
.formatMessage("label.service_called_is_not_msa_service",
new String[] { sh.getName() }), MessageManager
.getString("label.internal_jalview_error"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
return;
}
if ((wsInfo = setWebService(sh)) == null)
{
- JOptionPane.showMessageDialog(Desktop.desktop, MessageManager
+ JvOptionPane.showMessageDialog(Desktop.desktop, MessageManager
.formatMessage("label.msa_service_is_unknown",
new String[] { sh.getName() }), MessageManager
.getString("label.internal_jalview_error"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
return;
}
import jalview.datamodel.AlignmentView;
import jalview.gui.AlignFrame;
import jalview.gui.Desktop;
+import jalview.gui.JvOptionPane;
import jalview.gui.WebserviceInfo;
import jalview.util.MessageManager;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
-import javax.swing.JOptionPane;
import ext.vamsas.SeqSearchServiceLocator;
import ext.vamsas.SeqSearchServiceSoapBindingStub;
// name to service client name
if (!sh.getAbstractName().equals(this.getServiceActionKey()))
{
- JOptionPane.showMessageDialog(Desktop.desktop, MessageManager
+ JvOptionPane.showMessageDialog(Desktop.desktop, MessageManager
.formatMessage(
"label.service_called_is_not_seq_search_service",
new String[] { sh.getName() }), MessageManager
.getString("label.internal_jalview_error"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
return;
}
if ((wsInfo = setWebService(sh)) == null)
{
- JOptionPane.showMessageDialog(Desktop.desktop, MessageManager
+ JvOptionPane.showMessageDialog(Desktop.desktop, MessageManager
.formatMessage("label.seq_search_service_is_unknown",
new String[] { sh.getName() }), MessageManager
.getString("label.internal_jalview_error"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
return;
}
if (inFile != null && inFile.length() > 0)
{
new jalview.io.AnnotationFile().readAnnotationFile(al, inFile,
- jalview.io.AppletFormatAdapter.PASTE);
+ jalview.io.DataSourceType.PASTE);
}
} catch (Exception e)
{
if (inFile != null && inFile.length() > 0)
{
jalview.io.FeaturesFile ff = new jalview.io.FeaturesFile(
- inFile, jalview.io.AppletFormatAdapter.PASTE);
+ inFile, jalview.io.DataSourceType.PASTE);
ff.parse(al, featureColours, false);
}
} catch (Exception e)
if (inFile != null && inFile.length() > 0)
{
nf = new jalview.io.NewickFile(inFile,
- jalview.io.AppletFormatAdapter.PASTE);
+ jalview.io.DataSourceType.PASTE);
if (!nf.isValid())
{
nf.close();
import jalview.datamodel.AlignmentView;
import jalview.gui.AlignFrame;
import jalview.gui.Desktop;
+import jalview.gui.JvOptionPane;
import jalview.gui.JvSwingUtils;
import jalview.util.MessageManager;
import jalview.ws.jws2.jabaws2.Jws2Instance;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
-import javax.swing.JOptionPane;
import javax.swing.ToolTipManager;
import compbio.data.msa.MsaWS;
if (!(sh.service instanceof MsaWS))
{
// redundant at mo - but may change
- JOptionPane.showMessageDialog(Desktop.desktop, MessageManager
+ JvOptionPane.showMessageDialog(Desktop.desktop, MessageManager
.formatMessage("label.service_called_is_not_msa_service",
new String[] { sh.serviceType }), MessageManager
.getString("label.internal_jalview_error"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
return;
}
server = (MsaWS) sh.service;
if ((wsInfo = setWebService(sh, false)) == null)
{
- JOptionPane.showMessageDialog(Desktop.desktop, MessageManager
+ JvOptionPane.showMessageDialog(Desktop.desktop, MessageManager
.formatMessage("label.msa_service_is_unknown",
new String[] { sh.serviceType }), MessageManager
.getString("label.internal_jalview_error"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
return;
}
}
else
{
- JOptionPane.showMessageDialog(alignFrame,
+ JvOptionPane.showMessageDialog(alignFrame,
MessageManager.getString("info.invalid_msa_input_mininfo"),
MessageManager.getString("info.invalid_msa_notenough"),
- JOptionPane.INFORMATION_MESSAGE);
+ JvOptionPane.INFORMATION_MESSAGE);
wsInfo.setVisible(false);
}
}
// dan changed! dan test. comment out if conditional
// if (alignFrame.getViewport().getAlignment().isNucleotide())
// {
- // JOptionPane.showMessageDialog(Desktop.desktop, sh.serviceType
+ // JvOptionPane.showMessageDialog(Desktop.desktop, sh.serviceType
// + " can only be used\nfor amino acid alignments.",
- // "Wrong type of sequences!", JOptionPane.WARNING_MESSAGE);
+ // "Wrong type of sequences!", JvOptionPane.WARNING_MESSAGE);
// return;
//
// }
import jalview.gui.AlignViewport;
import jalview.gui.AlignmentPanel;
import jalview.gui.Desktop;
+import jalview.gui.JvOptionPane;
import jalview.gui.WebserviceInfo;
import jalview.io.packed.DataProvider.JvDataType;
import jalview.util.MessageManager;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
-import javax.swing.JOptionPane;
import javax.swing.event.MenuEvent;
import javax.swing.event.MenuListener;
else
{
// TODO: try to tell the user why the job couldn't be started.
- JOptionPane
+ JvOptionPane
.showMessageDialog(
Desktop.desktop,
(jobsthread.hasWarnings() ? jobsthread.getWarnings()
.getString("label.job_couldnt_be_started_check_input")),
MessageManager
.getString("label.unable_start_web_service_analysis"),
- JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.WARNING_MESSAGE);
}
}
package jalview.ws.rest.params;
import jalview.datamodel.AlignmentI;
+import jalview.io.FileFormat;
+import jalview.io.FileFormatI;
+import jalview.io.FormatAdapter;
import jalview.ws.params.OptionI;
import jalview.ws.params.simple.BooleanOption;
import jalview.ws.params.simple.Option;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
import org.apache.http.entity.mime.content.ContentBody;
super(new Class[] { AlignmentI.class });
}
- String format = "FASTA";
+ FileFormatI format = FileFormat.Fasta;
molType type;
PrintWriter pw = new PrintWriter(
new OutputStreamWriter(new BufferedOutputStream(
new FileOutputStream(fa)), "UTF-8"));
- pw.append(new jalview.io.FormatAdapter().formatSequences(format,
+ pw.append(new FormatAdapter().formatSequences(format,
alignment, jvsuffix));
pw.close();
return new FileBody(fa, "text/plain");
}
else
{
- jalview.io.FormatAdapter fa = new jalview.io.FormatAdapter();
+ FormatAdapter fa = new FormatAdapter();
fa.setNewlineString("\r\n");
return new StringBody(
(fa.formatSequences(format, alignment, jvsuffix)));
{
prms.add("jvsuffix");
}
- ;
if (writeAsFile)
{
prms.add("writeasfile");
}
- ;
return prms;
}
if (tok.startsWith("format"))
{
- for (String fmt : jalview.io.FormatAdapter.WRITEABLE_FORMATS)
+ for (FileFormatI fmt : FileFormat.values())
{
- if (val.equalsIgnoreCase(fmt))
+ if (fmt.isWritable() && val.equalsIgnoreCase(fmt.toString()))
{
format = fmt;
return true;
}
warnings.append("Invalid alignment format '" + val
+ "'. Must be one of (");
- for (String fmt : jalview.io.FormatAdapter.WRITEABLE_FORMATS)
+ for (FileFormatI fmt : FileFormat.values())
{
- warnings.append(" " + fmt);
+ if (fmt.isWritable())
+ {
+ warnings.append(" " + fmt).toString();
+ }
}
warnings.append(")\n");
}
"Append jalview style /start-end suffix to ID", false, false,
writeAsFile, null));
- lst.add(new Option("format", "Alignment upload format", true, "FASTA",
- format, Arrays
- .asList(jalview.io.FormatAdapter.WRITEABLE_FORMATS),
+ lst.add(new Option("format", "Alignment upload format", true,
+ FileFormat.Fasta.toString(), format.toString(), getWritableFormats(),
null));
lst.add(createMolTypeOption("type", "Sequence type", false, type, null));
return lst;
}
+ /**
+ * @return
+ */
+ protected List<String> getWritableFormats()
+ {
+ List<String> formats = new ArrayList<String>();
+ for (FileFormatI ff : FileFormat.values())
+ {
+ if (ff.isWritable())
+ {
+ formats.add(ff.toString());
+ }
+ }
+ return formats;
+ }
+
}
import jalview.api.FeatureSettingsModelI;
import jalview.datamodel.AlignmentI;
+import jalview.io.DataSourceType;
+import jalview.io.FileFormatI;
import jalview.io.FormatAdapter;
import jalview.io.IdentifyFile;
protected AlignmentI parseResult(String result) throws Exception
{
AlignmentI sequences = null;
- String format = new IdentifyFile().identify(result, "Paste");
- if (FormatAdapter.isValidFormat(format))
+ FileFormatI format = new IdentifyFile().identify(result,
+ DataSourceType.PASTE);
+ if (format != null)
{
- sequences = new FormatAdapter().readFile(result.toString(), "Paste",
+ sequences = new FormatAdapter().readFile(result.toString(),
+ DataSourceType.PASTE,
format);
}
return sequences;
return new File(siftsFileName);
}
}
+ else
+ {
+ return siftsFile;
+ }
}
try
{
if (os != null)
{
MappingOutputPojo mop = new MappingOutputPojo();
- mop.setSeqStart(pdbStart);
- mop.setSeqEnd(pdbEnd);
+ mop.setSeqStart(seqStart);
+ mop.setSeqEnd(seqEnd);
mop.setSeqName(seq.getName());
mop.setSeqResidue(matchedSeq);
- mop.setStrStart(seqStart);
- mop.setStrEnd(seqEnd);
+ mop.setStrStart(pdbStart);
+ mop.setStrEnd(pdbEnd);
mop.setStrName(structId);
mop.setStrResidue(targetStrucSeqs.toString());
import static org.testng.AssertJUnit.assertEquals;
+import jalview.gui.JvOptionPane;
+
import org.testng.Assert;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class AtomTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
/**
* Test the constructor that parses a PDB file format ATOM line. Fields are in
* fixed column positions
import static org.testng.AssertJUnit.assertEquals;
+import jalview.gui.JvOptionPane;
+
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class BondTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = { "Functional" })
public void testTranslate()
{
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceI;
+import jalview.gui.JvOptionPane;
import jalview.schemes.ColourSchemeI;
import jalview.schemes.TaylorColourScheme;
import jalview.structure.StructureImportSettings;
import java.awt.Color;
import java.util.Vector;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class PDBChainTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
PDBChain c;
final Atom a1 = new Atom(1f, 2f, 3f);
import jalview.datamodel.PDBEntry;
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceI;
-import jalview.io.AppletFormatAdapter;
+import jalview.gui.JvOptionPane;
+import jalview.io.DataSourceType;
import jalview.structure.StructureImportSettings;
import java.io.IOException;
import java.util.List;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class PDBfileTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = { "Functional" })
public void testIsRna()
{
* Constructor with file path performs parse()
*/
PDBfile pf = new PDBfile(false, false, false, "examples/3W5V.pdb",
- AppletFormatAdapter.FILE);
+ DataSourceType.FILE);
assertEquals("3W5V", pf.getId());
// verify no alignment annotations created
public void testParse_withAnnotations_noSS() throws IOException
{
PDBfile pf = new PDBfile(true, false, false, "examples/3W5V.pdb",
- AppletFormatAdapter.FILE);
+ DataSourceType.FILE);
AlignmentAnnotation[] anns = getAlignmentAnnotations(pf);
assertEquals(4, anns.length);
public void testParse_withJmol_noAnnotations() throws IOException
{
PDBfile pf = new PDBfile(false, true, false, "examples/3W5V.pdb",
- AppletFormatAdapter.FILE);
+ DataSourceType.FILE);
/*
* alignment annotations _are_ created anyway (in
throws IOException
{
PDBfile pf = new PDBfile(true, true, false, "examples/3W5V.pdb",
- AppletFormatAdapter.FILE);
+ DataSourceType.FILE);
/*
* Alignment annotations for TempFactor, SecStruct, per sequence (chain)
// TODO requires a mock for Annotate3D processing
// and/or run as an integration test
PDBfile pf = new PDBfile(true, true, true, "examples/2GIS.pdb",
- AppletFormatAdapter.FILE);
+ DataSourceType.FILE);
}
/**
return al.getAlignmentAnnotation();
}
- // @formatter:on
-
@BeforeMethod(alwaysRun = true)
public void setUp()
{
import static org.testng.AssertJUnit.assertNull;
import static org.testng.AssertJUnit.assertSame;
+import jalview.gui.JvOptionPane;
+
import java.util.Vector;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class ResidueTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = { "Functional" })
public void testFindAtom()
{
import jalview.datamodel.AlignmentAnnotation;
import jalview.datamodel.Annotation;
import jalview.datamodel.ProfileI;
+import jalview.datamodel.ProfilesI;
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceI;
+import jalview.gui.JvOptionPane;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class AAFrequencyTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = { "Functional" })
public void testCalculate_noProfile()
{
SequenceI seq3 = new Sequence("Seq3", "C---G");
SequenceI seq4 = new Sequence("Seq4", "CA--t");
SequenceI[] seqs = new SequenceI[] { seq1, seq2, seq3, seq4 };
- ProfileI[] result = new ProfileI[seq1.getLength()];
-
- AAFrequency.calculate(seqs, 0, seq1.getLength(), result, false);
+ int width = seq1.getLength();
+ ProfilesI result = AAFrequency.calculate(seqs, width, 0, width,
+ false);
// col 0 is 100% C
- ProfileI col = result[0];
+ ProfileI col = result.get(0);
assertEquals(100f, col.getPercentageIdentity(false));
assertEquals(100f, col.getPercentageIdentity(true));
assertEquals(4, col.getMaxCount());
assertNull(col.getCounts());
// col 1 is 75% A
- col = result[1];
+ col = result.get(1);
assertEquals(75f, col.getPercentageIdentity(false));
assertEquals(100f, col.getPercentageIdentity(true));
assertEquals(3, col.getMaxCount());
assertEquals("A", col.getModalResidue());
// col 2 is 50% G 50% C or 25/25 counting gaps
- col = result[2];
+ col = result.get(2);
assertEquals(25f, col.getPercentageIdentity(false));
assertEquals(50f, col.getPercentageIdentity(true));
assertEquals(1, col.getMaxCount());
assertEquals("CG", col.getModalResidue());
// col 3 is all gaps
- col = result[3];
+ col = result.get(3);
assertEquals(0f, col.getPercentageIdentity(false));
assertEquals(0f, col.getPercentageIdentity(true));
assertEquals(0, col.getMaxCount());
assertEquals("", col.getModalResidue());
// col 4 is 75% T 25% G
- col = result[4];
+ col = result.get(4);
assertEquals(75f, col.getPercentageIdentity(false));
assertEquals(75f, col.getPercentageIdentity(true));
assertEquals(3, col.getMaxCount());
SequenceI seq3 = new Sequence("Seq3", "C--G");
SequenceI seq4 = new Sequence("Seq4", "CA-t");
SequenceI[] seqs = new SequenceI[] { seq1, seq2, seq3, seq4 };
- ProfileI[] result = new ProfileI[seq1.getLength()];
+ int width = seq1.getLength();
+ ProfilesI result = AAFrequency.calculate(seqs, width, 0, width,
+ true);
- AAFrequency.calculate(seqs, 0, seq1.getLength(), result, true);
- ProfileI profile = result[0];
+ ProfileI profile = result.get(0);
assertEquals(4, profile.getCounts().getCount('C'));
assertEquals(4, profile.getHeight());
assertEquals(4, profile.getNonGapped());
- profile = result[1];
+ profile = result.get(1);
assertEquals(3, profile.getCounts().getCount('A'));
assertEquals(4, profile.getHeight());
assertEquals(3, profile.getNonGapped());
- profile = result[2];
+ profile = result.get(2);
assertEquals(1, profile.getCounts().getCount('C'));
assertEquals(1, profile.getCounts().getCount('G'));
assertEquals(4, profile.getHeight());
assertEquals(2, profile.getNonGapped());
- profile = result[3];
+ profile = result.get(3);
assertEquals(3, profile.getCounts().getCount('T'));
assertEquals(1, profile.getCounts().getCount('G'));
assertEquals(4, profile.getHeight());
SequenceI seq3 = new Sequence("Seq3", "C--G");
SequenceI seq4 = new Sequence("Seq4", "CA-t");
SequenceI[] seqs = new SequenceI[] { seq1, seq2, seq3, seq4 };
- ProfileI[] result = new ProfileI[seq1.getLength()];
- // ensure class loaded and initialized
- AAFrequency.calculate(seqs, 0, seq1.getLength(), result, true);
+ // ensure class loaded and initialised
+ int width = seq1.getLength();
+ AAFrequency.calculate(seqs, width, 0, width, true);
+
int reps = 100000;
long start = System.currentTimeMillis();
for (int i = 0; i < reps; i++)
{
- AAFrequency.calculate(seqs, 0, seq1.getLength(), result, true);
+ AAFrequency.calculate(seqs, width, 0, width, true);
}
System.out.println(System.currentTimeMillis() - start);
}
SequenceI seq3 = new Sequence("Seq3", "C---G");
SequenceI seq4 = new Sequence("Seq4", "CA--t");
SequenceI[] seqs = new SequenceI[] { seq1, seq2, seq3, seq4 };
- ProfileI[] profiles = new ProfileI[seq1.getLength()];
- AAFrequency.calculate(seqs, 0, seq1.getLength(), profiles, true);
+ int width = seq1.getLength();
+ ProfilesI profiles = AAFrequency.calculate(seqs, width, 0, width, true);
AlignmentAnnotation consensus = new AlignmentAnnotation("Consensus",
- "PID", new Annotation[seq1.getLength()]);
+ "PID", new Annotation[width]);
AAFrequency
.completeConsensus(consensus, profiles, 0, 5, false, true, 4);
SequenceI seq3 = new Sequence("Seq3", "C---G");
SequenceI seq4 = new Sequence("Seq4", "CA--t");
SequenceI[] seqs = new SequenceI[] { seq1, seq2, seq3, seq4 };
- ProfileI[] profiles = new ProfileI[seq1.getLength()];
- AAFrequency.calculate(seqs, 0, seq1.getLength(), profiles, true);
+ int width = seq1.getLength();
+ ProfilesI profiles = AAFrequency.calculate(seqs, width, 0, width, true);
AlignmentAnnotation consensus = new AlignmentAnnotation("Consensus",
- "PID", new Annotation[seq1.getLength()]);
+ "PID", new Annotation[width]);
AAFrequency
.completeConsensus(consensus, profiles, 0, 5, true, false, 4);
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
+import jalview.gui.JvOptionPane;
+
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class AlignSeqTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = { "Functional" })
public void testExtractGaps()
{
import jalview.datamodel.AlignmentI;
import jalview.datamodel.Annotation;
import jalview.datamodel.SequenceI;
-import jalview.io.AppletFormatAdapter;
+import jalview.gui.JvOptionPane;
+import jalview.io.DataSourceType;
+import jalview.io.FileFormat;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class AlignmentAnnotationUtilsTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
// 4 sequences x 13 positions
final static String EOL = "\n";
public void setUp() throws IOException
{
alignment = new jalview.io.FormatAdapter().readFile(TEST_DATA,
- AppletFormatAdapter.PASTE, "FASTA");
+ DataSourceType.PASTE, FileFormat.Fasta);
AlignmentAnnotation[] anns = new AlignmentAnnotation[SEQ_ANN_COUNT];
for (int i = 0; i < anns.length; i++)
import jalview.datamodel.Annotation;
import jalview.datamodel.DBRefEntry;
import jalview.datamodel.Mapping;
-import jalview.datamodel.SearchResults;
-import jalview.datamodel.SearchResults.Match;
+import jalview.datamodel.SearchResultMatchI;
+import jalview.datamodel.SearchResultsI;
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceI;
+import jalview.gui.JvOptionPane;
import jalview.io.AppletFormatAdapter;
+import jalview.io.DataSourceType;
+import jalview.io.FileFormat;
+import jalview.io.FileFormatI;
import jalview.io.FormatAdapter;
import jalview.util.MapList;
import jalview.util.MappingUtils;
import java.util.Map;
import java.util.TreeMap;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class AlignmentUtilsTests
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
public static Sequence ts = new Sequence("short",
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklm");
SequenceI s1 = ts.deriveSequence().getSubSequence(i, i + 7);
al.addSequence(s1);
}
- System.out.println(new AppletFormatAdapter().formatSequences("Clustal",
+ System.out.println(new AppletFormatAdapter().formatSequences(
+ FileFormat.Clustal,
al, true));
for (int flnk = -1; flnk < 25; flnk++)
{
AlignmentI exp = AlignmentUtils.expandContext(al, flnk);
System.out.println("\nFlank size: " + flnk);
System.out.println(new AppletFormatAdapter().formatSequences(
- "Clustal", exp, true));
+ FileFormat.Clustal, exp, true));
if (flnk == -1)
{
/*
{
final String data = ">Seq1Name\nKQYL\n" + ">Seq2Name\nRFPW\n"
+ ">Seq1Name\nABCD\n";
- AlignmentI al = loadAlignment(data, "FASTA");
+ AlignmentI al = loadAlignment(data, FileFormat.Fasta);
Map<String, List<SequenceI>> map = AlignmentUtils
.getSequencesByName(al);
assertEquals(2, map.keySet().size());
* @return
* @throws IOException
*/
- protected AlignmentI loadAlignment(final String data, String format)
+ protected AlignmentI loadAlignment(final String data, FileFormatI format)
throws IOException
{
AlignmentI a = new FormatAdapter().readFile(data,
- AppletFormatAdapter.PASTE, format);
+ DataSourceType.PASTE, format);
a.setDataset(null);
return a;
}
assertEquals(1, mappings.size());
// map G to GGG
- SearchResults sr = MappingUtils.buildSearchResults(pep1, 1, mappings);
+ SearchResultsI sr = MappingUtils.buildSearchResults(pep1, 1, mappings);
assertEquals(1, sr.getResults().size());
- Match m = sr.getResults().get(0);
+ SearchResultMatchI m = sr.getResults().get(0);
assertSame(cds1Dss, m.getSequence());
assertEquals(1, m.getStart());
assertEquals(3, m.getEnd());
List<AlignedCodonFrame> pep1CdsMappings = MappingUtils
.findMappingsForSequence(cds.getSequenceAt(0), pep1Mappings);
assertEquals(1, pep1CdsMappings.size());
- SearchResults sr = MappingUtils.buildSearchResults(pep1, 1,
+ SearchResultsI sr = MappingUtils.buildSearchResults(pep1, 1,
pep1CdsMappings);
assertEquals(1, sr.getResults().size());
- Match m = sr.getResults().get(0);
+ SearchResultMatchI m = sr.getResults().get(0);
assertEquals(cds.getSequenceAt(0).getDatasetSequence(), m.getSequence());
assertEquals(1, m.getStart());
assertEquals(3, m.getEnd());
assertEquals(1, mappings.size());
// map G to GGG
- SearchResults sr = MappingUtils.buildSearchResults(pep3, 1, mappings);
+ SearchResultsI sr = MappingUtils.buildSearchResults(pep3, 1, mappings);
assertEquals(1, sr.getResults().size());
- Match m = sr.getResults().get(0);
+ SearchResultMatchI m = sr.getResults().get(0);
assertSame(cds.getSequenceAt(0).getDatasetSequence(), m.getSequence());
assertEquals(1, m.getStart());
assertEquals(3, m.getEnd());
import jalview.datamodel.AlignmentAnnotation;
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceI;
+import jalview.gui.JvOptionPane;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class AnnotationSorterTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
private static final int NUM_SEQS = 6;
private static final int NUM_ANNS = 7;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertTrue;
+import jalview.gui.JvOptionPane;
+
import java.util.Arrays;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class CodingUtilsTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = { "Functional" })
public void testDecodeCodon()
{
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * 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 Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.analysis;
import static org.testng.Assert.assertEquals;
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceI;
+import jalview.gui.JvOptionPane;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class ConservationTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = "Functional")
public void testRecordConservation()
{
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceI;
+import jalview.gui.JvOptionPane;
import jalview.util.DBRefUtils;
import jalview.util.MapList;
import jalview.ws.SequenceFetcher;
import java.util.List;
import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class CrossRefTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = { "Functional" })
public void testFindXDbRefs()
{
import jalview.datamodel.AlignmentI;
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceI;
+import jalview.gui.JvOptionPane;
import jalview.io.FastaFile;
import java.util.Arrays;
import java.util.Random;
+import org.testng.annotations.BeforeClass;
+
/**
* Generates, and outputs in Fasta format, a random DNA alignment for given
* sequence length and count. Will regenerate the same alignment each time if
*/
public class DnaAlignmentGenerator
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
private static final char GAP = '-';
private static final char ZERO = '0';
private Random random;
+
/**
* Outputs a DNA 'alignment' where each position is a random choice from
* 'GTCA-'.
+ " bases with " + gapPercentage + "% gaps and "
+ changePercentage + "% mutations (random seed = " + randomSeed
+ ")");
- System.out.println(new FastaFile().print(al.getSequencesArray()));
+ System.out.println(new FastaFile().print(al.getSequencesArray(), true));
}
/**
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceI;
import jalview.gui.AlignViewport;
+import jalview.gui.JvOptionPane;
+import jalview.io.DataSourceType;
+import jalview.io.FileFormat;
import jalview.io.FormatAdapter;
import java.io.IOException;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class DnaTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
// @formatter:off
// AA encoding codons as ordered on the Jalview help page Amino Acid Table
private static String fasta = ">B\n" + "GCT" + "GCC" + "GCA" + "GCG"
throws IOException
{
AlignmentI alf = new FormatAdapter().readFile(
- JAL_1312_example_align_fasta, jalview.io.FormatAdapter.PASTE,
- "FASTA");
+ JAL_1312_example_align_fasta, DataSourceType.PASTE,
+ FileFormat.Fasta);
ColumnSelection cs = new ColumnSelection();
AlignViewportI av = new AlignViewport(alf, cs);
Dna dna = new Dna(av, new int[] { 0, alf.getWidth() - 1 });
throws IOException
{
AlignmentI alf = new FormatAdapter().readFile(
- JAL_1312_example_align_fasta, jalview.io.FormatAdapter.PASTE,
- "FASTA");
+ JAL_1312_example_align_fasta, DataSourceType.PASTE,
+ FileFormat.Fasta);
int vwidth = 15;
for (int ipos = 0; ipos + vwidth < alf.getWidth(); ipos += vwidth)
{
public void testTranslateCdna_simple() throws IOException
{
AlignmentI alf = new FormatAdapter().readFile(fasta,
- FormatAdapter.PASTE, "FASTA");
+ DataSourceType.PASTE, FileFormat.Fasta);
ColumnSelection cs = new ColumnSelection();
AlignViewportI av = new AlignViewport(alf, cs);
Dna dna = new Dna(av, new int[] { 0, alf.getWidth() - 1 });
public void testTranslateCdna_hiddenColumns() throws IOException
{
AlignmentI alf = new FormatAdapter().readFile(fasta,
- FormatAdapter.PASTE, "FASTA");
- ColumnSelection cs = new jalview.datamodel.ColumnSelection();
+ DataSourceType.PASTE, FileFormat.Fasta);
+ ColumnSelection cs = new ColumnSelection();
cs.hideColumns(6, 14); // hide codons 3/4/5
cs.hideColumns(24, 35); // hide codons 9-12
cs.hideColumns(177, 191); // hide codons 60-64
--- /dev/null
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * 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 Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
+package jalview.analysis;
+
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertSame;
+import static org.testng.Assert.assertTrue;
+
+import jalview.datamodel.Alignment;
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.SearchResultMatchI;
+import jalview.datamodel.SearchResultsI;
+import jalview.datamodel.Sequence;
+import jalview.gui.AlignFrame;
+import jalview.gui.JvOptionPane;
+import jalview.io.DataSourceType;
+import jalview.io.FileLoader;
+
+import java.util.List;
+
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
+public class FinderTest
+{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
+ private AlignFrame af;
+
+ private AlignmentI al;
+
+ @BeforeClass(groups = "Functional")
+ public void setUp()
+ {
+ String seqData = "seq1 ABCD--EF-GHI\n" + "seq2 A--BCDefHI\n"
+ + "seq3 --bcdEFH\n" + "seq4 aa---aMMMMMaaa\n";
+ af = new FileLoader().LoadFileWaitTillLoaded(seqData,
+ DataSourceType.PASTE);
+ al = af.getViewport().getAlignment();
+ }
+
+ /**
+ * Test for find all matches of a regular expression
+ */
+ @Test(groups = "Functional")
+ public void testFindAll_regex()
+ {
+ Finder f = new Finder(al, null);
+ f.setFindAll(true);
+ f.find("E.H"); // 'E, any character, H'
+
+ // should match seq2 efH and seq3 EFH
+ SearchResultsI sr = f.getSearchResults();
+ assertEquals(sr.getSize(), 2);
+ List<SearchResultMatchI> matches = sr.getResults();
+ assertSame(al.getSequenceAt(1), matches.get(0).getSequence());
+ assertSame(al.getSequenceAt(2), matches.get(1).getSequence());
+ assertEquals(matches.get(0).getStart(), 5);
+ assertEquals(matches.get(0).getEnd(), 7);
+ assertEquals(matches.get(1).getStart(), 4);
+ assertEquals(matches.get(1).getEnd(), 6);
+ }
+
+ /**
+ * Test for (undocumented) find residue by position
+ */
+ @Test(groups = "Functional")
+ public void testFind_residueNumber()
+ {
+ Finder f = new Finder(al, null);
+ f.setFindAll(true);
+ f.find("9");
+
+ // seq1 and seq4 have 9 residues; no match in other sequences
+ SearchResultsI sr = f.getSearchResults();
+ assertEquals(sr.getSize(), 2);
+ List<SearchResultMatchI> matches = sr.getResults();
+ assertSame(al.getSequenceAt(0), matches.get(0).getSequence());
+ assertSame(al.getSequenceAt(3), matches.get(1).getSequence());
+ assertEquals(matches.get(0).getStart(), 9);
+ assertEquals(matches.get(0).getEnd(), 9);
+ assertEquals(matches.get(1).getStart(), 9);
+ assertEquals(matches.get(1).getEnd(), 9);
+ }
+
+ /**
+ * Test for find next action
+ */
+ @Test(groups = "Functional")
+ public void testFindNext()
+ {
+ /*
+ * start at second sequence; resIndex of -1
+ * means sequence id / description is searched
+ */
+ Finder f = new Finder(al, null, 1, -1);
+ f.find("e"); // matches id
+
+ assertTrue(f.getSearchResults().isEmpty());
+ assertEquals(f.getIdMatch().size(), 1);
+ assertSame(f.getIdMatch().get(0), al.getSequenceAt(1));
+
+ // resIndex is now 0 - for use in next find next
+ assertEquals(f.getResIndex(), 0);
+ f = new Finder(al, null, 1, 0);
+ f.find("e"); // matches in sequence
+ assertTrue(f.getIdMatch().isEmpty());
+ assertEquals(f.getSearchResults().getSize(), 1);
+ List<SearchResultMatchI> matches = f.getSearchResults().getResults();
+ assertEquals(matches.get(0).getStart(), 5);
+ assertEquals(matches.get(0).getEnd(), 5);
+ assertSame(matches.get(0).getSequence(), al.getSequenceAt(1));
+ // still in the second sequence
+ assertEquals(f.getSeqIndex(), 1);
+ // next residue position to search from is 5
+ // (used as base 0 by RegEx so the same as 6 if base 1)
+ assertEquals(f.getResIndex(), 5);
+
+ // find next from end of sequence - finds next sequence id
+ f = new Finder(al, null, 1, 5);
+ f.find("e");
+ assertEquals(f.getIdMatch().size(), 1);
+ assertSame(f.getIdMatch().get(0), al.getSequenceAt(2));
+ }
+
+ /**
+ * Test for matching within sequence descriptions
+ */
+ @Test(groups = "Functional")
+ public void testFindAll_inDescription()
+ {
+ AlignmentI al2 = new Alignment(al);
+ al2.getSequenceAt(0).setDescription("BRAF");
+ al2.getSequenceAt(1).setDescription("braf");
+ Finder f = new Finder(al2, null);
+ f.setFindAll(true);
+ f.setIncludeDescription(true);
+
+ f.find("rAF");
+ assertEquals(f.getIdMatch().size(), 2);
+ assertSame(f.getIdMatch().get(0), al2.getSequenceAt(0));
+ assertSame(f.getIdMatch().get(1), al2.getSequenceAt(1));
+ assertTrue(f.getSearchResults().isEmpty());
+
+ /*
+ * case sensitive
+ */
+ f = new Finder(al2, null);
+ f.setFindAll(true);
+ f.setCaseSensitive(true);
+ f.setIncludeDescription(true);
+
+ f.find("RAF");
+ assertEquals(f.getIdMatch().size(), 1);
+ assertSame(f.getIdMatch().get(0), al2.getSequenceAt(0));
+ assertTrue(f.getSearchResults().isEmpty());
+
+ /*
+ * match sequence id, description and sequence!
+ */
+ al2.getSequenceAt(0).setDescription("the efh sequence");
+ al2.getSequenceAt(0).setName("mouseEFHkinase");
+ al2.getSequenceAt(1).setName("humanEFHkinase");
+ f = new Finder(al2, null);
+ f.setFindAll(true);
+ f.setIncludeDescription(true);
+
+ /*
+ * sequence matches should have no duplicates
+ */
+ f.find("EFH");
+ assertEquals(f.getIdMatch().size(), 2);
+ assertSame(f.getIdMatch().get(0), al2.getSequenceAt(0));
+ assertSame(f.getIdMatch().get(1), al2.getSequenceAt(1));
+
+ assertEquals(f.getSearchResults().getSize(), 2);
+ SearchResultMatchI match = f.getSearchResults().getResults().get(0);
+ assertSame(al2.getSequenceAt(1), match.getSequence());
+ assertEquals(5, match.getStart());
+ assertEquals(7, match.getEnd());
+ match = f.getSearchResults().getResults().get(1);
+ assertSame(al2.getSequenceAt(2), match.getSequence());
+ assertEquals(4, match.getStart());
+ assertEquals(6, match.getEnd());
+ }
+
+ /**
+ * Test for matching within sequence ids
+ */
+ @Test(groups = "Functional")
+ public void testFindAll_sequenceIds()
+ {
+ Finder f = new Finder(al, null);
+ f.setFindAll(true);
+
+ /*
+ * case insensitive
+ */
+ f.find("SEQ1");
+ assertEquals(f.getIdMatch().size(), 1);
+ assertSame(f.getIdMatch().get(0), al.getSequenceAt(0));
+ assertTrue(f.getSearchResults().isEmpty());
+
+ /*
+ * case sensitive
+ */
+ f = new Finder(al, null);
+ f.setFindAll(true);
+ f.setCaseSensitive(true);
+ f.find("SEQ1");
+ assertTrue(f.getSearchResults().isEmpty());
+
+ /*
+ * match both sequence id and sequence
+ */
+ AlignmentI al2 = new Alignment(al);
+ al2.addSequence(new Sequence("aBz", "xyzabZpqrAbZ"));
+ f = new Finder(al2, null);
+ f.setFindAll(true);
+ f.find("ABZ");
+ assertEquals(f.getIdMatch().size(), 1);
+ assertSame(f.getIdMatch().get(0), al2.getSequenceAt(4));
+ assertEquals(f.getSearchResults().getSize(), 2);
+ SearchResultMatchI match = f.getSearchResults().getResults().get(0);
+ assertSame(al2.getSequenceAt(4), match.getSequence());
+ assertEquals(4, match.getStart());
+ assertEquals(6, match.getEnd());
+ match = f.getSearchResults().getResults().get(1);
+ assertSame(al2.getSequenceAt(4), match.getSequence());
+ assertEquals(10, match.getStart());
+ assertEquals(12, match.getEnd());
+ }
+
+ /**
+ * Test finding all matches of a sequence pattern in an alignment
+ */
+ @Test(groups = "Functional")
+ public void testFindAll_simpleMatch()
+ {
+ Finder f = new Finder(al, null);
+ f.setFindAll(true);
+
+ /*
+ * case insensitive first
+ */
+ f.find("EfH");
+ SearchResultsI searchResults = f.getSearchResults();
+ assertEquals(searchResults.getSize(), 2);
+ SearchResultMatchI match = searchResults.getResults().get(0);
+ assertSame(al.getSequenceAt(1), match.getSequence());
+ assertEquals(5, match.getStart());
+ assertEquals(7, match.getEnd());
+ match = searchResults.getResults().get(1);
+ assertSame(al.getSequenceAt(2), match.getSequence());
+ assertEquals(4, match.getStart());
+ assertEquals(6, match.getEnd());
+
+ /*
+ * case sensitive
+ */
+ f = new Finder(al, null);
+ f.setFindAll(true);
+ f.setCaseSensitive(true);
+ f.find("BC");
+ searchResults = f.getSearchResults();
+ assertEquals(searchResults.getSize(), 2);
+ match = searchResults.getResults().get(0);
+ assertSame(al.getSequenceAt(0), match.getSequence());
+ assertEquals(2, match.getStart());
+ assertEquals(3, match.getEnd());
+ match = searchResults.getResults().get(1);
+ assertSame(al.getSequenceAt(1), match.getSequence());
+ assertEquals(2, match.getStart());
+ assertEquals(3, match.getEnd());
+ }
+
+ /**
+ * Test for JAL-2302 to verify that sub-matches are not included in a find all
+ * result
+ */
+ @Test(groups = "Functional")
+ public void testFind_maximalResultOnly()
+ {
+ Finder f = new Finder(al, null);
+ f.setFindAll(true);
+ f.find("M+");
+ SearchResultsI searchResults = f.getSearchResults();
+ assertEquals(searchResults.getSize(), 1);
+ SearchResultMatchI match = searchResults.getResults().get(0);
+ assertSame(al.getSequenceAt(3), match.getSequence());
+ assertEquals(4, match.getStart()); // dataset sequence positions
+ assertEquals(8, match.getEnd()); // base 1
+ }
+}
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceGroup;
import jalview.datamodel.SequenceI;
+import jalview.gui.JvOptionPane;
import java.util.Arrays;
import org.testng.AssertJUnit;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class GroupingTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
Sequence s1 = new Sequence("s1", "AAAADDDDEEEE");
Sequence s2 = new Sequence("s2", "AAAADDDDEEEE");
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceI;
import jalview.gui.AlignFrame;
+import jalview.gui.JvOptionPane;
import java.util.List;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class ParsePropertiesTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
private Alignment al;
private ParseProperties pp;
import static org.testng.AssertJUnit.fail;
import jalview.analysis.SecStrConsensus.SimpleBP;
+import jalview.gui.JvOptionPane;
import java.util.Vector;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class RnaTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = { "Functional" })
public void testGetSimpleBPs() throws WUSSParseException
{
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceI;
+import jalview.gui.JvOptionPane;
import java.util.Hashtable;
import org.testng.Assert;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
/**
*/
public class SeqsetUtilsTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
+
/**
* test for JAL-2046 bug - duplication of sequence features on reconstructed
* alignment
import jalview.analysis.SequenceIdMatcher.SeqIdName;
import jalview.datamodel.SequenceI;
+import jalview.gui.JvOptionPane;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class SequenceIdMatcherTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
+
/**
* Test the method that checks for one sequence id starting with the other,
* followed by an 'allowed' separator character
import jalview.datamodel.Mapping;
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceI;
+import jalview.gui.JvOptionPane;
import java.io.PrintStream;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class TestAlignSeq
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
SequenceI s1, s2, s3;
/**
import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceI;
import jalview.gui.AlignFrame;
+import jalview.gui.JvOptionPane;
+import jalview.io.DataSourceType;
import jalview.io.FileLoader;
-import jalview.io.FormatAdapter;
+
+import java.util.Arrays;
import org.testng.Assert;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class FeatureScoreModelTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
public static String alntestFile = "FER1_MESCR/72-76 DVYIL\nFER1_SPIOL/71-75 DVYIL\nFER3_RAPSA/21-25 DVYVL\nFER1_MAIZE/73-77 DVYIL\n";
int[] sf1 = new int[] { 74, 74, 73, 73, 23, 23, -1, -1 };
public AlignFrame getTestAlignmentFrame()
{
AlignFrame alf = new FileLoader(false).LoadFileWaitTillLoaded(
- alntestFile, FormatAdapter.PASTE);
+ alntestFile, DataSourceType.PASTE);
AlignmentI al = alf.getViewport().getAlignment();
Assert.assertEquals(al.getHeight(), 4);
Assert.assertEquals(al.getWidth(), 5);
+ "(" + s + ") should still be distinct from FER1_MAIZE (3)");
}
}
+
+ /**
+ * Check findFeatureAt doesn't return contact features except at contact
+ * points TODO:move to under the FeatureRendererModel test suite
+ */
+ @Test(groups = { "Functional" })
+ public void testFindFeatureAt_PointFeature() throws Exception
+ {
+ String alignment = "a CCCCCCGGGGGGCCCCCC\n" + "b CCCCCCGGGGGGCCCCCC\n"
+ + "c CCCCCCGGGGGGCCCCCC\n";
+ AlignFrame af = new jalview.io.FileLoader(false)
+ .LoadFileWaitTillLoaded(alignment, DataSourceType.PASTE);
+ SequenceI aseq = af.getViewport().getAlignment().getSequenceAt(0);
+ SequenceFeature sf = null;
+ sf = new SequenceFeature("disulphide bond", "", 2, 5, Float.NaN, "");
+ aseq.addSequenceFeature(sf);
+ Assert.assertTrue(sf.isContactFeature());
+ af.refreshFeatureUI(true);
+ af.getFeatureRenderer().setAllVisible(Arrays.asList("disulphide bond"));
+ Assert.assertEquals(af.getFeatureRenderer().getDisplayedFeatureTypes()
+ .size(), 1, "Should be just one feature type displayed");
+ // step through and check for pointwise feature presence/absence
+ Assert.assertEquals(af.getFeatureRenderer().findFeaturesAtRes(aseq, 1)
+ .size(), 0);
+ // step through and check for pointwise feature presence/absence
+ Assert.assertEquals(af.getFeatureRenderer().findFeaturesAtRes(aseq, 2)
+ .size(), 1);
+ // step through and check for pointwise feature presence/absence
+ Assert.assertEquals(af.getFeatureRenderer().findFeaturesAtRes(aseq, 3)
+ .size(), 0);
+ // step through and check for pointwise feature presence/absence
+ Assert.assertEquals(af.getFeatureRenderer().findFeaturesAtRes(aseq, 4)
+ .size(), 0);
+ // step through and check for pointwise feature presence/absence
+ Assert.assertEquals(af.getFeatureRenderer().findFeaturesAtRes(aseq, 5)
+ .size(), 1);
+ // step through and check for pointwise feature presence/absence
+ Assert.assertEquals(af.getFeatureRenderer().findFeaturesAtRes(aseq, 6)
+ .size(), 0);
+ }
+
}
import static org.testng.AssertJUnit.assertNull;
import static org.testng.AssertJUnit.assertTrue;
+import jalview.gui.JvOptionPane;
+
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class ArgsParserTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = "Functional")
public void testGetValue()
{
import static org.testng.AssertJUnit.assertEquals;
+import jalview.gui.JvOptionPane;
+
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class CacheTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
private Locale locale;
@BeforeClass(alwaysRun = true)
*/
package jalview.bin;
+import jalview.gui.JvOptionPane;
+
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import org.testng.Assert;
import org.testng.FileAssert;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class CommandLineOperations
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
private static final int TEST_TIMEOUT = 4500; // Note longer timeout needed on
// full test run than on
// individual tests
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertNull;
+import jalview.gui.JvOptionPane;
+
import java.util.Arrays;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class JalviewLiteTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = "Functional")
public void testSeparatorListToArray()
{
import jalview.datamodel.AlignmentI;
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceI;
+import jalview.gui.JvOptionPane;
import java.util.Map;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class EditCommandTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
private EditCommand testee;
private SequenceI[] seqs;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceI;
+import jalview.gui.JvOptionPane;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
*/
public class TrimRegionCommandTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
private AlignmentI al;
@BeforeMethod(alwaysRun = true)
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertTrue;
+import jalview.analysis.Finder;
+import jalview.api.AlignViewControllerI;
+import jalview.datamodel.SearchResults;
+import jalview.datamodel.SearchResultsI;
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceGroup;
import jalview.datamodel.SequenceI;
+import jalview.gui.AlignFrame;
+import jalview.gui.JvOptionPane;
+import jalview.io.DataSourceType;
+import jalview.io.FileLoader;
+import java.util.Arrays;
import java.util.BitSet;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class AlignViewControllerTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = "Functional")
public void testFindColumnsWithFeature()
{
- SequenceI seq1 = new Sequence("seq1", "aMMMaaaaaaaaaaaaaaaa");
- SequenceI seq2 = new Sequence("seq2", "aaaMMMMMMMaaaaaaaaaa");
- SequenceI seq3 = new Sequence("seq3", "aaaaaaaaaaMMMMMaaaaa");
- SequenceI seq4 = new Sequence("seq3", "aaaaaaaaaaaaaaaaaaaa");
+ SequenceI seq1 = new Sequence("seq1", "-a-MMMaaaaaaaaaaaaaaaa");
+ SequenceI seq2 = new Sequence("seq2", "aa--aMM-MMMMMaaaaaaaaaa");
+ SequenceI seq3 = new Sequence("seq3", "abcab-caD-aaMMMMMaaaaa");
+ SequenceI seq4 = new Sequence("seq4", "abc--abcaaaaaaaaaaaaaa");
/*
* features start/end are base 1
null));
seq3.addSequenceFeature(new SequenceFeature("Metal", "desc", 11, 15,
0f, null));
+ // disulfide bond is a 'contact feature' - only select its 'start' and 'end'
+ seq3.addSequenceFeature(new SequenceFeature("disulfide bond", "desc", 8, 12,
+ 0f, null));
/*
- * select the first three columns --> Metal in seq1 2-3
+ * select the first five columns --> Metal in seq1 cols 4-5
*/
SequenceGroup sg = new SequenceGroup();
sg.setStartRes(0); // base 0
- sg.setEndRes(2);
+ sg.setEndRes(4);
sg.addSequence(seq1, false);
sg.addSequence(seq2, false);
sg.addSequence(seq3, false);
bs);
assertEquals(1, seqCount);
assertEquals(2, bs.cardinality());
- assertTrue(bs.get(1));
- assertTrue(bs.get(2));
+ assertTrue(bs.get(3)); // base 0
+ assertTrue(bs.get(4));
/*
- * select the first four columns: Metal in seq1 2:4, seq2 4:4
+ * select the first seven columns: Metal in seq1 cols 4-6, seq2 cols 6-7
*/
- sg.setEndRes(3);
+ sg.setEndRes(6);
bs.clear();
seqCount = AlignViewController.findColumnsWithFeature("Metal", sg, bs);
assertEquals(2, seqCount);
- assertEquals(3, bs.cardinality());
- assertTrue(bs.get(1));
- assertTrue(bs.get(2));
+ assertEquals(4, bs.cardinality());
assertTrue(bs.get(3));
+ assertTrue(bs.get(4));
+ assertTrue(bs.get(5));
+ assertTrue(bs.get(6));
/*
- * select column 11: Metal in seq3 only
+ * select column 14: Metal in seq3 only
*/
- sg.setStartRes(10);
- sg.setEndRes(10);
+ sg.setStartRes(13);
+ sg.setEndRes(13);
bs.clear();
seqCount = AlignViewController.findColumnsWithFeature("Metal", sg, bs);
assertEquals(1, seqCount);
assertEquals(1, bs.cardinality());
- assertTrue(bs.get(10));
+ assertTrue(bs.get(13));
/*
- * select columns 16-20: no Metal feature
+ * select columns 18-20: no Metal feature
*/
- sg.setStartRes(15);
+ sg.setStartRes(17);
sg.setEndRes(19);
bs.clear();
seqCount = AlignViewController.findColumnsWithFeature("Metal", sg, bs);
assertEquals(0, bs.cardinality());
/*
+ * columns 11-13 should not match disulfide bond at 8/12
+ */
+ sg.setStartRes(10);
+ sg.setEndRes(12);
+ bs.clear();
+ seqCount = AlignViewController.findColumnsWithFeature("disulfide bond",
+ sg, bs);
+ assertEquals(0, seqCount);
+ assertEquals(0, bs.cardinality());
+
+ /*
+ * columns 6-18 should match disulfide bond at columns 9, 14
+ */
+ sg.setStartRes(5);
+ sg.setEndRes(17);
+ bs.clear();
+ seqCount = AlignViewController.findColumnsWithFeature("disulfide bond",
+ sg, bs);
+ assertEquals(1, seqCount);
+ assertEquals(2, bs.cardinality());
+ assertTrue(bs.get(8));
+ assertTrue(bs.get(13));
+
+ /*
* look for a feature that isn't there
*/
sg.setStartRes(0);
assertEquals(0, seqCount);
assertEquals(0, bs.cardinality());
}
+
+ /**
+ * shameless copy of test data from findFeature for testing mark columns from
+ * highlight
+ */
+ @Test(groups = "Functional")
+ public void testSelectColumnsWithHighlight()
+ {
+ AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
+ "seq1 aMMMaaaaaaaaaaaaaaaa\n" + "seq2 aaaMMMMMMMaaaaaaaaaa\n"
+ + "seq3 aaaaaaaaaaMMMMMaaaaa\n"
+ + "seq4 aaaaaaaaaaaaaaaaaaaa\n", DataSourceType.PASTE);
+
+ SearchResultsI sr = new SearchResults();
+ SequenceI[] sqs = af.getViewport().getAlignment().getSequencesArray();
+ SequenceI seq1 = sqs[0];
+ SequenceI seq2 = sqs[1];
+ SequenceI seq3 = sqs[2];
+ SequenceI seq4 = sqs[3];
+
+ /*
+ * features start/end are base 1
+ */
+ sr.addResult(seq1, 2, 4);
+ sr.addResult(seq2, 4, 10);
+ sr.addResult(seq3, 11, 15);
+
+ /*
+ * test Match/Find works first
+ */
+ Finder f = new Finder(af.getViewport().getAlignment(), null);
+ f.setFindAll(true);
+ f.setCaseSensitive(true);
+ f.find("M+");
+ assertEquals(
+ "Finder found different set of results to manually created SearchResults",
+ sr, f.getSearchResults());
+
+ /*
+ * now check simple mark columns from find operation
+ */
+ af.getViewport().setSearchResults(sr);
+ AlignViewControllerI avc = af.avc;
+
+ avc.markHighlightedColumns(false, false, false);
+ assertTrue("Didn't select highlighted columns", Arrays.deepEquals(af
+ .getViewport().getColumnSelection().getSelectedRanges()
+ .toArray(), new int[][] { { 1, 14 } }));
+ }
}
import static org.testng.AssertJUnit.assertTrue;
import static org.testng.internal.junit.ArrayAsserts.assertArrayEquals;
+import jalview.gui.JvOptionPane;
import jalview.util.MapList;
import java.util.Arrays;
import java.util.List;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class AlignedCodonFrameTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
/**
* Test the method that locates the first aligned sequence that has a mapping.
*/
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertFalse;
+import jalview.gui.JvOptionPane;
import jalview.util.MapList;
import java.util.Iterator;
import org.testng.Assert;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
/**
*/
public class AlignedCodonIteratorTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
/**
* Test normal case for iterating over aligned codons.
*/
import static org.testng.AssertJUnit.assertFalse;
import static org.testng.AssertJUnit.assertTrue;
+import jalview.gui.JvOptionPane;
+
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class AlignedCodonTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = { "Functional" })
public void testEquals()
{
import static org.testng.AssertJUnit.assertNull;
import jalview.analysis.AlignSeq;
+import jalview.gui.JvOptionPane;
import jalview.io.AppletFormatAdapter;
+import jalview.io.FileFormat;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class AlignmentAnnotationTests
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = { "Functional" })
public void testCopyConstructor()
{
alSeq2.setEnd(sqTo.getStart() + align.getSeq2End() - 1);
alSeq2.setDatasetSequence(sqTo);
System.out.println(new AppletFormatAdapter()
- .formatSequences("STH", new Alignment(new SequenceI[] { sqFrom,
+.formatSequences(
+ FileFormat.Stockholm, new Alignment(new SequenceI[] { sqFrom,
alSeq1, sqTo, alSeq2 }), true));
Mapping mp = align.getMappingFromS1(false);
AlignmentI all = new Alignment(new SequenceI[] { alSeq1, alSeq2 });
all.addAnnotation(almap1);
all.addAnnotation(almap2);
- System.out.println(new AppletFormatAdapter().formatSequences("STH",
+ System.out.println(new AppletFormatAdapter().formatSequences(
+ FileFormat.Stockholm,
all, true));
for (int p = 0; p < alSeq1.getLength(); p++)
ann.getDefaultRnaHelixSymbol(i));
}
}
-}
\ No newline at end of file
+}
import static org.testng.AssertJUnit.assertTrue;
import jalview.datamodel.AlignedCodonFrame.SequenceToSequenceMapping;
-import jalview.io.AppletFormatAdapter;
+import jalview.gui.JvOptionPane;
+import jalview.io.DataSourceType;
+import jalview.io.FileFormat;
+import jalview.io.FileFormatI;
import jalview.io.FormatAdapter;
import jalview.util.MapList;
import java.util.List;
import org.testng.Assert;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
*/
public class AlignmentTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
// @formatter:off
private static final String TEST_DATA =
"# STOCKHOLM 1.0\n" +
* @return
* @throws IOException
*/
- protected AlignmentI loadAlignment(final String data, String format)
+ protected AlignmentI loadAlignment(final String data, FileFormatI format)
throws IOException
{
- AlignmentI a = new FormatAdapter().readFile(data,
- AppletFormatAdapter.PASTE, format);
+ AlignmentI a = new FormatAdapter().readFile(data, DataSourceType.PASTE,
+ format);
a.setDataset(null);
return a;
}
@BeforeMethod(alwaysRun = true)
public void setUp() throws IOException
{
- al = loadAlignment(TEST_DATA, "STH");
+ al = loadAlignment(TEST_DATA, FileFormat.Stockholm);
int i = 0;
for (AlignmentAnnotation ann : al.getAlignmentAnnotation())
{
public void testAlignAs_dnaAsDna() throws IOException
{
// aligned cDNA:
- AlignmentI al1 = loadAlignment(CDNA_SEQS_1, "FASTA");
+ AlignmentI al1 = loadAlignment(CDNA_SEQS_1, FileFormat.Fasta);
// unaligned cDNA:
- AlignmentI al2 = loadAlignment(CDNA_SEQS_2, "FASTA");
+ AlignmentI al2 = loadAlignment(CDNA_SEQS_2, FileFormat.Fasta);
/*
* Make mappings between sequences. The 'aligned cDNA' is playing the role
public void testAlignAs_proteinAsCdna() throws IOException
{
// see also AlignmentUtilsTests
- AlignmentI al1 = loadAlignment(CDNA_SEQS_1, "FASTA");
- AlignmentI al2 = loadAlignment(AA_SEQS_1, "FASTA");
+ AlignmentI al1 = loadAlignment(CDNA_SEQS_1, FileFormat.Fasta);
+ AlignmentI al2 = loadAlignment(AA_SEQS_1, FileFormat.Fasta);
makeMappings(al1, al2);
// Fudge - alignProteinAsCdna expects mappings to be on protein
/*
* Load alignments and add mappings for cDNA to protein
*/
- AlignmentI al1 = loadAlignment(CDNA_SEQS_1, "FASTA");
- AlignmentI al2 = loadAlignment(AA_SEQS_1, "FASTA");
+ AlignmentI al1 = loadAlignment(CDNA_SEQS_1, FileFormat.Fasta);
+ AlignmentI al2 = loadAlignment(AA_SEQS_1, FileFormat.Fasta);
makeMappings(al1, al2);
/*
* Load alignments and add mappings from nucleotide to protein (or from
* first to second if both the same type)
*/
- AlignmentI al1 = loadAlignment(fromSeqs, "FASTA");
- AlignmentI al2 = loadAlignment(toSeqs, "FASTA");
+ AlignmentI al1 = loadAlignment(fromSeqs, FileFormat.Fasta);
+ AlignmentI al2 = loadAlignment(toSeqs, FileFormat.Fasta);
makeMappings(al1, al2);
/*
String dna1 = "A-Aa-gG-GCC-cT-TT";
String dna2 = "c--CCGgg-TT--T-AA-A";
AlignmentI al1 = loadAlignment(">Dna1/6-17\n" + dna1
- + "\n>Dna2/20-31\n" + dna2 + "\n", "FASTA");
+ + "\n>Dna2/20-31\n" + dna2 + "\n", FileFormat.Fasta);
AlignmentI al2 = loadAlignment(
- ">Pep1/7-9\n-P--YK\n>Pep2/11-13\nG-T--F\n", "FASTA");
+ ">Pep1/7-9\n-P--YK\n>Pep2/11-13\nG-T--F\n", FileFormat.Fasta);
AlignedCodonFrame acf = new AlignedCodonFrame();
// Seq1 has intron at dna positions 3,4,9 so splice is AAG GCC TTT
// Seq2 has intron at dna positions 1,5,6 so splice is CCG TTT AAA
@Test(groups = "Functional")
public void testCopyConstructor() throws IOException
{
- AlignmentI protein = loadAlignment(AA_SEQS_1, FormatAdapter.PASTE);
+ AlignmentI protein = loadAlignment(AA_SEQS_1, FileFormat.Fasta);
// create sequence and alignment datasets
protein.setDataset(null);
AlignedCodonFrame acf = new AlignedCodonFrame();
public void testCreateDatasetAlignment() throws IOException
{
AlignmentI protein = new FormatAdapter().readFile(AA_SEQS_1,
- AppletFormatAdapter.PASTE, "FASTA");
+ DataSourceType.PASTE, FileFormat.Fasta);
/*
* create a dataset sequence on first sequence
* leave the second without one
import static org.testng.Assert.assertEquals;
+import jalview.gui.JvOptionPane;
+
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class AlignmentViewTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = { "Functional" })
public void testGetVisibleAlignmentGapChar()
{
import static org.testng.AssertJUnit.assertTrue;
import static org.testng.AssertJUnit.fail;
+import jalview.gui.JvOptionPane;
+
import java.util.Arrays;
import java.util.BitSet;
import java.util.Collections;
import java.util.ConcurrentModificationException;
import java.util.List;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class ColumnSelectionTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = { "Functional" })
public void testAddElement()
{
--- /dev/null
+package jalview.datamodel;
+
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotSame;
+import static org.testng.Assert.fail;
+
+import java.util.ArrayList;
+import java.util.ConcurrentModificationException;
+import java.util.List;
+
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+/**
+ * Not a test of code specific to Jalview, but some tests to verify Java
+ * behaviour under certain scenarios of concurrent modification of iterated
+ * lists or arrays
+ */
+public class ConcurrentModificationTest
+{
+ static int MAX = 10;
+
+ int[] intArray;
+
+ List<Integer> intList;
+
+ /**
+ * Setup: populate array and list with values 0,...,9
+ */
+ @BeforeMethod()
+ public void setUp()
+ {
+ intArray = new int[MAX];
+ intList = new ArrayList<Integer>();
+ for (int i = 0; i < MAX; i++)
+ {
+ intArray[i] = i;
+ intList.add(i);
+ }
+ }
+
+ /**
+ * Sanity check of values if no 'interference'
+ */
+ @Test
+ public void test_nullCase()
+ {
+ /*
+ * array iteration
+ */
+ int j = 0;
+ for (int i : intArray)
+ {
+ assertEquals(i, j);
+ j++;
+ }
+
+ /*
+ * list iteration
+ */
+ j = 0;
+ for (int i : intList)
+ {
+ assertEquals(i, j);
+ j++;
+ }
+ }
+
+ /**
+ * Test for the case where the array is reallocated and enlarged during the
+ * iteration. The for loop iteration is not affected.
+ */
+ @Test
+ public void testEnhancedForLoop_arrayExtended()
+ {
+ int j = 0;
+ for (int i : intArray)
+ {
+ if (j == 5)
+ {
+ intArray = new int[MAX + 1];
+ }
+ assertEquals(i, j);
+ j++;
+ }
+ assertEquals(j, MAX);
+ }
+
+ /**
+ * Test for the case where the array is nulled during the iteration. The for
+ * loop iteration is not affected.
+ */
+ @Test
+ public void testEnhancedForLoop_arrayNulled()
+ {
+ int j = 0;
+ for (int i : intArray)
+ {
+ if (j == 5)
+ {
+ intArray = null;
+ }
+ assertEquals(i, j);
+ j++;
+ }
+ assertEquals(j, MAX);
+ }
+
+ /**
+ * Test for the case where a value is changed before the iteration reaches it.
+ * The iteration reads the new value.
+ * <p>
+ * This is analagous to Jalview's consensus thread modifying entries in the
+ * AlignmentAnnotation.annotations array of Annotation[] while it is being
+ * read.
+ */
+ @Test
+ public void testEnhancedForLoop_arrayModified()
+ {
+ int j = 0;
+ for (int i : intArray)
+ {
+ if (j == 5)
+ {
+ intArray[5] = -1;
+ intArray[6] = -2;
+ }
+ /*
+ * the value 'just read' by the for loop is not affected;
+ * the next value read is affected
+ */
+ int expected = j == 6 ? -2 : j;
+ assertEquals(i, expected);
+ j++;
+ }
+ assertEquals(j, MAX);
+ }
+
+ /**
+ * Test for the case where a list entry is added during the iteration.
+ */
+ @Test
+ public void testEnhancedForLoop_listExtended()
+ {
+ int j = 0;
+ try
+ {
+ for (int i : intList)
+ {
+ if (j == 5)
+ {
+ intList.add(MAX + 1);
+ }
+ assertEquals(i, j);
+ j++;
+ }
+ } catch (ConcurrentModificationException e)
+ {
+ /*
+ * exception occurs on next loop iteration after 'concurrent'
+ * modification
+ */
+ assertEquals(j, 6);
+ return;
+ }
+ fail("Expected exception");
+ }
+
+ /**
+ * Test for the case where a list entry is modified during the iteration. No
+ * exception occurs.
+ */
+ @Test
+ public void testEnhancedForLoop_listModified()
+ {
+ int j = 0;
+ for (int i : intList)
+ {
+ if (j == 5)
+ {
+ intList.set(5, -1);
+ intList.set(6, -2);
+ }
+
+ /*
+ * the value 'just read' is not affected, the next value
+ * is read as modified, no exception
+ */
+ int expected = j == 6 ? -2 : j;
+ assertEquals(i, expected);
+ j++;
+ }
+ assertEquals(j, MAX);
+ }
+
+ /**
+ * Test for the case where the list is recreated during the iteration.
+ */
+ @Test
+ public void testEnhancedForLoop_listRenewed()
+ {
+ Object theList = intList;
+ int j = 0;
+ for (int i : intList)
+ {
+ if (j == 5)
+ {
+ /*
+ * recreate a new List object
+ */
+ setUp();
+ assertNotSame(theList, intList);
+ }
+ assertEquals(i, j);
+ j++;
+ }
+
+ /*
+ * no exception in the for loop; changing the object intList refers to
+ * does not affect the loop's iteration over the original object
+ */
+ assertEquals(j, MAX);
+ }
+}
import static org.testng.AssertJUnit.assertSame;
import static org.testng.AssertJUnit.assertTrue;
+import jalview.gui.JvOptionPane;
import jalview.util.MapList;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class DBRefEntryTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
/**
* Tests for the method that compares equality of reference (but not mapping)
*/
import static org.testng.internal.junit.ArrayAsserts.assertArrayEquals;
import jalview.gui.AlignViewport;
+import jalview.gui.JvOptionPane;
import java.util.List;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
@Test(singleThreaded = true)
public class HiddenSequencesTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
static int SEQ_COUNT = 10;
SequenceI[] seqs;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertSame;
+import jalview.gui.JvOptionPane;
import jalview.util.MapList;
import java.util.Arrays;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
/**
*/
public class MappingTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
/**
* trite test of the intersectVisContigs method for a simple DNA -> Protein
* exon map and a range of visContigs
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertSame;
-import jalview.datamodel.MappingType;
+import jalview.gui.JvOptionPane;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class MappingTypeTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = "Functional")
public void testGetInverse()
{
import static org.testng.AssertJUnit.assertFalse;
import static org.testng.AssertJUnit.assertTrue;
-import jalview.datamodel.SearchResults.Match;
+import jalview.gui.JvOptionPane;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class MatchTest
{
- @Test(groups = { "Functional" })
- public void testToString()
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
{
- SequenceI seq = new Sequence("", "abcdefghijklm");
- Match m = new SearchResults().new Match(seq, 3, 5);
- assertEquals("2cde", m.toString());
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
}
@Test(groups = { "Functional" })
- public void testGetCharacters()
+ public void testToString()
{
- SequenceI seq = new Sequence("", "abcdefghijklm");
- Match m = new SearchResults().new Match(seq, 3, 5);
- assertEquals("cde", m.getCharacters());
+ SequenceI seq = new Sequence("Seq1", "abcdefghijklm");
+ SearchResultMatchI m = new SearchResults().new Match(seq, 3, 5);
+ assertEquals("Seq1/3-5", m.toString());
}
@Test(groups = { "Functional" })
{
SequenceI seq1 = new Sequence("", "abcdefghijklm");
SequenceI seq2 = new Sequence("", "abcdefghijklm");
- SearchResults sr1 = new SearchResults();
- SearchResults sr2 = new SearchResults();
+ SearchResultsI sr1 = new SearchResults();
+ SearchResultsI sr2 = new SearchResults();
assertFalse(sr1.equals(null));
assertFalse(sr1.equals(seq1));
/*
* same match but on different sequences - not equal
*/
- SearchResults sr3 = new SearchResults();
+ SearchResultsI sr3 = new SearchResults();
sr3.addResult(seq2, 1, 1);
assertFalse(sr1.equals(sr3));
assertFalse(sr3.equals(sr1));
import static org.testng.Assert.fail;
import jalview.datamodel.PDBEntry.Type;
+import jalview.gui.JvOptionPane;
//import org.testng.Assert;
import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class PDBEntryTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@BeforeMethod(alwaysRun = true)
public void setUp() throws Exception
{
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * 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 Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.datamodel;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertTrue;
import jalview.datamodel.ResidueCount.SymbolCounts;
+import jalview.gui.JvOptionPane;
import org.junit.Assert;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class ResidueCountTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
/**
* Test a mix of add and put for nucleotide counting
*/
import static org.testng.AssertJUnit.assertSame;
import static org.testng.AssertJUnit.assertTrue;
-import jalview.datamodel.SearchResults.Match;
+import jalview.gui.JvOptionPane;
+import java.util.BitSet;
+
+import org.junit.Assert;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class SearchResultsTest
{
- @Test(groups = { "Functional" })
- public void testToString()
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
{
- SequenceI seq = new Sequence("", "abcdefghijklm");
- SearchResults sr = new SearchResults();
- sr.addResult(seq, 1, 1);
- assertEquals("0a", sr.toString());
- sr.addResult(seq, 3, 5);
- assertEquals("0a2cde", sr.toString());
-
- seq = new Sequence("", "pqrstuvwxy");
- sr.addResult(seq, 6, 7);
- assertEquals("0a2cde5uv", sr.toString());
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
}
@Test(groups = { "Functional" })
- public void testGetCharacters()
+ public void testToString()
{
- SequenceI seq = new Sequence("", "abcdefghijklm");
- SearchResults sr = new SearchResults();
+ SequenceI seq = new Sequence("Seq1", "abcdefghijklm");
+ SearchResultsI sr = new SearchResults();
sr.addResult(seq, 1, 1);
- assertEquals("a", sr.getCharacters());
+ assertEquals("[Seq1/1-1]", sr.toString());
sr.addResult(seq, 3, 5);
- assertEquals("acde", sr.getCharacters());
+ assertEquals("[Seq1/1-1, Seq1/3-5]", sr.toString());
- seq = new Sequence("", "pqrstuvwxy");
+ seq = new Sequence("Seq2", "pqrstuvwxy");
sr.addResult(seq, 6, 7);
- assertEquals("acdeuv", sr.getCharacters());
+ assertEquals("[Seq1/1-1, Seq1/3-5, Seq2/6-7]", sr.toString());
}
@Test(groups = { "Functional" })
public void testEquals()
{
SequenceI seq1 = new Sequence("", "abcdefghijklm");
- SearchResults sr1 = new SearchResults();
- SearchResults sr2 = new SearchResults();
+ SearchResultsI sr1 = new SearchResults();
+ SearchResultsI sr2 = new SearchResults();
assertFalse(sr1.equals(null)); // null object
assertFalse(sr1.equals(seq1)); // wrong type
assertTrue(sr2.equals(sr1)); // reflexive
/*
- * only one result is not empty
+ * if only one result is not empty
*/
sr1.addResult(seq1, 1, 1);
assertTrue(sr1.equals(sr1));
{
SequenceI seq1 = new Sequence("", "abcdefghijklm");
SequenceI seq2 = new Sequence("", "abcdefghijklm");
- SearchResults sr1 = new SearchResults();
- SearchResults sr2 = new SearchResults();
+ SearchResultsI sr1 = new SearchResults();
+ SearchResultsI sr2 = new SearchResults();
sr1.addResult(seq1, 1, 1);
sr2.addResult(seq2, 1, 1);
public void testEquals_orderDiffers()
{
SequenceI seq1 = new Sequence("", "abcdefghijklm");
- SearchResults sr1 = new SearchResults();
- SearchResults sr2 = new SearchResults();
+ SearchResultsI sr1 = new SearchResults();
+ SearchResultsI sr2 = new SearchResults();
sr1.addResult(seq1, 1, 1);
sr1.addResult(seq1, 2, 2);
public void testHashcode()
{
SequenceI seq1 = new Sequence("", "abcdefghijklm");
- SearchResults sr1 = new SearchResults();
- SearchResults sr2 = new SearchResults();
+ SearchResultsI sr1 = new SearchResults();
+ SearchResultsI sr2 = new SearchResults();
/*
* both empty
public void testMatchConstructor()
{
SequenceI seq1 = new Sequence("", "abcdefghijklm");
- Match m = new SearchResults().new Match(seq1, 2, 5);
+ SearchResultMatchI m = new SearchResults().new Match(seq1, 2, 5);
assertSame(seq1, m.getSequence());
assertEquals(2, m.getStart());
assertEquals(5, m.getEnd());
assertEquals(2, m.getStart());
assertEquals(5, m.getEnd());
}
+
+ /**
+ * test markColumns for creating column selections
+ */
+ @Test(groups = { "Functional" })
+ public void testMarkColumns()
+ {
+ int marked = 0;
+ SequenceI seq1 = new Sequence("", "abcdefghijklm");
+ SequenceI seq2 = new Sequence("", "abcdefghijklm");
+ SequenceGroup s1g=new SequenceGroup(), s2g=new SequenceGroup(), sallg=new SequenceGroup();
+ s1g.addSequence(seq1, false);
+ s2g.addSequence(seq2, false);
+ sallg.addSequence(seq1, false);
+ sallg.addSequence(seq2, false);
+
+ SearchResultsI sr = new SearchResults();
+ BitSet bs = new BitSet();
+
+ SearchResultMatchI srm = null;
+ srm = sr.addResult(seq1, 1, 1);
+ Assert.assertNotNull("addResult didn't return Match", srm);
+ srm = sr.addResult(seq2, 1, 2);
+ assertEquals("Sequence reference not set", seq2, srm.getSequence());
+ assertEquals("match start incorrect", 1, srm.getStart());
+ assertEquals("match end incorrect", 2, srm.getEnd());
+
+ // set start/end range for groups to cover matches
+
+ s1g.setStartRes(0);
+ s1g.setEndRes(5);
+ s2g.setStartRes(0);
+ s2g.setEndRes(5);
+ sallg.setStartRes(0);
+ sallg.setEndRes(5);
+
+ /*
+ * just seq1
+ */
+ marked = sr.markColumns(s1g, bs);
+ // check the bitset cardinality before checking the return value
+ assertEquals("Didn't mark expected number", 1, bs.cardinality());
+ assertEquals("Didn't return count of number of bits marked", 1, marked);
+ assertTrue("Didn't mark expected position", bs.get(0));
+ // now check return value for marking the same again
+ assertEquals(
+ "Didn't count number of bits marked for existing marked set",
+ 0,
+ sr.markColumns(s1g, bs));
+ bs.clear();
+
+ /*
+ * just seq2
+ */
+ marked = sr.markColumns(s2g, bs);
+ assertEquals("Didn't mark expected number", 2, bs.cardinality());
+ assertEquals("Didn't return count of number of bits marked", 2, marked);
+ assertTrue("Didn't mark expected position (1)", bs.get(0));
+ assertTrue("Didn't mark expected position (2)", bs.get(1));
+
+ /*
+ * both seq1 and seq2
+ * should be same as seq2
+ */
+ BitSet allbs = new BitSet();
+ assertEquals(2, sr.markColumns(sallg, allbs));
+ assertEquals(bs, allbs);
+
+ // now check range selection
+
+ /*
+ * limit s2g to just the second column, sallg to the first column
+ */
+ s2g.setStartRes(1);
+ s2g.setEndRes(1);
+ sallg.setEndRes(0);
+ BitSet tbs = new BitSet();
+ assertEquals("Group start/end didn't select columns to mark",1, sr.markColumns(s2g, tbs));
+ assertEquals("Group start/end didn't select columns to mark", 1, sr.markColumns(sallg, tbs));
+ assertEquals(
+ "Didn't set expected number of columns in total for two successive marks",
+ 2, tbs.cardinality());
+ }
}
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertFalse;
+import jalview.gui.JvOptionPane;
import jalview.util.Comparison;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
/**
*/
public class SeqCigarTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = { "Functional" })
public void testFindPosition()
{
import static org.testng.AssertJUnit.assertFalse;
import static org.testng.AssertJUnit.assertTrue;
+import jalview.gui.JvOptionPane;
+
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
@Test
public class SequenceDummyTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
/**
* test for become method
*/
import static org.testng.AssertJUnit.assertSame;
import static org.testng.AssertJUnit.assertTrue;
+import jalview.gui.JvOptionPane;
+
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class SequenceFeatureTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = { "Functional" })
public void testCopyConstructor()
{
assertEquals(sf1.hashCode(), sf2.hashCode());
// changing type breaks equals:
+ String restores = sf2.getType();
sf2.setType("Type");
assertFalse(sf1.equals(sf2));
+ sf2.setType(restores);
// changing description breaks equals:
- sf2.setType("type");
+ restores = sf2.getDescription();
sf2.setDescription("Desc");
assertFalse(sf1.equals(sf2));
+ sf2.setDescription(restores);
+
+ // changing score breaks equals:
+ float restoref = sf2.getScore();
+ sf2.setScore(12.4f);
+ assertFalse(sf1.equals(sf2));
+ sf2.setScore(restoref);
+
+ // NaN doesn't match a number
+ restoref = sf2.getScore();
+ sf2.setScore(Float.NaN);
+ assertFalse(sf1.equals(sf2));
+
+ // NaN matches NaN
+ sf1.setScore(Float.NaN);
+ assertTrue(sf1.equals(sf2));
+ sf1.setScore(restoref);
+ sf2.setScore(restoref);
// changing start position breaks equals:
- sf2.setDescription("desc");
+ int restorei = sf2.getBegin();
sf2.setBegin(21);
assertFalse(sf1.equals(sf2));
+ sf2.setBegin(restorei);
// changing end position breaks equals:
- sf2.setBegin(22);
+ restorei = sf2.getEnd();
sf2.setEnd(32);
assertFalse(sf1.equals(sf2));
+ sf2.setEnd(restorei);
// changing feature group breaks equals:
- sf2.setEnd(33);
+ restores = sf2.getFeatureGroup();
sf2.setFeatureGroup("Group");
assertFalse(sf1.equals(sf2));
+ sf2.setFeatureGroup(restores);
// changing ID breaks equals:
- sf2.setFeatureGroup("group");
+ restores = (String) sf2.getValue("ID");
sf2.setValue("ID", "id2");
assertFalse(sf1.equals(sf2));
+ sf2.setValue("ID", restores);
// changing Name breaks equals:
- sf2.setValue("ID", "id");
+ restores = (String) sf2.getValue("Name");
sf2.setValue("Name", "Name");
assertFalse(sf1.equals(sf2));
+ sf2.setValue("Name", restores);
// changing Parent breaks equals:
- sf2.setValue("Name", "name");
+ restores = (String) sf1.getValue("Parent");
sf1.setValue("Parent", "Parent");
assertFalse(sf1.equals(sf2));
+ sf1.setValue("Parent", restores);
// changing strand breaks equals:
- sf1.setValue("Parent", "parent");
+ restorei = sf2.getStrand();
sf2.setStrand("-");
assertFalse(sf1.equals(sf2));
+ sf2.setStrand(restorei == 1 ? "+" : "-");
// changing phase breaks equals:
- sf2.setStrand("+");
+ restores = sf1.getPhase();
sf1.setPhase("2");
assertFalse(sf1.equals(sf2));
+ sf1.setPhase(restores);
// restore equality as sanity check:
- sf1.setPhase("1");
assertTrue(sf1.equals(sf2));
assertTrue(sf2.equals(sf1));
assertEquals(sf1.hashCode(), sf2.hashCode());
sf1.setStatus("new");
assertTrue(sf1.equals(sf2));
}
+
+ @Test(groups = { "Functional" })
+ public void testIsContactFeature()
+ {
+ SequenceFeature sf = new SequenceFeature("type", "desc", 22, 33, 12.5f,
+ "group");
+ assertFalse(sf.isContactFeature());
+ sf.setType("");
+ assertFalse(sf.isContactFeature());
+ sf.setType(null);
+ assertFalse(sf.isContactFeature());
+ sf.setType("Disulfide Bond");
+ assertTrue(sf.isContactFeature());
+ sf.setType("disulfide bond");
+ assertTrue(sf.isContactFeature());
+ sf.setType("Disulphide Bond");
+ assertTrue(sf.isContactFeature());
+ sf.setType("disulphide bond");
+ assertTrue(sf.isContactFeature());
+ }
}
import static org.testng.internal.junit.ArrayAsserts.assertArrayEquals;
import jalview.datamodel.PDBEntry.Type;
+import jalview.gui.JvOptionPane;
import jalview.util.MapList;
import java.io.File;
import java.util.Vector;
import org.testng.Assert;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class SequenceTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
Sequence seq;
@BeforeMethod(alwaysRun = true)
import jalview.datamodel.DBRefEntry;
import jalview.datamodel.DBRefSource;
import jalview.datamodel.SequenceI;
+import jalview.gui.JvOptionPane;
import jalview.util.MapList;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class EmblEntryTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = "Functional")
public void testGetCdsRanges()
{
import static org.testng.AssertJUnit.assertNull;
import jalview.datamodel.DBRefEntry;
+import jalview.gui.JvOptionPane;
import java.util.Vector;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class EmblFileTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = { "Functional" })
public void testGetEmblFile()
{
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * 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 Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ext.android;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.fail;
+import jalview.gui.JvOptionPane;
+
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
/*
*/
public class SparseIntArrayTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = "Functional")
public void testPut()
{
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * 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 Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ext.android;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.fail;
+import jalview.gui.JvOptionPane;
+
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class SparseShortArrayTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = "Functional")
public void testPut()
{
import jalview.datamodel.SequenceDummy;
import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceI;
+import jalview.gui.JvOptionPane;
import jalview.io.gff.SequenceOntologyFactory;
import jalview.io.gff.SequenceOntologyLite;
import jalview.util.MapList;
public class EnsemblCdnaTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@BeforeClass(alwaysRun = true)
public void setUp()
{
import jalview.datamodel.SequenceDummy;
import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceI;
+import jalview.gui.JvOptionPane;
import jalview.io.gff.SequenceOntologyFactory;
import jalview.io.gff.SequenceOntologyLite;
import jalview.util.MapList;
public class EnsemblCdsTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@BeforeClass(alwaysRun = true)
public void setUp()
{
import jalview.datamodel.SequenceDummy;
import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceI;
+import jalview.gui.JvOptionPane;
import jalview.io.gff.SequenceOntologyFactory;
import jalview.io.gff.SequenceOntologyLite;
import jalview.util.MapList;
public class EnsemblGeneTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@BeforeClass(alwaysRun = true)
public void setUp()
{
import jalview.datamodel.SequenceDummy;
import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceI;
+import jalview.gui.JvOptionPane;
import jalview.io.gff.SequenceOntologyFactory;
import jalview.io.gff.SequenceOntologyLite;
import jalview.util.MapList;
public class EnsemblGenomeTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@BeforeClass(alwaysRun = true)
public void setUp()
{
import static org.testng.AssertJUnit.assertEquals;
+import jalview.gui.JvOptionPane;
+
import org.testng.Assert;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class EnsemblProteinTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = "Functional")
public void testIsValidReference() throws Exception
{
import jalview.datamodel.Alignment;
import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceI;
-import jalview.io.AppletFormatAdapter;
+import jalview.gui.JvOptionPane;
+import jalview.io.DataSourceType;
import jalview.io.FastaFile;
import jalview.io.FileParse;
import jalview.io.gff.SequenceOntologyFactory;
public class EnsemblSeqProxyTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
private static final Object[][] allSeqs = new Object[][] {
{
new EnsemblProtein(),
FileParse fp = proxy.getSequenceReader(Arrays
.asList(new String[] { sq }));
SequenceI[] sqs = new FastaFile(fp).getSeqsAsArray();
- FastaFile trueRes = new FastaFile(fastasq, AppletFormatAdapter.PASTE);
+ FastaFile trueRes = new FastaFile(fastasq, DataSourceType.PASTE);
SequenceI[] trueSqs = trueRes.getSeqsAsArray();
Assert.assertEquals(sqs.length, trueSqs.length,
"Different number of sequences retrieved for query " + sq);
import static org.testng.AssertJUnit.assertFalse;
import jalview.datamodel.DBRefEntry;
+import jalview.gui.JvOptionPane;
import java.io.BufferedReader;
import java.io.IOException;
import java.net.URL;
import java.util.List;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class EnsemblXrefTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
//@formatter:off
private static final String JSON =
"[{\"primary_id\":\"CCDS5863\",\"dbname\":\"CCDS\"}," +
package jalview.ext.htsjdk;
import jalview.datamodel.SequenceI;
+import jalview.gui.JvOptionPane;
import java.io.File;
import org.testng.Assert;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
/**
*/
public class TestHtsContigDb
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = "Functional")
public final void testHTSReferenceSequence() throws Exception
{
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceI;
import jalview.gui.AlignFrame;
+import jalview.gui.JvOptionPane;
import jalview.gui.SequenceRenderer;
import jalview.structure.StructureMappingcommandSet;
import jalview.structure.StructureSelectionManager;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class JmolCommandsTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = { "Functional" })
public void testGetColourBySequenceCommand_noFeatures()
{
import jalview.datamodel.AlignmentI;
import jalview.datamodel.SequenceI;
import jalview.gui.AlignFrame;
-import jalview.io.AppletFormatAdapter;
+import jalview.gui.JvOptionPane;
+import jalview.io.DataSourceType;
import jalview.io.FileLoader;
import jalview.structure.StructureImportSettings;
import jalview.structure.StructureImportSettings.StructureParser;
import java.util.Vector;
import org.jmol.c.STR;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
*/
public class JmolParserTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
/*
* 1GAQ has been reduced to alpha carbons only
* 1QCF is the full PDB file including headers, HETATM etc
for (String f : testFile)
{
FileLoader fl = new jalview.io.FileLoader(false);
- AlignFrame af = fl
- .LoadFileWaitTillLoaded(f, AppletFormatAdapter.FILE);
+ AlignFrame af = fl.LoadFileWaitTillLoaded(f, DataSourceType.FILE);
validateSecStrRows(af.getViewport().getAlignment());
}
}
for (String pdbStr : testFile)
{
PDBfile mctest = new PDBfile(false, false, false, pdbStr,
- AppletFormatAdapter.FILE);
- JmolParser jtest = new JmolParser(pdbStr, AppletFormatAdapter.FILE);
+ DataSourceType.FILE);
+ JmolParser jtest = new JmolParser(pdbStr, DataSourceType.FILE);
Vector<SequenceI> seqs = jtest.getSeqs(), mcseqs = mctest.getSeqs();
assertTrue(
public void testParse_missingResidues() throws Exception
{
PDBfile mctest = new PDBfile(false, false, false,
- pastePDBDataWithChainBreak, AppletFormatAdapter.PASTE);
- JmolParser jtest = new JmolParser(pastePDBDataWithChainBreak,
- AppletFormatAdapter.PASTE);
+ pastePDBDataWithChainBreak, DataSourceType.PASTE);
+ JmolParser jtest = new JmolParser(pastePDBDataWithChainBreak, DataSourceType.PASTE);
Vector<SequenceI> seqs = jtest.getSeqs();
Vector<SequenceI> mcseqs = mctest.getSeqs();
public void testParse_alternativeResidues() throws Exception
{
PDBfile mctest = new PDBfile(false, false, false, pdbWithAltLoc,
- AppletFormatAdapter.PASTE);
+ DataSourceType.PASTE);
JmolParser jtest = new JmolParser(pdbWithAltLoc,
- AppletFormatAdapter.PASTE);
+ DataSourceType.PASTE);
Vector<SequenceI> seqs = jtest.getSeqs();
Vector<SequenceI> mcseqs = mctest.getSeqs();
* reads a local structure
*/
structureData = new JmolParser("examples/testdata/localstruct.pdb",
- AppletFormatAdapter.FILE);
+ DataSourceType.FILE);
assertNotNull(structureData);
/*
* local structure files should yield a false ID based on the filename
import jalview.bin.Cache;
import jalview.datamodel.SequenceI;
import jalview.gui.AlignFrame;
+import jalview.gui.JvOptionPane;
import jalview.gui.Preferences;
import jalview.gui.StructureViewer;
import jalview.gui.StructureViewer.ViewerType;
-import jalview.io.FormatAdapter;
+import jalview.io.DataSourceType;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
public class JmolViewerTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
/**
* @throws java.lang.Exception
*/
Cache.setProperty(Preferences.STRUCTURE_DISPLAY, ViewerType.JMOL.name());
String inFile = "examples/1gaq.txt";
AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(
- inFile, FormatAdapter.FILE);
+ inFile, DataSourceType.FILE);
assertTrue("Didn't read input file " + inFile, af != null);
for (SequenceI sq : af.getViewport().getAlignment().getSequences())
{
package jalview.ext.jmol;
import jalview.datamodel.SequenceI;
-import jalview.io.AppletFormatAdapter;
+import jalview.gui.JvOptionPane;
+import jalview.io.DataSourceType;
import java.io.File;
import java.io.IOException;
import java.util.Set;
import java.util.Vector;
+import org.testng.annotations.BeforeClass;
+
import MCview.PDBfile;
/**
public class JmolVsJalviewPDBParserEndToEndTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
public static void main(String[] args)
{
if (args == null || args[0] == null)
JmolParser jtest = null;
try
{
- mctest = new PDBfile(false, false, false, testFile,
- AppletFormatAdapter.FILE);
- jtest = new JmolParser(testFile, AppletFormatAdapter.FILE);
+ mctest = new PDBfile(false, false, false, testFile, DataSourceType.FILE);
+ jtest = new JmolParser(testFile, DataSourceType.FILE);
} catch (IOException e)
{
System.err.println("Exception thrown while parsing : " + pdbStr);
import jalview.datamodel.AlignmentI;
import jalview.datamodel.SequenceI;
+import jalview.gui.JvOptionPane;
+import jalview.io.DataSourceType;
import jalview.io.FastaFile;
+import jalview.io.FileFormat;
import jalview.io.FormatAdapter;
import java.io.BufferedReader;
import org.testng.Assert;
import org.testng.AssertJUnit;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import MCview.PDBfile;
public class TestAnnotate3D
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = { "Network" }, enabled = true)
public void test1GIDbyId() throws Exception
{
public void testPDBfileVsRNAML() throws Exception
{
PDBfile pdbf = new PDBfile(true, false, true, "examples/2GIS.pdb",
- FormatAdapter.FILE);
+ DataSourceType.FILE);
Assert.assertTrue(pdbf.isValid());
// Comment - should add new FileParse constructor like new FileParse(Reader
// ..). for direct reading
assertTrue("No data returned by Annotate3D", sb.length() > 0);
final String lines = sb.toString();
AlignmentI al = new FormatAdapter().readFile(lines,
- FormatAdapter.PASTE, "RNAML");
+ DataSourceType.PASTE, FileFormat.Rnaml);
if (al == null || al.getHeight() == 0)
{
System.out.println(lines);
{
AssertJUnit
.fail("Couldn't find this sequence in original input:\n"
- + new FastaFile()
- .print(new SequenceI[] { sq })
+ + new FastaFile().print(
+ new SequenceI[] { sq }, true)
+ "\n\nOriginal input:\n"
- + new FastaFile().print(pdbf.getSeqsAsArray())
- + "\n");
+ + new FastaFile().print(
+ pdbf.getSeqsAsArray(), true) + "\n");
}
}
}
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertTrue;
+import jalview.gui.JvOptionPane;
+
import java.awt.Color;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class ChimeraCommandsTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = { "Functional" })
public void testAddColourRange()
{
import static org.testng.AssertJUnit.assertFalse;
import static org.testng.AssertJUnit.assertTrue;
+import jalview.gui.JvOptionPane;
+
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import ext.edu.ucsf.rbvi.strucviz2.ChimeraManager;
public class ChimeraConnect
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = { "Functional" })
public void testLaunchAndExit()
{
import jalview.bin.Cache;
import jalview.datamodel.SequenceI;
import jalview.gui.AlignFrame;
+import jalview.gui.JvOptionPane;
import jalview.gui.Preferences;
import jalview.gui.StructureViewer;
import jalview.gui.StructureViewer.ViewerType;
-import jalview.io.FormatAdapter;
+import jalview.io.DataSourceType;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
public class JalviewChimeraView
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
/**
* @throws java.lang.Exception
*/
ViewerType.CHIMERA.name());
String inFile = "examples/1gaq.txt";
AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(
- inFile, FormatAdapter.FILE);
+ inFile, DataSourceType.FILE);
assertTrue("Didn't read input file " + inFile, af != null);
for (SequenceI sq : af.getViewport().getAlignment().getSequences())
{
import static org.testng.AssertJUnit.assertFalse;
import static org.testng.AssertJUnit.assertTrue;
+import jalview.gui.JvOptionPane;
import jalview.io.gff.SequenceOntologyI;
import org.testng.annotations.BeforeClass;
public class SequenceOntologyTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
private SequenceOntologyI so;
@BeforeClass(alwaysRun = true)
import jalview.fts.api.FTSDataColumnI;
import jalview.fts.api.FTSDataColumnI.FTSDataColumnGroupI;
+import jalview.gui.JvOptionPane;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
import org.testng.Assert;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class FTSRestClientTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
private FTSRestClient ftsRestClient;
@BeforeMethod(alwaysRun = true)
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertTrue;
+import jalview.gui.JvOptionPane;
+
import javax.swing.JInternalFrame;
import javax.swing.JTextField;
import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class PDBFTSPanelTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@BeforeMethod(alwaysRun = true)
public void setUp() throws Exception
{
import jalview.fts.api.FTSDataColumnI;
import jalview.fts.core.FTSRestRequest;
import jalview.fts.core.FTSRestResponse;
+import jalview.gui.JvOptionPane;
import java.io.BufferedReader;
import java.io.FileReader;
import org.json.simple.parser.ParseException;
import org.testng.Assert;
import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class PDBFTSRestClientTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@BeforeMethod(alwaysRun = true)
public void setUp() throws Exception
{
import java.util.List;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class AlignFrameTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = "Functional")
public void testHideFeatureColumns()
{
import jalview.datamodel.Annotation;
import jalview.datamodel.PDBEntry;
import jalview.datamodel.PDBEntry.Type;
+import jalview.datamodel.SearchResults;
+import jalview.datamodel.SearchResultsI;
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceI;
+import jalview.io.DataSourceType;
import jalview.io.FileLoader;
-import jalview.io.FormatAdapter;
import jalview.schemes.ColourSchemeI;
import jalview.schemes.PIDColourScheme;
import jalview.structure.StructureSelectionManager;
public class AlignViewportTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
AlignmentI al;
AlignViewport testee;
* alignment with reference to mappings
*/
AlignFrame af1 = new FileLoader().LoadFileWaitTillLoaded(
- ">Seq1\nCAGT\n", FormatAdapter.PASTE);
+ ">Seq1\nCAGT\n", DataSourceType.PASTE);
SequenceI s1 = af1.getViewport().getAlignment().getSequenceAt(0);
AlignedCodonFrame acf1 = new AlignedCodonFrame();
ssm.resetAll();
AlignFrame af1 = new FileLoader().LoadFileWaitTillLoaded(
- ">Seq1\nRSVQ\n", FormatAdapter.PASTE);
+ ">Seq1\nRSVQ\n", DataSourceType.PASTE);
AlignFrame af2 = new FileLoader().LoadFileWaitTillLoaded(
- ">Seq2\nDGEL\n", FormatAdapter.PASTE);
+ ">Seq2\nDGEL\n", DataSourceType.PASTE);
SequenceI cs1 = new Sequence("cseq1", "CCCGGGTTTAAA");
SequenceI cs2 = new Sequence("cseq2", "CTTGAGTCTAGA");
SequenceI s1 = af1.getViewport().getAlignment().getSequenceAt(0);
ssm.resetAll();
AlignFrame af1 = new FileLoader().LoadFileWaitTillLoaded(
- ">Seq1\nRSVQ\n", FormatAdapter.PASTE);
+ ">Seq1\nRSVQ\n", DataSourceType.PASTE);
AlignFrame af2 = new FileLoader().LoadFileWaitTillLoaded(
- ">Seq2\nDGEL\n", FormatAdapter.PASTE);
+ ">Seq2\nDGEL\n", DataSourceType.PASTE);
SequenceI cs1 = new Sequence("cseq1", "CCCGGGTTTAAA");
SequenceI cs2 = new Sequence("cseq2", "CTTGAGTCTAGA");
SequenceI s1 = af1.getViewport().getAlignment().getSequenceAt(0);
Cache.applicationProperties.setProperty("SHOW_IDENTITY",
Boolean.FALSE.toString());
AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
- "examples/uniref50.fa", FormatAdapter.FILE);
+ "examples/uniref50.fa", DataSourceType.FILE);
AlignmentAnnotation[] anns = af.viewport.getAlignment()
.getAlignmentAnnotation();
assertNotNull("No annotations found", anns);
Cache.applicationProperties.setProperty("SHOW_CONSERVATION",
Boolean.TRUE.toString());
AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
- "examples/uniref50.fa", FormatAdapter.FILE);
+ "examples/uniref50.fa", DataSourceType.FILE);
ColourSchemeI cs = new PIDColourScheme();
af.getViewport().setGlobalColourScheme(cs);
assertFalse(cs.conservationApplied());
}
+
+ @Test(groups = { "Functional" })
+ public void testSetGetHasSearchResults()
+ {
+ AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
+ "examples/uniref50.fa", DataSourceType.FILE);
+ SearchResultsI sr = new SearchResults();
+ SequenceI s1 = af.getViewport().getAlignment().getSequenceAt(0);
+
+ // create arbitrary range on first sequence
+ sr.addResult(s1, s1.getStart() + 10, s1.getStart() + 15);
+
+ // test set
+ af.getViewport().setSearchResults(sr);
+ // has -> true
+ assertTrue(af.getViewport().hasSearchResults());
+ // get == original
+ assertEquals(sr, af.getViewport().getSearchResults());
+
+ // set(null) results in has -> false
+
+ af.getViewport().setSearchResults(null);
+ assertFalse(af.getViewport().hasSearchResults());
+ }
}
import jalview.datamodel.Annotation;
import jalview.datamodel.SequenceGroup;
import jalview.datamodel.SequenceI;
-import jalview.io.AppletFormatAdapter;
+import jalview.io.DataSourceType;
+import jalview.io.FileFormat;
+import jalview.io.FormatAdapter;
import jalview.util.MessageManager;
import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JPanel;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
*/
public class AnnotationChooserTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
// 4 sequences x 13 positions
final static String TEST_DATA = ">FER_CAPAA Ferredoxin\n"
+ "TIETHKEAELVG-\n"
Cache.applicationProperties.setProperty("SHOW_CONSERVATION", TRUE);
Cache.applicationProperties.setProperty("SHOW_IDENTITY", TRUE);
- AlignmentI al = new jalview.io.FormatAdapter().readFile(TEST_DATA,
- AppletFormatAdapter.PASTE, "FASTA");
+ AlignmentI al = new FormatAdapter().readFile(TEST_DATA,
+ DataSourceType.PASTE, FileFormat.Fasta);
af = new AlignFrame(al, 700, 500);
parentPanel = new AlignmentPanel(af, af.getViewport());
addAnnotations();
import static org.testng.AssertJUnit.assertNull;
import static org.testng.AssertJUnit.assertSame;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class AppVarnaTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = "Functional")
public void testReplaceOddGaps()
{
import java.awt.Font;
import java.awt.FontMetrics;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class FontChooserTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
/**
* Not a real test as it runs no methods on FontChooser and makes no
* assertions, but this method writes to sysout the names of any (currently
import javax.help.HelpSetException;
import javax.help.Map;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class HelpTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = { "Functional" })
public void checkHelpTargets() throws HelpSetException
{
{
@BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
+ @BeforeClass(alwaysRun = true)
public static void setUpBeforeClass() throws Exception
{
}
--- /dev/null
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * 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 Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
+
+package jalview.gui;
+
+import java.awt.Component;
+import java.awt.Dimension;
+
+import javax.swing.Icon;
+import javax.swing.JDesktopPane;
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+
+import org.testng.Assert;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
+public class JvOptionPaneTest
+{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
+ Component parentComponent = null;
+
+ String message = "Hello World!";
+
+ String title = "Title";
+
+ int optionType = JvOptionPane.OK_CANCEL_OPTION;
+
+ int messageType = JvOptionPane.INFORMATION_MESSAGE;
+
+ Icon icon = null;
+
+ Object initialSelectionValue = null;
+
+ Object[] selectionValues = null;
+
+
+ @Test(groups = { "Functional" })
+ public void showConfirmDialogFamilyTest()
+ {
+ JvOptionPane.showConfirmDialog(parentComponent, message);
+ JvOptionPane.showConfirmDialog(parentComponent, message, title,
+ optionType);
+ JvOptionPane.showConfirmDialog(parentComponent, message, title,
+ optionType, messageType);
+ JvOptionPane.showConfirmDialog(parentComponent, message, title,
+ optionType, messageType, icon);
+ Assert.assertTrue(true);
+ }
+
+ @Test(groups = { "Functional" })
+ public void showInputDialogFamilyTest()
+ {
+ JvOptionPane.showInputDialog(message);
+ JvOptionPane.showInputDialog(parentComponent, message);
+ JvOptionPane.showInputDialog(message, initialSelectionValue);
+ JvOptionPane.showInputDialog(parentComponent, message,
+ initialSelectionValue);
+ JvOptionPane.showInputDialog(parentComponent, message, title,
+ messageType);
+ JvOptionPane.showInputDialog(parentComponent, message, title,
+ messageType, icon, selectionValues, initialSelectionValue);
+ Assert.assertTrue(true);
+ }
+
+ @Test(groups = { "Functional" })
+ public void showMessageDialogFamilyTest()
+ {
+ JvOptionPane.showMessageDialog(parentComponent, message);
+ JvOptionPane.showMessageDialog(parentComponent, message, title,
+ messageType);
+ JvOptionPane.showMessageDialog(parentComponent, message, title,
+ messageType, icon);
+ Assert.assertTrue(true);
+ }
+
+ @Test(groups = { "Functional" })
+ public void showInternalMessageDialogFamilyTest()
+ {
+ JvOptionPane.showInternalMessageDialog(parentComponent, message);
+ JvOptionPane.showInternalMessageDialog(parentComponent, message, title,
+ messageType);
+ JvOptionPane.showInternalMessageDialog(parentComponent, message, title,
+ messageType, icon);
+ Assert.assertTrue(true);
+ }
+
+ @Test(groups = { "Functional" })
+ public void showInternalConfirmDialogFamilyTest()
+ {
+ JvOptionPane.showInternalConfirmDialog(parentComponent, message, title,
+ optionType);
+ JvOptionPane.showInternalConfirmDialog(parentComponent, message, title,
+ optionType, messageType);
+
+ JvOptionPane.showInternalConfirmDialog(getDummyDesktopPane(), message);
+
+ JvOptionPane.showInternalConfirmDialog(getDummyDesktopPane(), message,
+ title, optionType, messageType, icon);
+ JvOptionPane.showInternalInputDialog(getDummyDesktopPane(), message);
+ JvOptionPane.showInternalInputDialog(getDummyDesktopPane(), message,
+ title, messageType);
+ JvOptionPane.showInternalInputDialog(getDummyDesktopPane(), message,
+ title, messageType, icon, selectionValues,
+ initialSelectionValue);
+ Assert.assertTrue(true);
+
+ }
+
+ private JDesktopPane getDummyDesktopPane()
+ {
+ JFrame frame = new JFrame("Dummy JDesktopPane");
+ frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ @SuppressWarnings("serial")
+ JDesktopPane jdpDesktop = new JDesktopPane()
+ {
+ @Override
+ public Dimension getPreferredSize()
+ {
+ return new Dimension(400, 300);
+ }
+ };
+ frame.setContentPane(jdpDesktop);
+ JPanel panel = new JPanel();
+ panel.setBounds(0, 0, 400, 300);
+ jdpDesktop.add(panel);
+ frame.pack();
+ frame.setVisible(true);
+ panel.setVisible(true);
+ return jdpDesktop;
+ }
+}
import javax.swing.JScrollBar;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class JvSwingUtilsTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = { "Functional" })
public void testGetScrollBarProportion()
{
import javax.swing.JPanel;
import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class PaintRefresherTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
// TODO would prefer PaintRefresher to be a single rather than static
@BeforeMethod(alwaysRun = true)
public void setUp()
import jalview.datamodel.DBRefSource;
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceI;
-import jalview.io.AppletFormatAdapter;
+import jalview.io.DataSourceType;
+import jalview.io.FileFormat;
import jalview.io.FormatAdapter;
import jalview.util.MessageManager;
import javax.swing.JPopupMenu;
import javax.swing.JSeparator;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class PopupMenuTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
// 4 sequences x 13 positions
final static String TEST_DATA = ">FER_CAPAA Ferredoxin\n"
+ "TIETHKEAELVG-\n"
public void setUp() throws IOException
{
alignment = new FormatAdapter().readFile(TEST_DATA,
- AppletFormatAdapter.PASTE, "FASTA");
+ DataSourceType.PASTE, FileFormat.Fasta);
AlignFrame af = new AlignFrame(alignment, 700, 500);
parentPanel = new AlignmentPanel(af, af.getViewport());
testee = new PopupMenu(parentPanel, null, null);
import javax.swing.JPanel;
import org.testng.Assert;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class ProgressBarTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
private JPanel statusPanel;
private JLabel statusBar;
import java.awt.Color;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class SequenceRendererTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = { "Functional" })
public void testGetResidueBoxColour_zappo()
{
import java.util.Vector;
import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class StructureChooserTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
Sequence seq;
@BeforeMethod(alwaysRun = true)
import jalview.datamodel.PDBEntry;
import jalview.datamodel.PDBEntry.Type;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class StructureViewerTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = "Functional")
public void testGetUniquePdbFiles()
{
import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceI;
import jalview.gui.AlignFrame;
+import jalview.gui.JvOptionPane;
import jalview.structure.StructureImportSettings;
import jalview.structure.StructureImportSettings.StructureParser;
public class AnnotatedPDBFileInputTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
AlignmentI al;
String pdbId;
Boolean.TRUE.toString());
FileLoader loader = new FileLoader(false);
AlignFrame af = loader.LoadFileWaitTillLoaded("examples/1gaq.txt",
- FormatAdapter.FILE);
+ DataSourceType.FILE);
al = af.getViewport().getAlignment();
pdbId = al.getSequenceAt(0).getDatasetSequence().getAllPDBEntries()
.get(0).getId();
String tfile = File.createTempFile("JalviewTest", ".jvp")
.getAbsolutePath();
AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(
- inFile, FormatAdapter.FILE);
+ inFile, DataSourceType.FILE);
assertTrue("Didn't read input file " + inFile, af != null);
assertTrue("Failed to store as a project.",
- af.saveAlignment(tfile, "Jalview"));
+ af.saveAlignment(tfile, FileFormat.Jalview));
af.closeMenuItem_actionPerformed(true);
af = null;
af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(tfile,
- FormatAdapter.FILE);
+ DataSourceType.FILE);
assertTrue("Failed to import new project", af != null);
for (SequenceI asq : af.getViewport().getAlignment().getSequences())
{
import jalview.datamodel.AlignmentI;
import jalview.datamodel.ColumnSelection;
+import jalview.gui.JvOptionPane;
import jalview.io.AnnotationFile.ViewDef;
import java.io.File;
import java.util.Hashtable;
import org.testng.Assert;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class AnnotationFileIOTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
static String TestFiles[][] = {
{ "Test example annotation import/export", "examples/uniref50.fa",
"examples/testdata/example_annot_file.jva" },
{
FormatAdapter rf = new FormatAdapter();
- AlignmentI al = rf.readFile(ff, AppletFormatAdapter.FILE,
- new IdentifyFile().identify(ff, AppletFormatAdapter.FILE));
+ AlignmentI al = rf.readFile(ff, DataSourceType.FILE,
+ new IdentifyFile().identify(ff, DataSourceType.FILE));
// make sure dataset is initialised ? not sure about this
for (int i = 0; i < al.getSequencesArray().length; ++i)
+ testname
+ "\nAlignment was not annotated - annotation file not imported.",
new AnnotationFile().readAnnotationFile(al, cs, af,
- FormatAdapter.FILE));
+ DataSourceType.FILE));
AnnotationFile aff = new AnnotationFile();
ViewDef v = aff.new ViewDef(null, al.getHiddenSequences(), cs,
+ testname
+ "\nregenerated annotation file did not annotate alignment.",
new AnnotationFile().readAnnotationFile(al_new, anfileout,
- FormatAdapter.PASTE));
+ DataSourceType.PASTE));
// test for consistency in io
StockholmFileTest.testAlignmentEquivalence(al, al_new, false);
*/
package jalview.io;
+import jalview.gui.JvOptionPane;
import jalview.json.binding.biojs.BioJSReleasePojo;
import jalview.json.binding.biojs.BioJSRepositoryPojo;
import org.testng.Assert;
import org.testng.AssertJUnit;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class BioJsHTMLOutputTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = { "Functional" })
public void getJalviewAlignmentAsJsonString()
{
{
e.printStackTrace();
}
- bjsTemplate = BioJsHTMLOutput.getBioJsTemplateAsString();
+ bjsTemplate = HTMLOutput.readFileAsString(BioJsHTMLOutput
+ .getCurrentBJSTemplateFile());
// System.out.println(bjsTemplate);
} catch (IOException e)
{
{
try
{
- BioJsHTMLOutput.refreshBioJSVersionsInfo(null);
+ BioJsHTMLOutput.refreshVersionInfo(null);
} catch (URISyntaxException e)
{
AssertJUnit.fail("Expception occured while testing!");
try
{
BioJsHTMLOutput
- .refreshBioJSVersionsInfo(BioJsHTMLOutput.BJS_TEMPLATES_LOCAL_DIRECTORY);
+ .refreshVersionInfo(BioJsHTMLOutput.BJS_TEMPLATES_LOCAL_DIRECTORY);
versions = BioJsHTMLOutput.getBioJsMSAVersions();
} catch (URISyntaxException e)
{
import jalview.gui.CrossRefAction;
import jalview.gui.Desktop;
import jalview.gui.Jalview2XML;
+import jalview.gui.JvOptionPane;
import java.io.File;
import java.io.IOException;
import java.util.List;
import org.testng.Assert;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
@Test(singleThreaded = true)
public class CrossRef2xmlTests extends Jalview2xmlBase
{
+ @Override
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
/**
* test store and recovery of all reachable cross refs from all reachable
* crossrefs for one or more fetched db refs. Currently, this test has a known
Desktop.instance.closeAll_actionPerformed(null);
// recover stored project
af = new FileLoader(false).LoadFileWaitTillLoaded(savedProjects
- .get(first).toString(), FormatAdapter.FILE);
+ .get(first).toString(), DataSourceType.FILE);
System.out.println("Recovered view for '" + first + "' from '"
+ savedProjects.get(first).toString() + "'");
dna = af.getViewport().getAlignment().isNucleotide();
// recover stored project
AlignFrame af2 = new FileLoader(false)
.LoadFileWaitTillLoaded(savedProjects.get(nextxref)
- .toString(), FormatAdapter.FILE);
+ .toString(), DataSourceType.FILE);
System.out.println("Recovered view for '" + nextxref
+ "' from '" + savedProjects.get(nextxref).toString()
+ "'");
AlignFrame af2 = new FileLoader(false)
.LoadFileWaitTillLoaded(
savedProjects.get(nextnextxref)
- .toString(), FormatAdapter.FILE);
+ .toString(),
+ DataSourceType.FILE);
System.out.println("Recovered view for '"
+ nextnextxref + "' from '"
+ savedProjects.get(nextnextxref).toString()
import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceI;
import jalview.gui.AlignFrame;
+import jalview.gui.JvOptionPane;
import java.awt.Color;
import java.io.File;
import java.io.IOException;
import java.util.Map;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class FeaturesFileTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
private static String simpleGffFile = "examples/testdata/simpleGff3.gff";
@Test(groups = { "Functional" })
Map<String, FeatureColourI> colours = af.getFeatureRenderer()
.getFeatureColours();
FeaturesFile featuresFile = new FeaturesFile(
- "examples/exampleFeatures.txt", FormatAdapter.FILE);
+ "examples/exampleFeatures.txt", DataSourceType.FILE);
assertTrue("Test " + "Features file test"
+ "\nFailed to parse features file.",
featuresFile.parse(al.getDataset(), colours, true));
+ "FER_CAPAA\tuniprot\tMETAL\t44\t45\t4.0\t.\t.\tNote Iron-sulfur; Note 2Fe-2S\n"
+ "FER1_SOLLC\tuniprot\tPfam\t55\t130\t2.0\t.\t.";
FeaturesFile featuresFile = new FeaturesFile(gffData,
- FormatAdapter.PASTE);
+ DataSourceType.PASTE);
assertTrue("Failed to parse features file",
featuresFile.parse(al.getDataset(), colours, true));
String ff = f.getPath();
FormatAdapter rf = new FormatAdapter();
- AlignmentI al = rf.readFile(ff, FormatAdapter.FILE,
- new IdentifyFile().identify(ff, FormatAdapter.FILE));
+ AlignmentI al = rf.readFile(ff, DataSourceType.FILE,
+ new IdentifyFile().identify(ff, DataSourceType.FILE));
al.setDataset(null); // creates dataset sequences
assertNotNull("Couldn't read supplied alignment data.", al);
+ "Note=Iron-sulfur (2Fe-2S);Note=another note;evidence=ECO:0000255|PROSITE-ProRule:PRU00465\n"
+ "FER1_SOLLC\tuniprot\tPfam\t55\t130\t3.0\t.\t.\tID=$23";
FeaturesFile featuresFile = new FeaturesFile(gffData,
- FormatAdapter.PASTE);
+ DataSourceType.PASTE);
assertTrue("Failed to parse features file",
featuresFile.parse(al.getDataset(), colours, true));
String featureData = "Iron-sulfur (2Fe-2S)\tFER_CAPAA\t-1\t39\t39\tMETAL\n"
+ "Iron-phosphorus (2Fe-P)\tID_NOT_SPECIFIED\t2\t86\t87\tMETALLIC\n";
FeaturesFile featuresFile = new FeaturesFile(featureData,
- FormatAdapter.PASTE);
+ DataSourceType.PASTE);
assertTrue("Failed to parse features file",
featuresFile.parse(al.getDataset(), colours, true));
public void readGff3File() throws IOException
{
FeaturesFile gffreader = new FeaturesFile(true, simpleGffFile,
- FormatAdapter.FILE);
+ DataSourceType.FILE);
Alignment dataset = new Alignment(gffreader.getSeqsAsArray());
gffreader.addProperties(dataset);
checkDatasetfromSimpleGff3(dataset);
public void simpleGff3FileClass() throws IOException
{
AlignmentI dataset = new Alignment(new SequenceI[] {});
- FeaturesFile ffile = new FeaturesFile(simpleGffFile, FormatAdapter.FILE);
-
+ FeaturesFile ffile = new FeaturesFile(simpleGffFile,
+ DataSourceType.FILE);
+
boolean parseResult = ffile.parse(dataset, null, false, false);
assertTrue("return result should be true", parseResult);
checkDatasetfromSimpleGff3(dataset);
public void simpleGff3FileLoader() throws IOException
{
AlignFrame af = new FileLoader(false).LoadFileWaitTillLoaded(
- simpleGffFile, FormatAdapter.FILE);
+ simpleGffFile, DataSourceType.FILE);
assertTrue(
"Didn't read the alignment into an alignframe from Gff3 File",
af != null);
public void simpleGff3RelaxedIdMatching() throws IOException
{
AlignmentI dataset = new Alignment(new SequenceI[] {});
- FeaturesFile ffile = new FeaturesFile(simpleGffFile, FormatAdapter.FILE);
-
+ FeaturesFile ffile = new FeaturesFile(simpleGffFile,
+ DataSourceType.FILE);
+
boolean parseResult = ffile.parse(dataset, null, false, true);
assertTrue("return result (relaxedID matching) should be true",
parseResult);
+ "<html>Pfam domain<a href=\"http://pfam.xfam.org/family/PF00111\">Pfam_3_4</a></html>\tFER_CAPAA\t-1\t20\t20\tPfam\n"
+ "ENDGROUP\tuniprot\n";
FeaturesFile featuresFile = new FeaturesFile(features,
- FormatAdapter.PASTE);
+ DataSourceType.PASTE);
featuresFile.parse(al.getDataset(), colours, false);
/*
*/
package jalview.io;
+import jalview.gui.JvOptionPane;
+
import java.io.File;
import java.io.IOException;
public class FileIOTester
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
/**
* @throws java.lang.Exception
*/
final static File STARS_FA_FILE2 = new File(
"test/jalview/io/test_fasta_stars2.fa");
- private void assertValidFormat(String fmt, String src, FileParse fp)
+ private void assertValidFormat(FileFormatI fmt, String src, FileParse fp)
+ throws FileFormatException
{
AssertJUnit.assertTrue("Couldn't resolve " + src + " as a valid file",
fp.isValid());
- String type = new IdentifyFile().identify(fp);
- AssertJUnit.assertTrue("Data from '" + src + "' Expected to be '" + fmt
- + "' identified as '" + type + "'", type.equalsIgnoreCase(fmt));
+ FileFormatI type = new IdentifyFile().identify(fp);
+ AssertJUnit.assertSame("Data from '" + src + "' Expected to be '" + fmt
+ + "' identified as '" + type + "'", type, fmt);
}
@Test(groups = { "Functional" })
{
String uri;
FileParse fp = new FileParse(uri = STARS_FA_FILE1.getAbsoluteFile()
- .toString(), AppletFormatAdapter.FILE);
- assertValidFormat("FASTA", uri, fp);
+ .toString(), DataSourceType.FILE);
+ assertValidFormat(FileFormat.Fasta, uri, fp);
}
@Test(groups = { "Functional" })
{
String uri;
FileParse fp = new FileParse(uri = STARS_FA_FILE2.getAbsoluteFile()
- .toString(), AppletFormatAdapter.FILE);
- assertValidFormat("FASTA", uri, fp);
+ .toString(), DataSourceType.FILE);
+ assertValidFormat(FileFormat.Fasta, uri, fp);
}
@Test(groups = { "Functional" })
{
String uri;
FileParse fp = new FileParse(uri = ALIGN_FILE.getAbsoluteFile().toURI()
- .toString(), AppletFormatAdapter.URL);
- assertValidFormat("FASTA", uri, fp);
+ .toString(), DataSourceType.URL);
+ assertValidFormat(FileFormat.Fasta, uri, fp);
}
@Test(groups = { "Functional" })
{
String filepath;
FileParse fp = new FileParse(filepath = ALIGN_FILE.getAbsoluteFile()
- .toString(), AppletFormatAdapter.FILE);
- assertValidFormat("FASTA", filepath, fp);
+ .toString(), DataSourceType.FILE);
+ assertValidFormat(FileFormat.Fasta, filepath, fp);
}
@Test(groups = { "Functional" })
{
String uri;
FileParse fp = new FileParse(uri = NOTGZALIGN_FILE.getAbsoluteFile()
- .toURI().toString(), AppletFormatAdapter.URL);
- assertValidFormat("FASTA", uri, fp);
+ .toURI().toString(), DataSourceType.URL);
+ assertValidFormat(FileFormat.Fasta, uri, fp);
}
@Test(groups = { "Functional" })
{
String filepath;
FileParse fp = new FileParse(filepath = NOTGZALIGN_FILE
- .getAbsoluteFile().toString(), AppletFormatAdapter.FILE);
- assertValidFormat("FASTA", filepath, fp);
+ .getAbsoluteFile().toString(), DataSourceType.FILE);
+ assertValidFormat(FileFormat.Fasta, filepath, fp);
}
}
import jalview.datamodel.AlignmentI;
import jalview.datamodel.SequenceI;
+import jalview.gui.JvOptionPane;
import java.io.IOException;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class FormatAdapterTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
/**
* Test saving and re-reading in a specified format
*
* @throws IOException
*/
@Test(groups = { "Functional" }, dataProvider = "formats")
- public void testRoundTrip(String format) throws IOException
+ public void testRoundTrip(FileFormatI format) throws IOException
{
try
{
AlignmentI al = new FormatAdapter().readFile("examples/uniref50.fa",
- FormatAdapter.FILE, "FASTA");
+ DataSourceType.FILE, FileFormat.Fasta);
/*
* 'gap' is the gap character used in the alignment data file here,
false);
AlignmentI reloaded = new FormatAdapter().readFile(formatted,
- FormatAdapter.PASTE, format);
+ DataSourceType.PASTE, format);
List<SequenceI> reread = reloaded.getSequences();
assertEquals("Wrong number of reloaded sequences", seqs.length,
reread.size());
* @return
*/
String adjustForGapTreatment(String sequenceString, char gap,
- String format)
+ FileFormatI format)
{
- if ("MSF".equals(format))
+ if (FileFormat.MSF.equals(format))
{
/*
* MSF forces gap character to '.', so change it back
/**
* Data provider that serves alignment formats that are both readable and
- * writable
+ * (text) writable
*
* @return
*/
@DataProvider(name = "formats")
static Object[][] getFormats()
{
- List<String> both = new ArrayList<String>();
- String[] readable = FormatAdapter.READABLE_FORMATS;
- List<String> writeable = Arrays.asList(FormatAdapter.WRITEABLE_FORMATS);
- for (String r : readable)
+ List<FileFormatI> both = new ArrayList<FileFormatI>();
+ for (FileFormat format : FileFormat.values())
{
- if (writeable.contains(r))
+ if (format.isReadable() && format.isWritable()
+ && format.isTextFormat())
{
- both.add(r);
+ both.add(format);
}
}
Object[][] formats = new Object[both.size()][];
int i = 0;
- for (String format : both)
+ for (FileFormatI format : both)
{
formats[i] = new Object[] { format };
i++;
@Test(groups = { "Functional" }, enabled = false)
public void testOneFormatRoundTrip() throws IOException
{
- testRoundTrip("JSON");
+ testRoundTrip(FileFormat.Json);
}
}
*/
package jalview.io;
+import jalview.gui.JvOptionPane;
+
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class HtmlFileTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = { "Functional" }, enabled = false)
public void test()
{
*/
package jalview.io;
-import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertFalse;
+import static org.testng.AssertJUnit.assertSame;
import static org.testng.AssertJUnit.assertTrue;
+import jalview.gui.JvOptionPane;
+
import org.testng.Assert;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class IdentifyFileTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = { "Functional" }, dataProvider = "identifyFiles")
- public void testIdentify(String data, String expectedFileType)
+ public void testIdentify(String data, FileFormatI expectedFileType)
+ throws FileFormatException
{
- String protocol = AppletFormatAdapter.FILE;
+ DataSourceType protocol = DataSourceType.FILE;
IdentifyFile ider = new IdentifyFile();
- String actualFiletype = ider.identify(data, protocol);
- Assert.assertEquals(actualFiletype, expectedFileType,
+ FileFormatI actualFiletype = ider.identify(data, protocol);
+ Assert.assertSame(actualFiletype, expectedFileType,
"File identification Failed!");
}
/**
* Additional tests for Jalview features file
+ *
+ * @throws FileFormatException
*/
@Test(groups = "Functional")
- public void testIdentify_featureFile()
+ public void testIdentify_featureFile() throws FileFormatException
{
IdentifyFile ider = new IdentifyFile();
*/
String data = "Iron-sulfur (2Fe-2S)\tFER_CAPAA\t-1\t39\t39\tMETAL\n"
+ "Iron-phosphorus (2Fe-P)\tID_NOT_SPECIFIED\t2\t86\t87\tMETALLIC\n";
- assertEquals(IdentifyFile.FeaturesFile,
- ider.identify(data, AppletFormatAdapter.PASTE));
+ assertSame(FileFormat.Features,
+ ider.identify(data, DataSourceType.PASTE));
/*
* Jalview feature colour followed by GFF format feature data
*/
data = "METAL\tcc9900\n" + "GFF\n"
+ "FER_CAPAA\tuniprot\tMETAL\t44\t45\t4.0\t.\t.\n";
- assertEquals(IdentifyFile.FeaturesFile,
- ider.identify(data, AppletFormatAdapter.PASTE));
+ assertSame(FileFormat.Features,
+ ider.identify(data, DataSourceType.PASTE));
/*
* Feature with '<' in the name (JAL-2098)
*/
data = "kD < 3\tred\n" + "Low kD\tFER_CAPAA\t-1\t39\t39\tkD < 3\n";
- assertEquals(IdentifyFile.FeaturesFile,
- ider.identify(data, AppletFormatAdapter.PASTE));
+ assertSame(FileFormat.Features,
+ ider.identify(data, DataSourceType.PASTE));
}
@DataProvider(name = "identifyFiles")
public Object[][] IdentifyFileDP()
{
return new Object[][] {
- { "examples/example.json", "JSON" },
- { "examples/plantfdx.fa", "FASTA" },
- { "examples/dna_interleaved.phy", "PHYLIP" },
- { "examples/2GIS.pdb", "PDB" },
- { "examples/rf00031_folded.stk", "STH" },
- { "examples/testdata/test.rnaml", "RNAML" },
- { "examples/testdata/test.aln", "CLUSTAL" },
- { "examples/testdata/test.pfam", "PFAM" },
- { "examples/testdata/test.msf", "MSF" },
- { "examples/testdata/test.pir", "PIR" },
- { "examples/testdata/test.html", "HTML" },
- { "examples/testdata/test.pileup", "PileUp" },
- { "examples/testdata/test.blc", "BLC" },
- { "examples/exampleFeatures.txt", IdentifyFile.FeaturesFile },
- { "examples/testdata/simpleGff3.gff", IdentifyFile.FeaturesFile },
- { "examples/testdata/test.jvp", "Jalview" },
- { "examples/testdata/test.cif", "mmCIF" },
+ { "examples/example.json", FileFormat.Json },
+ { "examples/plantfdx.fa", FileFormat.Fasta },
+ { "examples/dna_interleaved.phy", FileFormat.Phylip },
+ { "examples/2GIS.pdb", FileFormat.PDB },
+ { "examples/rf00031_folded.stk", FileFormat.Stockholm },
+ { "examples/testdata/test.rnaml", FileFormat.Rnaml },
+ { "examples/testdata/test.aln", FileFormat.Clustal },
+ { "examples/testdata/test.pfam", FileFormat.Pfam },
+ { "examples/testdata/test.msf", FileFormat.MSF },
+ { "examples/testdata/test.pir", FileFormat.PIR },
+ { "examples/testdata/test.html", FileFormat.Html },
+ { "examples/testdata/test.pileup", FileFormat.Pileup },
+ { "examples/testdata/test.blc", FileFormat.BLC },
+ { "examples/exampleFeatures.txt", FileFormat.Features },
+ { "examples/testdata/simpleGff3.gff", FileFormat.Features },
+ { "examples/testdata/test.jvp", FileFormat.Jalview },
+ { "examples/testdata/test.cif", FileFormat.MMCif },
{
"examples/testdata/cullpdb_pc25_res3.0_R0.3_d150729_chains9361.fasta.15316",
- "FASTA" },
+ FileFormat.Fasta },
// { "examples/testdata/test.amsa", "AMSA" },
// { "examples/test.jnet", "JnetFile" },
import jalview.datamodel.SequenceGroup;
import jalview.datamodel.SequenceI;
import jalview.gui.AlignFrame;
+import jalview.gui.JvOptionPane;
import jalview.json.binding.biojson.v1.ColourSchemeMapper;
import jalview.schemes.ColourSchemeI;
import org.testng.Assert;
import org.testng.AssertJUnit;
import org.testng.annotations.AfterTest;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
public class JSONFileTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
private int TEST_SEQ_HEIGHT = 0;
private int TEST_GRP_HEIGHT = 0;
try
{
alignment = (Alignment) formatAdapter.readFile(TEST_JSON_FILE,
- AppletFormatAdapter.FILE, JSONFile.FILE_DESC);
+ DataSourceType.FILE, FileFormat.Json);
jf = (JSONFile) formatAdapter.getAlignFile();
AlignFrame af = new AlignFrame(alignment, jf.getHiddenSequences(),
af.getViewport().setFeaturesDisplayed(jf.getDisplayedFeatures());
formatAdapter = new AppletFormatAdapter(af.alignPanel, exportSettings);
- String jsonOutput = formatAdapter.formatSequences(JSONFile.FILE_DESC,
+ String jsonOutput = formatAdapter.formatSequences(FileFormat.Json,
af.alignPanel.getAlignment(), false);
formatAdapter = new AppletFormatAdapter();
testAlignment = formatAdapter.readFile(jsonOutput,
- AppletFormatAdapter.PASTE, JSONFile.FILE_DESC);
+ DataSourceType.PASTE, FileFormat.Json);
testJsonFile = (JSONFile) formatAdapter.getAlignFile();
// System.out.println(jsonOutput);
} catch (IOException e)
import jalview.datamodel.AlignmentAnnotation;
import jalview.datamodel.SequenceI;
import jalview.gui.Desktop;
+import jalview.gui.JvOptionPane;
import java.util.Date;
public class Jalview2xmlBase
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
/**
* @throws java.lang.Exception
*/
import jalview.gui.AlignmentPanel;
import jalview.gui.Desktop;
import jalview.gui.Jalview2XML;
+import jalview.gui.JvOptionPane;
import jalview.schemes.AnnotationColourGradient;
import jalview.schemes.ColourSchemeI;
import jalview.schemes.ColourSchemeProperty;
import org.testng.Assert;
import org.testng.AssertJUnit;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
@Test(singleThreaded = true)
public class Jalview2xmlTests extends Jalview2xmlBase
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = { "Functional" })
public void testRNAStructureRecovery() throws Exception
{
String inFile = "examples/RF00031_folded.stk";
String tfile = File.createTempFile("JalviewTest", ".jvp")
.getAbsolutePath();
- AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(inFile,
- FormatAdapter.FILE);
- assertNotNull("Didn't read input file " + inFile, af);
+ AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
+ inFile, DataSourceType.FILE);
+ assertTrue("Didn't read input file " + inFile, af != null);
int olddsann = countDsAnn(af.getViewport());
assertTrue("Didn't find any dataset annotations", olddsann > 0);
af.rnahelicesColour_actionPerformed(null);
"Couldn't apply RNA helices colourscheme",
af.getViewport().getGlobalColourScheme() instanceof jalview.schemes.RNAHelicesColour);
assertTrue("Failed to store as a project.",
- af.saveAlignment(tfile, "Jalview"));
+ af.saveAlignment(tfile, FileFormat.Jalview));
af.closeMenuItem_actionPerformed(true);
af = null;
- af = new FileLoader().LoadFileWaitTillLoaded(tfile, FormatAdapter.FILE);
- assertNotNull("Failed to import new project", af);
+ af = new FileLoader().LoadFileWaitTillLoaded(tfile, DataSourceType.FILE);
+ assertTrue("Failed to import new project", af != null);
int newdsann = countDsAnn(af.getViewport());
assertTrue(
"Differing numbers of dataset sequence annotation\nOriginally "
String inFile = "examples/uniref50.fa", inAnnot = "examples/uniref50.score_ascii";
String tfile = File.createTempFile("JalviewTest", ".jvp")
.getAbsolutePath();
- AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(inFile,
- FormatAdapter.FILE);
+ AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
+ inFile, DataSourceType.FILE);
assertNotNull("Didn't read input file " + inFile, af);
- af.loadJalviewDataFile(inAnnot, FormatAdapter.FILE, null, null);
+ af.loadJalviewDataFile(inAnnot, DataSourceType.FILE, null, null);
assertSame("Didn't set T-coffee colourscheme", af.getViewport()
.getGlobalColourScheme().getClass(), TCoffeeColourScheme.class);
assertNotNull("Recognise T-Coffee score from string",
- jalview.schemes.ColourSchemeProperty.getColour(af.getViewport()
+ ColourSchemeProperty.getColour(af.getViewport()
.getAlignment(), ColourSchemeProperty.getColourName(af
.getViewport().getGlobalColourScheme())));
assertTrue("Failed to store as a project.",
- af.saveAlignment(tfile, "Jalview"));
+ af.saveAlignment(tfile, FileFormat.Jalview));
af.closeMenuItem_actionPerformed(true);
af = null;
- af = new FileLoader().LoadFileWaitTillLoaded(tfile, FormatAdapter.FILE);
+ af = new FileLoader().LoadFileWaitTillLoaded(tfile,
+ DataSourceType.FILE);
assertNotNull("Failed to import new project", af);
assertSame("Didn't set T-coffee colourscheme for imported project.", af
.getViewport().getGlobalColourScheme().getClass(),
String inFile = "examples/uniref50.fa", inAnnot = "examples/testdata/uniref50_iupred.jva";
String tfile = File.createTempFile("JalviewTest", ".jvp")
.getAbsolutePath();
- AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(inFile,
- FormatAdapter.FILE);
+ AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(inFile, DataSourceType.FILE);
assertNotNull("Didn't read input file " + inFile, af);
- af.loadJalviewDataFile(inAnnot, FormatAdapter.FILE, null, null);
+ af.loadJalviewDataFile(inAnnot, DataSourceType.FILE, null, null);
AlignmentAnnotation[] aa = af.getViewport().getAlignment()
.getSequenceAt(0).getAnnotation("IUPredWS (Short)");
assertTrue(
sg.addSequence(af.getViewport().getAlignment().getSequenceAt(2), true);
af.alignPanel.alignmentChanged();
assertTrue("Failed to store as a project.",
- af.saveAlignment(tfile, "Jalview"));
+ af.saveAlignment(tfile, FileFormat.Jalview));
af.closeMenuItem_actionPerformed(true);
af = null;
- af = new FileLoader().LoadFileWaitTillLoaded(tfile, FormatAdapter.FILE);
- assertNotNull("Failed to import new project", af);
+ af = new FileLoader().LoadFileWaitTillLoaded(tfile, DataSourceType.FILE);
+ assertTrue("Failed to import new project", af != null);
// check for group and alignment colourschemes
int origCount = Desktop.getAlignFrames() == null ? 0 : Desktop
.getAlignFrames().length;
AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
- "examples/exampleFile_2_7.jar", FormatAdapter.FILE);
+ "examples/exampleFile_2_7.jar", DataSourceType.FILE);
assertNotNull("Didn't read in the example file correctly.", af);
assertTrue("Didn't gather the views in the example file.",
Desktop.getAlignFrames().length == 1 + origCount);
StructureImportSettings.setProcessSecondaryStructure(true);
StructureImportSettings.setVisibleChainAnnotation(true);
AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
- "examples/exampleFile_2_7.jar", FormatAdapter.FILE);
+ "examples/exampleFile_2_7.jar", DataSourceType.FILE);
assertNotNull("Didn't read in the example file correctly.", af);
AlignmentViewPanel sps = null;
for (AlignmentViewPanel ap : af.alignPanel.alignFrame.getAlignPanels())
public void testCopyViewSettings() throws Exception
{
AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
- "examples/exampleFile_2_7.jar", FormatAdapter.FILE);
+ "examples/exampleFile_2_7.jar", DataSourceType.FILE);
assertNotNull("Didn't read in the example file correctly.", af);
AlignmentViewPanel sps = null, groups = null;
for (AlignmentViewPanel ap : af.alignPanel.alignFrame.getAlignPanels())
Desktop.instance.closeAll_actionPerformed(null);
AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
- "examples/exampleFile_2_7.jar", FormatAdapter.FILE);
+ "examples/exampleFile_2_7.jar", DataSourceType.FILE);
Assert.assertEquals(Desktop.getAlignFrames().length, 1);
String afid = af.getViewport().getSequenceSetId();
{
Assert.assertEquals(Desktop.getAlignFrames().length, 0);
}
- af = new FileLoader().LoadFileWaitTillLoaded(tfile.getAbsolutePath(),
- FormatAdapter.FILE);
+ af = new FileLoader().LoadFileWaitTillLoaded(
+ tfile.getAbsolutePath(), DataSourceType.FILE);
Assert.assertNotNull(af);
Assert.assertEquals(
Desktop.getAlignFrames().length,
{
Desktop.instance.closeAll_actionPerformed(null);
AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
- "examples/exampleFile_2_7.jar", FormatAdapter.FILE);
+ "examples/exampleFile_2_7.jar", DataSourceType.FILE);
assertNotNull("Didn't read in the example file correctly.", af);
String afid = af.getViewport().getSequenceSetId();
Assert.assertEquals(Desktop.getAlignFrames().length, 0);
}
- af = new FileLoader().LoadFileWaitTillLoaded(tfile.getAbsolutePath(),
- FormatAdapter.FILE);
+ af = new FileLoader().LoadFileWaitTillLoaded(
+ tfile.getAbsolutePath(), DataSourceType.FILE);
afid = af.getViewport().getSequenceSetId();
for (AlignmentViewPanel ap : Desktop.getAlignmentPanels(afid))
{
Desktop.instance.closeAll_actionPerformed(null);
AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
- "examples/uniref50.fa", FormatAdapter.FILE);
+ "examples/uniref50.fa", DataSourceType.FILE);
assertNotNull("Didn't read in the example file correctly.", af);
String afid = af.getViewport().getSequenceSetId();
// make a second view of the alignment
{
Assert.assertEquals(Desktop.getAlignFrames().length, 0);
}
-
- af = new FileLoader().LoadFileWaitTillLoaded(tfile.getAbsolutePath(),
- FormatAdapter.FILE);
+
+ af = new FileLoader().LoadFileWaitTillLoaded(
+ tfile.getAbsolutePath(), DataSourceType.FILE);
afid = af.getViewport().getSequenceSetId();
for (AlignmentViewPanel ap : Desktop.getAlignmentPanels(afid))
Desktop.instance.closeAll_actionPerformed(null);
String exampleFile = "examples/3W5V.pdb";
AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(exampleFile,
- FormatAdapter.FILE);
+ DataSourceType.FILE);
assertNotNull("Didn't read in the example file correctly.", af);
String afid = af.getViewport().getSequenceSetId();
}
AlignFrame restoredFrame = new FileLoader().LoadFileWaitTillLoaded(
- tfile.getAbsolutePath(), FormatAdapter.FILE);
+ tfile.getAbsolutePath(), DataSourceType.FILE);
String rfid = restoredFrame.getViewport().getSequenceSetId();
AlignmentPanel[] rAlignPanels = Desktop.getAlignmentPanels(rfid);
AlignmentViewPanel rap = rAlignPanels[0];
import jalview.datamodel.SequenceGroup;
import jalview.gui.AlignFrame;
+import jalview.gui.JvOptionPane;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
public class JalviewExportPropertiesTests
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
/**
* @throws java.lang.Exception
*/
assertTrue("Couldn't set gap character to '.'",
".".equals("" + jalview.bin.Cache.getProperty("GAP_SYMBOL")));
AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(
- "examples/uniref50.fa", FormatAdapter.FILE);
+ "examples/uniref50.fa", DataSourceType.FILE);
assertTrue("Didn't read in the example file correctly.", af != null);
assertTrue("Didn't set the gap character correctly", af.getViewport()
.getAlignment().getSequenceAt(0).getCharAt(5) == '.');
sg.setEndRes(7);
af.getViewport().setSelectionGroup(sg);
String fseqs = new FormatAdapter(af.alignPanel).formatSequences(
- "FASTA", af.alignPanel, true);
+ FileFormat.Fasta, af.alignPanel, true);
assertTrue("Couldn't find '.' in the exported region\n" + fseqs,
fseqs.indexOf(".") > -1);
}
--- /dev/null
+package jalview.io;
+
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertNotSame;
+import static org.testng.Assert.assertNull;
+import static org.testng.Assert.assertSame;
+
+import java.io.File;
+
+import javax.swing.ImageIcon;
+
+import org.testng.annotations.Test;
+
+public class JalviewFileViewTest
+{
+ @Test
+ public void testGetImageIcon()
+ {
+ JalviewFileView jfv = new JalviewFileView();
+ ImageIcon icon1 = jfv.getImageIcon("/images/file.png");
+ ImageIcon icon2 = jfv.getImageIcon("/images/file.png");
+ ImageIcon icon3 = jfv.getImageIcon("/images/dna.png");
+ ImageIcon icon4 = jfv.getImageIcon("/images/dna.png");
+
+ /*
+ * verify a single image object is served per file path
+ */
+ assertNotNull(icon1);
+ assertSame(icon1, icon2);
+ assertNotNull(icon3);
+ assertSame(icon3, icon4);
+ assertNotSame(icon1, icon3);
+
+ assertNull(jfv.getImageIcon("/images/nosuchfile.png"));
+ assertNull(jfv.getImageIcon("images/file.png"));
+ }
+
+ @Test
+ public void testGetExtension()
+ {
+ assertEquals(JalviewFileView.getExtension(new File("text.txt")), "txt");
+ assertEquals(JalviewFileView.getExtension(new File(
+ "/a/longer/file/path/text.png.TXT")), "txt");
+ assertNull(JalviewFileView.getExtension(new File(
+ "/a/longer/file/path/text.")));
+ assertNull(JalviewFileView.getExtension(new File(
+ "/a/longer/file/path/text")));
+ }
+
+ @Test
+ public void testGetTypeDescription()
+ {
+ JalviewFileView jfw = new JalviewFileView();
+ assertEquals(jfw.getTypeDescription(new File("uniref50.fa")),
+ "Fasta file");
+ assertEquals(jfw.getTypeDescription(new File("uniref50.fasta")),
+ "Fasta file");
+ assertEquals(jfw.getTypeDescription(new File("uniref50.MFA")),
+ "Fasta file");
+ assertEquals(jfw.getTypeDescription(new File("uniref50.fastQ")),
+ "Fasta file");
+ assertEquals(jfw.getTypeDescription(new File("uniref50.pfam")),
+ "PFAM file");
+ assertEquals(jfw.getTypeDescription(new File("uniref50.stk")),
+ "Stockholm file");
+ assertEquals(jfw.getTypeDescription(new File("uniref50.sto")),
+ "Stockholm file");
+ assertEquals(jfw.getTypeDescription(new File("uniref50.pir")),
+ "PIR file");
+ assertEquals(jfw.getTypeDescription(new File("uniref50.blc")),
+ "BLC file");
+ assertEquals(jfw.getTypeDescription(new File("uniref50.amsa")),
+ "AMSA file");
+ assertEquals(jfw.getTypeDescription(new File("uniref50.html")),
+ "HTML file");
+ assertNull(jfw.getTypeDescription(new File("uniref50.htm")));
+ assertEquals(jfw.getTypeDescription(new File("uniref50.xml")),
+ "RNAML file");
+ assertEquals(jfw.getTypeDescription(new File("uniref50.rnaml")),
+ "RNAML file");
+ assertEquals(jfw.getTypeDescription(new File("uniref50.json")),
+ "JSON file");
+ assertEquals(jfw.getTypeDescription(new File("uniref50.pileup")),
+ "PileUp file");
+ assertEquals(jfw.getTypeDescription(new File("uniref50.msf")),
+ "MSF file");
+ assertEquals(jfw.getTypeDescription(new File("uniref50.aln")),
+ "Clustal file");
+ assertEquals(jfw.getTypeDescription(new File("uniref50.phy")),
+ "PHYLIP file");
+ assertEquals(jfw.getTypeDescription(new File("uniref50.gff2")),
+ "GFF or Jalview features file");
+ assertEquals(jfw.getTypeDescription(new File("uniref50.gff3")),
+ "GFF or Jalview features file");
+ assertEquals(jfw.getTypeDescription(new File("uniref50.pdb")),
+ "PDB file");
+ assertEquals(jfw.getTypeDescription(new File("uniref50.ent")),
+ "PDB file");
+ assertEquals(jfw.getTypeDescription(new File("uniref50.cif")),
+ "mmCIF file");
+ assertEquals(jfw.getTypeDescription(new File("uniref50.jvp")),
+ "Jalview file");
+ assertEquals(jfw.getTypeDescription(new File("uniref50.jar")),
+ "Jalview file (old)");
+ }
+}
import jalview.analysis.SequenceIdMatcher;
import jalview.datamodel.SequenceI;
import jalview.datamodel.SequenceNode;
+import jalview.gui.JvOptionPane;
import java.util.Arrays;
import java.util.Collection;
public class NewickFileTests
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Factory
public static Object[] factoryData()
{
{
stage = "Parsing testTree " + treename;
System.out.println(treename + "\n" + testTree);
- NewickFile nf = new NewickFile(testTree, FormatAdapter.PASTE);
+ NewickFile nf = new NewickFile(testTree, DataSourceType.PASTE);
nf.parse();
AssertJUnit.assertTrue(
stage + "Invalid Tree '" + nf.getWarningMessage() + "'",
AssertJUnit.assertTrue(stage + "Empty string generated",
gentree != null && gentree.trim().length() > 0);
stage = "Parsing regenerated testTree " + treename;
- NewickFile nf_regen = new NewickFile(gentree, FormatAdapter.PASTE);
+ NewickFile nf_regen = new NewickFile(gentree, DataSourceType.PASTE);
nf_regen.parse();
AssertJUnit.assertTrue(
stage + "Newick file is invalid ('"
package jalview.io;
import jalview.datamodel.AlignmentI;
+import jalview.gui.JvOptionPane;
import java.io.IOException;
import org.testng.Assert;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class PfamFormatInputTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = "Functional")
public void testPfamFormatNoLimits() throws IOException
{
AlignmentI al = new AppletFormatAdapter().readFile("ASEQ"
- + '\t' + "...--FFAFAFF--", AppletFormatAdapter.PASTE, "PFAM");
+ + '\t' + "...--FFAFAFF--", DataSourceType.PASTE,
+ FileFormat.Pfam);
Assert.assertEquals(1, al.getHeight(), "Wrong number of sequences");
Assert.assertTrue(al.hasValidSequence(),
"Didn't extract limits from PFAM ID");
@Test(groups = "Functional")
public void testPfamFormatValidLimits() throws IOException
{
- AlignmentI al = new AppletFormatAdapter().readFile(
- "ASEQ/15-25" + '\t' + "...--FFAFAFF--",
- AppletFormatAdapter.PASTE, "PFAM");
+ AlignmentI al = new AppletFormatAdapter().readFile("ASEQ/15-25" + '\t'
+ + "...--FFAFAFF--", DataSourceType.PASTE, FileFormat.Pfam);
Assert.assertEquals(1, al.getHeight(), "Wrong number of sequences");
Assert.assertTrue(al.hasValidSequence(),
"Didn't extract limits from PFAM ID");
import jalview.datamodel.AlignmentI;
import jalview.datamodel.SequenceI;
+import jalview.gui.JvOptionPane;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
/**
public class PhylipFileTests
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
// interleaved file from
// http://www.molecularevolution.org/molevolfiles/fileformats/dna.phy.dat
// sequential file is the interleave file converted into sequential format
private void testDataExtraction(String file) throws IOException
{
AppletFormatAdapter rf = new AppletFormatAdapter();
- AlignmentI al = rf.readFile(file, AppletFormatAdapter.FILE,
- PhylipFile.FILE_DESC);
+ AlignmentI al = rf.readFile(file, DataSourceType.FILE,
+ FileFormat.Phylip);
assertNotNull("Couldn't read supplied alignment data.", al);
Map<String, String> data = PhylipFileTests.getTestData();
public void testIO(String file) throws IOException
{
AppletFormatAdapter rf = new AppletFormatAdapter();
- AlignmentI al = rf.readFile(file, AppletFormatAdapter.FILE,
- PhylipFile.FILE_DESC);
+ AlignmentI al = rf.readFile(file, DataSourceType.FILE,
+ FileFormat.Phylip);
assertNotNull("Couldn't read supplied alignment data.", al);
- String outputfile = rf.formatSequences(PhylipFile.FILE_DESC, al, true);
+ String outputfile = rf.formatSequences(FileFormat.Phylip, al, true);
AlignmentI al_input = new AppletFormatAdapter().readFile(outputfile,
- AppletFormatAdapter.PASTE, PhylipFile.FILE_DESC);
+ DataSourceType.PASTE, FileFormat.Phylip);
assertNotNull("Couldn't parse reimported alignment data.", al_input);
StockholmFileTest.testAlignmentEquivalence(al, al_input, false);
*/
package jalview.io;
+import jalview.gui.JvOptionPane;
+
import java.io.File;
import org.testng.annotations.AfterClass;
{
@BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
+ @BeforeClass(alwaysRun = true)
public static void setUpBeforeClass() throws Exception
{
}
public void testRnamlToStockholmIO()
{
StockholmFileTest.testFileIOwithFormat(new File(
- "examples/testdata/rna-alignment.xml"), "STH", -1, -1);
+ "examples/testdata/rna-alignment.xml"), FileFormat.Stockholm,
+ -1, -1);
}
import static org.testng.AssertJUnit.assertEquals;
import jalview.datamodel.SequenceFeature;
+import jalview.gui.JvOptionPane;
import java.util.Hashtable;
import java.util.Map;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class SequenceAnnotationReportTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = "Functional")
public void testAppendFeature_disulfideBond()
{
SequenceAnnotationReport sar = new SequenceAnnotationReport(null);
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
sb.append("123456");
SequenceFeature sf = new SequenceFeature("disulfide bond", "desc", 1,
3, 1.2f, "group");
public void testAppendFeature_status()
{
SequenceAnnotationReport sar = new SequenceAnnotationReport(null);
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
SequenceFeature sf = new SequenceFeature("METAL", "Fe2-S", 1, 3,
Float.NaN, "group");
sf.setStatus("Confirmed");
public void testAppendFeature_withScore()
{
SequenceAnnotationReport sar = new SequenceAnnotationReport(null);
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
SequenceFeature sf = new SequenceFeature("METAL", "Fe2-S", 1, 3, 1.3f,
"group");
public void testAppendFeature_noScore()
{
SequenceAnnotationReport sar = new SequenceAnnotationReport(null);
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
SequenceFeature sf = new SequenceFeature("METAL", "Fe2-S", 1, 3,
Float.NaN, "group");
public void testAppendFeature_clinicalSignificance()
{
SequenceAnnotationReport sar = new SequenceAnnotationReport(null);
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
SequenceFeature sf = new SequenceFeature("METAL", "Fe2-S", 1, 3,
Float.NaN, "group");
sf.setValue("clinical_significance", "Benign");
public void testAppendFeature_withScoreStatusClinicalSignificance()
{
SequenceAnnotationReport sar = new SequenceAnnotationReport(null);
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
SequenceFeature sf = new SequenceFeature("METAL", "Fe2-S", 1, 3, 1.3f,
"group");
sf.setStatus("Confirmed");
public void testAppendFeature_DescEqualsType()
{
SequenceAnnotationReport sar = new SequenceAnnotationReport(null);
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
SequenceFeature sf = new SequenceFeature("METAL", "METAL", 1, 3,
Float.NaN, "group");
public void testAppendFeature_stripHtml()
{
SequenceAnnotationReport sar = new SequenceAnnotationReport(null);
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
SequenceFeature sf = new SequenceFeature("METAL",
"<html><body>hello<em>world</em></body></html>", 1, 3,
Float.NaN, "group");
import jalview.datamodel.Annotation;
import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceI;
+import jalview.gui.JvOptionPane;
import java.io.File;
import java.util.BitSet;
import java.util.HashMap;
import java.util.Map;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class StockholmFileTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
static String PfamFile = "examples/PF00111_seed.stk",
RfamFile = "examples/RF00031_folded.stk";
@Test(groups = { "Functional" })
public void pfamFileIO() throws Exception
{
- testFileIOwithFormat(new File(PfamFile), "STH", -1, 0);
+ testFileIOwithFormat(new File(PfamFile), FileFormat.Stockholm, -1, 0);
}
@Test(groups = { "Functional" })
public void pfamFileDataExtraction() throws Exception
{
AppletFormatAdapter af = new AppletFormatAdapter();
- AlignmentI al = af.readFile(PfamFile, af.FILE,
- new IdentifyFile().identify(PfamFile, af.FILE));
+ AlignmentI al = af.readFile(PfamFile, DataSourceType.FILE,
+ new IdentifyFile().identify(PfamFile, DataSourceType.FILE));
int numpdb = 0;
for (SequenceI sq : al.getSequences())
{
@Test(groups = { "Functional" })
public void rfamFileIO() throws Exception
{
- testFileIOwithFormat(new File(RfamFile), "STH", 2, 1);
+ testFileIOwithFormat(new File(RfamFile), FileFormat.Stockholm, 2, 1);
}
/**
* f
*/
- public static void testFileIOwithFormat(File f, String ioformat,
+ public static void testFileIOwithFormat(File f, FileFormatI ioformat,
int naliannot, int nminseqann)
{
System.out.println("Reading file: " + f);
{
AppletFormatAdapter rf = new AppletFormatAdapter();
- AlignmentI al = rf.readFile(ff, AppletFormatAdapter.FILE,
- new IdentifyFile().identify(ff, AppletFormatAdapter.FILE));
+ AlignmentI al = rf.readFile(ff, DataSourceType.FILE,
+ new IdentifyFile().identify(ff, DataSourceType.FILE));
assertNotNull("Couldn't read supplied alignment data.", al);
+ outputfile + "\n<<EOF\n");
// test for consistency in io
AlignmentI al_input = new AppletFormatAdapter().readFile(outputfile,
- AppletFormatAdapter.PASTE, ioformat);
+ DataSourceType.PASTE, ioformat);
assertNotNull("Couldn't parse reimported alignment data.", al_input);
- String identifyoutput = new IdentifyFile().identify(outputfile,
- AppletFormatAdapter.PASTE);
+ FileFormatI identifyoutput = new IdentifyFile().identify(outputfile,
+ DataSourceType.PASTE);
assertNotNull("Identify routine failed for outputformat " + ioformat,
identifyoutput);
assertTrue(
*/
package jalview.io;
+import jalview.gui.JvOptionPane;
import jalview.io.TCoffeeScoreFile.Block;
import jalview.io.TCoffeeScoreFile.Header;
import java.util.List;
import org.testng.AssertJUnit;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class TCoffeeScoreFileTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
final static File SCORE_FILE = new File(
"test/jalview/io/tcoffee.score_ascii");
{
TCoffeeScoreFile scoreFile = new TCoffeeScoreFile(SCORE_FILE.getPath(),
- AppletFormatAdapter.FILE);
+ DataSourceType.FILE);
AssertJUnit.assertTrue(scoreFile.getWarningMessage(),
scoreFile.isValid());
try
{
TCoffeeScoreFile result = new TCoffeeScoreFile(ALIGN_FILE.getPath(),
- FormatAdapter.FILE);
+ DataSourceType.FILE);
AssertJUnit.assertFalse(result.isValid());
} catch (IOException x)
{
public void testHeightAndWidth() throws IOException
{
TCoffeeScoreFile result = new TCoffeeScoreFile(SCORE_FILE.getPath(),
- FormatAdapter.FILE);
+ DataSourceType.FILE);
AssertJUnit.assertTrue(result.isValid());
AssertJUnit.assertEquals(8, result.getHeight());
AssertJUnit.assertEquals(83, result.getWidth());
+ "1QCF 99999999999999999999999999974-------2---------24\n"
+ "cons 999999999999999999999999999851000110321100001134\n"
+ "\n" + "\n";
- FileParse source = new FileParse(BLOCK, FormatAdapter.PASTE);
+ FileParse source = new FileParse(BLOCK, DataSourceType.PASTE);
Block block = TCoffeeScoreFile.readBlock(source, 0);
AssertJUnit.assertNotNull(block);
{
TCoffeeScoreFile parser = new TCoffeeScoreFile(SCORE_FILE.getPath(),
- FormatAdapter.FILE);
+ DataSourceType.FILE);
AssertJUnit
.assertEquals(
{
TCoffeeScoreFile parser = new TCoffeeScoreFile(SCORE_FILE.getPath(),
- FormatAdapter.FILE);
+ DataSourceType.FILE);
AssertJUnit.assertTrue(parser.getWarningMessage(), parser.isValid());
List<String> scores = parser.getScoresList();
AssertJUnit
{
TCoffeeScoreFile parser = new TCoffeeScoreFile(SCORE_FILE.getPath(),
- FormatAdapter.FILE);
+ DataSourceType.FILE);
AssertJUnit.assertTrue(parser.getWarningMessage(), parser.isValid());
byte[][] scores = parser.getScoresArray();
public void testHeightAndWidthWithResidueNumbers() throws Exception
{
String file = "test/jalview/io/tcoffee.score_ascii_with_residue_numbers";
- TCoffeeScoreFile result = new TCoffeeScoreFile(file, FormatAdapter.FILE);
+ TCoffeeScoreFile result = new TCoffeeScoreFile(file, DataSourceType.FILE);
AssertJUnit.assertTrue(result.isValid());
AssertJUnit.assertEquals(5, result.getHeight());
AssertJUnit.assertEquals(84, result.getWidth());
import jalview.datamodel.SequenceDummy;
import jalview.datamodel.SequenceI;
import jalview.gui.AlignFrame;
+import jalview.gui.JvOptionPane;
+import jalview.io.DataSourceType;
import jalview.io.FileLoader;
-import jalview.io.FormatAdapter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class ExonerateHelperTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = "Functional")
public void testGetMappingType()
{
{
FileLoader loader = new FileLoader(false);
AlignFrame af = loader.LoadFileWaitTillLoaded(
- "examples/testdata/exonerateseqs.fa", FormatAdapter.FILE);
-
+ "examples/testdata/exonerateseqs.fa",
+ DataSourceType.FILE);
+
af.loadJalviewDataFile("examples/testdata/exonerateoutput.gff",
- FormatAdapter.FILE, null, null);
-
+ DataSourceType.FILE, null, null);
+
/*
* verify one mapping to a dummy sequence, one to a real one
*/
- List<AlignedCodonFrame> mappings = af.getViewport().getAlignment()
- .getDataset().getCodonFrames();
+ List<AlignedCodonFrame> mappings = af
+ .getViewport().getAlignment().getDataset().getCodonFrames();
assertEquals(2, mappings.size());
Iterator<AlignedCodonFrame> iter = mappings.iterator();
-
+
// first mapping is to dummy sequence
AlignedCodonFrame mapping = iter.next();
Mapping[] mapList = mapping.getProtMappings();
// 143 in protein should map to codon [11270, 11269, 11268] in dna
int[] mappedRegion = mapList[0].getMap().locateInFrom(143, 143);
assertArrayEquals(new int[] { 11270, 11268 }, mappedRegion);
-
+
// second mapping is to a sequence in the alignment
mapping = iter.next();
mapList = mapping.getProtMappings();
.findName("DDB_G0280897");
assertSame(proteinSeq.getDatasetSequence(), mapList[0].getTo());
assertEquals(1, mapping.getdnaToProt().length);
-
+
// 143 in protein should map to codon [11270, 11269, 11268] in dna
mappedRegion = mapList[0].getMap().locateInFrom(143, 143);
assertArrayEquals(new int[] { 11270, 11268 }, mappedRegion);
-
+
// 182 in protein should map to codon [11153, 11152, 11151] in dna
mappedRegion = mapList[0].getMap().locateInFrom(182, 182);
assertArrayEquals(new int[] { 11153, 11151 }, mappedRegion);
-
+
// and the reverse mapping:
mappedRegion = mapList[0].getMap().locateInTo(11151, 11153);
assertArrayEquals(new int[] { 182, 182 }, mappedRegion);
-
+
// 11150 in dna should _not_ map to protein
mappedRegion = mapList[0].getMap().locateInTo(11150, 11150);
assertNull(mappedRegion);
-
+
// similarly 183 in protein should _not_ map to dna
mappedRegion = mapList[0].getMap().locateInFrom(183, 183);
assertNull(mappedRegion);
import jalview.datamodel.SequenceDummy;
import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceI;
+import jalview.gui.JvOptionPane;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class Gff3HelperTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
/**
* Test processing one PASA GFF line giving a match from forward strand to
* forward strand
import static org.testng.AssertJUnit.assertFalse;
import static org.testng.AssertJUnit.assertTrue;
+import jalview.gui.JvOptionPane;
+
import java.util.Arrays;
import java.util.List;
import java.util.Map;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class GffHelperBaseTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
/**
* Test the method that parses lines like <br>
* ID=2345;Name=Something,Another thing;Notes=Hello;Notes=World
import static org.testng.AssertJUnit.assertSame;
import static org.testng.AssertJUnit.assertTrue;
+import jalview.gui.JvOptionPane;
+
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class GffHelperFactoryTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = "Functional")
public void testGetHelper()
{
import jalview.datamodel.SequenceDummy;
import jalview.datamodel.SequenceI;
import jalview.gui.AlignFrame;
+import jalview.gui.JvOptionPane;
+import jalview.io.DataSourceType;
import jalview.io.FileLoader;
-import jalview.io.FormatAdapter;
import java.util.List;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
/**
*/
public class GffTests
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
/**
* Test the case where we load a protein ('query') sequence, then exonerateGff
* describing its mapping to cDNA, and then a DNA sequence including the
{
String proteinSeq = ">prot1/10-16\nYCWRSGA";
AlignFrame af = new FileLoader(false).LoadFileWaitTillLoaded(
- proteinSeq, FormatAdapter.PASTE);
+ proteinSeq, DataSourceType.PASTE);
/*
* exonerate GFF output mapping residues 11-15 (CWRSG)
*/
String exonerateGff = "##gff-version 2\n"
+ "prot1\tprotein2genome\tsimilarity\t11\t15\t99\t-\t.\talignment_id 0 ; Target dna1 ; Align 11 24 5";
- af.loadJalviewDataFile(exonerateGff, FormatAdapter.PASTE, null, null);
+ af.loadJalviewDataFile(exonerateGff, DataSourceType.PASTE, null, null);
/*
* check we have a mapping from prot1 to SequenceDummy 'dna1'
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceDummy;
import jalview.datamodel.SequenceI;
+import jalview.gui.JvOptionPane;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class InterProScanHelperTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
/**
* Test processing one InterProScan GFF line
*
import static org.testng.AssertJUnit.assertTrue;
+import jalview.gui.JvOptionPane;
+
import java.util.Map;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class DnaCodonTests
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = { "Functional" })
public void testAmbiguityCodeGeneration()
{
import static org.testng.AssertJUnit.fail;
import jalview.datamodel.SequenceFeature;
+import jalview.gui.JvOptionPane;
import jalview.util.Format;
import java.awt.Color;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class FeatureColourTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = { "Functional" })
public void testCopyConstructor()
{
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * 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 Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.schemes;
import static org.testng.AssertJUnit.assertEquals;
import jalview.datamodel.Profile;
import jalview.datamodel.ProfileI;
+import jalview.datamodel.Profiles;
+import jalview.gui.JvOptionPane;
import java.awt.Color;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class ResidueColourSchemeTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = "Functional")
public void testAboveThreshold()
{
* SR-T
* SR-T
*/
- ProfileI[] profiles = new ProfileI[4];
+ ProfileI[] profiles = new ProfileI[4];
profiles[0] = new Profile(4, 0, 2, "AS");
profiles[1] = new Profile(4, 0, 4, "R");
profiles[2] = new Profile(4, 4, 0, "");
profiles[3] = new Profile(4, 1, 2, "T");
ResidueColourScheme rcs = new ResidueColourScheme();
- rcs.setConsensus(profiles);
+ rcs.setConsensus(new Profiles(profiles));
/*
* no threshold
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertNull;
+import jalview.gui.JvOptionPane;
+
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class ResiduePropertiesTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
/**
* Test 'standard' codon translations (no ambiguity codes)
*/
package jalview.schemes;
import jalview.api.analysis.ScoreModelI;
+import jalview.gui.JvOptionPane;
import java.util.Map;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class ScoreMatrixPrinter
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = { "Functional" })
public void printAllMatrices()
{
import static org.testng.AssertJUnit.assertNull;
import static org.testng.AssertJUnit.assertSame;
+import jalview.gui.JvOptionPane;
+
import java.awt.Color;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class UserColourSchemeTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = "Functional")
public void testGetColourFromString()
{
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceI;
import jalview.gui.AlignFrame;
+import jalview.gui.JvOptionPane;
+import jalview.io.DataSourceType;
+import jalview.io.FileFormat;
import jalview.io.FileLoader;
-import jalview.io.FormatAdapter;
import jalview.io.StructureFile;
import org.testng.Assert;
import org.testng.AssertJUnit;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class Mapping
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
/*
* more test data
*
StructureSelectionManager ssm = new jalview.structure.StructureSelectionManager();
StructureFile pmap = ssm.setMapping(true, new SequenceI[] { uprot },
new String[] { "A" }, "test/jalview/ext/jmol/1QCF.pdb",
- jalview.io.FormatAdapter.FILE);
+ DataSourceType.FILE);
assertTrue(pmap != null);
SequenceI protseq = pmap.getSeqsAsArray()[0];
AlignmentAnnotation pstra = protseq
// Associate the 1GAQ pdb file with the subsequence 'imported' from another
// source
StructureFile pde = ssm.setMapping(true, new SequenceI[] { sq },
- new String[] { "A" }, inFile = "examples/1gaq.txt",
- jalview.io.FormatAdapter.FILE);
+ new String[]
+ { "A" }, inFile = "examples/1gaq.txt", DataSourceType.FILE);
assertTrue("PDB File couldn't be found", pde != null);
StructureMapping[] mp = ssm.getMapping(inFile);
assertTrue("No mappings made.", mp != null && mp.length > 0);
AlignFrame seqf = new FileLoader(false)
.LoadFileWaitTillLoaded(
">FER1_MAIZE/1-150 Ferredoxin-1, chloroplast precursor\nMATVLGSPRAPAFFFSSSSLRAAPAPTAVALPAAKVGIMGRSASSRRRLRAQATYNVKLITPEGEVELQVPD\nDVYILDQAEEDGIDLPYSCRAGSCSSCAGKVVSGSVDQSDQSYLDDGQIADGWVLTCHAYPTSDVVIETHKE\nEELTGA",
- FormatAdapter.PASTE, "FASTA");
+ DataSourceType.PASTE, FileFormat.Fasta);
SequenceI newseq = seqf.getViewport().getAlignment().getSequenceAt(0);
StructureSelectionManager ssm = new jalview.structure.StructureSelectionManager();
StructureFile pmap = ssm.setMapping(true, new SequenceI[] { newseq },
new String[] { null }, "examples/3W5V.pdb",
- jalview.io.FormatAdapter.FILE);
+ DataSourceType.FILE);
if (pmap == null)
{
AssertJUnit.fail("Couldn't make a mapping for 3W5V to FER1_MAIZE");
StructureImportSettings.setShowSeqFeatures(true);
AlignFrame ref = new FileLoader(false)
.LoadFileWaitTillLoaded("test/jalview/ext/jmol/1QCF.pdb",
- jalview.io.FormatAdapter.FILE);
+ DataSourceType.FILE);
SequenceI refseq = ref.getViewport().getAlignment().getSequenceAt(0);
SequenceI newseq = new Sequence(refseq.getName() + "Copy",
refseq.getSequenceAsString());
ssm.setAddTempFacAnnot(true);
StructureFile pmap = ssm.setMapping(true, new SequenceI[] { newseq },
new String[] { null }, "test/jalview/ext/jmol/1QCF.pdb",
- jalview.io.FormatAdapter.FILE);
+ DataSourceType.FILE);
assertTrue(pmap != null);
assertEquals("Original and copied sequence of different lengths.",
refseq.getLength(), newseq.getLength());
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceI;
-import jalview.io.FormatAdapter;
+import jalview.gui.JvOptionPane;
+import jalview.io.DataSourceType;
import jalview.io.StructureFile;
import jalview.util.MapList;
import java.util.ArrayList;
import java.util.List;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class StructureSelectionManagerTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
private StructureSelectionManager ssm;
@BeforeMethod(alwaysRun = true)
sm.setProcessSecondaryStructure(true);
sm.setAddTempFacAnnot(true);
StructureFile pmap = sm.setMapping(true, new SequenceI[] { seq },
- new String[] { null }, "examples/1gaq.txt", FormatAdapter.FILE);
+ new String[] { null }, "examples/1gaq.txt", DataSourceType.FILE);
assertTrue(pmap != null);
assertEquals(3, pmap.getSeqs().size());
import jalview.datamodel.PDBEntry.Type;
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceI;
-import jalview.io.AppletFormatAdapter;
+import jalview.gui.JvOptionPane;
+import jalview.io.DataSourceType;
import jalview.structure.AtomSpec;
import jalview.structure.StructureSelectionManager;
import jalview.structures.models.AAStructureBindingModel.SuperposeData;
import java.util.Arrays;
import java.util.List;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
*/
public class AAStructureBindingModelTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
/*
* Scenario: Jalview has 4 sequences, corresponding to 1YCS (chains A and B), 3A6S|B, 1OOT|A
*/
StructureSelectionManager ssm = new StructureSelectionManager();
ssm.setMapping(new SequenceI[] { seq1a, seq1b }, null, PDB_1,
- AppletFormatAdapter.PASTE);
+ DataSourceType.PASTE);
ssm.setMapping(new SequenceI[] { seq2 }, null, PDB_2,
- AppletFormatAdapter.PASTE);
+ DataSourceType.PASTE);
ssm.setMapping(new SequenceI[] { seq3 }, null, PDB_3,
- AppletFormatAdapter.PASTE);
+ DataSourceType.PASTE);
testee = new AAStructureBindingModel(ssm, pdbFiles, seqs, null)
{
import static org.testng.AssertJUnit.assertEquals;
+import jalview.gui.JvOptionPane;
+
import java.util.Arrays;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class ArrayUtilsTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = "Functional")
public void testReverseIntArray()
{
import static org.testng.Assert.assertNotEquals;
import static org.testng.Assert.assertTrue;
+import jalview.gui.JvOptionPane;
+
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class CaseInsensitiveStringTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = "Functional")
public void testEquals()
{
import static org.testng.AssertJUnit.assertNull;
import static org.testng.AssertJUnit.assertSame;
+import jalview.gui.JvOptionPane;
+
import java.awt.Color;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class ColorUtilsTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
Color paleColour = new Color(97, 203, 111); // pale green
Color midColour = new Color(135, 57, 41); // mid red
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceI;
+import jalview.gui.JvOptionPane;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class ComparisonTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = { "Functional" })
public void testIsGap()
{
import jalview.datamodel.PDBEntry;
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceI;
+import jalview.gui.JvOptionPane;
import java.util.List;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class DBRefUtilsTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
/**
* Test the method that selects DBRefEntry items whose source is in a supplied
* list
import static org.testng.AssertJUnit.assertNull;
import static org.testng.AssertJUnit.fail;
+import jalview.gui.JvOptionPane;
+
import java.text.ParseException;
import java.util.List;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class DnaUtilsTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
/**
* Tests for parsing an ENA/GenBank location specifier
*
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * 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 Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.util;
import static org.testng.Assert.assertEquals;
+import jalview.gui.JvOptionPane;
+
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class FormatTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = "Functional")
public void testAppendPercentage()
{
import static org.testng.AssertJUnit.assertTrue;
import static org.testng.internal.junit.ArrayAsserts.assertArrayEquals;
+import jalview.gui.JvOptionPane;
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class MapListTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = { "Functional" })
public void testSomething()
{
import jalview.datamodel.Alignment;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.ColumnSelection;
-import jalview.datamodel.SearchResults;
-import jalview.datamodel.SearchResults.Match;
+import jalview.datamodel.SearchResultMatchI;
+import jalview.datamodel.SearchResultsI;
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceGroup;
import jalview.datamodel.SequenceI;
import jalview.gui.AlignViewport;
-import jalview.io.AppletFormatAdapter;
+import jalview.gui.JvOptionPane;
+import jalview.io.DataSourceType;
+import jalview.io.FileFormat;
+import jalview.io.FileFormatI;
import jalview.io.FormatAdapter;
import java.awt.Color;
import java.util.Arrays;
import java.util.List;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class MappingUtilsTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
private AlignViewportI dnaView;
private AlignViewportI proteinView;
/*
* Check protein residue 12 maps to codon 5-7, 13 to codon 8-10
*/
- SearchResults sr = MappingUtils.buildSearchResults(aseq1, 12, acfList);
+ SearchResultsI sr = MappingUtils.buildSearchResults(aseq1, 12, acfList);
assertEquals(1, sr.getResults().size());
- Match m = sr.getResults().get(0);
+ SearchResultMatchI m = sr.getResults().get(0);
assertEquals(seq1.getDatasetSequence(), m.getSequence());
assertEquals(5, m.getStart());
assertEquals(7, m.getEnd());
/*
* Check protein residue 8 maps to [6, 8, 9]
*/
- SearchResults sr = MappingUtils.buildSearchResults(aseq1, 8, acfList);
+ SearchResultsI sr = MappingUtils.buildSearchResults(aseq1, 8, acfList);
assertEquals(2, sr.getResults().size());
- Match m = sr.getResults().get(0);
+ SearchResultMatchI m = sr.getResults().get(0);
assertEquals(seq1.getDatasetSequence(), m.getSequence());
assertEquals(6, m.getStart());
assertEquals(6, m.getEnd());
* viewport).
*/
AlignmentI cdna = loadAlignment(">Seq1\nACG\n>Seq2\nTGA\n>Seq3\nTAC\n",
- "FASTA");
+ FileFormat.Fasta);
cdna.setDataset(null);
AlignmentI protein = loadAlignment(">Seq1\nK\n>Seq2\nL\n>Seq3\nQ\n",
- "FASTA");
+ FileFormat.Fasta);
protein.setDataset(null);
AlignedCodonFrame acf = new AlignedCodonFrame();
MapList map = new MapList(new int[] { 1, 3 }, new int[] { 1, 1 }, 3, 1);
* @return
* @throws IOException
*/
- protected AlignmentI loadAlignment(final String data, String format)
+ protected AlignmentI loadAlignment(final String data, FileFormatI format)
throws IOException
{
AlignmentI a = new FormatAdapter().readFile(data,
- AppletFormatAdapter.PASTE, format);
+ DataSourceType.PASTE, format);
a.setDataset(null);
return a;
}
*/
AlignmentI cdna = loadAlignment(">Seq1/10-18\nAC-GctGtC-T\n"
+ ">Seq2/20-27\nTc-GA-G-T-Tc\n" + ">Seq3/30-38\nTtTT-AaCGg-\n",
- "FASTA");
+ FileFormat.Fasta);
cdna.setDataset(null);
AlignmentI protein = loadAlignment(
">Seq1/40-41\n-K-P\n>Seq2/50-51\nL--Q\n>Seq3/60-61\nG--S\n",
- "FASTA");
+ FileFormat.Fasta);
protein.setDataset(null);
// map first dna to first protein seq
* viewport).
*/
AlignmentI cdna = loadAlignment(
- ">Seq1\nACGGCA\n>Seq2\nTGACAG\n>Seq3\nTACGTA\n", "FASTA");
+ ">Seq1\nACGGCA\n>Seq2\nTGACAG\n>Seq3\nTACGTA\n",
+ FileFormat.Fasta);
cdna.setDataset(null);
AlignmentI protein = loadAlignment(">Seq1\nKA\n>Seq2\nLQ\n>Seq3\nQV\n",
- "FASTA");
+ FileFormat.Fasta);
protein.setDataset(null);
AlignedCodonFrame acf = new AlignedCodonFrame();
MapList map = new MapList(new int[] { 1, 6 }, new int[] { 1, 2 }, 3, 1);
*/
AlignmentI cdna = loadAlignment(
">Seq1\nA-CG-GC--AT-CA\n>Seq2\n-TG-AC-AG-T-AT\n>Seq3\n-T--ACG-TAAT-G\n",
- "FASTA");
+ FileFormat.Fasta);
cdna.setDataset(null);
AlignmentI protein = loadAlignment(
- ">Seq1\n-KA-S\n>Seq2\n--L-QY\n>Seq3\nQ-V-M\n", "FASTA");
+ ">Seq1\n-KA-S\n>Seq2\n--L-QY\n>Seq3\nQ-V-M\n", FileFormat.Fasta);
protein.setDataset(null);
AlignedCodonFrame acf = new AlignedCodonFrame();
MapList map = new MapList(new int[] { 1, 9 }, new int[] { 1, 3 }, 3, 1);
import static org.testng.AssertJUnit.assertEquals;
+import jalview.gui.JvOptionPane;
+
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class ParseHtmlBodyAndLinksTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = { "Functional" })
public void testParseHtml_noLinks()
{
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * 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 Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.util;
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertTrue;
+import jalview.gui.JvOptionPane;
+
import java.awt.Button;
import java.awt.Event;
import java.awt.event.MouseEvent;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class PlatformTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
Button b = new Button();
/**
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertTrue;
+import jalview.gui.JvOptionPane;
+
import java.util.Arrays;
import java.util.Random;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class QuickSortTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
private static final String c1 = "Blue";
private static final String c2 = "Yellow";
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertNull;
+import jalview.gui.JvOptionPane;
+
import java.util.Arrays;
import java.util.List;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class ShiftListTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = { "Functional" })
public void testParseMap()
{
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * 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 Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.util;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertTrue;
+import jalview.gui.JvOptionPane;
+
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class SparseCountTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = "Functional")
public void testAdd()
{
import static org.testng.AssertJUnit.assertNull;
import static org.testng.AssertJUnit.assertTrue;
+import jalview.gui.JvOptionPane;
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class StringUtilsTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = { "Functional" })
public void testInsertCharAt()
{
import jalview.datamodel.DBRefEntry;
import jalview.datamodel.DBRefSource;
import jalview.datamodel.Sequence;
+import jalview.gui.JvOptionPane;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class UrlLinkTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
final static String DB = "Test";
final static String URL_PREFIX = "http://www.jalview.org/";
import static org.testng.AssertJUnit.assertFalse;
import static org.testng.AssertJUnit.assertTrue;
+import jalview.gui.JvOptionPane;
+
import java.awt.Color;
import java.lang.reflect.Field;
import java.util.Random;
import org.testng.AssertJUnit;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class ViewStyleTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
Random r = new Random();
/**
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceI;
import jalview.gui.AlignFrame;
+import jalview.gui.JvOptionPane;
import java.util.Collections;
import java.util.List;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class AlignCalcManagerTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
private AlignFrame alignFrame;
/**
import jalview.bin.Cache;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.SequenceI;
+import jalview.gui.JvOptionPane;
import jalview.structure.StructureImportSettings;
import jalview.structure.StructureImportSettings.StructureParser;
import jalview.ws.seqfetcher.DbSourceProxy;
import java.util.List;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class PDBSequenceFetcherTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
SequenceFetcher sf;
@BeforeMethod(alwaysRun = true)
import jalview.datamodel.AlignmentI;
import jalview.datamodel.DBRefSource;
import jalview.datamodel.SequenceI;
+import jalview.gui.JvOptionPane;
import jalview.ws.seqfetcher.ASequenceFetcher;
import jalview.ws.seqfetcher.DbSourceProxy;
import java.util.List;
import java.util.Vector;
+import org.testng.annotations.BeforeClass;
+
public class SequenceFetcherTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
/**
* simple run method to test dbsources.
*
import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceI;
import jalview.datamodel.UniprotEntry;
+import jalview.gui.JvOptionPane;
import java.io.Reader;
import java.io.StringReader;
import java.util.Vector;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class UniprotTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
// adapted from http://www.uniprot.org/uniprot/A9CKP4.xml
private static final String UNIPROT_XML = "<?xml version='1.0' encoding='UTF-8'?>"
+ "<uniprot>"
package jalview.ws.dbsources;
import jalview.datamodel.AlignmentI;
+import jalview.gui.JvOptionPane;
import org.testng.Assert;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class XfamFetcherTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = { "External" })
public void testRfamSeed() throws Exception
{
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertNull;
+import jalview.gui.JvOptionPane;
+
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class EBIFetchClientTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
/**
* Test method that constructs URL to fetch from
*/
package jalview.ws.gui;
import jalview.bin.Cache;
+import jalview.gui.JvOptionPane;
import jalview.gui.WsJobParameters;
import jalview.util.MessageManager;
import jalview.ws.jabaws.JalviewJabawsTestUtils;
public class Jws2ParamView
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
/**
* which services to test
*/
import jalview.bin.Cache;
import jalview.datamodel.AlignmentAnnotation;
import jalview.datamodel.AlignmentI;
+import jalview.gui.JvOptionPane;
import jalview.io.AnnotationFile;
+import jalview.io.DataSourceType;
+import jalview.io.FileFormat;
import jalview.io.FormatAdapter;
import jalview.io.StockholmFileTest;
import jalview.ws.jws2.AADisorderClient;
@Test(groups = { "External" })
public class DisorderAnnotExportImport
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
public static String testseqs = "examples/uniref50.fa";
public static Jws2Discoverer disc;
assertTrue("Couldn't discover any IUPred services to use to test.",
iupreds.size() > 0);
jalview.io.FileLoader fl = new jalview.io.FileLoader(false);
- af = fl.LoadFileWaitTillLoaded(testseqs, jalview.io.FormatAdapter.FILE);
+ af = fl.LoadFileWaitTillLoaded(testseqs, jalview.io.DataSourceType.FILE);
assertNotNull("Couldn't load test data ('" + testseqs + "')", af);
}
{
try
{
- String aligfileout = new FormatAdapter().formatSequences("PFAM",
- al.getSequencesArray());
+ String aligfileout = FileFormat.Pfam.getAlignmentFile().print(
+ al.getSequencesArray(), true);
String anfileout = new AnnotationFile()
.printAnnotationsForAlignment(al);
assertTrue(
+ "\n<<EOF\n");
AlignmentI al_new = new FormatAdapter().readFile(aligfileout,
- FormatAdapter.PASTE, "PFAM");
+ DataSourceType.PASTE, FileFormat.Pfam);
assertTrue(
"Test "
+ testname
+ "\nregenerated annotation file did not annotate alignment.",
new AnnotationFile().readAnnotationFile(al_new, anfileout,
- FormatAdapter.PASTE));
+ DataSourceType.PASTE));
// test for consistency in io
StockholmFileTest.testAlignmentEquivalence(al, al_new, true);
*/
package jalview.ws.jabaws;
+import jalview.gui.JvOptionPane;
import jalview.ws.jws2.Jws2Discoverer;
import java.util.Vector;
{
@BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
+ @BeforeClass(alwaysRun = true)
public static void setUpBeforeClass() throws Exception
{
}
import jalview.bin.Cache;
import jalview.datamodel.AlignmentI;
import jalview.gui.Jalview2XML;
+import jalview.gui.JvOptionPane;
import jalview.io.AnnotationFile;
+import jalview.io.DataSourceType;
+import jalview.io.FileFormat;
import jalview.io.FormatAdapter;
import jalview.io.StockholmFileTest;
import jalview.ws.jws2.JPred301Client;
public class JpredJabaStructExportImport
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
public static String testseqs = "examples/uniref50.fa";
public static Jws2Discoverer disc;
System.out.println("State of jpredws: " + jpredws);
Assert.assertNotNull(jpredws, "jpredws is null!");
jalview.io.FileLoader fl = new jalview.io.FileLoader(false);
- af = fl.LoadFileWaitTillLoaded(testseqs, jalview.io.FormatAdapter.FILE);
+ af = fl.LoadFileWaitTillLoaded(testseqs, jalview.io.DataSourceType.FILE);
assertNotNull("Couldn't load test data ('" + testseqs + "')", af);
}
try
{
// what format would be appropriate for RNAalifold annotations?
- String aligfileout = new FormatAdapter().formatSequences("PFAM",
- al.getSequencesArray());
+ String aligfileout = FileFormat.Pfam.getAlignmentFile().print(
+ al.getSequencesArray(), true);
String anfileout = new AnnotationFile()
.printAnnotationsForAlignment(al);
// again what format would be appropriate?
AlignmentI al_new = new FormatAdapter().readFile(aligfileout,
- FormatAdapter.PASTE, "PFAM");
+ DataSourceType.PASTE, FileFormat.Fasta);
assertTrue(
"Test "
+ testname
+ "\nregenerated annotation file did not annotate alignment.",
new AnnotationFile().readAnnotationFile(al_new, anfileout,
- FormatAdapter.PASTE));
+ DataSourceType.PASTE));
// test for consistency in io
StockholmFileTest.testAlignmentEquivalence(al, al_new, false);
import static org.testng.AssertJUnit.assertEquals;
+import jalview.gui.JvOptionPane;
+
import java.util.ArrayList;
import java.util.List;
import org.testng.Assert;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import compbio.data.msa.MsaWS;
public class MinJabawsClientTests
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
/**
* simple test for the benefit of JAL-1338
*
import jalview.datamodel.AlignmentAnnotation;
import jalview.datamodel.AlignmentI;
import jalview.gui.Jalview2XML;
+import jalview.gui.JvOptionPane;
import jalview.io.AnnotationFile;
-import jalview.io.FileLoader;
+import jalview.io.DataSourceType;
+import jalview.io.FileFormat;
import jalview.io.FormatAdapter;
import jalview.io.StockholmFileTest;
import jalview.ws.jws2.Jws2Discoverer;
public class RNAStructExportImport
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
private static final String JAR_FILE_NAME = "testRnalifold_param.jar";
public static String testseqs = "examples/RF00031_folded.stk";
Assert.fail("no web service");
}
- FileLoader fl = new FileLoader(false);
+ jalview.io.FileLoader fl = new jalview.io.FileLoader(false);
- af = fl.LoadFileWaitTillLoaded(testseqs, FormatAdapter.FILE);
+ af = fl.LoadFileWaitTillLoaded(testseqs, jalview.io.DataSourceType.FILE);
assertNotNull("Couldn't load test data ('" + testseqs + "')", af);
try
{
// what format would be appropriate for RNAalifold annotations?
- String aligfileout = new FormatAdapter().formatSequences("PFAM",
- al.getSequencesArray());
+ String aligfileout = FileFormat.Pfam.getAlignmentFile().print(
+ al.getSequencesArray(), true);
String anfileout = new AnnotationFile()
.printAnnotationsForAlignment(al);
// again what format would be appropriate?
AlignmentI al_new = new FormatAdapter().readFile(aligfileout,
- FormatAdapter.PASTE, "PFAM");
+ DataSourceType.PASTE, FileFormat.Pfam);
assertTrue(
"Test "
+ testname
+ "\nregenerated annotation file did not annotate alignment.",
new AnnotationFile().readAnnotationFile(al_new, anfileout,
- FormatAdapter.PASTE));
+ DataSourceType.PASTE));
// test for consistency in io
StockholmFileTest.testAlignmentEquivalence(al, al_new, false);
import static org.testng.AssertJUnit.assertTrue;
import jalview.bin.Cache;
+import jalview.gui.JvOptionPane;
import jalview.ws.jabaws.JalviewJabawsTestUtils;
import jalview.ws.jws2.jabaws2.Jws2Instance;
public class ParameterUtilsTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
/*
* To limit tests to specify services, add them to this list; leave list empty
* to test all
import static org.testng.AssertJUnit.assertEquals;
import jalview.bin.Cache;
+import jalview.gui.JvOptionPane;
import java.util.Vector;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class RestClientTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
/**
* Refactored 'as is' from main method
*/
import static org.testng.AssertJUnit.assertTrue;
import jalview.gui.AlignFrame;
+import jalview.gui.JvOptionPane;
import java.util.Map;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
/**
public class ShmmrRSBSService
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = { "Functional" })
public void testShmmrService()
{
assertNotNull(_rc);
AlignFrame alf = new jalview.io.FileLoader(false)
.LoadFileWaitTillLoaded("examples/testdata/smad.fa",
- jalview.io.FormatAdapter.FILE);
+ jalview.io.DataSourceType.FILE);
assertNotNull("Couldn't find test data.", alf);
alf.loadJalviewDataFile("examples/testdata/smad_groups.jva",
- jalview.io.FormatAdapter.FILE, null, null);
+ jalview.io.DataSourceType.FILE, null, null);
assertTrue(
"Couldn't load the test data's annotation file (should be 5 groups but found "
+ alf.getViewport().getAlignment().getGroups().size()
*/
package jalview.ws.seqfetcher;
+import jalview.gui.JvOptionPane;
+
import org.testng.AssertJUnit;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class DasSequenceFetcher
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
@Test(groups = { "Functional" })
public void testDasRegistryContact()
{
import jalview.datamodel.FeatureProperties;
import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceI;
+import jalview.gui.JvOptionPane;
import jalview.util.DBRefUtils;
import jalview.ws.SequenceFetcher;
import jalview.ws.dbsources.Pdb;
public class DbRefFetcherTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
/**
* @throws java.lang.Exception
*/
import jalview.datamodel.DBRefSource;
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceI;
-import jalview.io.AppletFormatAdapter;
+import jalview.gui.JvOptionPane;
+import jalview.io.DataSourceType;
import jalview.structure.StructureMapping;
import jalview.xml.binding.sifts.Entry.Entity;
import org.testng.Assert;
import org.testng.FileAssert;
import org.testng.annotations.AfterTest;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
public class SiftsClientTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
public static final String DEFAULT_SIFTS_DOWNLOAD_DIR = System
.getProperty("user.home")
+ File.separatorChar
try
{
pdbFile = new PDBfile(false, false, false, "test/jalview/io/"
- + testPDBId + ".pdb", AppletFormatAdapter.FILE);
+ + testPDBId + ".pdb", DataSourceType.FILE);
siftsClient = new SiftsClient(pdbFile);
} catch (Exception e)
{
testSeq, testPDBId, "A");
String expectedMappingOutput = "\nSequence ⟷ Structure mapping details\n"
+ "Method: SIFTS\n\n"
- + "P00221 : 1 - 97 Maps to \n"
- + "1A70|A : 51 - 147\n\n"
+ + "P00221 : 51 - 147 Maps to \n"
+ + "1A70|A : 1 - 97\n\n"
+ "P00221 AAYKVTLVTPTGNVEFQCPDDVYILDAAEEEGIDLPYSCRAGSCSSCAGKLKTGSLNQDDQSFLD\n"
+ " |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n"
+ "1A70|A AAYKVTLVTPTGNVEFQCPDDVYILDAAEEEGIDLPYSCRAGSCSSCAGKLKTGSLNQDDQSFLD\n\n"
try
{
pdbFile = new PDBfile(false, false, false, "test/jalview/io/2nq2"
- + ".pdb", AppletFormatAdapter.FILE);
+ + ".pdb", DataSourceType.FILE);
siftsClientX = new SiftsClient(pdbFile);
} catch (Exception e)
{
try
{
pdbFile = new PDBfile(false, false, false,
- "test/jalview/io/3ucu.cif", AppletFormatAdapter.FILE);
+ "test/jalview/io/3ucu.cif", DataSourceType.FILE);
siftsClientX = new SiftsClient(pdbFile);
} catch (Exception e)
{
<string><![CDATA[664]]></string>
</property>
<property name="sourceName">
- <string><![CDATA[Jmol-14.2.14_2015.06.11.jar]]></string>
+ <string><![CDATA[Jmol-14.6.4_2016.10.26.jar]]></string>
</property>
<property name="overrideUnixPermissions">
<boolean>false</boolean>
<boolean>true</boolean>
</property>
<property name="destinationName">
- <string><![CDATA[Jmol-14.2.14_2015.06.11.jar]]></string>
+ <string><![CDATA[Jmol-14.6.4_2016.10.26.jar]]></string>
</property>
<property name="fileSize">
<long>5417196</long>
<boolean>true</boolean>
</property>
<property name="bundledVM">
- <string><![CDATA[OracleJRE8u5_Macosx.vm]]></string>
+ <string><![CDATA[OracleJRE180u92_macosx.vm]]></string>
</property>
<property name="withoutVmSearchOption">
<short>10</short>
<boolean>true</boolean>
</property>
<property name="bundledVM">
- <string><![CDATA[SunJRE170_03Win32.vm]]></string>
+ <string><![CDATA[OracleJRE8u92_windows(x86).vm]]></string>
</property>
<property name="withoutVmSearchOption">
<short>10</short>
<boolean>true</boolean>
</property>
<property name="buildWithVM">
- <boolean>true</boolean>
+ <boolean>false</boolean>
</property>
<property name="bundledVM">
- <string><![CDATA[JRE16_16002HPUX11PA-RISC.vm]]></string>
+ <string><![CDATA[JRE16_16010HPUXPA-RISC.vm]]></string>
</property>
<property name="withoutVmSearchOption">
<short>10</short>
<boolean>true</boolean>
</property>
<property name="bundledVM">
- <string><![CDATA[ORACLEJRE7u60_linux32.vm]]></string>
+ <string><![CDATA[OracleJRE180u92_Linux32.vm]]></string>
</property>
<property name="withoutVmSearchOption">
<short>10</short>
<boolean>true</boolean>
</property>
<property name="bundledVM">
- <string><![CDATA[ORACLEJRE7u60_linux32.vm]]></string>
+ <string><![CDATA[OracleJRE180u92_Linux32.vm]]></string>
</property>
<property name="withoutVmSearchOption">
<short>10</short>
<boolean>true</boolean>
</property>
<property name="bundledVM">
- <string><![CDATA[OracleJRE8u5_windows(x64).vm]]></string>
+ <string><![CDATA[OracleJRE180u92_windows(x64).vm]]></string>
</property>
<property name="withoutVmSearchOption">
<short>10</short>
</method>
<method name="put">
<string><![CDATA[com.zerog.ia.installer.options.valid.vm.list]]></string>
- <string><![CDATA[1.7+]]></string>
+ <string><![CDATA[1.8+]]></string>
</method>
<method name="put">
<string><![CDATA[com.zerog.ia.project.build.last.date]]></string>
</method>
<method name="put">
<string><![CDATA[com.zerog.ia.installer.options.platform.macosx.vm.version]]></string>
- <string><![CDATA[1.7+]]></string>
+ <string><![CDATA[1.8+]]></string>
</method>
<method name="put">
<string><![CDATA[com.zerog.ia.build.platform.java.novm]]></string>