X-Git-Url: http://source.jalview.org/gitweb/?p=jalviewjs.git;a=blobdiff_plain;f=site%2Fj2s%2Fjalview%2Fcontroller%2FAlignViewController.js;fp=site%2Fj2s%2Fjalview%2Fcontroller%2FAlignViewController.js;h=c773729c4937fd5d0ee6f98ec9907f98638e2c8a;hp=966223d329df39608f717a2e0f4e36f2a15980c9;hb=b9b7a352eee79b7764c3b09c9d19663075061d8c;hpb=7301a2415adab88038b291fc54caeeb3a5a47a44 diff --git a/site/j2s/jalview/controller/AlignViewController.js b/site/j2s/jalview/controller/AlignViewController.js index 966223d..c773729 100644 --- a/site/j2s/jalview/controller/AlignViewController.js +++ b/site/j2s/jalview/controller/AlignViewController.js @@ -1,219 +1,219 @@ -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"); -}); +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"); +});