Merge branch 'master' of https://source.jalview.org/git/jalviewjs.git
[jalviewjs.git] / site / j2s / jalview / controller / AlignViewController.js
index 966223d..c773729 100644 (file)
-Clazz.declarePackage ("jalview.controller");\r
-Clazz.load (["jalview.api.AlignViewControllerI"], "jalview.controller.AlignViewController", ["jalview.analysis.AlignmentSorter", "$.Grouping", "jalview.commands.OrderCommand", "jalview.datamodel.ColumnSelection", "jalview.io.FeaturesFile", "jalview.util.MessageManager", "java.awt.Color", "java.util.ArrayList", "$.BitSet"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.viewport = null;\r
-this.alignPanel = null;\r
-this.avcg = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.controller, "AlignViewController", null, jalview.api.AlignViewControllerI);\r
-Clazz.overrideMethod (c$, "finalize", \r
-function () {\r
-this.viewport = null;\r
-this.alignPanel = null;\r
-this.avcg = null;\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (alignFrame, viewport, alignPanel) {\r
-this.avcg = alignFrame;\r
-this.viewport = viewport;\r
-this.alignPanel = alignPanel;\r
-}, "jalview.api.AlignViewControllerGuiI,jalview.api.AlignViewportI,jalview.api.AlignmentViewPanel");\r
-Clazz.overrideMethod (c$, "setViewportAndAlignmentPanel", \r
-function (viewport, alignPanel) {\r
-this.alignPanel = alignPanel;\r
-this.viewport = viewport;\r
-}, "jalview.api.AlignViewportI,jalview.api.AlignmentViewPanel");\r
-Clazz.overrideMethod (c$, "makeGroupsFromSelection", \r
-function () {\r
-var sg = this.viewport.getSelectionGroup ();\r
-var cs = this.viewport.getColumnSelection ();\r
-var gps = null;\r
-if (sg != null && (cs == null || cs.getSelected () == null || cs.size () == 0)) {\r
-gps = jalview.analysis.Grouping.makeGroupsFrom (this.viewport.getSequenceSelection (), this.viewport.getAlignmentView (true).getSequenceStrings (this.viewport.getGapCharacter ()), this.viewport.getAlignment ().getGroups ());\r
-} else {\r
-if (cs != null) {\r
-gps = jalview.analysis.Grouping.makeGroupsFromCols ((sg == null) ? this.viewport.getAlignment ().getSequencesArray () : sg.getSequences ().toArray ( new Array (0)), cs, this.viewport.getAlignment ().getGroups ());\r
-}}if (gps != null) {\r
-this.viewport.getAlignment ().deleteAllGroups ();\r
-this.viewport.clearSequenceColours ();\r
-this.viewport.setSelectionGroup (null);\r
-for (var g = 0; g < gps.length; g++) {\r
-gps[g].setshowSequenceLogo (this.viewport.isShowSequenceLogo ());\r
-this.viewport.getAlignment ().addGroup (gps[g]);\r
-var col =  new java.awt.Color (Clazz.doubleToInt (Math.random () * 255), Clazz.doubleToInt (Math.random () * 255), Clazz.doubleToInt (Math.random () * 255));\r
-col = col.brighter ();\r
-for (var sq, $sq = gps[g].getSequences (null).iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {\r
-this.viewport.setSequenceColour (sq, col);\r
-}\r
-}\r
-return true;\r
-}return false;\r
-});\r
-Clazz.overrideMethod (c$, "createGroup", \r
-function () {\r
-var sg = this.viewport.getSelectionGroup ();\r
-if (sg != null) {\r
-this.viewport.getAlignment ().addGroup (sg);\r
-return true;\r
-}return false;\r
-});\r
-Clazz.overrideMethod (c$, "unGroup", \r
-function () {\r
-var sg = this.viewport.getSelectionGroup ();\r
-if (sg != null) {\r
-this.viewport.getAlignment ().deleteGroup (sg);\r
-return true;\r
-}return false;\r
-});\r
-Clazz.overrideMethod (c$, "deleteGroups", \r
-function () {\r
-if (this.viewport.getAlignment ().getGroups () != null && this.viewport.getAlignment ().getGroups ().size () > 0) {\r
-this.viewport.getAlignment ().deleteAllGroups ();\r
-this.viewport.clearSequenceColours ();\r
-this.viewport.setSelectionGroup (null);\r
-return true;\r
-}return false;\r
-});\r
-Clazz.overrideMethod (c$, "markColumnsContainingFeatures", \r
-function (invert, extendCurrent, toggle, featureType) {\r
-var bs =  new java.util.BitSet ();\r
-var alw;\r
-var alStart;\r
-var sqcol = (this.viewport.getSelectionGroup () == null ? this.viewport.getAlignment () : this.viewport.getSelectionGroup ());\r
-alStart = sqcol.getStartRes ();\r
-alw = sqcol.getEndRes () + 1;\r
-var seqs = sqcol.getSequences ();\r
-var nseq = 0;\r
-for (var sq, $sq = seqs.iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {\r
-var tfeat = 0;\r
-if (sq != null) {\r
-var sf = sq.getSequenceFeatures ();\r
-if (sf != null) {\r
-var ist = sq.findIndex (sq.getStart ());\r
-var iend = sq.findIndex (sq.getEnd ());\r
-if (iend < alStart || ist > alw) {\r
-continue;\r
-}for (var sfpos, $sfpos = 0, $$sfpos = sf; $sfpos < $$sfpos.length && ((sfpos = $$sfpos[$sfpos]) || true); $sfpos++) {\r
-if (sfpos != null && (featureType.equals (sfpos.getType ()))) {\r
-tfeat++;\r
-var i = sq.findIndex (sfpos.getBegin ());\r
-var j = sq.findIndex (sfpos.getEnd ());\r
-if (j < alStart || i > alw) {\r
-continue;\r
-}if (i < alStart) {\r
-i = alStart;\r
-}if (i < ist) {\r
-i = ist;\r
-}if (j > alw) {\r
-j = alw;\r
-}for (; i <= j; i++) {\r
-bs.set (i - 1);\r
-}\r
-}}\r
-}if (tfeat > 0) {\r
-nseq++;\r
-}}}\r
-var cs = this.viewport.getColumnSelection ();\r
-if (bs.cardinality () > 0 || invert) {\r
-if (cs == null) {\r
-cs =  new jalview.datamodel.ColumnSelection ();\r
-} else {\r
-if (!extendCurrent) {\r
-cs.clear ();\r
-}}if (invert) {\r
-for (var i = bs.nextClearBit (alStart), ibs = bs.nextSetBit (alStart); i >= alStart && i < (alw); ) {\r
-if (ibs < 0 || i < ibs) {\r
-if (toggle && cs.contains (i)) {\r
-cs.removeElement (i++);\r
-} else {\r
-cs.addElement (i++);\r
-}} else {\r
-i = bs.nextClearBit (ibs);\r
-ibs = bs.nextSetBit (i);\r
-}}\r
-} else {\r
-for (var i = bs.nextSetBit (alStart); i >= alStart; i = bs.nextSetBit (i + 1)) {\r
-if (toggle && cs.contains (i)) {\r
-cs.removeElement (i);\r
-} else {\r
-cs.addElement (i);\r
-}}\r
-}this.viewport.setColumnSelection (cs);\r
-this.alignPanel.paintAlignment (true);\r
-this.avcg.setStatus (jalview.util.MessageManager.formatMessage ("label.view_controller_toggled_marked",  Clazz.newArray (-1, [(toggle ? jalview.util.MessageManager.getString ("label.toggled") : jalview.util.MessageManager.getString ("label.marked")), (invert ? (Integer.$valueOf ((alw - alStart) - bs.cardinality ()).toString ()) : (Integer.$valueOf (bs.cardinality ()).toString ())), featureType, Integer.$valueOf (nseq).toString ()])));\r
-return true;\r
-} else {\r
-this.avcg.setStatus (jalview.util.MessageManager.formatMessage ("label.no_feature_of_type_found",  Clazz.newArray (-1, [featureType])));\r
-if (!extendCurrent && cs != null) {\r
-cs.clear ();\r
-this.alignPanel.paintAlignment (true);\r
-}return false;\r
-}}, "~B,~B,~B,~S");\r
-Clazz.overrideMethod (c$, "sortAlignmentByFeatureDensity", \r
-function (typ) {\r
-this.sortBy (typ, "Sort by Density", jalview.analysis.AlignmentSorter.FEATURE_DENSITY);\r
-}, "~A");\r
-Clazz.defineMethod (c$, "sortBy", \r
-function (typ, methodText, method) {\r
-var fr = this.alignPanel.getFeatureRenderer ();\r
-if (typ == null) {\r
-typ = fr == null ? null : fr.getDisplayedFeatureTypes ();\r
-}var gps = null;\r
-gps = fr == null ? null : fr.getDisplayedFeatureGroups ();\r
-if (typ != null) {\r
-var types =  new java.util.ArrayList ();\r
-for (var i = 0; i < typ.length; i++) {\r
-if (typ[i] != null) {\r
-types.add (typ[i]);\r
-}typ =  new Array (types.size ());\r
-types.toArray (typ);\r
-}\r
-}if (gps != null) {\r
-var grps =  new java.util.ArrayList ();\r
-for (var i = 0; i < gps.length; i++) {\r
-if (gps[i] != null) {\r
-grps.add (gps[i]);\r
-}}\r
-gps =  new Array (grps.size ());\r
-grps.toArray (gps);\r
-}var al = this.viewport.getAlignment ();\r
-var start;\r
-var stop;\r
-var sg = this.viewport.getSelectionGroup ();\r
-if (sg != null) {\r
-start = sg.getStartRes ();\r
-stop = sg.getEndRes ();\r
-} else {\r
-start = 0;\r
-stop = al.getWidth ();\r
-}var oldOrder = al.getSequencesArray ();\r
-jalview.analysis.AlignmentSorter.sortByFeature (typ, gps, start, stop, al, method);\r
-this.avcg.addHistoryItem ( new jalview.commands.OrderCommand (methodText, oldOrder, this.viewport.getAlignment ()));\r
-this.alignPanel.paintAlignment (true);\r
-}, "~A,~S,~S");\r
-Clazz.overrideMethod (c$, "sortAlignmentByFeatureScore", \r
-function (typ) {\r
-this.sortBy (typ, "Sort by Feature Score", jalview.analysis.AlignmentSorter.FEATURE_SCORE);\r
-}, "~A");\r
-Clazz.overrideMethod (c$, "parseFeaturesFile", \r
-function (file, protocol, relaxedIdMatching) {\r
-var featuresFile = false;\r
-try {\r
-featuresFile =  new jalview.io.FeaturesFile (file, protocol).parse (this.viewport.getAlignment ().getDataset (), this.alignPanel.getFeatureRenderer ().getFeatureColours (), false, relaxedIdMatching);\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-ex.printStackTrace ();\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-if (featuresFile) {\r
-this.avcg.refreshFeatureUI (true);\r
-if (this.alignPanel.getFeatureRenderer () != null) {\r
-this.alignPanel.getFeatureRenderer ().findAllFeatures (true);\r
-}if (this.avcg.getFeatureSettingsUI () != null) {\r
-this.avcg.getFeatureSettingsUI ().discoverAllFeatureData ();\r
-}this.alignPanel.paintAlignment (true);\r
-}return featuresFile;\r
-}, "~S,~S,~B");\r
-});\r
+Clazz.declarePackage ("jalview.controller");
+Clazz.load (["jalview.api.AlignViewControllerI"], "jalview.controller.AlignViewController", ["jalview.analysis.AlignmentSorter", "$.Grouping", "jalview.commands.OrderCommand", "jalview.datamodel.ColumnSelection", "jalview.io.FeaturesFile", "jalview.util.MessageManager", "java.awt.Color", "java.util.ArrayList", "$.BitSet"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.viewport = null;
+this.alignPanel = null;
+this.avcg = null;
+Clazz.instantialize (this, arguments);
+}, jalview.controller, "AlignViewController", null, jalview.api.AlignViewControllerI);
+Clazz.overrideMethod (c$, "finalize", 
+function () {
+this.viewport = null;
+this.alignPanel = null;
+this.avcg = null;
+});
+Clazz.makeConstructor (c$, 
+function (alignFrame, viewport, alignPanel) {
+this.avcg = alignFrame;
+this.viewport = viewport;
+this.alignPanel = alignPanel;
+}, "jalview.api.AlignViewControllerGuiI,jalview.api.AlignViewportI,jalview.api.AlignmentViewPanel");
+Clazz.overrideMethod (c$, "setViewportAndAlignmentPanel", 
+function (viewport, alignPanel) {
+this.alignPanel = alignPanel;
+this.viewport = viewport;
+}, "jalview.api.AlignViewportI,jalview.api.AlignmentViewPanel");
+Clazz.overrideMethod (c$, "makeGroupsFromSelection", 
+function () {
+var sg = this.viewport.getSelectionGroup ();
+var cs = this.viewport.getColumnSelection ();
+var gps = null;
+if (sg != null && (cs == null || cs.getSelected () == null || cs.size () == 0)) {
+gps = jalview.analysis.Grouping.makeGroupsFrom (this.viewport.getSequenceSelection (), this.viewport.getAlignmentView (true).getSequenceStrings (this.viewport.getGapCharacter ()), this.viewport.getAlignment ().getGroups ());
+} else {
+if (cs != null) {
+gps = jalview.analysis.Grouping.makeGroupsFromCols ((sg == null) ? this.viewport.getAlignment ().getSequencesArray () : sg.getSequences ().toArray ( new Array (0)), cs, this.viewport.getAlignment ().getGroups ());
+}}if (gps != null) {
+this.viewport.getAlignment ().deleteAllGroups ();
+this.viewport.clearSequenceColours ();
+this.viewport.setSelectionGroup (null);
+for (var g = 0; g < gps.length; g++) {
+gps[g].setshowSequenceLogo (this.viewport.isShowSequenceLogo ());
+this.viewport.getAlignment ().addGroup (gps[g]);
+var col =  new java.awt.Color (Clazz.doubleToInt (Math.random () * 255), Clazz.doubleToInt (Math.random () * 255), Clazz.doubleToInt (Math.random () * 255));
+col = col.brighter ();
+for (var sq, $sq = gps[g].getSequences (null).iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {
+this.viewport.setSequenceColour (sq, col);
+}
+}
+return true;
+}return false;
+});
+Clazz.overrideMethod (c$, "createGroup", 
+function () {
+var sg = this.viewport.getSelectionGroup ();
+if (sg != null) {
+this.viewport.getAlignment ().addGroup (sg);
+return true;
+}return false;
+});
+Clazz.overrideMethod (c$, "unGroup", 
+function () {
+var sg = this.viewport.getSelectionGroup ();
+if (sg != null) {
+this.viewport.getAlignment ().deleteGroup (sg);
+return true;
+}return false;
+});
+Clazz.overrideMethod (c$, "deleteGroups", 
+function () {
+if (this.viewport.getAlignment ().getGroups () != null && this.viewport.getAlignment ().getGroups ().size () > 0) {
+this.viewport.getAlignment ().deleteAllGroups ();
+this.viewport.clearSequenceColours ();
+this.viewport.setSelectionGroup (null);
+return true;
+}return false;
+});
+Clazz.overrideMethod (c$, "markColumnsContainingFeatures", 
+function (invert, extendCurrent, toggle, featureType) {
+var bs =  new java.util.BitSet ();
+var alw;
+var alStart;
+var sqcol = (this.viewport.getSelectionGroup () == null ? this.viewport.getAlignment () : this.viewport.getSelectionGroup ());
+alStart = sqcol.getStartRes ();
+alw = sqcol.getEndRes () + 1;
+var seqs = sqcol.getSequences ();
+var nseq = 0;
+for (var sq, $sq = seqs.iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {
+var tfeat = 0;
+if (sq != null) {
+var sf = sq.getSequenceFeatures ();
+if (sf != null) {
+var ist = sq.findIndex (sq.getStart ());
+var iend = sq.findIndex (sq.getEnd ());
+if (iend < alStart || ist > alw) {
+continue;
+}for (var sfpos, $sfpos = 0, $$sfpos = sf; $sfpos < $$sfpos.length && ((sfpos = $$sfpos[$sfpos]) || true); $sfpos++) {
+if (sfpos != null && (featureType.equals (sfpos.getType ()))) {
+tfeat++;
+var i = sq.findIndex (sfpos.getBegin ());
+var j = sq.findIndex (sfpos.getEnd ());
+if (j < alStart || i > alw) {
+continue;
+}if (i < alStart) {
+i = alStart;
+}if (i < ist) {
+i = ist;
+}if (j > alw) {
+j = alw;
+}for (; i <= j; i++) {
+bs.set (i - 1);
+}
+}}
+}if (tfeat > 0) {
+nseq++;
+}}}
+var cs = this.viewport.getColumnSelection ();
+if (bs.cardinality () > 0 || invert) {
+if (cs == null) {
+cs =  new jalview.datamodel.ColumnSelection ();
+} else {
+if (!extendCurrent) {
+cs.clear ();
+}}if (invert) {
+for (var i = bs.nextClearBit (alStart), ibs = bs.nextSetBit (alStart); i >= alStart && i < (alw); ) {
+if (ibs < 0 || i < ibs) {
+if (toggle && cs.contains (i)) {
+cs.removeElement (i++);
+} else {
+cs.addElement (i++);
+}} else {
+i = bs.nextClearBit (ibs);
+ibs = bs.nextSetBit (i);
+}}
+} else {
+for (var i = bs.nextSetBit (alStart); i >= alStart; i = bs.nextSetBit (i + 1)) {
+if (toggle && cs.contains (i)) {
+cs.removeElement (i);
+} else {
+cs.addElement (i);
+}}
+}this.viewport.setColumnSelection (cs);
+this.alignPanel.paintAlignment (true);
+this.avcg.setStatus (jalview.util.MessageManager.formatMessage ("label.view_controller_toggled_marked",  Clazz.newArray (-1, [(toggle ? jalview.util.MessageManager.getString ("label.toggled") : jalview.util.MessageManager.getString ("label.marked")), (invert ? (Integer.$valueOf ((alw - alStart) - bs.cardinality ()).toString ()) : (Integer.$valueOf (bs.cardinality ()).toString ())), featureType, Integer.$valueOf (nseq).toString ()])));
+return true;
+} else {
+this.avcg.setStatus (jalview.util.MessageManager.formatMessage ("label.no_feature_of_type_found",  Clazz.newArray (-1, [featureType])));
+if (!extendCurrent && cs != null) {
+cs.clear ();
+this.alignPanel.paintAlignment (true);
+}return false;
+}}, "~B,~B,~B,~S");
+Clazz.overrideMethod (c$, "sortAlignmentByFeatureDensity", 
+function (typ) {
+this.sortBy (typ, "Sort by Density", jalview.analysis.AlignmentSorter.FEATURE_DENSITY);
+}, "~A");
+Clazz.defineMethod (c$, "sortBy", 
+function (typ, methodText, method) {
+var fr = this.alignPanel.getFeatureRenderer ();
+if (typ == null) {
+typ = fr == null ? null : fr.getDisplayedFeatureTypes ();
+}var gps = null;
+gps = fr == null ? null : fr.getDisplayedFeatureGroups ();
+if (typ != null) {
+var types =  new java.util.ArrayList ();
+for (var i = 0; i < typ.length; i++) {
+if (typ[i] != null) {
+types.add (typ[i]);
+}typ =  new Array (types.size ());
+types.toArray (typ);
+}
+}if (gps != null) {
+var grps =  new java.util.ArrayList ();
+for (var i = 0; i < gps.length; i++) {
+if (gps[i] != null) {
+grps.add (gps[i]);
+}}
+gps =  new Array (grps.size ());
+grps.toArray (gps);
+}var al = this.viewport.getAlignment ();
+var start;
+var stop;
+var sg = this.viewport.getSelectionGroup ();
+if (sg != null) {
+start = sg.getStartRes ();
+stop = sg.getEndRes ();
+} else {
+start = 0;
+stop = al.getWidth ();
+}var oldOrder = al.getSequencesArray ();
+jalview.analysis.AlignmentSorter.sortByFeature (typ, gps, start, stop, al, method);
+this.avcg.addHistoryItem ( new jalview.commands.OrderCommand (methodText, oldOrder, this.viewport.getAlignment ()));
+this.alignPanel.paintAlignment (true);
+}, "~A,~S,~S");
+Clazz.overrideMethod (c$, "sortAlignmentByFeatureScore", 
+function (typ) {
+this.sortBy (typ, "Sort by Feature Score", jalview.analysis.AlignmentSorter.FEATURE_SCORE);
+}, "~A");
+Clazz.overrideMethod (c$, "parseFeaturesFile", 
+function (file, protocol, relaxedIdMatching) {
+var featuresFile = false;
+try {
+featuresFile =  new jalview.io.FeaturesFile (file, protocol).parse (this.viewport.getAlignment ().getDataset (), this.alignPanel.getFeatureRenderer ().getFeatureColours (), false, relaxedIdMatching);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+if (featuresFile) {
+this.avcg.refreshFeatureUI (true);
+if (this.alignPanel.getFeatureRenderer () != null) {
+this.alignPanel.getFeatureRenderer ().findAllFeatures (true);
+}if (this.avcg.getFeatureSettingsUI () != null) {
+this.avcg.getFeatureSettingsUI ().discoverAllFeatureData ();
+}this.alignPanel.paintAlignment (true);
+}return featuresFile;
+}, "~S,~S,~B");
+});